* feat: tensorrt-llm-extension * fix: loading * feat: add download tensorrt llm runner Signed-off-by: James <james@jan.ai> * feat: update to rollupjs instead of webpack for monitoring extension Signed-off-by: James <james@jan.ai> * feat: move update nvidia info to monitor extension Signed-off-by: James <james@jan.ai> * allow download tensorrt Signed-off-by: James <james@jan.ai> * update Signed-off-by: James <james@jan.ai> * allow download tensor rt based on gpu setting Signed-off-by: James <james@jan.ai> * update downloaded models Signed-off-by: James <james@jan.ai> * feat: add extension compatibility * dynamic tensor rt engines Signed-off-by: James <james@jan.ai> * update models Signed-off-by: James <james@jan.ai> * chore: remove ts-ignore * feat: getting installation state from extension Signed-off-by: James <james@jan.ai> * chore: adding type for decompress Signed-off-by: James <james@jan.ai> * feat: update according Louis's comment Signed-off-by: James <james@jan.ai> * feat: add progress for installing extension Signed-off-by: James <james@jan.ai> * chore: remove args from extension installation * fix: model download does not work properly * fix: do not allow user to stop tensorrtllm inference * fix: extension installed style * fix: download tensorrt does not update state Signed-off-by: James <james@jan.ai> * chore: replace int4 by fl16 * feat: modal for installing extension Signed-off-by: James <james@jan.ai> * fix: start download immediately after press install Signed-off-by: James <james@jan.ai> * fix: error switching between engines * feat: rename inference provider to ai engine and refactor to core * fix: missing ulid * fix: core bundler * feat: add cancel extension installing Signed-off-by: James <james@jan.ai> * remove mocking for mac Signed-off-by: James <james@jan.ai> * fix: show models only when extension is ready * add tensorrt badge for model Signed-off-by: James <james@jan.ai> * fix: copy * fix: add compatible check (#2342) * fix: add compatible check Signed-off-by: James <james@jan.ai> * fix: copy * fix: font * fix: copy * fix: broken monitoring extension * chore: bump engine * fix: copy * fix: model copy * fix: copy * fix: model json --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: Louis <louis@jan.ai> * fix: vulkan support * fix: installation button padding * fix: empty script * fix: remove hard code string --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com>
81 lines
2.1 KiB
TypeScript
81 lines
2.1 KiB
TypeScript
export enum ExtensionTypeEnum {
|
|
Assistant = 'assistant',
|
|
Conversational = 'conversational',
|
|
Inference = 'inference',
|
|
Model = 'model',
|
|
SystemMonitoring = 'systemMonitoring',
|
|
HuggingFace = 'huggingFace',
|
|
}
|
|
|
|
export interface ExtensionType {
|
|
type(): ExtensionTypeEnum | undefined
|
|
}
|
|
|
|
export interface Compatibility {
|
|
platform: string[]
|
|
version: string
|
|
}
|
|
|
|
const ALL_INSTALLATION_STATE = [
|
|
'NotRequired', // not required.
|
|
'Installed', // require and installed. Good to go.
|
|
'NotInstalled', // require to be installed.
|
|
'Corrupted', // require but corrupted. Need to redownload.
|
|
] as const
|
|
|
|
export type InstallationStateTuple = typeof ALL_INSTALLATION_STATE
|
|
export type InstallationState = InstallationStateTuple[number]
|
|
|
|
/**
|
|
* Represents a base extension.
|
|
* This class should be extended by any class that represents an extension.
|
|
*/
|
|
export abstract class BaseExtension implements ExtensionType {
|
|
/**
|
|
* Returns the type of the extension.
|
|
* @returns {ExtensionType} The type of the extension
|
|
* Undefined means its not extending any known extension by the application.
|
|
*/
|
|
type(): ExtensionTypeEnum | undefined {
|
|
return undefined
|
|
}
|
|
/**
|
|
* Called when the extension is loaded.
|
|
* Any initialization logic for the extension should be put here.
|
|
*/
|
|
abstract onLoad(): void
|
|
/**
|
|
* Called when the extension is unloaded.
|
|
* Any cleanup logic for the extension should be put here.
|
|
*/
|
|
abstract onUnload(): void
|
|
|
|
/**
|
|
* The compatibility of the extension.
|
|
* This is used to check if the extension is compatible with the current environment.
|
|
* @property {Array} platform
|
|
*/
|
|
compatibility(): Compatibility | undefined {
|
|
return undefined
|
|
}
|
|
|
|
/**
|
|
* Determine if the prerequisites for the extension are installed.
|
|
*
|
|
* @returns {boolean} true if the prerequisites are installed, false otherwise.
|
|
*/
|
|
async installationState(): Promise<InstallationState> {
|
|
return 'NotRequired'
|
|
}
|
|
|
|
/**
|
|
* Install the prerequisites for the extension.
|
|
*
|
|
* @returns {Promise<void>}
|
|
*/
|
|
// @ts-ignore
|
|
async install(...args): Promise<void> {
|
|
return
|
|
}
|
|
}
|