jan icon indicating copy to clipboard operation
jan copied to clipboard

refactor: refactor `/extensions` implementations to be cleaner

Open 0xSage opened this issue 6 months ago • 1 comments

Motivation:

  • We are conflating some impl logic in root/extensions that should go in root/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.

0xSage avatar Dec 13 '23 07:12 0xSage