diff --git a/packages/kbot/dist-in/commands/images.js b/packages/kbot/dist-in/commands/images.js index 06116fcc..672eb78b 100644 --- a/packages/kbot/dist-in/commands/images.js +++ b/packages/kbot/dist-in/commands/images.js @@ -108,7 +108,6 @@ async function launchGuiAndGetPrompt(argv) { prettyLogTemplate: "{{yyyy}}-{{mm}}-{{dd}} {{hh}}:{{MM}}:{{ss}}.{{ms}}\t{{logLevelName}}\t" }); return new Promise((_resolve, reject) => { - logger.info('🚀 Starting GUI application with improved logging'); const guiAppPath = getGuiAppPath(); logger.info('📁 GUI app path:', guiAppPath); if (!exists(guiAppPath)) { @@ -468,4 +467,4 @@ export const imageCommand = async (argv) => { logger.error('Failed to parse options or generate image:', error.message, error.issues, error.stack); } }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2ltYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsWUFBWSxFQUNaLFFBQVEsRUFDUixVQUFVLEVBQ2IsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsU0FBUyxzQkFBc0IsQ0FBQyxHQUF1QixFQUFFLFFBQWtCO0lBQ3ZFLElBQUksTUFBYyxDQUFDO0lBRW5CLElBQUksR0FBRyxFQUFFLENBQUM7UUFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcs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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2ltYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsWUFBWSxFQUNaLFFBQVEsRUFDUixVQUFVLEVBQ2IsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsU0FBUyxzQkFBc0IsQ0FBQyxHQUF1QixFQUFFLFFBQWtCO0lBQ3ZFLElBQUksTUFBYyxDQUFDO0lBRW5CLElBQUksR0FBRyxFQUFFLENBQUM7UUFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcs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 \ No newline at end of file diff --git a/packages/kbot/dist-in/models/cache/openrouter-models-free.d.ts b/packages/kbot/dist-in/models/cache/openrouter-models-free.d.ts index dbd471f2..bc0befca 100644 --- a/packages/kbot/dist-in/models/cache/openrouter-models-free.d.ts +++ b/packages/kbot/dist-in/models/cache/openrouter-models-free.d.ts @@ -30,7 +30,6 @@ export declare enum E_OPENROUTER_MODEL_FREE { MODEL_FREE_ARLIAI_QWQ_32B_ARLIAI_RPR_V1_FREE = "arliai/qwq-32b-arliai-rpr-v1:free", MODEL_FREE_AGENTICA_ORG_DEEPCODER_14B_PREVIEW_FREE = "agentica-org/deepcoder-14b-preview:free", MODEL_FREE_MOONSHOTAI_KIMI_VL_A3B_THINKING_FREE = "moonshotai/kimi-vl-a3b-thinking:free", - MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free", MODEL_FREE_META_LLAMA_LLAMA_4_MAVERICK_FREE = "meta-llama/llama-4-maverick:free", MODEL_FREE_META_LLAMA_LLAMA_4_SCOUT_FREE = "meta-llama/llama-4-scout:free", MODEL_FREE_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE = "qwen/qwen2.5-vl-32b-instruct:free", @@ -38,7 +37,6 @@ export declare enum E_OPENROUTER_MODEL_FREE { MODEL_FREE_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT_FREE = "mistralai/mistral-small-3.1-24b-instruct:free", MODEL_FREE_GOOGLE_GEMMA_3_4B_IT_FREE = "google/gemma-3-4b-it:free", MODEL_FREE_GOOGLE_GEMMA_3_12B_IT_FREE = "google/gemma-3-12b-it:free", - MODEL_FREE_REKAAI_REKA_FLASH_3_FREE = "rekaai/reka-flash-3:free", MODEL_FREE_GOOGLE_GEMMA_3_27B_IT_FREE = "google/gemma-3-27b-it:free", MODEL_FREE_QWEN_QWQ_32B_FREE = "qwen/qwq-32b:free", MODEL_FREE_NOUSRESEARCH_DEEPHERMES_3_LLAMA_3_8B_PREVIEW_FREE = "nousresearch/deephermes-3-llama-3-8b-preview:free", @@ -46,7 +44,6 @@ export declare enum E_OPENROUTER_MODEL_FREE { MODEL_FREE_COGNITIVECOMPUTATIONS_DOLPHIN3_0_MISTRAL_24B_FREE = "cognitivecomputations/dolphin3.0-mistral-24b:free", MODEL_FREE_QWEN_QWEN2_5_VL_72B_INSTRUCT_FREE = "qwen/qwen2.5-vl-72b-instruct:free", MODEL_FREE_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501_FREE = "mistralai/mistral-small-24b-instruct-2501:free", - MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B_FREE = "deepseek/deepseek-r1-distill-qwen-14b:free", MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_DISTILL_LLAMA_70B_FREE = "deepseek/deepseek-r1-distill-llama-70b:free", MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_FREE = "deepseek/deepseek-r1:free", MODEL_FREE_GOOGLE_GEMINI_2_0_FLASH_EXP_FREE = "google/gemini-2.0-flash-exp:free", diff --git a/packages/kbot/dist-in/models/cache/openrouter-models-free.js b/packages/kbot/dist-in/models/cache/openrouter-models-free.js index 5ae338cd..4d0f8d8d 100644 --- a/packages/kbot/dist-in/models/cache/openrouter-models-free.js +++ b/packages/kbot/dist-in/models/cache/openrouter-models-free.js @@ -31,7 +31,6 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_ARLIAI_QWQ_32B_ARLIAI_RPR_V1_FREE"] = "arliai/qwq-32b-arliai-rpr-v1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_AGENTICA_ORG_DEEPCODER_14B_PREVIEW_FREE"] = "agentica-org/deepcoder-14b-preview:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MOONSHOTAI_KIMI_VL_A3B_THINKING_FREE"] = "moonshotai/kimi-vl-a3b-thinking:free"; - E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_MAVERICK_FREE"] = "meta-llama/llama-4-maverick:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_SCOUT_FREE"] = "meta-llama/llama-4-scout:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-32b-instruct:free"; @@ -39,7 +38,6 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT_FREE"] = "mistralai/mistral-small-3.1-24b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_3_4B_IT_FREE"] = "google/gemma-3-4b-it:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_3_12B_IT_FREE"] = "google/gemma-3-12b-it:free"; - E_OPENROUTER_MODEL_FREE["MODEL_FREE_REKAAI_REKA_FLASH_3_FREE"] = "rekaai/reka-flash-3:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_3_27B_IT_FREE"] = "google/gemma-3-27b-it:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWQ_32B_FREE"] = "qwen/qwq-32b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_NOUSRESEARCH_DEEPHERMES_3_LLAMA_3_8B_PREVIEW_FREE"] = "nousresearch/deephermes-3-llama-3-8b-preview:free"; @@ -47,7 +45,6 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_COGNITIVECOMPUTATIONS_DOLPHIN3_0_MISTRAL_24B_FREE"] = "cognitivecomputations/dolphin3.0-mistral-24b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN2_5_VL_72B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-72b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501_FREE"] = "mistralai/mistral-small-24b-instruct-2501:free"; - E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B_FREE"] = "deepseek/deepseek-r1-distill-qwen-14b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_DISTILL_LLAMA_70B_FREE"] = "deepseek/deepseek-r1-distill-llama-70b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_R1_FREE"] = "deepseek/deepseek-r1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMINI_2_0_FLASH_EXP_FREE"] = "google/gemini-2.0-flash-exp:free"; @@ -60,4 +57,4 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_2_9B_IT_FREE"] = "google/gemma-2-9b-it:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE"] = "mistralai/mistral-7b-instruct:free"; })(E_OPENROUTER_MODEL_FREE || (E_OPENROUTER_MODEL_FREE = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkE0RFg7QUE1REQsV0FBWSx1QkFBdUI7SUFDakMseUdBQThFLENBQUE7SUFDOUUsbUdBQXdFLENBQUE7SUFDeEUsaUdBQXNFLENBQUE7SUFDdEUsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsbUlBQXdHLENBQUE7SUFDeEcsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQTVEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBNERsQyJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkF5RFg7QUF6REQsV0FBWSx1QkFBdUI7SUFDakMseUdBQThFLENBQUE7SUFDOUUsbUdBQXdFLENBQUE7SUFDeEUsaUdBQXNFLENBQUE7SUFDdEUsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQXpEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBeURsQyJ9 \ No newline at end of file diff --git a/packages/kbot/dist-in/models/cache/openrouter-models.d.ts b/packages/kbot/dist-in/models/cache/openrouter-models.d.ts index 1ba4d905..ee3d296a 100644 --- a/packages/kbot/dist-in/models/cache/openrouter-models.d.ts +++ b/packages/kbot/dist-in/models/cache/openrouter-models.d.ts @@ -1,4 +1,9 @@ export declare enum E_OPENROUTER_MODEL { + MODEL_ALIBABA_TONGYI_DEEPRESEARCH_30B_A3B = "alibaba/tongyi-deepresearch-30b-a3b", + MODEL_QWEN_QWEN3_CODER_FLASH = "qwen/qwen3-coder-flash", + MODEL_QWEN_QWEN3_CODER_PLUS = "qwen/qwen3-coder-plus", + MODEL_ARCEE_AI_AFM_4_5B = "arcee-ai/afm-4.5b", + MODEL_OPENGVLAB_INTERNVL3_78B = "opengvlab/internvl3-78b", MODEL_QWEN_QWEN3_NEXT_80B_A3B_THINKING = "qwen/qwen3-next-80b-a3b-thinking", MODEL_QWEN_QWEN3_NEXT_80B_A3B_INSTRUCT = "qwen/qwen3-next-80b-a3b-instruct", MODEL_MEITUAN_LONGCAT_FLASH_CHAT = "meituan/longcat-flash-chat", @@ -122,7 +127,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_MICROSOFT_MAI_DS_R1_FREE = "microsoft/mai-ds-r1:free", MODEL_MICROSOFT_MAI_DS_R1 = "microsoft/mai-ds-r1", MODEL_THUDM_GLM_Z1_32B = "thudm/glm-z1-32b", - MODEL_THUDM_GLM_4_32B = "thudm/glm-4-32b", MODEL_OPENAI_O4_MINI_HIGH = "openai/o4-mini-high", MODEL_OPENAI_O3 = "openai/o3", MODEL_OPENAI_O4_MINI = "openai/o4-mini", @@ -141,7 +145,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_MOONSHOTAI_KIMI_VL_A3B_THINKING = "moonshotai/kimi-vl-a3b-thinking", MODEL_X_AI_GROK_3_MINI_BETA = "x-ai/grok-3-mini-beta", MODEL_X_AI_GROK_3_BETA = "x-ai/grok-3-beta", - MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1 = "nvidia/llama-3.1-nemotron-ultra-253b-v1", MODEL_META_LLAMA_LLAMA_4_MAVERICK_FREE = "meta-llama/llama-4-maverick:free", MODEL_META_LLAMA_LLAMA_4_MAVERICK = "meta-llama/llama-4-maverick", @@ -163,7 +166,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_COHERE_COMMAND_A = "cohere/command-a", MODEL_OPENAI_GPT_4O_MINI_SEARCH_PREVIEW = "openai/gpt-4o-mini-search-preview", MODEL_OPENAI_GPT_4O_SEARCH_PREVIEW = "openai/gpt-4o-search-preview", - MODEL_REKAAI_REKA_FLASH_3_FREE = "rekaai/reka-flash-3:free", MODEL_GOOGLE_GEMMA_3_27B_IT_FREE = "google/gemma-3-27b-it:free", MODEL_GOOGLE_GEMMA_3_27B_IT = "google/gemma-3-27b-it", MODEL_THEDRUMMER_ANUBIS_PRO_105B_V1 = "thedrummer/anubis-pro-105b-v1", @@ -202,7 +204,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501_FREE = "mistralai/mistral-small-24b-instruct-2501:free", MODEL_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501 = "mistralai/mistral-small-24b-instruct-2501", MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_32B = "deepseek/deepseek-r1-distill-qwen-32b", - MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B_FREE = "deepseek/deepseek-r1-distill-qwen-14b:free", MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B = "deepseek/deepseek-r1-distill-qwen-14b", MODEL_PERPLEXITY_SONAR_REASONING = "perplexity/sonar-reasoning", MODEL_PERPLEXITY_SONAR = "perplexity/sonar", @@ -218,8 +219,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_DEEPSEEK_DEEPSEEK_CHAT = "deepseek/deepseek-chat", MODEL_SAO10K_L3_3_EURYALE_70B = "sao10k/l3.3-euryale-70b", MODEL_OPENAI_O1 = "openai/o1", - MODEL_X_AI_GROK_2_VISION_1212 = "x-ai/grok-2-vision-1212", - MODEL_X_AI_GROK_2_1212 = "x-ai/grok-2-1212", MODEL_COHERE_COMMAND_R7B_12_2024 = "cohere/command-r7b-12-2024", MODEL_GOOGLE_GEMINI_2_0_FLASH_EXP_FREE = "google/gemini-2.0-flash-exp:free", MODEL_META_LLAMA_LLAMA_3_3_70B_INSTRUCT_FREE = "meta-llama/llama-3.3-70b-instruct:free", @@ -240,19 +239,19 @@ export declare enum E_OPENROUTER_MODEL { MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022 = "anthropic/claude-3.5-haiku-20241022", MODEL_ANTHRACITE_ORG_MAGNUM_V4_72B = "anthracite-org/magnum-v4-72b", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET = "anthropic/claude-3.5-sonnet", - MODEL_MISTRALAI_MINISTRAL_3B = "mistralai/ministral-3b", MODEL_MISTRALAI_MINISTRAL_8B = "mistralai/ministral-8b", + MODEL_MISTRALAI_MINISTRAL_3B = "mistralai/ministral-3b", MODEL_QWEN_QWEN_2_5_7B_INSTRUCT = "qwen/qwen-2.5-7b-instruct", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT = "nvidia/llama-3.1-nemotron-70b-instruct", - MODEL_INFLECTION_INFLECTION_3_PI = "inflection/inflection-3-pi", MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY = "inflection/inflection-3-productivity", + MODEL_INFLECTION_INFLECTION_3_PI = "inflection/inflection-3-pi", MODEL_GOOGLE_GEMINI_FLASH_1_5_8B = "google/gemini-flash-1.5-8b", MODEL_THEDRUMMER_ROCINANTE_12B = "thedrummer/rocinante-12b", MODEL_ANTHRACITE_ORG_MAGNUM_V2_72B = "anthracite-org/magnum-v2-72b", - MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT = "meta-llama/llama-3.2-90b-vision-instruct", - MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT = "meta-llama/llama-3.2-1b-instruct", MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT = "meta-llama/llama-3.2-3b-instruct", + MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT = "meta-llama/llama-3.2-1b-instruct", + MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT = "meta-llama/llama-3.2-90b-vision-instruct", MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT = "meta-llama/llama-3.2-11b-vision-instruct", MODEL_QWEN_QWEN_2_5_72B_INSTRUCT_FREE = "qwen/qwen-2.5-72b-instruct:free", MODEL_QWEN_QWEN_2_5_72B_INSTRUCT = "qwen/qwen-2.5-72b-instruct", @@ -262,8 +261,8 @@ export declare enum E_OPENROUTER_MODEL { MODEL_MISTRALAI_PIXTRAL_12B = "mistralai/pixtral-12b", MODEL_COHERE_COMMAND_R_PLUS_08_2024 = "cohere/command-r-plus-08-2024", MODEL_COHERE_COMMAND_R_08_2024 = "cohere/command-r-08-2024", - MODEL_SAO10K_L3_1_EURYALE_70B = "sao10k/l3.1-euryale-70b", MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT = "qwen/qwen-2.5-vl-7b-instruct", + MODEL_SAO10K_L3_1_EURYALE_70B = "sao10k/l3.1-euryale-70b", MODEL_MICROSOFT_PHI_3_5_MINI_128K_INSTRUCT = "microsoft/phi-3.5-mini-128k-instruct", MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_70B = "nousresearch/hermes-3-llama-3.1-70b", MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_405B = "nousresearch/hermes-3-llama-3.1-405b", @@ -277,45 +276,43 @@ export declare enum E_OPENROUTER_MODEL { MODEL_META_LLAMA_LLAMA_3_1_70B_INSTRUCT = "meta-llama/llama-3.1-70b-instruct", MODEL_MISTRALAI_MISTRAL_NEMO_FREE = "mistralai/mistral-nemo:free", MODEL_MISTRALAI_MISTRAL_NEMO = "mistralai/mistral-nemo", - MODEL_OPENAI_GPT_4O_MINI_2024_07_18 = "openai/gpt-4o-mini-2024-07-18", MODEL_OPENAI_GPT_4O_MINI = "openai/gpt-4o-mini", + MODEL_OPENAI_GPT_4O_MINI_2024_07_18 = "openai/gpt-4o-mini-2024-07-18", MODEL_GOOGLE_GEMMA_2_27B_IT = "google/gemma-2-27b-it", MODEL_GOOGLE_GEMMA_2_9B_IT_FREE = "google/gemma-2-9b-it:free", MODEL_GOOGLE_GEMMA_2_9B_IT = "google/gemma-2-9b-it", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET_20240620 = "anthropic/claude-3.5-sonnet-20240620", MODEL_SAO10K_L3_EURYALE_70B = "sao10k/l3-euryale-70b", - MODEL_COGNITIVECOMPUTATIONS_DOLPHIN_MIXTRAL_8X22B = "cognitivecomputations/dolphin-mixtral-8x22b", MODEL_NOUSRESEARCH_HERMES_2_PRO_LLAMA_3_8B = "nousresearch/hermes-2-pro-llama-3-8b", - MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3 = "mistralai/mistral-7b-instruct-v0.3", MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE = "mistralai/mistral-7b-instruct:free", MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT = "mistralai/mistral-7b-instruct", + MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3 = "mistralai/mistral-7b-instruct-v0.3", MODEL_MICROSOFT_PHI_3_MINI_128K_INSTRUCT = "microsoft/phi-3-mini-128k-instruct", MODEL_MICROSOFT_PHI_3_MEDIUM_128K_INSTRUCT = "microsoft/phi-3-medium-128k-instruct", MODEL_NEVERSLEEP_LLAMA_3_LUMIMAID_70B = "neversleep/llama-3-lumimaid-70b", MODEL_GOOGLE_GEMINI_FLASH_1_5 = "google/gemini-flash-1.5", - MODEL_OPENAI_GPT_4O_2024_05_13 = "openai/gpt-4o-2024-05-13", MODEL_OPENAI_GPT_4O = "openai/gpt-4o", MODEL_OPENAI_GPT_4O_EXTENDED = "openai/gpt-4o:extended", MODEL_META_LLAMA_LLAMA_GUARD_2_8B = "meta-llama/llama-guard-2-8b", - MODEL_META_LLAMA_LLAMA_3_70B_INSTRUCT = "meta-llama/llama-3-70b-instruct", + MODEL_OPENAI_GPT_4O_2024_05_13 = "openai/gpt-4o-2024-05-13", MODEL_META_LLAMA_LLAMA_3_8B_INSTRUCT = "meta-llama/llama-3-8b-instruct", + MODEL_META_LLAMA_LLAMA_3_70B_INSTRUCT = "meta-llama/llama-3-70b-instruct", MODEL_MISTRALAI_MIXTRAL_8X22B_INSTRUCT = "mistralai/mixtral-8x22b-instruct", MODEL_MICROSOFT_WIZARDLM_2_8X22B = "microsoft/wizardlm-2-8x22b", MODEL_GOOGLE_GEMINI_PRO_1_5 = "google/gemini-pro-1.5", MODEL_OPENAI_GPT_4_TURBO = "openai/gpt-4-turbo", MODEL_COHERE_COMMAND_R_PLUS = "cohere/command-r-plus", MODEL_COHERE_COMMAND_R_PLUS_04_2024 = "cohere/command-r-plus-04-2024", - MODEL_SOPHOSYMPATHEIA_MIDNIGHT_ROSE_70B = "sophosympatheia/midnight-rose-70b", MODEL_COHERE_COMMAND = "cohere/command", MODEL_COHERE_COMMAND_R = "cohere/command-r", MODEL_ANTHROPIC_CLAUDE_3_HAIKU = "anthropic/claude-3-haiku", MODEL_ANTHROPIC_CLAUDE_3_OPUS = "anthropic/claude-3-opus", MODEL_COHERE_COMMAND_R_03_2024 = "cohere/command-r-03-2024", MODEL_MISTRALAI_MISTRAL_LARGE = "mistralai/mistral-large", - MODEL_OPENAI_GPT_4_TURBO_PREVIEW = "openai/gpt-4-turbo-preview", MODEL_OPENAI_GPT_3_5_TURBO_0613 = "openai/gpt-3.5-turbo-0613", - MODEL_MISTRALAI_MISTRAL_TINY = "mistralai/mistral-tiny", + MODEL_OPENAI_GPT_4_TURBO_PREVIEW = "openai/gpt-4-turbo-preview", MODEL_MISTRALAI_MISTRAL_SMALL = "mistralai/mistral-small", + MODEL_MISTRALAI_MISTRAL_TINY = "mistralai/mistral-tiny", MODEL_MISTRALAI_MIXTRAL_8X7B_INSTRUCT = "mistralai/mixtral-8x7b-instruct", MODEL_NEVERSLEEP_NOROMAID_20B = "neversleep/noromaid-20b", MODEL_ALPINDALE_GOLIATH_120B = "alpindale/goliath-120b", @@ -328,6 +325,6 @@ export declare enum E_OPENROUTER_MODEL { MODEL_UNDI95_REMM_SLERP_L2_13B = "undi95/remm-slerp-l2-13b", MODEL_GRYPHE_MYTHOMAX_L2_13B = "gryphe/mythomax-l2-13b", MODEL_OPENAI_GPT_3_5_TURBO = "openai/gpt-3.5-turbo", - MODEL_OPENAI_GPT_4_0314 = "openai/gpt-4-0314", - MODEL_OPENAI_GPT_4 = "openai/gpt-4" + MODEL_OPENAI_GPT_4 = "openai/gpt-4", + MODEL_OPENAI_GPT_4_0314 = "openai/gpt-4-0314" } diff --git a/packages/kbot/dist-in/models/cache/openrouter-models.js b/packages/kbot/dist-in/models/cache/openrouter-models.js index 694a422f..907887b9 100644 --- a/packages/kbot/dist-in/models/cache/openrouter-models.js +++ b/packages/kbot/dist-in/models/cache/openrouter-models.js @@ -1,5 +1,10 @@ export var E_OPENROUTER_MODEL; (function (E_OPENROUTER_MODEL) { + E_OPENROUTER_MODEL["MODEL_ALIBABA_TONGYI_DEEPRESEARCH_30B_A3B"] = "alibaba/tongyi-deepresearch-30b-a3b"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_CODER_FLASH"] = "qwen/qwen3-coder-flash"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_CODER_PLUS"] = "qwen/qwen3-coder-plus"; + E_OPENROUTER_MODEL["MODEL_ARCEE_AI_AFM_4_5B"] = "arcee-ai/afm-4.5b"; + E_OPENROUTER_MODEL["MODEL_OPENGVLAB_INTERNVL3_78B"] = "opengvlab/internvl3-78b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_NEXT_80B_A3B_THINKING"] = "qwen/qwen3-next-80b-a3b-thinking"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_NEXT_80B_A3B_INSTRUCT"] = "qwen/qwen3-next-80b-a3b-instruct"; E_OPENROUTER_MODEL["MODEL_MEITUAN_LONGCAT_FLASH_CHAT"] = "meituan/longcat-flash-chat"; @@ -123,7 +128,6 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MICROSOFT_MAI_DS_R1_FREE"] = "microsoft/mai-ds-r1:free"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_MAI_DS_R1"] = "microsoft/mai-ds-r1"; E_OPENROUTER_MODEL["MODEL_THUDM_GLM_Z1_32B"] = "thudm/glm-z1-32b"; - E_OPENROUTER_MODEL["MODEL_THUDM_GLM_4_32B"] = "thudm/glm-4-32b"; E_OPENROUTER_MODEL["MODEL_OPENAI_O4_MINI_HIGH"] = "openai/o4-mini-high"; E_OPENROUTER_MODEL["MODEL_OPENAI_O3"] = "openai/o3"; E_OPENROUTER_MODEL["MODEL_OPENAI_O4_MINI"] = "openai/o4-mini"; @@ -142,7 +146,6 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MOONSHOTAI_KIMI_VL_A3B_THINKING"] = "moonshotai/kimi-vl-a3b-thinking"; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_3_MINI_BETA"] = "x-ai/grok-3-mini-beta"; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_3_BETA"] = "x-ai/grok-3-beta"; - E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_MAVERICK_FREE"] = "meta-llama/llama-4-maverick:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_MAVERICK"] = "meta-llama/llama-4-maverick"; @@ -164,7 +167,6 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_A"] = "cohere/command-a"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_MINI_SEARCH_PREVIEW"] = "openai/gpt-4o-mini-search-preview"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_SEARCH_PREVIEW"] = "openai/gpt-4o-search-preview"; - E_OPENROUTER_MODEL["MODEL_REKAAI_REKA_FLASH_3_FREE"] = "rekaai/reka-flash-3:free"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_3_27B_IT_FREE"] = "google/gemma-3-27b-it:free"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_3_27B_IT"] = "google/gemma-3-27b-it"; E_OPENROUTER_MODEL["MODEL_THEDRUMMER_ANUBIS_PRO_105B_V1"] = "thedrummer/anubis-pro-105b-v1"; @@ -203,7 +205,6 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501_FREE"] = "mistralai/mistral-small-24b-instruct-2501:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL_24B_INSTRUCT_2501"] = "mistralai/mistral-small-24b-instruct-2501"; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_32B"] = "deepseek/deepseek-r1-distill-qwen-32b"; - E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B_FREE"] = "deepseek/deepseek-r1-distill-qwen-14b:free"; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_R1_DISTILL_QWEN_14B"] = "deepseek/deepseek-r1-distill-qwen-14b"; E_OPENROUTER_MODEL["MODEL_PERPLEXITY_SONAR_REASONING"] = "perplexity/sonar-reasoning"; E_OPENROUTER_MODEL["MODEL_PERPLEXITY_SONAR"] = "perplexity/sonar"; @@ -219,8 +220,6 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_CHAT"] = "deepseek/deepseek-chat"; E_OPENROUTER_MODEL["MODEL_SAO10K_L3_3_EURYALE_70B"] = "sao10k/l3.3-euryale-70b"; E_OPENROUTER_MODEL["MODEL_OPENAI_O1"] = "openai/o1"; - E_OPENROUTER_MODEL["MODEL_X_AI_GROK_2_VISION_1212"] = "x-ai/grok-2-vision-1212"; - E_OPENROUTER_MODEL["MODEL_X_AI_GROK_2_1212"] = "x-ai/grok-2-1212"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R7B_12_2024"] = "cohere/command-r7b-12-2024"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_2_0_FLASH_EXP_FREE"] = "google/gemini-2.0-flash-exp:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_3_70B_INSTRUCT_FREE"] = "meta-llama/llama-3.3-70b-instruct:free"; @@ -241,19 +240,19 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022"] = "anthropic/claude-3.5-haiku-20241022"; E_OPENROUTER_MODEL["MODEL_ANTHRACITE_ORG_MAGNUM_V4_72B"] = "anthracite-org/magnum-v4-72b"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_SONNET"] = "anthropic/claude-3.5-sonnet"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MINISTRAL_3B"] = "mistralai/ministral-3b"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MINISTRAL_8B"] = "mistralai/ministral-8b"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MINISTRAL_3B"] = "mistralai/ministral-3b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_7B_INSTRUCT"] = "qwen/qwen-2.5-7b-instruct"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT"] = "nvidia/llama-3.1-nemotron-70b-instruct"; - E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PI"] = "inflection/inflection-3-pi"; E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY"] = "inflection/inflection-3-productivity"; + E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PI"] = "inflection/inflection-3-pi"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_FLASH_1_5_8B"] = "google/gemini-flash-1.5-8b"; E_OPENROUTER_MODEL["MODEL_THEDRUMMER_ROCINANTE_12B"] = "thedrummer/rocinante-12b"; E_OPENROUTER_MODEL["MODEL_ANTHRACITE_ORG_MAGNUM_V2_72B"] = "anthracite-org/magnum-v2-72b"; - E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-90b-vision-instruct"; - E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT"] = "meta-llama/llama-3.2-1b-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE"] = "meta-llama/llama-3.2-3b-instruct:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT"] = "meta-llama/llama-3.2-3b-instruct"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT"] = "meta-llama/llama-3.2-1b-instruct"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-90b-vision-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-11b-vision-instruct"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_72B_INSTRUCT_FREE"] = "qwen/qwen-2.5-72b-instruct:free"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_72B_INSTRUCT"] = "qwen/qwen-2.5-72b-instruct"; @@ -263,8 +262,8 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MISTRALAI_PIXTRAL_12B"] = "mistralai/pixtral-12b"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS_08_2024"] = "cohere/command-r-plus-08-2024"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_08_2024"] = "cohere/command-r-08-2024"; - E_OPENROUTER_MODEL["MODEL_SAO10K_L3_1_EURYALE_70B"] = "sao10k/l3.1-euryale-70b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT"] = "qwen/qwen-2.5-vl-7b-instruct"; + E_OPENROUTER_MODEL["MODEL_SAO10K_L3_1_EURYALE_70B"] = "sao10k/l3.1-euryale-70b"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_5_MINI_128K_INSTRUCT"] = "microsoft/phi-3.5-mini-128k-instruct"; E_OPENROUTER_MODEL["MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_70B"] = "nousresearch/hermes-3-llama-3.1-70b"; E_OPENROUTER_MODEL["MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_405B"] = "nousresearch/hermes-3-llama-3.1-405b"; @@ -278,45 +277,43 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_70B_INSTRUCT"] = "meta-llama/llama-3.1-70b-instruct"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_NEMO_FREE"] = "mistralai/mistral-nemo:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_NEMO"] = "mistralai/mistral-nemo"; - E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_MINI_2024_07_18"] = "openai/gpt-4o-mini-2024-07-18"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_MINI"] = "openai/gpt-4o-mini"; + E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_MINI_2024_07_18"] = "openai/gpt-4o-mini-2024-07-18"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_2_27B_IT"] = "google/gemma-2-27b-it"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_2_9B_IT_FREE"] = "google/gemma-2-9b-it:free"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_2_9B_IT"] = "google/gemma-2-9b-it"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_SONNET_20240620"] = "anthropic/claude-3.5-sonnet-20240620"; E_OPENROUTER_MODEL["MODEL_SAO10K_L3_EURYALE_70B"] = "sao10k/l3-euryale-70b"; - E_OPENROUTER_MODEL["MODEL_COGNITIVECOMPUTATIONS_DOLPHIN_MIXTRAL_8X22B"] = "cognitivecomputations/dolphin-mixtral-8x22b"; E_OPENROUTER_MODEL["MODEL_NOUSRESEARCH_HERMES_2_PRO_LLAMA_3_8B"] = "nousresearch/hermes-2-pro-llama-3-8b"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3"] = "mistralai/mistral-7b-instruct-v0.3"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE"] = "mistralai/mistral-7b-instruct:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT"] = "mistralai/mistral-7b-instruct"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3"] = "mistralai/mistral-7b-instruct-v0.3"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_MINI_128K_INSTRUCT"] = "microsoft/phi-3-mini-128k-instruct"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_MEDIUM_128K_INSTRUCT"] = "microsoft/phi-3-medium-128k-instruct"; E_OPENROUTER_MODEL["MODEL_NEVERSLEEP_LLAMA_3_LUMIMAID_70B"] = "neversleep/llama-3-lumimaid-70b"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_FLASH_1_5"] = "google/gemini-flash-1.5"; - E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_2024_05_13"] = "openai/gpt-4o-2024-05-13"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O"] = "openai/gpt-4o"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_EXTENDED"] = "openai/gpt-4o:extended"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_GUARD_2_8B"] = "meta-llama/llama-guard-2-8b"; - E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_70B_INSTRUCT"] = "meta-llama/llama-3-70b-instruct"; + E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_2024_05_13"] = "openai/gpt-4o-2024-05-13"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_8B_INSTRUCT"] = "meta-llama/llama-3-8b-instruct"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_70B_INSTRUCT"] = "meta-llama/llama-3-70b-instruct"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MIXTRAL_8X22B_INSTRUCT"] = "mistralai/mixtral-8x22b-instruct"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_WIZARDLM_2_8X22B"] = "microsoft/wizardlm-2-8x22b"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_PRO_1_5"] = "google/gemini-pro-1.5"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_TURBO"] = "openai/gpt-4-turbo"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS"] = "cohere/command-r-plus"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS_04_2024"] = "cohere/command-r-plus-04-2024"; - E_OPENROUTER_MODEL["MODEL_SOPHOSYMPATHEIA_MIDNIGHT_ROSE_70B"] = "sophosympatheia/midnight-rose-70b"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND"] = "cohere/command"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R"] = "cohere/command-r"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_HAIKU"] = "anthropic/claude-3-haiku"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_OPUS"] = "anthropic/claude-3-opus"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_03_2024"] = "cohere/command-r-03-2024"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_LARGE"] = "mistralai/mistral-large"; - E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_TURBO_PREVIEW"] = "openai/gpt-4-turbo-preview"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO_0613"] = "openai/gpt-3.5-turbo-0613"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_TINY"] = "mistralai/mistral-tiny"; + E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_TURBO_PREVIEW"] = "openai/gpt-4-turbo-preview"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL"] = "mistralai/mistral-small"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_TINY"] = "mistralai/mistral-tiny"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MIXTRAL_8X7B_INSTRUCT"] = "mistralai/mixtral-8x7b-instruct"; E_OPENROUTER_MODEL["MODEL_NEVERSLEEP_NOROMAID_20B"] = "neversleep/noromaid-20b"; E_OPENROUTER_MODEL["MODEL_ALPINDALE_GOLIATH_120B"] = "alpindale/goliath-120b"; @@ -329,7 +326,7 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_UNDI95_REMM_SLERP_L2_13B"] = "undi95/remm-slerp-l2-13b"; E_OPENROUTER_MODEL["MODEL_GRYPHE_MYTHOMAX_L2_13B"] = "gryphe/mythomax-l2-13b"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO"] = "openai/gpt-3.5-turbo"; - E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_0314"] = "openai/gpt-4-0314"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4"] = "openai/gpt-4"; + E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_0314"] = "openai/gpt-4-0314"; })(E_OPENROUTER_MODEL || (E_OPENROUTER_MODEL = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQTRVWDtBQTVVRCxXQUFZLGtCQUFrQjtJQUM1QixpR0FBMkUsQ0FBQTtJQUMzRSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCx5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2REFBdUMsQ0FBQTtJQUN2QywrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSx1SEFBaUcsQ0FBQTtJQUNqRyxxSEFBK0YsQ0FBQTtJQUMvRixpRUFBMkMsQ0FBQTtJQUMzQyxpR0FBMkUsQ0FBQTtJQUMzRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCwyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtJQUM3QyxtRUFBNkMsQ0FBQTtJQUM3QyxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSxpR0FBMkUsQ0FBQTtJQUMzRSx5REFBbUMsQ0FBQTtJQUNuQywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxxR0FBK0UsQ0FBQTtJQUMvRSw2REFBdUMsQ0FBQTtJQUN2QywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwySkFBcUksQ0FBQTtJQUNySSx1REFBaUMsQ0FBQTtJQUNqQyx1RkFBaUUsQ0FBQTtJQUNqRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRUFBNkMsQ0FBQTtJQUM3QywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixxRUFBK0MsQ0FBQTtJQUMvQyxxSEFBK0YsQ0FBQTtJQUMvRiwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyxpRUFBMkMsQ0FBQTtJQUMzQyx1REFBaUMsQ0FBQTtJQUNqQyw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpSEFBMkYsQ0FBQTtJQUMzRiwyRkFBcUUsQ0FBQTtJQUNyRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3QywyR0FBcUYsQ0FBQTtJQUNyRiwySEFBcUcsQ0FBQTtJQUNyRyxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRixxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRUFBK0MsQ0FBQTtJQUMvQywyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCw2REFBdUMsQ0FBQTtJQUN2Qyw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6Qyx1RUFBaUQsQ0FBQTtJQUNqRCxtREFBNkIsQ0FBQTtJQUM3Qiw2REFBdUMsQ0FBQTtJQUN2Qyx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyx5SEFBbUcsQ0FBQTtJQUNuRywrR0FBeUYsQ0FBQTtJQUN6RixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRUFBK0MsQ0FBQTtJQUMvQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtSUFBNkcsQ0FBQTtJQUM3RyxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCwrSEFBeUcsQ0FBQTtJQUN6RyxtSUFBNkcsQ0FBQTtJQUM3Ryx5SEFBbUcsQ0FBQTtJQUNuRyx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSxtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RiwyR0FBcUYsQ0FBQTtJQUNyRixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3QiwrRUFBeUQsQ0FBQTtJQUN6RCxpRUFBMkMsQ0FBQTtJQUMzQyxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRix5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCxtRkFBNkQsQ0FBQTtJQUM3RCw2R0FBdUYsQ0FBQTtJQUN2RixxRkFBK0QsQ0FBQTtJQUMvRCx5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxpSEFBMkYsQ0FBQTtJQUMzRiwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RkFBbUUsQ0FBQTtJQUNuRSx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCxpR0FBMkUsQ0FBQTtJQUMzRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxtR0FBNkUsQ0FBQTtJQUM3RSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCwyRkFBcUUsQ0FBQTtJQUNyRSxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx1SEFBaUcsQ0FBQTtJQUNqRyx5R0FBbUYsQ0FBQTtJQUNuRixxR0FBK0UsQ0FBQTtJQUMvRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSwrRkFBeUUsQ0FBQTtJQUN6RSw2RkFBdUUsQ0FBQTtJQUN2RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtR0FBNkUsQ0FBQTtJQUM3RSw2REFBdUMsQ0FBQTtJQUN2QyxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyxpRkFBMkQsQ0FBQTtJQUMzRCw2RUFBdUQsQ0FBQTtJQUN2RCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBNVVXLGtCQUFrQixLQUFsQixrQkFBa0IsUUE0VTdCIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQXlVWDtBQXpVRCxXQUFZLGtCQUFrQjtJQUM1Qix1R0FBaUYsQ0FBQTtJQUNqRiw2RUFBdUQsQ0FBQTtJQUN2RCwyRUFBcUQsQ0FBQTtJQUNyRCxtRUFBNkMsQ0FBQTtJQUM3QywrRUFBeUQsQ0FBQTtJQUN6RCxpR0FBMkUsQ0FBQTtJQUMzRSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCx5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2REFBdUMsQ0FBQTtJQUN2QywrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSx1SEFBaUcsQ0FBQTtJQUNqRyxxSEFBK0YsQ0FBQTtJQUMvRixpRUFBMkMsQ0FBQTtJQUMzQyxpR0FBMkUsQ0FBQTtJQUMzRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCwyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtJQUM3QyxtRUFBNkMsQ0FBQTtJQUM3QyxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSxpR0FBMkUsQ0FBQTtJQUMzRSx5REFBbUMsQ0FBQTtJQUNuQywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxxR0FBK0UsQ0FBQTtJQUMvRSw2REFBdUMsQ0FBQTtJQUN2QywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwySkFBcUksQ0FBQTtJQUNySSx1REFBaUMsQ0FBQTtJQUNqQyx1RkFBaUUsQ0FBQTtJQUNqRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRUFBNkMsQ0FBQTtJQUM3QywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixxRUFBK0MsQ0FBQTtJQUMvQyxxSEFBK0YsQ0FBQTtJQUMvRiwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyxpRUFBMkMsQ0FBQTtJQUMzQyx1REFBaUMsQ0FBQTtJQUNqQyw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpSEFBMkYsQ0FBQTtJQUMzRiwyRkFBcUUsQ0FBQTtJQUNyRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3QywyR0FBcUYsQ0FBQTtJQUNyRiwySEFBcUcsQ0FBQTtJQUNyRyxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRixxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRUFBK0MsQ0FBQTtJQUMvQywyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCw2REFBdUMsQ0FBQTtJQUN2Qyw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCxpRUFBMkMsQ0FBQTtJQUMzQyx1RUFBaUQsQ0FBQTtJQUNqRCxtREFBNkIsQ0FBQTtJQUM3Qiw2REFBdUMsQ0FBQTtJQUN2Qyx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQywrR0FBeUYsQ0FBQTtJQUN6RixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRUFBK0MsQ0FBQTtJQUMvQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtSUFBNkcsQ0FBQTtJQUM3RyxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCwrSEFBeUcsQ0FBQTtJQUN6RyxtSUFBNkcsQ0FBQTtJQUM3Ryx5SEFBbUcsQ0FBQTtJQUNuRyx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSxtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RiwyR0FBcUYsQ0FBQTtJQUNyRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3QixxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRix5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCxtRkFBNkQsQ0FBQTtJQUM3RCw2R0FBdUYsQ0FBQTtJQUN2Rix5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxxRkFBK0QsQ0FBQTtJQUMvRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxpR0FBMkUsQ0FBQTtJQUMzRSxpSEFBMkYsQ0FBQTtJQUMzRixpSEFBMkYsQ0FBQTtJQUMzRiwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCxpR0FBMkUsQ0FBQTtJQUMzRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxtR0FBNkUsQ0FBQTtJQUM3RSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxxRUFBK0MsQ0FBQTtJQUMvQywyRkFBcUUsQ0FBQTtJQUNyRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx5R0FBbUYsQ0FBQTtJQUNuRixxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSxpRkFBMkQsQ0FBQTtJQUMzRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSw2REFBdUMsQ0FBQTtJQUN2QyxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyxpRkFBMkQsQ0FBQTtJQUMzRCw2RUFBdUQsQ0FBQTtJQUN2RCx5RUFBbUQsQ0FBQTtJQUNuRCx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBelVXLGtCQUFrQixLQUFsQixrQkFBa0IsUUF5VTdCIn0= \ No newline at end of file diff --git a/packages/kbot/dist/win-64/tauri-app.exe b/packages/kbot/dist/win-64/tauri-app.exe index e7a00768..bd812cbf 100644 Binary files a/packages/kbot/dist/win-64/tauri-app.exe and b/packages/kbot/dist/win-64/tauri-app.exe differ diff --git a/packages/kbot/generated_gen_0.png b/packages/kbot/generated_gen_0.png new file mode 100644 index 00000000..bf351ac9 Binary files /dev/null and b/packages/kbot/generated_gen_0.png differ diff --git a/packages/kbot/gui/tauri-app/src/App.tsx b/packages/kbot/gui/tauri-app/src/App.tsx index 1e8a08d7..d3863ffc 100644 --- a/packages/kbot/gui/tauri-app/src/App.tsx +++ b/packages/kbot/gui/tauri-app/src/App.tsx @@ -2,6 +2,8 @@ import { useState, useEffect } from "react"; import { ImageFile, PromptTemplate } from "./types"; import { useTauriListeners } from "./hooks/useTauriListeners"; import { tauriApi } from "./lib/tauriApi"; +import { saveStore } from "./lib/init"; +import log from "./lib/log"; import Header from "./components/Header"; import PromptForm from "./components/PromptForm"; import DebugPanel from "./components/DebugPanel"; @@ -25,54 +27,23 @@ function App() { const [isDarkMode, setIsDarkMode] = useState(false); const [debugMessages, setDebugMessages] = useState([]); const [showDebugPanel, setShowDebugPanel] = useState(true); // Default open for debugging + + // Initialize logging system and connect to UI + useEffect(() => { + log.setMessageCallback((message) => { + setDebugMessages(prev => [...prev.slice(-99), message]); // Keep last 100 messages + }); + + // Load existing messages + setDebugMessages(log.getLocalMessages()); + }, []); const [ipcInitialized, setIpcInitialized] = useState(false); const [messageToSend, setMessageToSend] = useState(""); const [generationTimeoutId, setGenerationTimeoutId] = useState(null); const [currentIndex, setCurrentIndex] = useState(0); const [prompts, setPrompts] = useState([]); - const STORE_FILE_NAME = '.kbot-gui.json'; - useEffect(() => { - const loadPrompts = async () => { - addDebugMessage('debug', '🔄 Store loading useEffect triggered'); - try { - if (tauriApi.isTauri()) { - addDebugMessage('info', '📂 Attempting to load prompts from store...'); - const configDir = await tauriApi.path.appDataDir(); - addDebugMessage('debug', `📁 Data directory: ${configDir}`); - const storePath = await tauriApi.path.join(configDir, STORE_FILE_NAME); - addDebugMessage('debug', `📄 Store path resolved to: ${storePath}`); - - const content = await tauriApi.fs.readTextFile(storePath); - addDebugMessage('debug', `📖 File content length: ${content?.length || 0}`); - - if (content) { - const data = JSON.parse(content); - addDebugMessage('debug', `📋 Parsed store data:`, data); - if (data.prompts) { - setPrompts(data.prompts); - addDebugMessage('info', `✅ Loaded ${data.prompts.length} prompts from store`); - } else { - addDebugMessage('warn', '⚠️ Store file exists but has no prompts array'); - } - } else { - addDebugMessage('info', '📭 Store file is empty'); - } - } else { - addDebugMessage('warn', '🌐 Not in Tauri environment, skipping store load'); - } - } catch (e) { - const error = e as Error; - addDebugMessage('info', `📂 Prompt store not found or failed to load. A new one will be created on save.`, { - error: error.message, - errorName: error.name, - storePath: STORE_FILE_NAME - }); - } - }; - loadPrompts(); - }, []); const importPrompts = async () => { try { @@ -86,18 +57,18 @@ function App() { if (newPrompts.prompts && Array.isArray(newPrompts.prompts)) { setPrompts(newPrompts.prompts); savePrompts(newPrompts.prompts); - addDebugMessage('info', `✅ Prompts imported successfully from: ${selected}`); + log.info(`✅ Prompts imported successfully from: ${selected}`); } else { - addDebugMessage('error', 'Invalid prompts file format.'); + log.error('Invalid prompts file format.'); } } } catch (error) { - addDebugMessage('error', 'Failed to import prompts', { error: (error as Error).message }); + log.error('Failed to import prompts', { error: (error as Error).message }); } }; const exportPrompts = async () => { - addDebugMessage('info', 'Attempting to export prompts...'); + log.info('Attempting to export prompts...'); try { const path = await tauriApi.dialog.save({ defaultPath: 'kbot-prompts.json', @@ -105,22 +76,22 @@ function App() { }); if (path) { - addDebugMessage('debug', `📂 Export path selected: ${path}`); + log.debug(`📂 Export path selected: ${path}`); const dataToWrite = JSON.stringify({ prompts }, null, 2); - addDebugMessage('debug', '📋 Data to be exported:', { promptCount: prompts.length, dataLength: dataToWrite.length }); - addDebugMessage('debug', '💾 About to call writeTextFile...'); + log.debug('📋 Data to be exported:', { promptCount: prompts.length, dataLength: dataToWrite.length }); + log.debug('💾 About to call writeTextFile...'); await tauriApi.fs.writeTextFile(path, dataToWrite); - addDebugMessage('info', `✅ Prompts exported successfully to: ${path}`); + log.info(`✅ Prompts exported successfully to: ${path}`); } else { - addDebugMessage('info', 'Export dialog was cancelled.'); + log.info('Export dialog was cancelled.'); } } catch (error) { - addDebugMessage('error', 'Failed to export prompts', { error: (error as Error).message }); + log.error('Failed to export prompts', { error: (error as Error).message }); } }; const deleteFilePermanently = async (pathToDelete: string) => { - addDebugMessage('info', `Requesting deletion of file: ${pathToDelete}`); + log.info(`Requesting deletion of file: ${pathToDelete}`); // This will be the new tauri command await tauriApi.requestFileDeletion({ path: pathToDelete }); }; @@ -128,7 +99,7 @@ function App() { const saveImageAs = async (imagePath: string) => { const imageFile = files.find(f => f.path === imagePath); if (!imageFile) { - addDebugMessage('error', `Could not find image to save: ${imagePath}`); + log.error(`Could not find image to save: ${imagePath}`); return; } @@ -147,12 +118,12 @@ function App() { const uint8Array = new Uint8Array(buffer); await tauriApi.fs.writeFile(newPath, uint8Array); - addDebugMessage('info', `✅ Image saved successfully to: ${newPath}`); + log.info(`✅ Image saved successfully to: ${newPath}`); } else { - addDebugMessage('info', 'Save dialog was cancelled.'); + log.info('Save dialog was cancelled.'); } } catch (error) { - addDebugMessage('error', `Failed to save image: ${(error as Error).message}`); + log.error(`Failed to save image: ${(error as Error).message}`); } }; @@ -169,14 +140,9 @@ function App() { } }; - const addDebugMessage = async (level: 'info' | 'warn' | 'error' | 'debug', message: string, data?: any) => { - const timestamp = new Date().toLocaleTimeString(); - const debugMsg = { level, message, data, timestamp }; - - // Add to local state - setDebugMessages(prev => [...prev.slice(-99), debugMsg]); // Keep last 100 messages - - await tauriApi.addDebugMessage(message, level, data); + // Legacy function for compatibility - just use log directly now + const addDebugMessage = (level: 'info' | 'warn' | 'error' | 'debug', message: string, data?: any) => { + log[level](message, data); }; const addImageFromUrl = async (url: string) => { @@ -206,7 +172,7 @@ function App() { setDst, setApiKey, setIpcInitialized, - addDebugMessage, + setPrompts, setFiles, isGenerating, generationTimeoutId, @@ -293,18 +259,16 @@ function App() { return files.filter(file => file.selected); }; - - const saveAndClose = async () => { // Find the last generated image const generatedFiles = files.filter(file => file.isGenerated); if (generatedFiles.length === 0) { - addDebugMessage('warn', 'No generated images to save'); + log.warn('No generated images to save'); return; } const lastGenerated = generatedFiles[generatedFiles.length - 1]; - addDebugMessage('info', `💾 Saving and closing with: ${lastGenerated.path}`); + log.info(`💾 Saving and closing with: ${lastGenerated.path}`); try { // Send the final result back to images.ts for saving @@ -320,21 +284,20 @@ function App() { await tauriApi.submitPrompt(result); - addDebugMessage('info', '✅ Final result sent, closing app'); + log.info('✅ Final result sent, closing app'); } catch (error) { - addDebugMessage('error', 'Failed to save and close', { error: (error as Error).message }); + log.error('Failed to save and close', { error: (error as Error).message }); } }; - const generateImage = async (promptText: string, includeImages: ImageFile[] = []) => { if (!apiKey) { - addDebugMessage('error', 'No API key available for image generation'); + log.error('No API key available for image generation'); return; } setIsGenerating(true); - addDebugMessage('info', `🎨 Starting image generation via backend: "${promptText}"`); + log.info(`🎨 Starting image generation via backend: "${promptText}"`); // Add placeholder image with spinner to the files grid const placeholderFile: ImageFile = { @@ -358,7 +321,7 @@ function App() { const filePaths = includeImages.map(img => img.path); const genDst = dst || `generated_${Date.now()}.png`; - addDebugMessage('info', 'Sending generation request to images.ts backend', { + log.info('Sending generation request to images.ts backend', { prompt: promptText, files: filePaths, dst: genDst @@ -371,7 +334,7 @@ function App() { dst: genDst }); - addDebugMessage('info', '📤 Generation request sent to backend'); + log.info('📤 Generation request sent to backend'); // Clear any existing timeout if (generationTimeoutId) { @@ -379,7 +342,7 @@ function App() { } const timeoutId = setTimeout(() => { - addDebugMessage('warn', '⏰ Generation timeout - resetting state'); + log.warn('⏰ Generation timeout - resetting state'); setIsGenerating(false); setFiles(prev => prev.filter(file => !file.path.startsWith('generating_'))); setGenerationTimeoutId(null); @@ -388,7 +351,7 @@ function App() { setGenerationTimeoutId(timeoutId); } catch (error) { - addDebugMessage('error', 'Failed to send generation request', { + log.error('Failed to send generation request', { error: error instanceof Error ? error.message : JSON.stringify(error) }); setIsGenerating(false); @@ -459,13 +422,13 @@ function App() { const clearDebugMessages = async () => { setDebugMessages([]); + log.clearLocalMessages(); await tauriApi.clearDebugMessages(); - addDebugMessage('info', 'Debug messages cleared'); }; const sendIPCMessage = async (messageType: string, data: any) => { await tauriApi.sendIPCMessage(messageType, data); - addDebugMessage('info', `IPC message sent: ${messageType}`, data); + log.info(`IPC message sent: ${messageType}`, data); }; const sendMessageToImages = async () => { @@ -479,10 +442,10 @@ function App() { try { await tauriApi.sendMessageToStdout(JSON.stringify(message)); - addDebugMessage('info', `📤 Sent to images.ts: ${messageToSend}`, message); + log.info(`📤 Sent to images.ts: ${messageToSend}`, message); } catch (error) { const errorMessage = error instanceof Error ? error.message : JSON.stringify(error); - addDebugMessage('error', `Failed to send message: ${errorMessage}`); + log.error(`Failed to send message: ${errorMessage}`); } // Clear the input @@ -490,32 +453,18 @@ function App() { }; const savePrompts = async (promptsToSave: PromptTemplate[]) => { - if (tauriApi.isTauri()) { - try { - addDebugMessage('debug', '💾 Starting save prompts process...'); - const dataDir = await tauriApi.path.appDataDir(); - addDebugMessage('debug', `📁 Got data dir: ${dataDir}`); - const storePath = await tauriApi.path.join(dataDir, STORE_FILE_NAME); - addDebugMessage('debug', `📄 Store path: ${storePath}`); - const dataToSave = JSON.stringify({ prompts: promptsToSave }, null, 2); - addDebugMessage('debug', `💾 Data to save:`, { promptCount: promptsToSave.length, dataLength: dataToSave.length }); - - await tauriApi.fs.writeTextFile(storePath, dataToSave); - addDebugMessage('info', `✅ Prompts saved to ${storePath}`); - } catch (error) { - addDebugMessage('error', 'Failed to save prompts', { - error: (error as Error).message, - errorName: (error as Error).name, - errorStack: (error as Error).stack - }); - } - } else { - addDebugMessage('warn', '🌐 Not in Tauri, cannot save prompts'); + try { + await saveStore(promptsToSave); + } catch (error) { + log.error('Failed to save prompts', { + error: (error as Error).message + }); } }; async function openFilePicker() { - if (!tauriApi.isTauri()) { + const { isTauri: isTauriEnv } = await tauriApi.ensureTauriApi(); + if (!isTauriEnv) { // Browser fallback: create file input const input = document.createElement('input'); input.type = 'file'; diff --git a/packages/kbot/gui/tauri-app/src/hooks/useTauriListeners.ts b/packages/kbot/gui/tauri-app/src/hooks/useTauriListeners.ts index a05d95e6..39055fe8 100644 --- a/packages/kbot/gui/tauri-app/src/hooks/useTauriListeners.ts +++ b/packages/kbot/gui/tauri-app/src/hooks/useTauriListeners.ts @@ -1,14 +1,11 @@ import { useEffect } from 'react'; import { tauriApi } from '../lib/tauriApi'; +import { initializeApp, completeInitialization, InitCallbacks } from '../lib/init'; +import log from '../lib/log'; import { TauriEvent } from '../constants'; import { ImageFile } from '../types'; -interface TauriListenersProps { - setPrompt: (prompt: string) => void; - setDst: (dst: string) => void; - setApiKey: (key: string) => void; - setIpcInitialized: (initialized: boolean) => void; - addDebugMessage: (level: 'info' | 'warn' | 'error' | 'debug', message: string, data?: any) => void; +interface TauriListenersProps extends InitCallbacks { setFiles: React.Dispatch>; isGenerating: boolean; generationTimeoutId: NodeJS.Timeout | null; @@ -22,7 +19,7 @@ export function useTauriListeners({ setDst, setApiKey, setIpcInitialized, - addDebugMessage, + setPrompts, setFiles, isGenerating, generationTimeoutId, @@ -39,30 +36,38 @@ export function useTauriListeners({ let unlistenDeleteError: (() => void) | undefined; const setupListeners = async () => { - await tauriApi.ensureTauriApi(); - - if (!tauriApi.isTauri()) { - addDebugMessage('warn', 'Tauri APIs not available, running in browser mode.'); + // Initialize the app using the centralized init system + const initCallbacks: InitCallbacks = { + setPrompt, + setDst, + setApiKey, + setPrompts, + setIpcInitialized + }; + + const initState = await initializeApp(initCallbacks); + + if (!initState.isTauriEnv) { + log.warn('Tauri APIs not available, running in browser mode.'); return; } const listeners = await Promise.all([ - tauriApi.listen(TauriEvent.CONFIG_RECEIVED, (event: any) => { + tauriApi.listen(TauriEvent.CONFIG_RECEIVED, async (event: any) => { const data = event.payload; - if (data.prompt) setPrompt(data.prompt); - if (data.dst) setDst(data.dst); - if (data.apiKey) setApiKey(data.apiKey); - setIpcInitialized(true); - addDebugMessage('info', '📨 Config received from images.ts', { - hasPrompt: !!data.prompt, - hasDst: !!data.dst, - hasApiKey: !!data.apiKey, - fileCount: data.files?.length || 0, - }); + + // Complete initialization using the centralized system + try { + await completeInitialization(data, initCallbacks); + } catch (error) { + log.error('Failed to complete initialization after config received', { + error: (error as Error).message + }); + } }), tauriApi.listen(TauriEvent.IMAGE_RECEIVED, (event: any) => { const imageData = event.payload; - addDebugMessage('debug', '🖼️ Processing image data', { + log.debug('🖼️ Processing image data', { filename: imageData.filename, mimeType: imageData.mimeType, base64Length: imageData.base64?.length, @@ -85,21 +90,21 @@ export function useTauriListeners({ setGenerationTimeoutId(null); } setIsGenerating(false); - addDebugMessage('info', '✅ Generated image added to files', { filename: imageData.filename, prompt }); + log.info('✅ Generated image added to files', { filename: imageData.filename, prompt }); } else { const newImageFile: ImageFile = { path: imageData.filename, src, isGenerated: false }; setFiles(prevFiles => { const exists = prevFiles.some(f => f.path === imageData.filename); if (!exists) { - addDebugMessage('info', `📁 Adding input image: ${imageData.filename}`); + log.info(`📁 Adding input image: ${imageData.filename}`); return [...prevFiles, newImageFile]; } - addDebugMessage('warn', `🔄 Image already exists: ${imageData.filename}`); + log.warn(`🔄 Image already exists: ${imageData.filename}`); return prevFiles; }); } } else { - addDebugMessage('error', '❌ Invalid image data received', { + log.error('❌ Invalid image data received', { hasBase64: !!imageData.base64, hasMimeType: !!imageData.mimeType, hasFilename: !!imageData.filename, @@ -108,13 +113,13 @@ export function useTauriListeners({ }), tauriApi.listen(TauriEvent.GENERATION_ERROR, (event: any) => { const errorData = event.payload; - addDebugMessage('error', '❌ Generation failed', errorData); + log.error('❌ Generation failed', errorData); setIsGenerating(false); setFiles(prev => prev.filter(file => !file.path.startsWith('generating_'))); }), tauriApi.listen(TauriEvent.GENERATION_COMPLETE, (event: any) => { const completionData = event.payload; - addDebugMessage('info', '✅ Simple mode: Image generation completed', { + log.info('✅ Simple mode: Image generation completed', { dst: completionData.dst, prompt: completionData.prompt }); @@ -123,23 +128,16 @@ export function useTauriListeners({ }), tauriApi.listen(TauriEvent.FILE_DELETED_SUCCESSFULLY, (event: any) => { const deletedPath = event.payload.path; - addDebugMessage('info', `✅ File deleted successfully: ${deletedPath}`); + log.info(`✅ File deleted successfully: ${deletedPath}`); setFiles(prevFiles => prevFiles.filter(file => file.path !== deletedPath)); }), tauriApi.listen(TauriEvent.FILE_DELETION_ERROR, (event: any) => { const { path, error } = event.payload; - addDebugMessage('error', `Failed to delete file: ${path}`, { error }); + log.error(`Failed to delete file: ${path}`, { error }); }) ]); [unlistenConfig, unlistenImage, unlistenError, unlistenComplete, unlistenDeleted, unlistenDeleteError] = listeners; - - try { - await tauriApi.requestConfigFromImages(); - addDebugMessage('info', 'Config request sent to images.ts'); - } catch (e) { - addDebugMessage('error', `Failed to request config: ${e}`); - } }; setupListeners(); diff --git a/packages/kbot/gui/tauri-app/src/lib/init.ts b/packages/kbot/gui/tauri-app/src/lib/init.ts new file mode 100644 index 00000000..9e1726a9 --- /dev/null +++ b/packages/kbot/gui/tauri-app/src/lib/init.ts @@ -0,0 +1,276 @@ +import { tauriApi } from './tauriApi'; +import { PromptTemplate } from '../types'; +import log from './log'; + +export interface InitConfig { + prompt?: string; + dst?: string; + apiKey?: string; + files?: string[]; +} + +export interface InitState { + isInitialized: boolean; + isTauriEnv: boolean; + apiInitialized: boolean; + config: InitConfig | null; + prompts: PromptTemplate[]; + error: string | null; +} + +export interface InitCallbacks { + setPrompt: (prompt: string) => void; + setDst: (dst: string) => void; + setApiKey: (key: string) => void; + setPrompts: (prompts: PromptTemplate[]) => void; + setIpcInitialized: (initialized: boolean) => void; +} + +const STORE_FILE_NAME = '.kbot-gui.json'; + +/** + * Step 1: Initialize Tauri APIs + */ +export async function initAPI(): Promise<{ isTauri: boolean; apiInitialized: boolean }> { + log.info('🚀 Starting API initialization...'); + + try { + const result = await tauriApi.ensureTauriApi(); + + log.info('✅ API initialization complete', { + isTauri: result.isTauri, + apiInitialized: result.apiInitialized, + windowTauri: !!(window as any).__TAURI__ + }); + + return result; + } catch (error) { + log.error('❌ API initialization failed', { + error: (error as Error).message + }); + throw error; + } +} + +/** + * Step 2: Get configuration from images.ts backend + */ +export async function getConfig(): Promise { + log.info('📡 Requesting config from images.ts...'); + + try { + await tauriApi.requestConfigFromImages(); + log.info('📤 Config request sent to images.ts'); + } catch (error) { + log.error('❌ Failed to request config', { + error: (error as Error).message + }); + throw error; + } +} + +/** + * Step 3: Load prompts store after config is received + */ +export async function loadStore(callbacks: Pick): Promise { + const { setPrompts } = callbacks; + + log.debug('🔄 Loading prompts from store...'); + + try { + const { isTauri: isTauriEnv } = await tauriApi.ensureTauriApi(); + + if (!isTauriEnv) { + log.warn('🌐 Not in Tauri environment, skipping store load'); + return []; + } + + log.info('📂 Attempting to load prompts from store...'); + const configDir = await tauriApi.path.appDataDir(); + log.debug(`📁 Data directory: ${configDir}`); + const storePath = await tauriApi.path.join(configDir, STORE_FILE_NAME); + log.debug(`📄 Store path resolved to: ${storePath}`); + + const content = await tauriApi.fs.readTextFile(storePath); + log.debug(`📖 File content length: ${content?.length || 0}`); + + if (content) { + const data = JSON.parse(content); + log.debug(`📋 Parsed store data:`, data); + + if (data.prompts && Array.isArray(data.prompts)) { + setPrompts(data.prompts); + log.info(`✅ Loaded ${data.prompts.length} prompts from store`); + return data.prompts; + } else { + log.warn('⚠️ Store file exists but has no valid prompts array'); + return []; + } + } else { + log.info('📭 Store file is empty'); + return []; + } + + } catch (error) { + const err = error as Error; + log.info(`📂 Prompt store not found or failed to load. A new one will be created on save.`, { + error: err.message, + errorName: err.name, + storePath: STORE_FILE_NAME + }); + return []; + } +} + +/** + * Process received config data and update state + */ +export function processConfig( + configData: any, + callbacks: Pick +): InitConfig { + const { setPrompt, setDst, setApiKey, setIpcInitialized } = callbacks; + + const config: InitConfig = {}; + + if (configData.prompt) { + config.prompt = configData.prompt; + setPrompt(configData.prompt); + } + if (configData.dst) { + config.dst = configData.dst; + setDst(configData.dst); + } + if (configData.apiKey) { + config.apiKey = configData.apiKey; + setApiKey(configData.apiKey); + } + if (configData.files) { + config.files = configData.files; + } + + setIpcInitialized(true); + // Mark IPC as ready for logging system + log.setIpcReady(true); + + log.info('📨 Config processed successfully', { + hasPrompt: !!config.prompt, + hasDst: !!config.dst, + hasApiKey: !!config.apiKey, + fileCount: config.files?.length || 0, + }); + + return config; +} + +/** + * Complete initialization flow + */ +export async function initializeApp(callbacks: InitCallbacks): Promise { + // Initialize logging system first + log.initLogging(); + + const state: InitState = { + isInitialized: false, + isTauriEnv: false, + apiInitialized: false, + config: null, + prompts: [], + error: null + }; + + try { + log.info('🎯 Starting complete app initialization...'); + + // Step 1: Initialize APIs + const apiResult = await initAPI(); + state.isTauriEnv = apiResult.isTauri; + state.apiInitialized = apiResult.apiInitialized; + + if (state.isTauriEnv) { + // Step 2: Request config (this will trigger CONFIG_RECEIVED event) + await getConfig(); + + log.info('⏳ Waiting for config to be received via event...'); + // Note: The actual config processing and store loading will happen + // in the CONFIG_RECEIVED event handler + } else { + log.warn('🌐 Running in browser mode, skipping config request'); + state.isInitialized = true; + } + + } catch (error) { + const err = error as Error; + state.error = err.message; + log.error('❌ App initialization failed', { + error: err.message, + step: 'initialization' + }); + } + + return state; +} + +/** + * Complete the initialization after config is received + */ +export async function completeInitialization( + configData: any, + callbacks: InitCallbacks +): Promise<{ config: InitConfig; prompts: PromptTemplate[] }> { + try { + log.info('🎯 Completing initialization after config received...'); + + // Process the received config + const config = processConfig(configData, callbacks); + + // Load the prompts store + const prompts = await loadStore(callbacks); + + log.info('✅ App initialization completed successfully', { + configKeys: Object.keys(config), + promptCount: prompts.length + }); + + return { config, prompts }; + + } catch (error) { + const err = error as Error; + log.error('❌ Failed to complete initialization', { + error: err.message + }); + throw error; + } +} + +/** + * Save prompts to store + */ +export async function saveStore(prompts: PromptTemplate[]): Promise { + const { isTauri: isTauriEnv } = await tauriApi.ensureTauriApi(); + + if (!isTauriEnv) { + log.warn('🌐 Not in Tauri, cannot save prompts'); + return; + } + + try { + log.debug('💾 Starting save prompts process...'); + const dataDir = await tauriApi.path.appDataDir(); + log.debug(`📁 Got data dir: ${dataDir}`); + const storePath = await tauriApi.path.join(dataDir, STORE_FILE_NAME); + log.debug(`📄 Store path: ${storePath}`); + const dataToSave = JSON.stringify({ prompts }, null, 2); + log.debug(`💾 Data to save:`, { promptCount: prompts.length, dataLength: dataToSave.length }); + + await tauriApi.fs.writeTextFile(storePath, dataToSave); + log.info(`✅ Prompts saved to ${storePath}`); + } catch (error) { + log.error('Failed to save prompts', { + error: (error as Error).message, + errorName: (error as Error).name, + errorStack: (error as Error).stack + }); + throw error; + } +} diff --git a/packages/kbot/gui/tauri-app/src/lib/log.ts b/packages/kbot/gui/tauri-app/src/lib/log.ts new file mode 100644 index 00000000..b4a5da7d --- /dev/null +++ b/packages/kbot/gui/tauri-app/src/lib/log.ts @@ -0,0 +1,180 @@ +import { tauriApi } from './tauriApi'; + +export type LogLevel = 'info' | 'warn' | 'error' | 'debug'; + +interface LogMessage { + level: LogLevel; + message: string; + data?: any; + timestamp: string; +} + +interface LogState { + isIpcReady: boolean; + pendingMessages: LogMessage[]; + localMessages: LogMessage[]; + onMessage?: (message: LogMessage) => void; +} + +const logState: LogState = { + isIpcReady: false, + pendingMessages: [], + localMessages: [], +}; + +/** + * Set the IPC ready state and flush pending messages + */ +export function setIpcReady(ready: boolean) { + logState.isIpcReady = ready; + + if (ready && logState.pendingMessages.length > 0) { + info(`🔄 IPC ready, flushing ${logState.pendingMessages.length} pending messages`); + + // Flush all pending messages to backend + logState.pendingMessages.forEach(msg => { + sendToBackend(msg); + }); + + logState.pendingMessages = []; + } +} + +/** + * Set callback for local message handling (e.g., UI updates) + */ +export function setMessageCallback(callback: (message: LogMessage) => void) { + logState.onMessage = callback; +} + +/** + * Get current log state for debugging + */ +export function getLogState() { + return { + ...logState, + pendingCount: logState.pendingMessages.length, + localCount: logState.localMessages.length, + }; +} + +/** + * Send message to backend via IPC + */ +async function sendToBackend(message: LogMessage) { + try { + await tauriApi.addDebugMessage(message.message, message.level, message.data); + } catch (error) { + console.warn('Failed to send log message to backend:', error); + // Don't create infinite loop by logging this error + } +} + +/** + * Core logging function + */ +function log(level: LogLevel, message: string, data?: any) { + const timestamp = new Date().toLocaleTimeString(); + const logMessage: LogMessage = { level, message, data, timestamp }; + + // Always log to console for immediate visibility + const consoleMethod = level === 'error' ? 'error' : + level === 'warn' ? 'warn' : + level === 'debug' ? 'debug' : 'log'; + + const prefix = { + info: '✅', + warn: '⚠️', + error: '❌', + debug: '🔍' + }[level]; + + console[consoleMethod](`${prefix} [${timestamp}] ${message}`, data || ''); + + // Store locally for UI + logState.localMessages.push(logMessage); + // Keep only last 100 messages + if (logState.localMessages.length > 100) { + logState.localMessages = logState.localMessages.slice(-100); + } + + // Notify UI callback if set + if (logState.onMessage) { + logState.onMessage(logMessage); + } + + // Send to backend if IPC is ready + if (logState.isIpcReady) { + sendToBackend(logMessage); + } else { + // Queue for later if IPC not ready + logState.pendingMessages.push(logMessage); + // Prevent memory issues - keep only last 50 pending messages + if (logState.pendingMessages.length > 50) { + logState.pendingMessages = logState.pendingMessages.slice(-50); + } + } +} + +/** + * Logging functions with different levels + */ +export function info(message: string, data?: any) { + log('info', message, data); +} + +export function warn(message: string, data?: any) { + log('warn', message, data); +} + +export function error(message: string, data?: any) { + log('error', message, data); +} + +export function debug(message: string, data?: any) { + log('debug', message, data); +} + +/** + * Get all local messages for UI display + */ +export function getLocalMessages(): LogMessage[] { + return [...logState.localMessages]; +} + +/** + * Clear all local messages + */ +export function clearLocalMessages() { + logState.localMessages = []; + if (logState.onMessage) { + // Notify UI that messages were cleared + info('Debug messages cleared'); + } +} + +/** + * Initialize logging system + */ +export function initLogging() { + info('🚀 Logging system initialized'); + debug('Log state:', getLogState()); +} + +/** + * Default export with all logging functions + */ +const logger = { + info, + warn, + error, + debug, + setIpcReady, + setMessageCallback, + getLocalMessages, + clearLocalMessages, + getLogState, + initLogging +}; + +export default logger; diff --git a/packages/kbot/gui/tauri-app/src/lib/tauriApi.ts b/packages/kbot/gui/tauri-app/src/lib/tauriApi.ts index 204a112d..10b14203 100644 --- a/packages/kbot/gui/tauri-app/src/lib/tauriApi.ts +++ b/packages/kbot/gui/tauri-app/src/lib/tauriApi.ts @@ -22,55 +22,82 @@ let appDataDir: any; let join: any; let isTauri = false; +let apiInitialized = false; const isBrowser = typeof window !== 'undefined'; const apiInitializationPromise = (async () => { - if (!isBrowser) return; - + if (!isBrowser) { + console.log('Not in browser environment'); + return; + } + try { - const windowApi = await import('@tauri-apps/api/window'); - getCurrentWindow = windowApi.getCurrentWindow; - const webviewApi = await import('@tauri-apps/api/webview'); - getCurrentWebview = webviewApi.getCurrentWebview; - isTauri = true; - console.log('✅ Tauri window API loaded'); + // Check if we're in Tauri environment first + if (typeof window !== 'undefined' && (window as any).__TAURI__) { + console.log('🔍 Tauri environment detected, loading APIs...'); + + // Load all Tauri APIs in parallel for better performance + const [ + windowApi, + webviewApi, + coreApi, + eventApi, + dialogApi, + fsApi, + httpApi, + pathApi + ] = await Promise.all([ + import('@tauri-apps/api/window'), + import('@tauri-apps/api/webview'), + import('@tauri-apps/api/core'), + import('@tauri-apps/api/event'), + import('@tauri-apps/plugin-dialog'), + import('@tauri-apps/plugin-fs'), + import('@tauri-apps/plugin-http'), + import('@tauri-apps/api/path') + ]); - const coreApi = await import('@tauri-apps/api/core'); - invoke = coreApi.invoke; + // Assign all APIs + getCurrentWindow = windowApi.getCurrentWindow; + getCurrentWebview = webviewApi.getCurrentWebview; + invoke = coreApi.invoke; + listen = eventApi.listen; + open = dialogApi.open; + save = dialogApi.save; + readFile = fsApi.readFile; + writeFile = fsApi.writeFile; + readTextFile = fsApi.readTextFile; + writeTextFile = fsApi.writeTextFile; + BaseDirectory = fsApi.BaseDirectory; + fetch = httpApi.fetch; + appConfigDir = pathApi.appConfigDir; + appDataDir = pathApi.appDataDir; + join = pathApi.join; - const eventApi = await import('@tauri-apps/api/event'); - listen = eventApi.listen; - - const dialogApi = await import('@tauri-apps/plugin-dialog'); - open = dialogApi.open; - save = dialogApi.save; - - const fsApi = await import('@tauri-apps/plugin-fs'); - readFile = fsApi.readFile; - writeFile = fsApi.writeFile; - readTextFile = fsApi.readTextFile; - writeTextFile = fsApi.writeTextFile; - BaseDirectory = fsApi.BaseDirectory; - - const httpApi = await import('@tauri-apps/plugin-http'); - fetch = httpApi.fetch; - - const pathApi = await import('@tauri-apps/api/path'); - appConfigDir = pathApi.appConfigDir; - appDataDir = pathApi.appDataDir; - join = pathApi.join; + isTauri = true; + apiInitialized = true; + console.log('✅ All Tauri APIs loaded successfully'); + } else { + console.log('🌐 No Tauri environment detected, running in browser mode'); + isTauri = false; + } } catch (e) { - console.warn('Tauri APIs not available, running in browser mode.'); + console.warn('❌ Failed to load Tauri APIs, falling back to browser mode:', e); isTauri = false; } + // Fallback to browser fetch if no Tauri fetch available if (isBrowser && !fetch) { fetch = window.fetch; + console.log('🔄 Using browser fetch as fallback'); } + + apiInitialized = true; })(); export const ensureTauriApi = async () => { await apiInitializationPromise; + return { isTauri, apiInitialized }; }; // Safe invoke function @@ -94,7 +121,12 @@ export { invoke, isTauri }; // Typed API wrappers export const tauriApi = { ensureTauriApi, - isTauri: () => isTauri, + isTauri: () => { + if (!apiInitialized) { + console.warn('⚠️ Tauri API not yet initialized, returning current state'); + } + return isTauri; + }, fetch: async (...args: Parameters): Promise => { await ensureTauriApi(); const fetchFn = fetch || window.fetch; diff --git a/packages/kbot/src/commands/images.ts b/packages/kbot/src/commands/images.ts index 8516abc6..03ddeca4 100644 --- a/packages/kbot/src/commands/images.ts +++ b/packages/kbot/src/commands/images.ts @@ -125,7 +125,6 @@ async function launchGuiAndGetPrompt(argv: any): Promise { }); return new Promise((_resolve, reject) => { - logger.info('🚀 Starting GUI application with improved logging'); const guiAppPath = getGuiAppPath(); logger.info('📁 GUI app path:', guiAppPath); if (!exists(guiAppPath)) {