diff --git a/extensions/assistant-extension/src/index.ts b/extensions/assistant-extension/src/index.ts index 12441995e..6705483d6 100644 --- a/extensions/assistant-extension/src/index.ts +++ b/extensions/assistant-extension/src/index.ts @@ -63,39 +63,46 @@ export default class JanAssistantExtension extends AssistantExtension { } async getAssistants(): Promise { - // get all the assistant directories - // get all the assistant metadata json - const results: Assistant[] = [] - const allFileName: string[] = await fs.readdirSync( - JanAssistantExtension._homeDir - ) - for (const fileName of allFileName) { - const filePath = await joinPath([ - JanAssistantExtension._homeDir, - fileName, - ]) + try { + // get all the assistant directories + // get all the assistant metadata json + const results: Assistant[] = [] - if (!(await fs.fileStat(filePath))?.isDirectory) continue - const jsonFiles: string[] = (await fs.readdirSync(filePath)).filter( - (file: string) => file === 'assistant.json' + const allFileName: string[] = await fs.readdirSync( + JanAssistantExtension._homeDir ) - if (jsonFiles.length !== 1) { - // has more than one assistant file -> ignore - continue + for (const fileName of allFileName) { + const filePath = await joinPath([ + JanAssistantExtension._homeDir, + fileName, + ]) + + if (!(await fs.fileStat(filePath))?.isDirectory) continue + const jsonFiles: string[] = (await fs.readdirSync(filePath)).filter( + (file: string) => file === 'assistant.json' + ) + + if (jsonFiles.length !== 1) { + // has more than one assistant file -> ignore + continue + } + + const content = await fs.readFileSync( + await joinPath([filePath, jsonFiles[0]]), + 'utf-8' + ) + const assistant: Assistant = + typeof content === 'object' ? content : JSON.parse(content) + + results.push(assistant) } - const content = await fs.readFileSync( - await joinPath([filePath, jsonFiles[0]]), - 'utf-8' - ) - const assistant: Assistant = - typeof content === 'object' ? content : JSON.parse(content) - - results.push(assistant) + return results + } catch (err) { + console.debug(err) + return [this.defaultAssistant] } - - return results } async deleteAssistant(assistant: Assistant): Promise { @@ -112,39 +119,39 @@ export default class JanAssistantExtension extends AssistantExtension { } private async createJanAssistant(): Promise { - 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: [ - { - type: 'retrieval', - enabled: false, - useTimeWeightedRetriever: false, - settings: { - top_k: 2, - chunk_size: 1024, - chunk_overlap: 64, - retrieval_template: `Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. + await this.createAssistant(this.defaultAssistant) + } + + private defaultAssistant: 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: [ + { + type: 'retrieval', + enabled: false, + useTimeWeightedRetriever: false, + settings: { + top_k: 2, + chunk_size: 1024, + chunk_overlap: 64, + retrieval_template: `Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. ---------------- CONTEXT: {CONTEXT} ---------------- QUESTION: {QUESTION} ---------------- Helpful Answer:`, - }, }, - ], - file_ids: [], - metadata: undefined, - } - - await this.createAssistant(janAssistant) + }, + ], + file_ids: [], + metadata: undefined, } } diff --git a/extensions/model-extension/src/index.ts b/extensions/model-extension/src/index.ts index ea026a59d..54e91a6aa 100644 --- a/extensions/model-extension/src/index.ts +++ b/extensions/model-extension/src/index.ts @@ -87,23 +87,22 @@ export default class JanModelExtension extends ModelExtension { * should compare and try import */ let currentModels: Model[] = [] - - if (!localStorage.getItem(ExtensionEnum.downloadedModels)) { - // Updated from an older version than 0.5.5 - // Scan through the models folder and import them (Legacy flow) - // Return models immediately - currentModels = await scanModelsFolder().then((models) => { - return models ?? [] - }) - } else { - try { + try { + if (!localStorage.getItem(ExtensionEnum.downloadedModels)) { + // Updated from an older version than 0.5.5 + // Scan through the models folder and import them (Legacy flow) + // Return models immediately + currentModels = await scanModelsFolder().then((models) => { + return models ?? [] + }) + } else { currentModels = JSON.parse( localStorage.getItem(ExtensionEnum.downloadedModels) ) as Model[] - } catch (e) { - currentModels = [] - console.error(e) } + } catch (e) { + currentModels = [] + console.error(e) } /**