diff --git a/core/src/events.ts b/core/src/events.ts index e962dead4..fa0bef15c 100644 --- a/core/src/events.ts +++ b/core/src/events.ts @@ -12,44 +12,16 @@ export enum EventName { OnDownloadError = "onDownloadError", } -export type MessageHistory = { - role: string; - content: string; -}; -/** - * The `NewMessageRequest` type defines the shape of a new message request object. - */ -export type NewMessageRequest = { - id?: string; - conversationId?: string; - user?: string; - avatar?: string; - message?: string; - createdAt?: string; - updatedAt?: string; - history?: MessageHistory[]; -}; - -/** - * The `NewMessageRequest` type defines the shape of a new message request object. - */ -export type NewMessageResponse = { - id?: string; - conversationId?: string; - user?: string; - avatar?: string; - message?: string; - createdAt?: string; - updatedAt?: string; -}; - /** * Adds an observer for an event. * * @param eventName The name of the event to observe. * @param handler The handler function to call when the event is observed. */ -const on: (eventName: string, handler: Function) => void = (eventName, handler) => { +const on: (eventName: string, handler: Function) => void = ( + eventName, + handler +) => { window.corePlugin?.events?.on(eventName, handler); }; @@ -59,7 +31,10 @@ const on: (eventName: string, handler: Function) => void = (eventName, handler) * @param eventName The name of the event to stop observing. * @param handler The handler function to call when the event is observed. */ -const off: (eventName: string, handler: Function) => void = (eventName, handler) => { +const off: (eventName: string, handler: Function) => void = ( + eventName, + handler +) => { window.corePlugin?.events?.off(eventName, handler); }; diff --git a/core/src/index.ts b/core/src/index.ts index 5c741c863..76827f6b3 100644 --- a/core/src/index.ts +++ b/core/src/index.ts @@ -34,4 +34,4 @@ export { fs } from "./fs"; * Plugin base module export. * @module */ -export { JanPlugin, PluginType } from "./plugin"; +export * from "./plugin"; diff --git a/core/src/types/index.ts b/core/src/types/index.ts index 296bc1a7e..948bbd1c6 100644 --- a/core/src/types/index.ts +++ b/core/src/types/index.ts @@ -1,140 +1,183 @@ -export interface Conversation { - id: string; - modelId?: string; - botId?: string; - name: string; - message?: string; - summary?: string; - createdAt?: string; - updatedAt?: string; - messages: Message[]; - lastMessage?: string; -} - -export interface Message { - id: string; - message?: string; - user?: string; - createdAt?: string; - updatedAt?: string; -} - -export interface RawMessage { - id?: string; - conversationId?: string; - user?: string; - avatar?: string; - message?: string; - createdAt?: string; - updatedAt?: string; -} - -export interface Model { - /** - * Combination of owner and model name. - * Being used as file name. MUST be unique. - */ - id: string; - name: string; - quantMethod: string; - bits: number; - size: number; - maxRamRequired: number; - usecase: string; - downloadLink: string; - modelFile?: string; - /** - * For tracking download info - */ - startDownloadAt?: number; - finishDownloadAt?: number; - productId: string; - productName: string; - shortDescription: string; - longDescription: string; - avatarUrl: string; - author: string; - version: string; - modelUrl: string; - createdAt: number; - updatedAt?: number; - status: string; - releaseDate: number; - tags: string[]; -} -export interface ModelCatalog { - id: string; - name: string; - shortDescription: string; - avatarUrl: string; - longDescription: string; - author: string; - version: string; - modelUrl: string; - createdAt: number; - updatedAt?: number; - status: string; - releaseDate: number; - tags: string[]; - availableVersions: ModelVersion[]; -} /** - * Model type which will be stored in the database + * Message Request and Response + * ============================ + * */ + +/** + * The role of the author of this message. + * @data_transfer_object */ -export type ModelVersion = { - /** - * Combination of owner and model name. - * Being used as file name. Should be unique. - */ - id: string; - name: string; - quantMethod: string; - bits: number; - size: number; - maxRamRequired: number; - usecase: string; - downloadLink: string; - productId: string; - /** - * For tracking download state - */ - startDownloadAt?: number; - finishDownloadAt?: number; -}; - -export interface ChatMessage { - id: string; - conversationId: string; - messageType: MessageType; - messageSenderType: MessageSenderType; - senderUid: string; - senderName: string; - senderAvatarUrl: string; - text: string | undefined; - imageUrls?: string[] | undefined; - createdAt: number; - status: MessageStatus; -} - -export enum MessageType { - Text = "Text", - Image = "Image", - ImageWithText = "ImageWithText", - Error = "Error", -} - -export enum MessageSenderType { - Ai = "assistant", +export enum ChatCompletionRole { + System = "system", + Assistant = "assistant", User = "user", } +/** + * The `MessageRequest` type defines the shape of a new message request object. + * @data_transfer_object + */ +export type ChatCompletionMessage = { + /** The contents of the message. **/ + content?: string; + /** The role of the author of this message. **/ + role: ChatCompletionRole; +}; + +/** + * The `MessageRequest` type defines the shape of a new message request object. + * @data_transfer_object + */ +export type MessageRequest = { + id?: string; + /** The thread id of the message request. **/ + threadId?: string; + /** Messages for constructing a chat completion request **/ + messages?: ChatCompletionMessage[]; +}; + +/** + * Thread and Message + * ======================== + * */ + +/** + * The status of the message. + * @presentation_object + */ export enum MessageStatus { + /** Message is fully loaded. **/ Ready = "ready", + /** Message is not fully loaded. **/ Pending = "pending", } - -export type ConversationState = { - hasMore: boolean; - waitingForResponse: boolean; - error?: Error; +/** + * The `ThreadMessage` type defines the shape of a thread's message object. + * @stored_in_workspace + */ +export type ThreadMessage = { + /** Unique identifier for the message, generated by default using the ULID method. **/ + id?: string; + /** Thread id, default is a ulid. **/ + threadId?: string; + /** The role of the author of this message. **/ + role?: ChatCompletionRole; + /** The content of this message. **/ + content?: string; + /** The status of this message. **/ + status: MessageStatus; + /** The timestamp indicating when this message was created, represented in ISO 8601 format. **/ + createdAt?: string; +}; + +/** + * The `Thread` type defines the shape of a thread object. + * @stored_in_workspace + */ +export interface Thread { + /** Unique identifier for the thread, generated by default using the ULID method. **/ + id: string; + /** The summary of this thread. **/ + summary?: string; + /** The messages of this thread. **/ + messages: ThreadMessage[]; + /** The timestamp indicating when this thread was created, represented in ISO 8601 format. **/ + createdAt?: string; + /** The timestamp indicating when this thread was updated, represented in ISO 8601 format. **/ + updatedAt?: string; + + /** + * @deprecated This field is deprecated and should not be used. + * Read from model file instead. + */ + modelId?: string; +} + +/** + * Model type defines the shape of a model object. + * @stored_in_workspace + */ +export interface Model { + /** Combination of owner and model name.*/ + id: string; + /** The name of the model.*/ + name: string; + /** Quantization method name.*/ + quantizationName: string; + /** The the number of bits represents a number.*/ + bits: number; + /** The size of the model file in bytes.*/ + size: number; + /** The maximum RAM required to run the model in bytes.*/ + maxRamRequired: number; + /** The use case of the model.*/ + usecase: string; + /** The download link of the model.*/ + downloadLink: string; + /** The short description of the model.*/ + shortDescription: string; + /** The long description of the model.*/ + longDescription: string; + /** The avatar url of the model.*/ + avatarUrl: string; + /** The author name of the model.*/ + author: string; + /** The version of the model.*/ + version: string; + /** The origin url of the model repo.*/ + modelUrl: string; + /** The timestamp indicating when this model was released.*/ + releaseDate: number; + /** The tags attached to the model description */ + tags: string[]; +} + +/** + * Model type of the presentation object which will be presented to the user + * @data_transfer_object + */ +export interface ModelCatalog { + /** The unique id of the model.*/ + id: string; + /** The name of the model.*/ + name: string; + /** The avatar url of the model.*/ + avatarUrl: string; + /** The short description of the model.*/ + shortDescription: string; + /** The long description of the model.*/ + longDescription: string; + /** The author name of the model.*/ + author: string; + /** The version of the model.*/ + version: string; + /** The origin url of the model repo.*/ + modelUrl: string; + /** The timestamp indicating when this model was released.*/ + releaseDate: number; + /** The tags attached to the model description **/ + tags: string[]; + + /** The available versions of this model to download. */ + availableVersions: ModelVersion[]; +} +/** + * Model type which will be present a version of ModelCatalog + * @data_transfer_object + */ +export type ModelVersion = { + /** The name of this model version.*/ + name: string; + /** The quantization method name.*/ + quantizationName: string; + /** The the number of bits represents a number.*/ + bits: number; + /** The size of the model file in bytes.*/ + size: number; + /** The maximum RAM required to run the model in bytes.*/ + maxRamRequired: number; + /** The use case of the model.*/ + usecase: string; + /** The download link of the model.*/ + downloadLink: string; }; diff --git a/web/types/conversation.d.ts b/web/types/conversation.d.ts new file mode 100644 index 000000000..807981dbf --- /dev/null +++ b/web/types/conversation.d.ts @@ -0,0 +1,5 @@ +export type ConversationState = { + hasMore: boolean + waitingForResponse: boolean + error?: Error +}