jan
jan copied to clipboard
refactor: refactor `/extensions` implementations to be cleaner
Motivation:
- We are conflating some impl logic in
root/extensions
that should go inroot/core/extensions
Example 1:
type(): ExtensionType {
return ExtensionType.Assistant;
}
Should probably be in codeblock:
/**
* Assistant extension for managing assistants.
* @extends BaseExtension
*/
export abstract class AssistantExtension extends BaseExtension implements AssistantInterface {
abstract createAssistant(assistant: Assistant): Promise<void>
abstract deleteAssistant(assistant: Assistant): Promise<void>
abstract getAssistants(): Promise<Assistant[]>
}
Exmaple 2: This is quite redundant, and should import the actual typing.
private async createJanAssistant(): Promise<void> {
const janAssistant: Assistant = {
avatar: "",
thread_location: undefined,
id: "jan",
object: "assistant",
created_at: Date.now(),
name: "Jan",
description: "A default assistant that can use all downloaded models",
model: "*",
instructions: "",
tools: undefined,
file_ids: [],
metadata: undefined,
};
Similar issues exist that could lead to small edge cases and bugs.
Success criteria:
- Refactor all extensions implementations to have cleaner architecture.