diff --git a/packages/kbot/dist-in/commands/run-completion.js b/packages/kbot/dist-in/commands/run-completion.js index 943a2fb5..03b88d23 100644 --- a/packages/kbot/dist-in/commands/run-completion.js +++ b/packages/kbot/dist-in/commands/run-completion.js @@ -41,8 +41,11 @@ export const runCompletion = async (client, params, options) => { messages: params.messages, response_format: options.format, }); + if (!completion || !completion.choices || !completion.choices[0] || !completion.choices[0].message || !completion.choices[0].message.content) { + return ''; + } let result = completion.choices[0].message.content; result = await onCompletion(result, options); return result; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWNvbXBsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcnVuLWNvbXBsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsU0FBYyxFQUFFLEVBQUUsT0FBa0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLEdBQUc7WUFDTCxHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDL0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDeEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUMsQ0FBQTtRQUNILE1BQU0sT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQVcsQ0FBQztRQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JCLGtCQUFrQjtJQUNsQixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLE1BQVcsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFDckYsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUNsRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCwyQ0FBMkM7SUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixlQUFlLEVBQUUsT0FBTyxDQUFDLE1BQWE7S0FDdkMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO0lBQ2xELE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDNUMsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUEifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWNvbXBsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcnVuLWNvbXBsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsU0FBYyxFQUFFLEVBQUUsT0FBa0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLEdBQUc7WUFDTCxHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDL0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDeEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUMsQ0FBQTtRQUNILE1BQU0sT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQVcsQ0FBQztRQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JCLGtCQUFrQjtJQUNsQixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLE1BQVcsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFDckYsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUNsRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCwyQ0FBMkM7SUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixlQUFlLEVBQUUsT0FBTyxDQUFDLE1BQWE7S0FDdkMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3SSxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDbEQsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM1QyxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/kbot/dist-in/commands/run.d.ts b/packages/kbot/dist-in/commands/run.d.ts index 01157f22..b7001aa6 100644 --- a/packages/kbot/dist-in/commands/run.d.ts +++ b/packages/kbot/dist-in/commands/run.d.ts @@ -1,3 +1,48 @@ +import { ChatCompletionToolRunnerParams } from 'openai/lib/ChatCompletionRunner'; +import { ChatCompletionMessageParam } from 'openai/resources/index.mjs'; import { IKBotTask } from '@polymech/ai-tools'; -export declare const processRun: (opts: IKBotTask) => Promise; -export declare const run: (opts: IKBotTask) => Promise; +type ProcessRunResult = string | boolean | Record | null; +/** + * Complete options by setting up defaults, validating inputs, and initializing required components + * + * @param opts - The initial task options + * @returns - The fully configured options object or null if validation fails + */ +export declare const complete_options: (opts: IKBotTask) => Promise; +/** + * Gather all messages from various sources for the task + * + * @param opts - The task options + * @param options - The completed options + * @returns - Array of messages and source files + */ +export declare const complete_messages: (opts: IKBotTask, options: IKBotTask) => Promise<{ + messages: Array; + files: any[]; +}>; +/** + * Create and configure the parameters for the request + * + * @param options - The completed options + * @param messages - The gathered messages + * @returns - The configured parameters for the API request + */ +export declare const complete_params: (options: IKBotTask, messages: Array) => Promise>; +/** + * Execute the request based on the mode and return the result + * + * @param options - The completed options + * @param client - The API client + * @param params - The request parameters + * @returns - The result of the execution + */ +export declare const execute_request: (options: IKBotTask, client: any, params: ChatCompletionToolRunnerParams) => Promise; +/** + * Process a task with the configured options and return the result + * + * @param opts - The task options + * @returns - The result of the task execution + */ +export declare const processRun: (opts: IKBotTask) => Promise; +export declare const run: (opts: IKBotTask) => Promise; +export {}; diff --git a/packages/kbot/dist-in/commands/run.js b/packages/kbot/dist-in/commands/run.js index a91cd88e..0b781007 100644 --- a/packages/kbot/dist-in/commands/run.js +++ b/packages/kbot/dist-in/commands/run.js @@ -22,11 +22,15 @@ import { runTools } from './run-tools.js'; import { runAssistant } from './run-assistant.js'; import { all } from '../models/index.js'; import { getLogger } from '../index.js'; -export const processRun = async (opts) => { - let options = null; - const logger = getLogger(opts); - opts.logger = logger; - const target = path.resolve(opts.output || opts.path); +/** + * Complete options by setting up defaults, validating inputs, and initializing required components + * + * @param opts - The initial task options + * @returns - The fully configured options object or null if validation fails + */ +export const complete_options = async (opts) => { + opts.logger = getLogger(opts); + const target = path.resolve(opts.output || opts.path || '.'); if (!exists(target)) { dir(target); } @@ -35,31 +39,52 @@ export const processRun = async (opts) => { opts.include = flatten(opts.include); opts.variables = await loadProfile(opts); try { - options = OptionsSchema().parse(opts); + const parsed = OptionsSchema().parse(opts); + const options = parsed; + const client = createClient(options); + if (!client) { + opts.logger.error('Failed to create client'); + return null; + } + options.client = client; + options.variables = { ...options.variables, ...variables(options) }; + options.collector = collector(options, client); + options.onRun = options.onRun || (async (options) => options); + return options; } catch (error) { - logger.error('Failed to parse options:', error.message, error.issues); - return; + opts.logger.error('Failed to parse options:', error.message, error.issues); + return null; } - const client = createClient(options); - options.variables = { ...options.variables, ...variables(options) }; - if (!client) { - logger.error('Failed to create client'); - return; - } - options.client = client; - options.collector = collector(options, client); - options.onRun = options.onRun || (async (options) => options); +}; +/** + * Gather all messages from various sources for the task + * + * @param opts - The task options + * @param options - The completed options + * @returns - Array of messages and source files + */ +export const complete_messages = async (opts, options) => { let messages = []; const promptMessage = await prompt(opts); - if (!promptMessage.content) { - return ""; + if (!promptMessage?.content) { + return { messages: [], files: [] }; } messages.push(promptMessage); - messages.push(await preferences(opts)); - let files = await get(path.resolve(options.path), options.include, options) || []; + messages.push((await preferences(opts))); + let files = await get(path.resolve(options.path || '.'), options.include, options) || []; files = files.map(f => { return { ...f, role: 'user' }; }); messages = [...messages, ...files]; + return { messages, files }; +}; +/** + * Create and configure the parameters for the request + * + * @param options - The completed options + * @param messages - The gathered messages + * @returns - The configured parameters for the API request + */ +export const complete_params = async (options, messages) => { const params = { model: options.model, messages, @@ -70,12 +95,18 @@ export const processRun = async (opts) => { params.tool_choice = 'auto'; params.parallel_tool_calls = false; } - const logDir = path.resolve(resolve(opts.logs)); - const paramsPath = path.join(logDir, 'params.json'); - write(paramsPath, JSON.stringify({ ...params }, null, 2)); - logger.debug(`kbot run ${options.mode} : ${options.model} @ ${options.router} : ${files.length} files from project ${path.resolve(options.path)} with ${options.include}`, files.map(f => f.path), params.tools.map(t => `${t.function.name} : ${t.function.description}`)); + return params; +}; +/** + * Execute the request based on the mode and return the result + * + * @param options - The completed options + * @param client - The API client + * @param params - The request parameters + * @returns - The result of the execution + */ +export const execute_request = async (options, client, params) => { let ret = null; - options = await options.onRun(options) || options; try { switch (options.mode) { case E_Mode.COMPLETION: @@ -92,9 +123,33 @@ export const processRun = async (opts) => { } } catch (e) { - logger.error(`Error running ${options.mode} mode: ${e.message}`); + options.logger?.error(`Error running ${options.mode} mode: ${e.message}`); } - opts.variables['LAST'] = ret; + return ret; +}; +/** + * Process a task with the configured options and return the result + * + * @param opts - The task options + * @returns - The result of the task execution + */ +export const processRun = async (opts) => { + let options = await complete_options(opts); + if (!options) { + return null; + } + const client = options.client; + const { messages, files } = await complete_messages(opts, options); + if (messages.length === 0) { + return ""; + } + const params = await complete_params(options, messages); + const logDir = path.resolve(resolve(opts.logs || './logs')); + const paramsPath = path.join(logDir, 'params.json'); + write(paramsPath, JSON.stringify({ ...params }, null, 2)); + options.logger.debug(`kbot run ${options.mode} : ${options.model} @ ${options.router} : ${files.length} files from project ${path.resolve(options.path || '.')} with ${options.include}`, files.map(f => f.path), params.tools.map(t => `${t.function.name} : ${t.function.description}`)); + options = await options.onRun(options) || options; + const ret = await execute_request(options, client, params); return ret; }; /** @@ -147,6 +202,7 @@ function flattenArrays(arrays) { export const run = async (opts) => { const ret = []; const logger = new Logger({ minLevel: opts.logLevel || 2 }); + opts.logger = logger; if (opts.include) { if (isString(opts.include)) { opts.include = [opts.include]; @@ -183,10 +239,10 @@ export const run = async (opts) => { items = opts.each.split(','); } if (items.length === 0) { - logger.warn(`No files matching pattern ${opts.each} found in ${opts.path}`); + opts.logger.warn(`No files matching pattern ${opts.each} found in ${opts.path}`); return ret; } - logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`); + opts.logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`); const _models = all(); for (const item of items) { const itemOpts = { @@ -200,12 +256,18 @@ export const run = async (opts) => { itemOpts.model = item; } itemOpts.include = [...opts.include, ...[forward_slash(item)]]; - ret.push(await processRun(itemOpts)); + const result = await processRun(itemOpts); + if (result !== undefined) { + ret.push(result); + } } } else { - ret.push(await processRun(opts)); + const result = await processRun(opts); + if (result !== undefined) { + ret.push(result); + } } return ret; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLElBQUksSUFBSSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLElBQUksSUFBSSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFB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 \ No newline at end of file diff --git a/packages/kbot/dist-in/models/cache/openai-models.d.ts b/packages/kbot/dist-in/models/cache/openai-models.d.ts index 2dbbc09a..bc54ce2f 100644 --- a/packages/kbot/dist-in/models/cache/openai-models.d.ts +++ b/packages/kbot/dist-in/models/cache/openai-models.d.ts @@ -4,12 +4,8 @@ export declare enum E_OPENAI_MODEL { MODEL_DALL_E_3 = "dall-e-3", MODEL_DALL_E_2 = "dall-e-2", MODEL_GPT_4O_AUDIO_PREVIEW_2024_10_01 = "gpt-4o-audio-preview-2024-10-01", - MODEL_O1_PRO_2025_03_19 = "o1-pro-2025-03-19", - MODEL_O1_PRO = "o1-pro", MODEL_GPT_4O_REALTIME_PREVIEW_2024_10_01 = "gpt-4o-realtime-preview-2024-10-01", - MODEL_O1_2024_12_17 = "o1-2024-12-17", MODEL_GPT_4O_TRANSCRIBE = "gpt-4o-transcribe", - MODEL_O1 = "o1", MODEL_GPT_4O_MINI_TRANSCRIBE = "gpt-4o-mini-transcribe", MODEL_GPT_4O_REALTIME_PREVIEW = "gpt-4o-realtime-preview", MODEL_BABBAGE_002 = "babbage-002", @@ -27,6 +23,8 @@ export declare enum E_OPENAI_MODEL { MODEL_GPT_4O_MINI_REALTIME_PREVIEW_2024_12_17 = "gpt-4o-mini-realtime-preview-2024-12-17", MODEL_GPT_3_5_TURBO_INSTRUCT_0914 = "gpt-3.5-turbo-instruct-0914", MODEL_GPT_4O_MINI_SEARCH_PREVIEW = "gpt-4o-mini-search-preview", + MODEL_GPT_4_TURBO_PREVIEW = "gpt-4-turbo-preview", + MODEL_GPT_4_0125_PREVIEW = "gpt-4-0125-preview", MODEL_TTS_1_1106 = "tts-1-1106", MODEL_DAVINCI_002 = "davinci-002", MODEL_GPT_3_5_TURBO_1106 = "gpt-3.5-turbo-1106", @@ -45,11 +43,15 @@ export declare enum E_OPENAI_MODEL { MODEL_O1_PREVIEW = "o1-preview", MODEL_GPT_4_0613 = "gpt-4-0613", MODEL_GPT_4O_SEARCH_PREVIEW = "gpt-4o-search-preview", - MODEL_O3_MINI_2025_01_31 = "o3-mini-2025-01-31", - MODEL_O3_MINI = "o3-mini", + MODEL_O1_2024_12_17 = "o1-2024-12-17", + MODEL_O1_PRO = "o1-pro", + MODEL_O1 = "o1", + MODEL_O1_PRO_2025_03_19 = "o1-pro-2025-03-19", MODEL_GPT_4_5_PREVIEW = "gpt-4.5-preview", MODEL_GPT_4_5_PREVIEW_2025_02_27 = "gpt-4.5-preview-2025-02-27", MODEL_GPT_4O_SEARCH_PREVIEW_2025_03_11 = "gpt-4o-search-preview-2025-03-11", + MODEL_O3_MINI = "o3-mini", + MODEL_O3_MINI_2025_01_31 = "o3-mini-2025-01-31", MODEL_TTS_1 = "tts-1", MODEL_OMNI_MODERATION_2024_09_26 = "omni-moderation-2024-09-26", MODEL_TEXT_EMBEDDING_3_SMALL = "text-embedding-3-small", @@ -59,7 +61,5 @@ export declare enum E_OPENAI_MODEL { MODEL_GPT_4O_MINI_2024_07_18 = "gpt-4o-mini-2024-07-18", MODEL_O1_MINI = "o1-mini", MODEL_GPT_4O_MINI_AUDIO_PREVIEW_2024_12_17 = "gpt-4o-mini-audio-preview-2024-12-17", - MODEL_O1_MINI_2024_09_12 = "o1-mini-2024-09-12", - MODEL_GPT_4_0125_PREVIEW = "gpt-4-0125-preview", - MODEL_GPT_4_TURBO_PREVIEW = "gpt-4-turbo-preview" + MODEL_O1_MINI_2024_09_12 = "o1-mini-2024-09-12" } diff --git a/packages/kbot/dist-in/models/cache/openai-models.js b/packages/kbot/dist-in/models/cache/openai-models.js index c34d1cf7..6deaef66 100644 --- a/packages/kbot/dist-in/models/cache/openai-models.js +++ b/packages/kbot/dist-in/models/cache/openai-models.js @@ -5,12 +5,8 @@ export var E_OPENAI_MODEL; E_OPENAI_MODEL["MODEL_DALL_E_3"] = "dall-e-3"; E_OPENAI_MODEL["MODEL_DALL_E_2"] = "dall-e-2"; E_OPENAI_MODEL["MODEL_GPT_4O_AUDIO_PREVIEW_2024_10_01"] = "gpt-4o-audio-preview-2024-10-01"; - E_OPENAI_MODEL["MODEL_O1_PRO_2025_03_19"] = "o1-pro-2025-03-19"; - E_OPENAI_MODEL["MODEL_O1_PRO"] = "o1-pro"; E_OPENAI_MODEL["MODEL_GPT_4O_REALTIME_PREVIEW_2024_10_01"] = "gpt-4o-realtime-preview-2024-10-01"; - E_OPENAI_MODEL["MODEL_O1_2024_12_17"] = "o1-2024-12-17"; E_OPENAI_MODEL["MODEL_GPT_4O_TRANSCRIBE"] = "gpt-4o-transcribe"; - E_OPENAI_MODEL["MODEL_O1"] = "o1"; E_OPENAI_MODEL["MODEL_GPT_4O_MINI_TRANSCRIBE"] = "gpt-4o-mini-transcribe"; E_OPENAI_MODEL["MODEL_GPT_4O_REALTIME_PREVIEW"] = "gpt-4o-realtime-preview"; E_OPENAI_MODEL["MODEL_BABBAGE_002"] = "babbage-002"; @@ -28,6 +24,8 @@ export var E_OPENAI_MODEL; E_OPENAI_MODEL["MODEL_GPT_4O_MINI_REALTIME_PREVIEW_2024_12_17"] = "gpt-4o-mini-realtime-preview-2024-12-17"; E_OPENAI_MODEL["MODEL_GPT_3_5_TURBO_INSTRUCT_0914"] = "gpt-3.5-turbo-instruct-0914"; E_OPENAI_MODEL["MODEL_GPT_4O_MINI_SEARCH_PREVIEW"] = "gpt-4o-mini-search-preview"; + E_OPENAI_MODEL["MODEL_GPT_4_TURBO_PREVIEW"] = "gpt-4-turbo-preview"; + E_OPENAI_MODEL["MODEL_GPT_4_0125_PREVIEW"] = "gpt-4-0125-preview"; E_OPENAI_MODEL["MODEL_TTS_1_1106"] = "tts-1-1106"; E_OPENAI_MODEL["MODEL_DAVINCI_002"] = "davinci-002"; E_OPENAI_MODEL["MODEL_GPT_3_5_TURBO_1106"] = "gpt-3.5-turbo-1106"; @@ -46,11 +44,15 @@ export var E_OPENAI_MODEL; E_OPENAI_MODEL["MODEL_O1_PREVIEW"] = "o1-preview"; E_OPENAI_MODEL["MODEL_GPT_4_0613"] = "gpt-4-0613"; E_OPENAI_MODEL["MODEL_GPT_4O_SEARCH_PREVIEW"] = "gpt-4o-search-preview"; - E_OPENAI_MODEL["MODEL_O3_MINI_2025_01_31"] = "o3-mini-2025-01-31"; - E_OPENAI_MODEL["MODEL_O3_MINI"] = "o3-mini"; + E_OPENAI_MODEL["MODEL_O1_2024_12_17"] = "o1-2024-12-17"; + E_OPENAI_MODEL["MODEL_O1_PRO"] = "o1-pro"; + E_OPENAI_MODEL["MODEL_O1"] = "o1"; + E_OPENAI_MODEL["MODEL_O1_PRO_2025_03_19"] = "o1-pro-2025-03-19"; E_OPENAI_MODEL["MODEL_GPT_4_5_PREVIEW"] = "gpt-4.5-preview"; E_OPENAI_MODEL["MODEL_GPT_4_5_PREVIEW_2025_02_27"] = "gpt-4.5-preview-2025-02-27"; E_OPENAI_MODEL["MODEL_GPT_4O_SEARCH_PREVIEW_2025_03_11"] = "gpt-4o-search-preview-2025-03-11"; + E_OPENAI_MODEL["MODEL_O3_MINI"] = "o3-mini"; + E_OPENAI_MODEL["MODEL_O3_MINI_2025_01_31"] = "o3-mini-2025-01-31"; E_OPENAI_MODEL["MODEL_TTS_1"] = "tts-1"; E_OPENAI_MODEL["MODEL_OMNI_MODERATION_2024_09_26"] = "omni-moderation-2024-09-26"; E_OPENAI_MODEL["MODEL_TEXT_EMBEDDING_3_SMALL"] = "text-embedding-3-small"; @@ -61,7 +63,5 @@ export var E_OPENAI_MODEL; E_OPENAI_MODEL["MODEL_O1_MINI"] = "o1-mini"; E_OPENAI_MODEL["MODEL_GPT_4O_MINI_AUDIO_PREVIEW_2024_12_17"] = "gpt-4o-mini-audio-preview-2024-12-17"; E_OPENAI_MODEL["MODEL_O1_MINI_2024_09_12"] = "o1-mini-2024-09-12"; - E_OPENAI_MODEL["MODEL_GPT_4_0125_PREVIEW"] = "gpt-4-0125-preview"; - E_OPENAI_MODEL["MODEL_GPT_4_TURBO_PREVIEW"] = "gpt-4-turbo-preview"; })(E_OPENAI_MODEL || (E_OPENAI_MODEL = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbmFpLW1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQWdFWDtBQWhFRCxXQUFZLGNBQWM7SUFDeEIsaUdBQStFLENBQUE7SUFDL0UsMkZBQXlFLENBQUE7SUFDekUsNkNBQTJCLENBQUE7SUFDM0IsNkNBQTJCLENBQUE7SUFDM0IsMkZBQXlFLENBQUE7SUFDekUsK0RBQTZDLENBQUE7SUFDN0MseUNBQXVCLENBQUE7SUFDdkIsaUdBQStFLENBQUE7SUFDL0UsdURBQXFDLENBQUE7SUFDckMsK0RBQTZDLENBQUE7SUFDN0MsaUNBQWUsQ0FBQTtJQUNmLHlFQUF1RCxDQUFBO0lBQ3ZELDJFQUF5RCxDQUFBO0lBQ3pELG1EQUFpQyxDQUFBO0lBQ2pDLDJEQUF5QyxDQUFBO0lBQ3pDLHVEQUFxQyxDQUFBO0lBQ3JDLHlFQUF1RCxDQUFBO0lBQ3ZELHVDQUFxQixDQUFBO0lBQ3JCLHlFQUF1RCxDQUFBO0lBQ3ZELHlFQUF1RCxDQUFBO0lBQ3ZELDZDQUEyQixDQUFBO0lBQzNCLCtFQUE2RCxDQUFBO0lBQzdELHFFQUFtRCxDQUFBO0lBQ25ELHVFQUFxRCxDQUFBO0lBQ3JELHFGQUFtRSxDQUFBO0lBQ25FLDJHQUF5RixDQUFBO0lBQ3pGLG1GQUFpRSxDQUFBO0lBQ2pFLGlGQUErRCxDQUFBO0lBQy9ELGlEQUErQixDQUFBO0lBQy9CLG1EQUFpQyxDQUFBO0lBQ2pDLGlFQUErQyxDQUFBO0lBQy9DLG1EQUFpQyxDQUFBO0lBQ2pDLHlFQUF1RCxDQUFBO0lBQ3ZELHVEQUFxQyxDQUFBO0lBQ3JDLCtEQUE2QyxDQUFBO0lBQzdDLHVHQUFxRixDQUFBO0lBQ3JGLCtEQUE2QyxDQUFBO0lBQzdDLCtDQUE2QixDQUFBO0lBQzdCLGlFQUErQyxDQUFBO0lBQy9DLCtEQUE2QyxDQUFBO0lBQzdDLCtEQUE2QyxDQUFBO0lBQzdDLHlFQUF1RCxDQUFBO0lBQ3ZELGlFQUErQyxDQUFBO0lBQy9DLGlEQUErQixDQUFBO0lBQy9CLGlEQUErQixDQUFBO0lBQy9CLHVFQUFxRCxDQUFBO0lBQ3JELGlFQUErQyxDQUFBO0lBQy9DLDJDQUF5QixDQUFBO0lBQ3pCLDJEQUF5QyxDQUFBO0lBQ3pDLGlGQUErRCxDQUFBO0lBQy9ELDZGQUEyRSxDQUFBO0lBQzNFLHVDQUFxQixDQUFBO0lBQ3JCLGlGQUErRCxDQUFBO0lBQy9ELHlFQUF1RCxDQUFBO0lBQ3ZELHlDQUF1QixDQUFBO0lBQ3ZCLG1EQUFpQyxDQUFBO0lBQ2pDLCtEQUE2QyxDQUFBO0lBQzdDLHlFQUF1RCxDQUFBO0lBQ3ZELDJDQUF5QixDQUFBO0lBQ3pCLHFHQUFtRixDQUFBO0lBQ25GLGlFQUErQyxDQUFBO0lBQy9DLGlFQUErQyxDQUFBO0lBQy9DLG1FQUFpRCxDQUFBO0FBQ25ELENBQUMsRUFoRVcsY0FBYyxLQUFkLGNBQWMsUUFnRXpCIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbmFpLW1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQWdFWDtBQWhFRCxXQUFZLGNBQWM7SUFDeEIsaUdBQStFLENBQUE7SUFDL0UsMkZBQXlFLENBQUE7SUFDekUsNkNBQTJCLENBQUE7SUFDM0IsNkNBQTJCLENBQUE7SUFDM0IsMkZBQXlFLENBQUE7SUFDekUsaUdBQStFLENBQUE7SUFDL0UsK0RBQTZDLENBQUE7SUFDN0MseUVBQXVELENBQUE7SUFDdkQsMkVBQXlELENBQUE7SUFDekQsbURBQWlDLENBQUE7SUFDakMsMkRBQXlDLENBQUE7SUFDekMsdURBQXFDLENBQUE7SUFDckMseUVBQXVELENBQUE7SUFDdkQsdUNBQXFCLENBQUE7SUFDckIseUVBQXVELENBQUE7SUFDdkQseUVBQXVELENBQUE7SUFDdkQsNkNBQTJCLENBQUE7SUFDM0IsK0VBQTZELENBQUE7SUFDN0QscUVBQW1ELENBQUE7SUFDbkQsdUVBQXFELENBQUE7SUFDckQscUZBQW1FLENBQUE7SUFDbkUsMkdBQXlGLENBQUE7SUFDekYsbUZBQWlFLENBQUE7SUFDakUsaUZBQStELENBQUE7SUFDL0QsbUVBQWlELENBQUE7SUFDakQsaUVBQStDLENBQUE7SUFDL0MsaURBQStCLENBQUE7SUFDL0IsbURBQWlDLENBQUE7SUFDakMsaUVBQStDLENBQUE7SUFDL0MsbURBQWlDLENBQUE7SUFDakMseUVBQXVELENBQUE7SUFDdkQsdURBQXFDLENBQUE7SUFDckMsK0RBQTZDLENBQUE7SUFDN0MsdUdBQXFGLENBQUE7SUFDckYsK0RBQTZDLENBQUE7SUFDN0MsK0NBQTZCLENBQUE7SUFDN0IsaUVBQStDLENBQUE7SUFDL0MsK0RBQTZDLENBQUE7SUFDN0MsK0RBQTZDLENBQUE7SUFDN0MseUVBQXVELENBQUE7SUFDdkQsaUVBQStDLENBQUE7SUFDL0MsaURBQStCLENBQUE7SUFDL0IsaURBQStCLENBQUE7SUFDL0IsdUVBQXFELENBQUE7SUFDckQsdURBQXFDLENBQUE7SUFDckMseUNBQXVCLENBQUE7SUFDdkIsaUNBQWUsQ0FBQTtJQUNmLCtEQUE2QyxDQUFBO0lBQzdDLDJEQUF5QyxDQUFBO0lBQ3pDLGlGQUErRCxDQUFBO0lBQy9ELDZGQUEyRSxDQUFBO0lBQzNFLDJDQUF5QixDQUFBO0lBQ3pCLGlFQUErQyxDQUFBO0lBQy9DLHVDQUFxQixDQUFBO0lBQ3JCLGlGQUErRCxDQUFBO0lBQy9ELHlFQUF1RCxDQUFBO0lBQ3ZELHlDQUF1QixDQUFBO0lBQ3ZCLG1EQUFpQyxDQUFBO0lBQ2pDLCtEQUE2QyxDQUFBO0lBQzdDLHlFQUF1RCxDQUFBO0lBQ3ZELDJDQUF5QixDQUFBO0lBQ3pCLHFHQUFtRixDQUFBO0lBQ25GLGlFQUErQyxDQUFBO0FBQ2pELENBQUMsRUFoRVcsY0FBYyxLQUFkLGNBQWMsUUFnRXpCIn0= \ 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 b5043095..9eb6657f 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 @@ -1,4 +1,6 @@ export declare enum E_OPENROUTER_MODEL_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_OPENROUTER_QUASAR_ALPHA = "openrouter/quasar-alpha", MODEL_FREE_DEEPSEEK_DEEPSEEK_V3_BASE_FREE = "deepseek/deepseek-v3-base:free", MODEL_FREE_ALLENAI_MOLMO_7B_D_FREE = "allenai/molmo-7b-d:free", @@ -38,6 +40,7 @@ export declare enum E_OPENROUTER_MODEL_FREE { MODEL_FREE_QWEN_QWQ_32B_PREVIEW_FREE = "qwen/qwq-32b-preview:free", MODEL_FREE_GOOGLE_LEARNLM_1_5_PRO_EXPERIMENTAL_FREE = "google/learnlm-1.5-pro-experimental:free", MODEL_FREE_QWEN_QWEN_2_5_CODER_32B_INSTRUCT_FREE = "qwen/qwen-2.5-coder-32b-instruct:free", + MODEL_FREE_QWEN_QWEN_2_5_7B_INSTRUCT_FREE = "qwen/qwen-2.5-7b-instruct:free", MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT_FREE = "nvidia/llama-3.1-nemotron-70b-instruct:free", MODEL_FREE_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", MODEL_FREE_META_LLAMA_LLAMA_3_2_1B_INSTRUCT_FREE = "meta-llama/llama-3.2-1b-instruct: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 fa20dc86..7f037846 100644 --- a/packages/kbot/dist-in/models/cache/openrouter-models-free.js +++ b/packages/kbot/dist-in/models/cache/openrouter-models-free.js @@ -1,5 +1,7 @@ export var E_OPENROUTER_MODEL_FREE; (function (E_OPENROUTER_MODEL_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_OPENROUTER_QUASAR_ALPHA"] = "openrouter/quasar-alpha"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_V3_BASE_FREE"] = "deepseek/deepseek-v3-base:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_ALLENAI_MOLMO_7B_D_FREE"] = "allenai/molmo-7b-d:free"; @@ -39,6 +41,7 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWQ_32B_PREVIEW_FREE"] = "qwen/qwq-32b-preview:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_LEARNLM_1_5_PRO_EXPERIMENTAL_FREE"] = "google/learnlm-1.5-pro-experimental:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN_2_5_CODER_32B_INSTRUCT_FREE"] = "qwen/qwen-2.5-coder-32b-instruct:free"; + E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN_2_5_7B_INSTRUCT_FREE"] = "qwen/qwen-2.5-7b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT_FREE"] = "nvidia/llama-3.1-nemotron-70b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE"] = "meta-llama/llama-3.2-3b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_3_2_1B_INSTRUCT_FREE"] = "meta-llama/llama-3.2-1b-instruct:free"; @@ -56,4 +59,4 @@ export var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_UNDI95_TOPPY_M_7B_FREE"] = "undi95/toppy-m-7b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_HUGGINGFACEH4_ZEPHYR_7B_BETA_FREE"] = "huggingfaceh4/zephyr-7b-beta:free"; })(E_OPENROUTER_MODEL_FREE || (E_OPENROUTER_MODEL_FREE = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkF3RFg7QUF4REQsV0FBWSx1QkFBdUI7SUFDakMseUZBQThELENBQUE7SUFDOUQsdUdBQTRFLENBQUE7SUFDNUUseUZBQThELENBQUE7SUFDOUQsaUhBQXNGLENBQUE7SUFDdEYsMkdBQWdGLENBQUE7SUFDaEYsbUhBQXdGLENBQUE7SUFDeEYsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYsaUdBQXNFLENBQUE7SUFDdEUscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUscUdBQTBFLENBQUE7SUFDMUUsNkZBQWtFLENBQUE7SUFDbEUsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsdUdBQTRFLENBQUE7SUFDNUUsNkVBQWtELENBQUE7SUFDbEQsK0hBQW9HLENBQUE7SUFDcEcsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsbUhBQXdGLENBQUE7SUFDeEYsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkhBQWtHLENBQUE7SUFDbEcsNkZBQWtFLENBQUE7SUFDbEUsNkhBQWtHLENBQUE7SUFDbEcsaUdBQXNFLENBQUE7SUFDdEUsdUlBQTRHLENBQUE7SUFDNUcsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYsNkZBQWtFLENBQUE7SUFDbEUsMkhBQWdHLENBQUE7SUFDaEcscUhBQTBGLENBQUE7SUFDMUYsaUlBQXNHLENBQUE7SUFDdEcscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYscUlBQTBHLENBQUE7SUFDMUcseUdBQThFLENBQUE7SUFDOUUsNkdBQWtGLENBQUE7SUFDbEYsdUdBQTRFLENBQUE7SUFDNUUscUhBQTBGLENBQUE7SUFDMUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7SUFDcEYseUhBQThGLENBQUE7SUFDOUYsNkhBQWtHLENBQUE7SUFDbEcsNkZBQWtFLENBQUE7SUFDbEUsdUZBQTRELENBQUE7SUFDNUQsNkdBQWtGLENBQUE7QUFDcEYsQ0FBQyxFQXhEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBd0RsQyJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkEyRFg7QUEzREQsV0FBWSx1QkFBdUI7SUFDakMsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUseUZBQThELENBQUE7SUFDOUQsdUdBQTRFLENBQUE7SUFDNUUseUZBQThELENBQUE7SUFDOUQsaUhBQXNGLENBQUE7SUFDdEYsMkdBQWdGLENBQUE7SUFDaEYsbUhBQXdGLENBQUE7SUFDeEYsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYsaUdBQXNFLENBQUE7SUFDdEUscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUscUdBQTBFLENBQUE7SUFDMUUsNkZBQWtFLENBQUE7SUFDbEUsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsdUdBQTRFLENBQUE7SUFDNUUsNkVBQWtELENBQUE7SUFDbEQsK0hBQW9HLENBQUE7SUFDcEcsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsbUhBQXdGLENBQUE7SUFDeEYsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkhBQWtHLENBQUE7SUFDbEcsNkZBQWtFLENBQUE7SUFDbEUsNkhBQWtHLENBQUE7SUFDbEcsaUdBQXNFLENBQUE7SUFDdEUsdUlBQTRHLENBQUE7SUFDNUcsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYsNkZBQWtFLENBQUE7SUFDbEUsMkhBQWdHLENBQUE7SUFDaEcscUhBQTBGLENBQUE7SUFDMUYsdUdBQTRFLENBQUE7SUFDNUUsaUlBQXNHLENBQUE7SUFDdEcscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYscUlBQTBHLENBQUE7SUFDMUcseUdBQThFLENBQUE7SUFDOUUsNkdBQWtGLENBQUE7SUFDbEYsdUdBQTRFLENBQUE7SUFDNUUscUhBQTBGLENBQUE7SUFDMUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7SUFDcEYseUhBQThGLENBQUE7SUFDOUYsNkhBQWtHLENBQUE7SUFDbEcsNkZBQWtFLENBQUE7SUFDbEUsdUZBQTRELENBQUE7SUFDNUQsNkdBQWtGLENBQUE7QUFDcEYsQ0FBQyxFQTNEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBMkRsQyJ9 \ 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 964b762f..77dbfab3 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_META_LLAMA_LLAMA_4_MAVERICK_FREE = "meta-llama/llama-4-maverick:free", + MODEL_META_LLAMA_LLAMA_4_MAVERICK = "meta-llama/llama-4-maverick", + MODEL_META_LLAMA_LLAMA_4_SCOUT_FREE = "meta-llama/llama-4-scout:free", + MODEL_META_LLAMA_LLAMA_4_SCOUT = "meta-llama/llama-4-scout", + MODEL_GOOGLE_GEMINI_2_5_PRO_PREVIEW_03_25 = "google/gemini-2.5-pro-preview-03-25", MODEL_OPENROUTER_QUASAR_ALPHA = "openrouter/quasar-alpha", MODEL_ALL_HANDS_OPENHANDS_LM_32B_V0_1 = "all-hands/openhands-lm-32b-v0.1", MODEL_MISTRAL_MINISTRAL_8B = "mistral/ministral-8b", @@ -10,6 +15,7 @@ export declare enum E_OPENROUTER_MODEL { MODEL_QWEN_QWEN2_5_VL_3B_INSTRUCT_FREE = "qwen/qwen2.5-vl-3b-instruct:free", MODEL_GOOGLE_GEMINI_2_5_PRO_EXP_03_25_FREE = "google/gemini-2.5-pro-exp-03-25:free", MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE = "qwen/qwen2.5-vl-32b-instruct:free", + MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT = "qwen/qwen2.5-vl-32b-instruct", MODEL_DEEPSEEK_DEEPSEEK_CHAT_V3_0324_FREE = "deepseek/deepseek-chat-v3-0324:free", MODEL_DEEPSEEK_DEEPSEEK_CHAT_V3_0324 = "deepseek/deepseek-chat-v3-0324", MODEL_FEATHERLESS_QWERKY_72B_FREE = "featherless/qwerky-72b:free", @@ -134,6 +140,7 @@ export declare enum E_OPENROUTER_MODEL { MODEL_X_AI_GROK_BETA = "x-ai/grok-beta", MODEL_MISTRALAI_MINISTRAL_8B = "mistralai/ministral-8b", MODEL_MISTRALAI_MINISTRAL_3B = "mistralai/ministral-3b", + MODEL_QWEN_QWEN_2_5_7B_INSTRUCT_FREE = "qwen/qwen-2.5-7b-instruct:free", MODEL_QWEN_QWEN_2_5_7B_INSTRUCT = "qwen/qwen-2.5-7b-instruct", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT_FREE = "nvidia/llama-3.1-nemotron-70b-instruct:free", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT = "nvidia/llama-3.1-nemotron-70b-instruct", diff --git a/packages/kbot/dist-in/models/cache/openrouter-models.js b/packages/kbot/dist-in/models/cache/openrouter-models.js index 463fc008..f21da36a 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_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"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_SCOUT_FREE"] = "meta-llama/llama-4-scout:free"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_SCOUT"] = "meta-llama/llama-4-scout"; + E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_2_5_PRO_PREVIEW_03_25"] = "google/gemini-2.5-pro-preview-03-25"; E_OPENROUTER_MODEL["MODEL_OPENROUTER_QUASAR_ALPHA"] = "openrouter/quasar-alpha"; E_OPENROUTER_MODEL["MODEL_ALL_HANDS_OPENHANDS_LM_32B_V0_1"] = "all-hands/openhands-lm-32b-v0.1"; E_OPENROUTER_MODEL["MODEL_MISTRAL_MINISTRAL_8B"] = "mistral/ministral-8b"; @@ -11,6 +16,7 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN2_5_VL_3B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-3b-instruct:free"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_2_5_PRO_EXP_03_25_FREE"] = "google/gemini-2.5-pro-exp-03-25:free"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-32b-instruct:free"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT"] = "qwen/qwen2.5-vl-32b-instruct"; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_CHAT_V3_0324_FREE"] = "deepseek/deepseek-chat-v3-0324:free"; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_CHAT_V3_0324"] = "deepseek/deepseek-chat-v3-0324"; E_OPENROUTER_MODEL["MODEL_FEATHERLESS_QWERKY_72B_FREE"] = "featherless/qwerky-72b:free"; @@ -135,6 +141,7 @@ export var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_BETA"] = "x-ai/grok-beta"; 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_FREE"] = "qwen/qwen-2.5-7b-instruct:free"; 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_FREE"] = "nvidia/llama-3.1-nemotron-70b-instruct:free"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT"] = "nvidia/llama-3.1-nemotron-70b-instruct"; @@ -287,4 +294,4 @@ export var E_OPENROUTER_MODEL; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQStSWDtBQS9SRCxXQUFZLGtCQUFrQjtJQUM1QiwrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSx5R0FBbUYsQ0FBQTtJQUNuRiwyR0FBcUYsQ0FBQTtJQUNyRiwrRUFBeUQsQ0FBQTtJQUN6RCx1R0FBaUYsQ0FBQTtJQUNqRixpR0FBMkUsQ0FBQTtJQUMzRSx5R0FBbUYsQ0FBQTtJQUNuRixtR0FBNkUsQ0FBQTtJQUM3RSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx1RkFBaUUsQ0FBQTtJQUNqRSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRix5RkFBbUUsQ0FBQTtJQUNuRSwyRkFBcUUsQ0FBQTtJQUNyRSw2RkFBdUUsQ0FBQTtJQUN2RSxpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxtSUFBNkcsQ0FBQTtJQUM3RyxpRkFBMkQsQ0FBQTtJQUMzRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxxSEFBK0YsQ0FBQTtJQUMvRixtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRkFBNkQsQ0FBQTtJQUM3RCxxSEFBK0YsQ0FBQTtJQUMvRixtSUFBNkcsQ0FBQTtJQUM3Ryw2RUFBdUQsQ0FBQTtJQUN2RCxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixpR0FBMkUsQ0FBQTtJQUMzRSxxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCxtSUFBNkcsQ0FBQTtJQUM3Ryx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2R0FBdUYsQ0FBQTtJQUN2Riw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtSEFBNkYsQ0FBQTtJQUM3RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2SEFBdUcsQ0FBQTtJQUN2RywrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3Qiw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxpRUFBMkMsQ0FBQTtJQUMzQyxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxpSEFBMkYsQ0FBQTtJQUMzRix5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpSEFBMkYsQ0FBQTtJQUMzRix1R0FBaUYsQ0FBQTtJQUNqRixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSw2REFBdUMsQ0FBQTtJQUN2Qyw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCxtRkFBNkQsQ0FBQTtJQUM3RCx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2Rix5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxxRkFBK0QsQ0FBQTtJQUMvRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxpSEFBMkYsQ0FBQTtJQUMzRiwySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRiwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCwyRkFBcUUsQ0FBQTtJQUNyRSxpR0FBMkUsQ0FBQTtJQUMzRSxtRUFBNkMsQ0FBQTtJQUM3Qyx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCwyRkFBcUUsQ0FBQTtJQUNyRSx5SEFBbUcsQ0FBQTtJQUNuRyx5SEFBbUcsQ0FBQTtJQUNuRywyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxxR0FBK0UsQ0FBQTtJQUMvRSxtR0FBNkUsQ0FBQTtJQUM3RSxtRkFBNkQsQ0FBQTtJQUM3RCx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxxRUFBK0MsQ0FBQTtJQUMvQywyRkFBcUUsQ0FBQTtJQUNyRSwyRUFBcUQsQ0FBQTtJQUNyRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCxtSEFBNkYsQ0FBQTtJQUM3Rix5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx1SEFBaUcsQ0FBQTtJQUNqRyxpRkFBMkQsQ0FBQTtJQUMzRCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxtSEFBNkYsQ0FBQTtJQUM3Rix5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCxpRkFBMkQsQ0FBQTtJQUMzRCx1RkFBaUUsQ0FBQTtJQUNqRSwrR0FBeUYsQ0FBQTtJQUN6Riw2RkFBdUUsQ0FBQTtJQUN2RSxpRkFBMkQsQ0FBQTtJQUMzRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtR0FBNkUsQ0FBQTtJQUM3RSw2REFBdUMsQ0FBQTtJQUN2QyxpRUFBMkMsQ0FBQTtJQUMzQywyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCx1SEFBaUcsQ0FBQTtJQUNqRyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCxxR0FBK0UsQ0FBQTtJQUMvRSxxSEFBK0YsQ0FBQTtJQUMvRixpRkFBMkQsQ0FBQTtJQUMzRCxtRUFBNkMsQ0FBQTtJQUM3Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRkFBeUUsQ0FBQTtJQUN6RSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RkFBbUUsQ0FBQTtJQUNuRSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCx1RUFBaUQsQ0FBQTtJQUNqRCwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxpRUFBMkMsQ0FBQTtJQUMzQywyRUFBcUQsQ0FBQTtJQUNyRCx1R0FBaUYsQ0FBQTtJQUNqRiwyREFBcUMsQ0FBQTtJQUNyQyxtR0FBNkUsQ0FBQTtJQUM3RSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RUFBbUQsQ0FBQTtJQUNuRCxtRkFBNkQsQ0FBQTtJQUM3RCx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBL1JXLGtCQUFrQixLQUFsQixrQkFBa0IsUUErUjdCIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQXNTWDtBQXRTRCxXQUFZLGtCQUFrQjtJQUM1QixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCx1R0FBaUYsQ0FBQTtJQUNqRiwrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSx5R0FBbUYsQ0FBQTtJQUNuRiwyR0FBcUYsQ0FBQTtJQUNyRiwrRUFBeUQsQ0FBQTtJQUN6RCx1R0FBaUYsQ0FBQTtJQUNqRixpR0FBMkUsQ0FBQTtJQUMzRSx5R0FBbUYsQ0FBQTtJQUNuRixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx1RkFBaUUsQ0FBQTtJQUNqRSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRix5RkFBbUUsQ0FBQTtJQUNuRSwyRkFBcUUsQ0FBQTtJQUNyRSw2RkFBdUUsQ0FBQTtJQUN2RSxpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxtSUFBNkcsQ0FBQTtJQUM3RyxpRkFBMkQsQ0FBQTtJQUMzRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxxSEFBK0YsQ0FBQTtJQUMvRixtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRkFBNkQsQ0FBQTtJQUM3RCxxSEFBK0YsQ0FBQTtJQUMvRixtSUFBNkcsQ0FBQTtJQUM3Ryw2RUFBdUQsQ0FBQTtJQUN2RCxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixpR0FBMkUsQ0FBQTtJQUMzRSxxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCxtSUFBNkcsQ0FBQTtJQUM3Ryx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2R0FBdUYsQ0FBQTtJQUN2Riw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtSEFBNkYsQ0FBQTtJQUM3RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2SEFBdUcsQ0FBQTtJQUN2RywrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3Qiw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxpRUFBMkMsQ0FBQTtJQUMzQyxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxpSEFBMkYsQ0FBQTtJQUMzRix5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpSEFBMkYsQ0FBQTtJQUMzRix1R0FBaUYsQ0FBQTtJQUNqRixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSw2REFBdUMsQ0FBQTtJQUN2Qyw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2Rix5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxxRkFBK0QsQ0FBQTtJQUMvRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxpSEFBMkYsQ0FBQTtJQUMzRiwySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRiwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCwyRkFBcUUsQ0FBQTtJQUNyRSxpR0FBMkUsQ0FBQTtJQUMzRSxtRUFBNkMsQ0FBQTtJQUM3Qyx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCwyRkFBcUUsQ0FBQTtJQUNyRSx5SEFBbUcsQ0FBQTtJQUNuRyx5SEFBbUcsQ0FBQTtJQUNuRywyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxxR0FBK0UsQ0FBQTtJQUMvRSxtR0FBNkUsQ0FBQTtJQUM3RSxtRkFBNkQsQ0FBQTtJQUM3RCx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxxRUFBK0MsQ0FBQTtJQUMvQywyRkFBcUUsQ0FBQTtJQUNyRSwyRUFBcUQsQ0FBQTtJQUNyRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCxtSEFBNkYsQ0FBQTtJQUM3Rix5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx1SEFBaUcsQ0FBQTtJQUNqRyxpRkFBMkQsQ0FBQTtJQUMzRCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxtSEFBNkYsQ0FBQTtJQUM3Rix5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCxpRkFBMkQsQ0FBQTtJQUMzRCx1RkFBaUUsQ0FBQTtJQUNqRSwrR0FBeUYsQ0FBQTtJQUN6Riw2RkFBdUUsQ0FBQTtJQUN2RSxpRkFBMkQsQ0FBQTtJQUMzRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtR0FBNkUsQ0FBQTtJQUM3RSw2REFBdUMsQ0FBQTtJQUN2QyxpRUFBMkMsQ0FBQTtJQUMzQywyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCx1SEFBaUcsQ0FBQTtJQUNqRyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCxxR0FBK0UsQ0FBQTtJQUMvRSxxSEFBK0YsQ0FBQTtJQUMvRixpRkFBMkQsQ0FBQTtJQUMzRCxtRUFBNkMsQ0FBQTtJQUM3Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRkFBeUUsQ0FBQTtJQUN6RSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCxtRkFBNkQsQ0FBQTtJQUM3RCx5RkFBbUUsQ0FBQTtJQUNuRSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCx1RUFBaUQsQ0FBQTtJQUNqRCwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxpRUFBMkMsQ0FBQTtJQUMzQywyRUFBcUQsQ0FBQTtJQUNyRCx1R0FBaUYsQ0FBQTtJQUNqRiwyREFBcUMsQ0FBQTtJQUNyQyxtR0FBNkUsQ0FBQTtJQUM3RSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RUFBbUQsQ0FBQTtJQUNuRCxtRkFBNkQsQ0FBQTtJQUM3RCx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBdFNXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFzUzdCIn0= \ No newline at end of file diff --git a/packages/kbot/logs/params.json b/packages/kbot/logs/params.json index c1331d05..c5631a37 100644 --- a/packages/kbot/logs/params.json +++ b/packages/kbot/logs/params.json @@ -1,207 +1,14 @@ { - "model": "openai/gpt-4o", + "model": "openrouter/quasar-alpha", "messages": [ { "role": "user", - "content": "List all files in the directory C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data. Return the list as a JSON array of filenames." + "content": "divide 15 by 3. Return only the number, no explanation." }, { "role": "user", "content": "USER Preferences : # Preferences\r\n\r\nYou are a helpful AI assistant. When asked to perform calculations, you should return only the numerical result without any explanation or comments. " } ], - "tools": [ - { - "type": "function", - "function": { - "name": "list_files", - "description": "List all files in a directory", - "parameters": { - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "pattern": { - "type": "string", - "optional": true - } - }, - "required": [ - "directory" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "read_files", - "description": "Reads files in a directory with a given pattern", - "parameters": { - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "pattern": { - "type": "string", - "optional": true - } - }, - "required": [ - "directory" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "remove_file", - "description": "Remove a file at given path", - "parameters": { - "type": "object", - "properties": { - "path": { - "type": "string" - } - }, - "required": [ - "path" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "rename_file", - "description": "Rename or move a file or directory", - "parameters": { - "type": "object", - "properties": { - "src": { - "type": "string" - }, - "dst": { - "type": "string" - } - }, - "required": [ - "path" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "modify_project_files", - "description": "Create or modify existing project files in one shot, preferably used for creating project structure)", - "parameters": { - "type": "object", - "properties": { - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "content": { - "type": "string", - "description": "base64 encoded string" - } - }, - "required": [ - "path", - "content" - ] - } - } - }, - "required": [ - "files" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "write_file", - "description": "Writes to a file, given a path and content (base64). No directory or file exists check needed!", - "parameters": { - "type": "object", - "properties": { - "file": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "content": { - "type": "string", - "description": "base64 encoded string" - } - } - } - }, - "required": [ - "file" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "file_exists", - "description": "check if a file or folder exists", - "parameters": { - "type": "object", - "properties": { - "file": { - "type": "object", - "properties": { - "path": { - "type": "string" - } - } - } - }, - "required": [ - "file" - ] - } - } - }, - { - "type": "function", - "function": { - "name": "read_file", - "description": "read a file, at given a path", - "parameters": { - "type": "object", - "properties": { - "file": { - "type": "object", - "properties": { - "path": { - "type": "string" - } - } - } - }, - "required": [ - "file" - ] - } - } - } - ], - "tool_choice": "auto", - "parallel_tool_calls": false + "tools": [] } \ No newline at end of file diff --git a/packages/kbot/src/commands/run-completion.ts b/packages/kbot/src/commands/run-completion.ts index ba654c6b..4f34ada3 100644 --- a/packages/kbot/src/commands/run-completion.ts +++ b/packages/kbot/src/commands/run-completion.ts @@ -45,6 +45,9 @@ export const runCompletion = async (client: OpenAI, params: any, options: IKBotT messages: params.messages, response_format: options.format as any, }) + if (!completion || !completion.choices || !completion.choices[0] || !completion.choices[0].message || !completion.choices[0].message.content) { + return '' + } let result = completion.choices[0].message.content result = await onCompletion(result, options) return result diff --git a/packages/kbot/src/commands/run.ts b/packages/kbot/src/commands/run.ts index 9862a966..8e2901c2 100644 --- a/packages/kbot/src/commands/run.ts +++ b/packages/kbot/src/commands/run.ts @@ -28,51 +28,92 @@ import { runAssistant } from './run-assistant.js' import { all } from '../models/index.js' import { getLogger } from '../index.js' -export const processRun = async (opts: IKBotTask) => { - - let options: IKBotTask = null - const logger = getLogger(opts) - opts.logger = logger - const target = path.resolve(opts.output || opts.path) +type ProcessRunResult = string | boolean | Record | null; + +/** + * Complete options by setting up defaults, validating inputs, and initializing required components + * + * @param opts - The initial task options + * @returns - The fully configured options object or null if validation fails + */ +export const complete_options = async (opts: IKBotTask): Promise => { + opts.logger = getLogger(opts) + + const target = path.resolve(opts.output || opts.path || '.') if (!exists(target)) { dir(target) } + opts.disable = flatten(opts.disable) opts.disableTools = flatten(opts.disableTools) opts.include = flatten(opts.include) opts.variables = await loadProfile(opts) + try { - options = OptionsSchema().parse(opts) as any + const parsed = OptionsSchema().parse(opts); + const options = parsed as IKBotTask; + + const client = createClient(options) + if (!client) { + opts.logger.error('Failed to create client') + return null + } + + options.client = client + options.variables = { ...options.variables, ...variables(options) } + options.collector = collector(options, client) + options.onRun = options.onRun || (async (options) => options) + + return options } catch (error) { - logger.error('Failed to parse options:', error.message, error.issues) - return + opts.logger.error('Failed to parse options:', error.message, error.issues) + return null } +} - const client = createClient(options) - options.variables = { ...options.variables, ...variables(options) } - - if (!client) { - logger.error('Failed to create client') - return - } - options.client = client - options.collector = collector(options, client) - options.onRun = options.onRun || (async (options) => options) - +/** + * Gather all messages from various sources for the task + * + * @param opts - The task options + * @param options - The completed options + * @returns - Array of messages and source files + */ +export const complete_messages = async ( + opts: IKBotTask, + options: IKBotTask +): Promise<{ + messages: Array, + files: any[] +}> => { let messages: Array = [] const promptMessage = await prompt(opts) - if(!promptMessage.content){ - return "" + if (!promptMessage?.content) { + return { messages: [], files: [] } } - messages.push(promptMessage) - messages.push(await preferences(opts)) + + messages.push(promptMessage as ChatCompletionMessageParam) + messages.push((await preferences(opts)) as ChatCompletionMessageParam) - let files = await get(path.resolve(options.path), options.include, options) || [] + let files = await get(path.resolve(options.path || '.'), options.include, options) || [] files = files.map(f => { return { ...f, role: 'user' } }) - messages = [...messages as any, ...files] + messages = [...messages as Array, ...files] + + return { messages, files } +} +/** + * Create and configure the parameters for the request + * + * @param options - The completed options + * @param messages - The gathered messages + * @returns - The configured parameters for the API request + */ +export const complete_params = async ( + options: IKBotTask, + messages: Array +): Promise> => { const params = { model: options.model, messages, @@ -84,13 +125,25 @@ export const processRun = async (opts: IKBotTask) => { params.tool_choice = 'auto' params.parallel_tool_calls = false } + + return params +} - const logDir = path.resolve(resolve(opts.logs)) - const paramsPath = path.join(logDir, 'params.json') - write(paramsPath, JSON.stringify({ ...params }, null, 2)) - logger.debug(`kbot run ${options.mode} : ${options.model} @ ${options.router} : ${files.length} files from project ${path.resolve(options.path)} with ${options.include}`, files.map(f => f.path), params.tools.map(t => `${t.function.name} : ${t.function.description}`)) - let ret = null - options = await options.onRun(options) || options +/** + * Execute the request based on the mode and return the result + * + * @param options - The completed options + * @param client - The API client + * @param params - The request parameters + * @returns - The result of the execution + */ +export const execute_request = async ( + options: IKBotTask, + client: any, + params: ChatCompletionToolRunnerParams +): Promise => { + let ret: any = null + try { switch (options.mode) { case E_Mode.COMPLETION: @@ -109,11 +162,42 @@ export const processRun = async (opts: IKBotTask) => { throw new Error(`Unsupported mode: ${options.mode}`) } } catch (e) { - logger.error(`Error running ${options.mode} mode: ${e.message}`) + options.logger?.error(`Error running ${options.mode} mode: ${e.message}`) } - opts.variables['LAST'] = ret + return ret } + +/** + * Process a task with the configured options and return the result + * + * @param opts - The task options + * @returns - The result of the task execution + */ +export const processRun = async (opts: IKBotTask): Promise => { + let options = await complete_options(opts) + if (!options) { + return null + } + + const client = options.client + + const { messages, files } = await complete_messages(opts, options) + if (messages.length === 0) { + return "" + } + + const params = await complete_params(options, messages) + + const logDir = path.resolve(resolve(opts.logs || './logs')) + const paramsPath = path.join(logDir, 'params.json') + write(paramsPath, JSON.stringify({ ...params }, null, 2)) + options.logger.debug(`kbot run ${options.mode} : ${options.model} @ ${options.router} : ${files.length} files from project ${path.resolve(options.path || '.')} with ${options.include}`, files.map(f => f.path), params.tools.map(t => `${t.function.name} : ${t.function.description}`)) + options = await options.onRun(options) || options + const ret = await execute_request(options, client, params) + return ret +} + /** * Extract file paths (Windows or POSIX style) from a single string, * preserving any spaces within the paths. Needed for Salamand File Manager selections (eg: kbot "summarize, as json" -i "$(ListOfSelectedFullNames)") @@ -125,12 +209,12 @@ export const processRun = async (opts: IKBotTask) => { */ function extractPaths(input: string): string[] { // If it's a direct path that exists, return it - if(exists(path.resolve(resolve(input)))){ + if (exists(path.resolve(resolve(input)))) { return [input] } // If it's a glob pattern, return it as is - if(hasMagic(input)){ + if (hasMagic(input)) { return [input] } @@ -170,14 +254,15 @@ function flattenArrays(arrays: T[][]): T[] { }, [] as T[]); } -export const run = async (opts: IKBotTask) => { - const ret = [] +export const run = async (opts: IKBotTask): Promise => { + const ret: ProcessRunResult[] = [] const logger = new Logger({ minLevel: opts.logLevel || 2 }) - - if (opts.include) { + opts.logger = logger + + if (opts.include) { if (isString(opts.include)) { opts.include = [opts.include] - } + } if (isArray(opts.include)) { // First check for glob patterns const globPatterns = opts.include.filter((path: string) => hasMagic(path)) @@ -205,11 +290,11 @@ export const run = async (opts: IKBotTask) => { items = opts.each.split(',') } if (items.length === 0) { - logger.warn(`No files matching pattern ${opts.each} found in ${opts.path}`) + opts.logger.warn(`No files matching pattern ${opts.each} found in ${opts.path}`) return ret } - logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`) - const _models = all() + opts.logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`) + const _models = all() for (const item of items) { const itemOpts = { ...opts, @@ -222,10 +307,16 @@ export const run = async (opts: IKBotTask) => { itemOpts.model = item } itemOpts.include = [...opts.include, ...[forward_slash(item)]] - ret.push(await processRun(itemOpts)) + const result = await processRun(itemOpts) + if (result !== undefined) { + ret.push(result) + } } } else { - ret.push(await processRun(opts)) + const result = await processRun(opts) + if (result !== undefined) { + ret.push(result) + } } return ret } diff --git a/packages/kbot/tests/unit/reports/all.json b/packages/kbot/tests/unit/reports/all.json index 5d0aad3d..ccc635e2 100644 --- a/packages/kbot/tests/unit/reports/all.json +++ b/packages/kbot/tests/unit/reports/all.json @@ -10677,6 +10677,512 @@ "duration": 2603, "reason": "Expected [], but got [\"example1.txt\", \"example2.txt\", \"data.json\"]", "category": "tools" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:32.997Z", + "passed": true, + "duration": 1246, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:40.019Z", + "passed": true, + "duration": 7011, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:13:40.950Z", + "passed": true, + "duration": 922, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:13:41.833Z", + "passed": true, + "duration": 874, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:42.682Z", + "passed": true, + "duration": 840, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:51.918Z", + "passed": true, + "duration": 9227, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:13:52.915Z", + "passed": true, + "duration": 987, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:13:53.795Z", + "passed": true, + "duration": 871, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:55.036Z", + "passed": true, + "duration": 1229, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:59.410Z", + "passed": true, + "duration": 4364, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:14:00.446Z", + "passed": true, + "duration": 1028, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:14:01.478Z", + "passed": true, + "duration": 1023, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:33.556Z", + "passed": true, + "duration": 1293, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:36.782Z", + "passed": true, + "duration": 3215, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:18:37.574Z", + "passed": true, + "duration": 783, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:18:38.342Z", + "passed": true, + "duration": 760, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:39.174Z", + "passed": true, + "duration": 823, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:44.118Z", + "passed": true, + "duration": 4936, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:18:45.161Z", + "passed": true, + "duration": 1035, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:18:45.996Z", + "passed": true, + "duration": 827, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:50.222Z", + "passed": true, + "duration": 4216, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "The result of dividing 15 by 3 is 5.\n\n5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:58.164Z", + "passed": false, + "duration": 7931, + "reason": "Expected 5, but got the result of dividing 15 by 3 is 5.\n\n5", + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:19:04.862Z", + "passed": true, + "duration": 6684, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:19:05.910Z", + "passed": true, + "duration": 1038, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:15.545Z", + "passed": true, + "duration": 1197, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:20:27.125Z", + "passed": true, + "duration": 11570, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:20:28.062Z", + "passed": true, + "duration": 927, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:20:28.801Z", + "passed": true, + "duration": 729, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:29.675Z", + "passed": true, + "duration": 863, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:20:45.996Z", + "passed": true, + "duration": 16310, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:20:47.110Z", + "passed": true, + "duration": 1105, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:20:48.079Z", + "passed": true, + "duration": 960, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:48.991Z", + "passed": true, + "duration": 901, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "15 ÷ 3 equals 5.\n\n5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:21:00.413Z", + "passed": false, + "duration": 11412, + "reason": "Expected 5, but got 15 ÷ 3 equals 5.\n\n5", + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:21:01.284Z", + "passed": true, + "duration": 856, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:21:02.046Z", + "passed": true, + "duration": 749, + "category": "basic" } ], "highscores": [ @@ -10760,13 +11266,13 @@ "rankings": [ { "model": "openrouter/quasar-alpha", - "duration": 811, - "duration_secs": 0.811 + "duration": 729, + "duration_secs": 0.729 }, { "model": "openai/gpt-4o-mini", - "duration": 842, - "duration_secs": 0.842 + "duration": 927, + "duration_secs": 0.927 } ] }, @@ -10774,14 +11280,14 @@ "test": "multiplication", "rankings": [ { - "model": "openrouter/quasar-alpha", - "duration": 780, - "duration_secs": 0.78 + "model": "openai/gpt-3.5-turbo", + "duration": 863, + "duration_secs": 0.863 }, { - "model": "openai/gpt-3.5-turbo", - "duration": 881, - "duration_secs": 0.881 + "model": "openrouter/quasar-alpha", + "duration": 960, + "duration_secs": 0.96 } ] }, @@ -10790,13 +11296,13 @@ "rankings": [ { "model": "openrouter/quasar-alpha", - "duration": 731, - "duration_secs": 0.731 + "duration": 749, + "duration_secs": 0.749 }, { - "model": "openai/gpt-3.5-turbo", - "duration": 784, - "duration_secs": 0.784 + "model": "openai/gpt-4o-mini", + "duration": 856, + "duration_secs": 0.856 } ] }, @@ -10936,5 +11442,5 @@ ] } ], - "lastUpdated": "2025-04-04T21:47:09.914Z" + "lastUpdated": "2025-04-06T14:21:02.054Z" } \ No newline at end of file diff --git a/packages/kbot/tests/unit/reports/basic.json b/packages/kbot/tests/unit/reports/basic.json index 911017e3..6322c1ac 100644 --- a/packages/kbot/tests/unit/reports/basic.json +++ b/packages/kbot/tests/unit/reports/basic.json @@ -1418,6 +1418,512 @@ "passed": true, "duration": 731, "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:32.997Z", + "passed": true, + "duration": 1246, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:40.019Z", + "passed": true, + "duration": 7011, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:13:40.950Z", + "passed": true, + "duration": 922, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:13:41.833Z", + "passed": true, + "duration": 874, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:42.682Z", + "passed": true, + "duration": 840, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:51.918Z", + "passed": true, + "duration": 9227, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:13:52.915Z", + "passed": true, + "duration": 987, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:13:53.795Z", + "passed": true, + "duration": 871, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:13:55.036Z", + "passed": true, + "duration": 1229, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:13:59.410Z", + "passed": true, + "duration": 4364, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:14:00.446Z", + "passed": true, + "duration": 1028, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:14:01.478Z", + "passed": true, + "duration": 1023, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:33.556Z", + "passed": true, + "duration": 1293, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:36.782Z", + "passed": true, + "duration": 3215, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:18:37.574Z", + "passed": true, + "duration": 783, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:18:38.342Z", + "passed": true, + "duration": 760, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:39.174Z", + "passed": true, + "duration": 823, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:44.118Z", + "passed": true, + "duration": 4936, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:18:45.161Z", + "passed": true, + "duration": 1035, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:18:45.996Z", + "passed": true, + "duration": 827, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:18:50.222Z", + "passed": true, + "duration": 4216, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "The result of dividing 15 by 3 is 5.\n\n5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:18:58.164Z", + "passed": false, + "duration": 7931, + "reason": "Expected 5, but got the result of dividing 15 by 3 is 5.\n\n5", + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:19:04.862Z", + "passed": true, + "duration": 6684, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:19:05.910Z", + "passed": true, + "duration": 1038, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:15.545Z", + "passed": true, + "duration": 1197, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:20:27.125Z", + "passed": true, + "duration": 11570, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:20:28.062Z", + "passed": true, + "duration": 927, + "category": "basic" + }, + { + "test": "addition", + "prompt": "add 5 and 3. Return only the number, no explanation.", + "result": [ + "8" + ], + "expected": "8", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:20:28.801Z", + "passed": true, + "duration": 729, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:29.675Z", + "passed": true, + "duration": 863, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:20:45.996Z", + "passed": true, + "duration": 16310, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:20:47.110Z", + "passed": true, + "duration": 1105, + "category": "basic" + }, + { + "test": "multiplication", + "prompt": "multiply 8 and 3. Return only the number, no explanation.", + "result": [ + "24" + ], + "expected": "24", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:20:48.079Z", + "passed": true, + "duration": 960, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-06T14:20:48.991Z", + "passed": true, + "duration": 901, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "15 ÷ 3 equals 5.\n\n5" + ], + "expected": "5", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-06T14:21:00.413Z", + "passed": false, + "duration": 11412, + "reason": "Expected 5, but got 15 ÷ 3 equals 5.\n\n5", + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-06T14:21:01.284Z", + "passed": true, + "duration": 856, + "category": "basic" + }, + { + "test": "division", + "prompt": "divide 15 by 3. Return only the number, no explanation.", + "result": [ + "5" + ], + "expected": "5", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-06T14:21:02.046Z", + "passed": true, + "duration": 749, + "category": "basic" } ], "highscores": [ @@ -1426,13 +1932,13 @@ "rankings": [ { "model": "openrouter/quasar-alpha", - "duration": 811, - "duration_secs": 0.811 + "duration": 729, + "duration_secs": 0.729 }, { "model": "openai/gpt-4o-mini", - "duration": 842, - "duration_secs": 0.842 + "duration": 927, + "duration_secs": 0.927 } ] }, @@ -1440,14 +1946,14 @@ "test": "multiplication", "rankings": [ { - "model": "openrouter/quasar-alpha", - "duration": 780, - "duration_secs": 0.78 + "model": "openai/gpt-3.5-turbo", + "duration": 863, + "duration_secs": 0.863 }, { - "model": "openai/gpt-3.5-turbo", - "duration": 881, - "duration_secs": 0.881 + "model": "openrouter/quasar-alpha", + "duration": 960, + "duration_secs": 0.96 } ] }, @@ -1456,16 +1962,16 @@ "rankings": [ { "model": "openrouter/quasar-alpha", - "duration": 731, - "duration_secs": 0.731 + "duration": 749, + "duration_secs": 0.749 }, { - "model": "openai/gpt-3.5-turbo", - "duration": 784, - "duration_secs": 0.784 + "model": "openai/gpt-4o-mini", + "duration": 856, + "duration_secs": 0.856 } ] } ], - "lastUpdated": "2025-04-04T12:37:11.994Z" + "lastUpdated": "2025-04-06T14:21:02.047Z" } \ No newline at end of file diff --git a/packages/kbot/tests/unit/reports/basic.md b/packages/kbot/tests/unit/reports/basic.md index 3f5c6383..214d56f1 100644 --- a/packages/kbot/tests/unit/reports/basic.md +++ b/packages/kbot/tests/unit/reports/basic.md @@ -6,18 +6,18 @@ | Test | Model | Duration (ms) | Duration (s) | |------|-------|--------------|--------------| -| addition | openrouter/quasar-alpha | 811 | 0.81 | -| addition | openai/gpt-4o-mini | 842 | 0.84 | -| addition | openai/gpt-3.5-turbo | 1505 | 1.50 | -| addition | deepseek/deepseek-r1-distill-qwen-14b:free | 3470 | 3.47 | -| multiplication | openrouter/quasar-alpha | 780 | 0.78 | -| multiplication | openai/gpt-3.5-turbo | 881 | 0.88 | -| multiplication | openai/gpt-4o-mini | 1096 | 1.10 | -| multiplication | deepseek/deepseek-r1-distill-qwen-14b:free | 1327 | 1.33 | -| division | openrouter/quasar-alpha | 731 | 0.73 | -| division | openai/gpt-3.5-turbo | 784 | 0.78 | -| division | openai/gpt-4o-mini | 975 | 0.97 | -| division | deepseek/deepseek-r1-distill-qwen-14b:free | 4467 | 4.47 | +| addition | openrouter/quasar-alpha | 729 | 0.73 | +| addition | openai/gpt-4o-mini | 927 | 0.93 | +| addition | openai/gpt-3.5-turbo | 1197 | 1.20 | +| addition | deepseek/deepseek-r1-distill-qwen-14b:free | 11570 | 11.57 | +| multiplication | openai/gpt-3.5-turbo | 863 | 0.86 | +| multiplication | openrouter/quasar-alpha | 960 | 0.96 | +| multiplication | openai/gpt-4o-mini | 1105 | 1.10 | +| multiplication | deepseek/deepseek-r1-distill-qwen-14b:free | 16310 | 16.31 | +| division | openrouter/quasar-alpha | 749 | 0.75 | +| division | openai/gpt-4o-mini | 856 | 0.86 | +| division | openai/gpt-3.5-turbo | 901 | 0.90 | +| division | deepseek/deepseek-r1-distill-qwen-14b:free | 11412 | 11.41 | ## Summary @@ -25,18 +25,22 @@ - Passed: 11 - Failed: 1 - Success Rate: 91.67% -- Average Duration: 1472ms (1.47s) +- Average Duration: 3965ms (3.96s) ## Failed Tests -### multiplication - deepseek/deepseek-r1-distill-qwen-14b:free +### division - deepseek/deepseek-r1-distill-qwen-14b:free -- Prompt: `multiply 8 and 3. Return only the number, no explanation.` -- Expected: `24` -- Actual: `` -- Duration: 1327ms (1.33s) -- Reason: Model returned empty response -- Timestamp: 4/4/2025, 2:37:03 PM +- Prompt: `divide 15 by 3. Return only the number, no explanation.` +- Expected: `5` +- Actual: `15 ÷ 3 equals 5. + +5` +- Duration: 11412ms (11.41s) +- Reason: Expected 5, but got 15 ÷ 3 equals 5. + +5 +- Timestamp: 4/6/2025, 4:21:00 PM ## Passed Tests @@ -45,86 +49,86 @@ - Prompt: `add 5 and 3. Return only the number, no explanation.` - Expected: `8` - Actual: `8` -- Duration: 1505ms (1.50s) -- Timestamp: 4/4/2025, 2:36:55 PM +- Duration: 1197ms (1.20s) +- Timestamp: 4/6/2025, 4:20:15 PM ### addition - deepseek/deepseek-r1-distill-qwen-14b:free - Prompt: `add 5 and 3. Return only the number, no explanation.` - Expected: `8` - Actual: `8` -- Duration: 3470ms (3.47s) -- Timestamp: 4/4/2025, 2:36:59 PM +- Duration: 11570ms (11.57s) +- Timestamp: 4/6/2025, 4:20:27 PM ### addition - openai/gpt-4o-mini - Prompt: `add 5 and 3. Return only the number, no explanation.` - Expected: `8` - Actual: `8` -- Duration: 842ms (0.84s) -- Timestamp: 4/4/2025, 2:37:00 PM +- Duration: 927ms (0.93s) +- Timestamp: 4/6/2025, 4:20:28 PM ### addition - openrouter/quasar-alpha - Prompt: `add 5 and 3. Return only the number, no explanation.` - Expected: `8` - Actual: `8` -- Duration: 811ms (0.81s) -- Timestamp: 4/4/2025, 2:37:00 PM +- Duration: 729ms (0.73s) +- Timestamp: 4/6/2025, 4:20:28 PM ### multiplication - openai/gpt-3.5-turbo - Prompt: `multiply 8 and 3. Return only the number, no explanation.` - Expected: `24` - Actual: `24` -- Duration: 881ms (0.88s) -- Timestamp: 4/4/2025, 2:37:01 PM +- Duration: 863ms (0.86s) +- Timestamp: 4/6/2025, 4:20:29 PM + +### multiplication - deepseek/deepseek-r1-distill-qwen-14b:free + +- Prompt: `multiply 8 and 3. Return only the number, no explanation.` +- Expected: `24` +- Actual: `24` +- Duration: 16310ms (16.31s) +- Timestamp: 4/6/2025, 4:20:45 PM ### multiplication - openai/gpt-4o-mini - Prompt: `multiply 8 and 3. Return only the number, no explanation.` - Expected: `24` - Actual: `24` -- Duration: 1096ms (1.10s) -- Timestamp: 4/4/2025, 2:37:04 PM +- Duration: 1105ms (1.10s) +- Timestamp: 4/6/2025, 4:20:47 PM ### multiplication - openrouter/quasar-alpha - Prompt: `multiply 8 and 3. Return only the number, no explanation.` - Expected: `24` - Actual: `24` -- Duration: 780ms (0.78s) -- Timestamp: 4/4/2025, 2:37:05 PM +- Duration: 960ms (0.96s) +- Timestamp: 4/6/2025, 4:20:48 PM ### division - openai/gpt-3.5-turbo - Prompt: `divide 15 by 3. Return only the number, no explanation.` - Expected: `5` - Actual: `5` -- Duration: 784ms (0.78s) -- Timestamp: 4/4/2025, 2:37:05 PM - -### division - deepseek/deepseek-r1-distill-qwen-14b:free - -- Prompt: `divide 15 by 3. Return only the number, no explanation.` -- Expected: `5` -- Actual: `5` -- Duration: 4467ms (4.47s) -- Timestamp: 4/4/2025, 2:37:10 PM +- Duration: 901ms (0.90s) +- Timestamp: 4/6/2025, 4:20:48 PM ### division - openai/gpt-4o-mini - Prompt: `divide 15 by 3. Return only the number, no explanation.` - Expected: `5` - Actual: `5` -- Duration: 975ms (0.97s) -- Timestamp: 4/4/2025, 2:37:11 PM +- Duration: 856ms (0.86s) +- Timestamp: 4/6/2025, 4:21:01 PM ### division - openrouter/quasar-alpha - Prompt: `divide 15 by 3. Return only the number, no explanation.` - Expected: `5` - Actual: `5` -- Duration: 731ms (0.73s) -- Timestamp: 4/4/2025, 2:37:11 PM +- Duration: 749ms (0.75s) +- Timestamp: 4/6/2025, 4:21:02 PM