cleanup | logger | prefs, local first :)

This commit is contained in:
lovebird 2025-04-03 19:38:03 +02:00
parent 54b9c5dd9c
commit cc60e8cc03
23 changed files with 1941 additions and 418 deletions

View File

@ -275,7 +275,7 @@
],
"cwd": "${workspaceFolder}",
"args": [
"'send John the latest wheather report for Tarragona, as email'",
"'send me the latest wheather report for Tarragona, as email'",
"--disable='npm,terminal'",
"--include='tests/*.md'"
],

View File

@ -1,8 +1,9 @@
import path from 'node:path';
import { resolve } from '@polymech/commons';
import { winstonLogger, } from '@polymech/ai-tools';
import { logger as loggerIntern } from './index.js';
import { getLogger } from './index.js';
export const collector = (options, client) => {
const loggerIntern = getLogger(options);
return {
//OpenAI
onMessage: (message) => {
@ -67,4 +68,4 @@ export const collector = (options, client) => {
}
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFJNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsTUFBTSxJQUFJLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUluRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFxQixFQUFFLE1BQWMsRUFBYyxFQUFFO0lBQzNFLE9BQU87UUFDSCxRQUFRO1FBQ1IsU0FBUyxFQUFFLENBQUMsT0FBbUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQTtZQUNyRixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUEyQyxFQUFFLEVBQUU7WUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM3RCxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFT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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFJNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBSXRDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsTUFBYyxFQUFjLEVBQUU7SUFDM0UsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE9BQU87UUFDSCxRQUFRO1FBQ1IsU0FBUyxFQUFFLENBQUMsT0FBbUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQTtZQUNyRixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUEyQyxFQUFFLEVBQUU7WUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM3RCxJQUFJLENBQUM7Z0JBQ0QsTUFB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

View File

@ -3,7 +3,6 @@ import { markedTerminal } from 'marked-terminal';
import * as path from 'node:path';
import { sync as write } from '@polymech/fs/write';
import { resolve } from '@polymech/commons';
import { logger } from '../index.js';
import { dumpAsScript } from '../utils/script.js';
import { applyFilters } from '../filters.js';
import { variables } from '../variables.js';
@ -17,7 +16,7 @@ export const onCompletion = async (result = "", options) => {
ROUTER: options.router,
}));
write(dstPath, result);
logger.debug(`Wrote completion result to ${dstPath} : ${options.dst}`);
options.logger.debug(`Wrote completion result to ${dstPath} : ${options.dst}`);
}
else {
marked.use(markedTerminal({
@ -32,7 +31,7 @@ export const onCompletion = async (result = "", options) => {
};
export const runCompletion = async (client, params, options) => {
if (options.dry) {
logger.info('Dry run - skipping API call');
options.logger.info('Dry run - skipping API call');
return false;
}
// await client.beta.chat.completions.parse
@ -45,4 +44,4 @@ export const runCompletion = async (client, params, options) => {
result = await onCompletion(result, options);
return result;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWNvbXBsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcnVuLWNvbXBsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFJM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxTQUFjLEVBQUUsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFDekUsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQW1CLElBQUksRUFBRSxDQUFDLENBQUE7SUFDaEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQy9CLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3ZELEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO1lBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtTQUN2QixDQUFDLENBQUMsQ0FBQTtRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDeEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUMsQ0FBQTtRQUNILE1BQU0sT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQVcsQ0FBQztRQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JCLGtCQUFrQjtJQUNsQixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLE1BQVcsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFDckYsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELDJDQUEyQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQ3pCLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBYTtLQUN2QyxDQUFDLENBQUE7SUFDRixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDbEQsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM1QyxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWNvbXBsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcnVuLWNvbXBsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRzNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsU0FBYyxFQUFFLEVBQUUsT0FBa0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUN2RCxHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQyxDQUFDLENBQUE7UUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixPQUFPLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDaEYsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztZQUN4QixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0gsTUFBTSxPQUFPLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBVyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckIsa0JBQWtCO0lBQ2xCLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxNQUFjLEVBQUUsTUFBVyxFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUNyRixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBQ2xELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELDJDQUEyQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQ3pCLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBYTtLQUN2QyxDQUFDLENBQUE7SUFDRixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDbEQsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM1QyxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSJ9

View File

@ -1,5 +1,4 @@
import { content } from '../utils/content.js';
import { logger } from '../index.js';
import { onCompletion } from './run-completion.js';
export const runTools = async (client, params, options) => {
const sessionId = Date.now().toString();
@ -10,7 +9,7 @@ export const runTools = async (client, params, options) => {
messages: []
};
if (options.dry) {
logger.info('Dry run - skipping API call');
options.logger.info('Dry run - skipping API call');
return {
result: 'DRY RUN',
sessionMessages,
@ -42,7 +41,7 @@ export const runTools = async (client, params, options) => {
.on('content', options.collector.onContent);
}
catch (e) {
logger.trace(e);
options.logger.trace(e);
}
let result = content(runner);
try {
@ -50,13 +49,13 @@ export const runTools = async (client, params, options) => {
}
catch (error) {
if (error.message.includes("(reading 'map')")) {
logger.error('Failed to complete runner: credits :)', error.message, error.message, error);
options.logger.error('Failed to complete runner: credits :)', error.message, error.message, error);
return;
}
logger.error('Failed to complete runner:', error.message, error.issues);
options.logger.error('Failed to complete runner:', error.message, error.issues);
return;
}
const ret = content(result);
return await onCompletion(ret, options);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi10b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFbEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxNQUFjLEVBQUUsTUFBVyxFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUNoRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDdkMsTUFBTSxlQUFlLEdBQUc7UUFDdEIsU0FBUztRQUNULE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7UUFDbkMsUUFBUSxFQUFFLEVBQUU7S0FDYixDQUFBO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBQzFDLE9BQU87WUFDTCxNQUFNLEVBQUUsU0FBUztZQUNqQixlQUFlO1lBQ2YsVUFBVSxFQUFFLEVBQUU7WUFDZCxTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUE7SUFDSCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFZLEVBQUUsU0FBaUIsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3RCxPQUFPO1lBQ0wsR0FBRyxPQUFPO1lBQ1YsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLFNBQVM7WUFDVCxNQUFNO1NBQ1AsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQTZDLENBQUM7YUFDaEcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQW1DLEVBQUUsRUFBRTtZQUNwRCxPQUFPLENBQUMsU0FBd0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDN0YsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQXdDLEVBQUUsRUFBRTtZQUMvRCxPQUFRLE9BQU8sQ0FBQyxTQUF3QixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNsRyxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsU0FBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsZ0JBQWdCLEVBQUcsT0FBTyxDQUFDLFNBQXdCLENBQUMsZ0JBQWdCLENBQUM7YUFDeEUsRUFBRSxDQUFDLFNBQVMsRUFBRyxPQUFPLENBQUMsU0FBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQzFGLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2RSxPQUFNO0lBQ1IsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN6QyxDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi10b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLE1BQVcsRUFBRSxPQUFrQixFQUFFLEVBQUU7SUFDaEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3ZDLE1BQU0sZUFBZSxHQUFHO1FBQ3RCLFNBQVM7UUFDVCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1FBQ25DLFFBQVEsRUFBRSxFQUFFO0tBQ2IsQ0FBQTtJQUNELElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUE7UUFDbEQsT0FBTztZQUNMLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGVBQWU7WUFDZixVQUFVLEVBQUUsRUFBRTtZQUNkLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQVksRUFBRSxTQUFpQixFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdELE9BQU87WUFDTCxHQUFHLE9BQU87WUFDVixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDbkMsU0FBUztZQUNULE1BQU07U0FDUCxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0lBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFBO0lBQ2pCLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBNkMsQ0FBQzthQUNoRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBbUMsRUFBRSxFQUFFO1lBQ3BELE9BQU8sQ0FBQyxTQUF3QixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM3RixDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBd0MsRUFBRSxFQUFFO1lBQy9ELE9BQVEsT0FBTyxDQUFDLFNBQXdCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ2xHLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxTQUF3QixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNELENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRyxPQUFPLENBQUMsU0FBd0IsQ0FBQyxnQkFBZ0IsQ0FBQzthQUN4RSxFQUFFLENBQUMsU0FBUyxFQUFHLE9BQU8sQ0FBQyxTQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNsRyxPQUFNO1FBQ1IsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQy9FLE9BQU07SUFDUixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLE9BQU8sTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQSJ9

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,7 @@
import { Logger, ILogObj } from 'tslog';
import { IKBotTask } from '@polymech/ai-tools';
export declare const logger: Logger<ILogObj>;
export declare const getLogger: (options: IKBotTask) => Logger<ILogObj>;
export { run } from './commands/run.js';
export declare const module_root: () => string;
export declare const assistant_supported: Record<string, string>;

View File

@ -1,10 +1,44 @@
import { platform } from 'node:process';
import path from 'node:path';
import { Logger } from 'tslog';
const isWindows = platform === 'win32';
import { get_var } from '@polymech/commons';
import { MODULE_NAME } from './constants.js';
import { createLogger } from '@polymech/log';
export const logger = createLogger('llm-tools');
let _logger = logger;
export const getLogger = (options) => {
if (_logger) {
return _logger;
}
const logLevelMap = {
'silly': 0,
'trace': 1,
'debug': 2,
'info': 3,
'warn': 4,
'error': 5,
'fatal': 6
};
let minLevel = logLevelMap['info'];
if (options.logLevel) {
if (typeof options.logLevel === 'string') {
const levelStr = options.logLevel;
minLevel = logLevelMap[levelStr.toLowerCase()] || logLevelMap['info'];
}
else {
minLevel = options.logLevel;
}
}
_logger = new Logger({
name: MODULE_NAME,
minLevel,
hideLogPositionForProduction: true,
maskPlaceholder: '***',
prettyLogTemplate: "{{logLevelName}}\t[{{filePathWithLine}}{{name}}]\t",
});
return _logger;
};
export { run } from './commands/run.js';
export const module_root = () => path.resolve(path.join(get_var(isWindows ? 'HOMEPATH' : 'HOME'), `.${MODULE_NAME}`));
export const assistant_supported = {
@ -36,4 +70,4 @@ export * from './zod_schema.js';
export { E_OPENAI_MODEL } from './models/cache/openai-models.js';
export { E_OPENROUTER_MODEL } from './models/cache/openrouter-models.js';
export { E_OPENROUTER_MODEL_FREE } from './models/cache/openrouter-models-free.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN2QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFFNUIsTUFBTSxTQUFTLEdBQUcsUUFBUSxLQUFLLE9BQU8sQ0FBQTtBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQStCLENBQUE7QUFDN0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVySCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMkI7SUFDekQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixPQUFPLEVBQUUseUVBQXlFO0lBQ2xGLEtBQUssRUFBRSxlQUFlO0lBQ3RCLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLEtBQUssRUFBRSxpQkFBaUI7SUFDeEIsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixLQUFLLEVBQUUsZUFBZTtJQUN0QixNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLE1BQU0sRUFBRSxZQUFZO0lBQ3BCLE9BQU8sRUFBRSwyRUFBMkU7SUFDcEYsS0FBSyxFQUFFLGVBQWU7SUFDdEIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixNQUFNLEVBQUUsWUFBWTtJQUNwQixLQUFLLEVBQUUsd0JBQXdCO0lBQy9CLE1BQU0sRUFBRSxZQUFZO0NBQ3JCLENBQUE7QUFDRCxjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsaUJBQWlCLENBQUE7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN2QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxNQUFNLFNBQVMsR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFBO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBK0IsQ0FBQTtBQUU3RSxJQUFJLE9BQU8sR0FBb0IsTUFBTSxDQUFBO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQWtCLEVBQW1CLEVBQUU7SUFDL0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBMkI7UUFDMUMsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxFQUFFLENBQUM7UUFDVCxNQUFNLEVBQUUsQ0FBQztRQUNULE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFBO0lBRUQsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFrQixDQUFBO1lBQzNDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQVU7UUFDNUIsSUFBSSxFQUFFLFdBQVc7UUFDakIsUUFBUTtRQUNSLDRCQUE0QixFQUFFLElBQUk7UUFDbEMsZUFBZSxFQUFFLEtBQUs7UUFDdEIsaUJBQWlCLEVBQUUsb0RBQW9EO0tBQ3hFLENBQUMsQ0FBQTtJQUNGLE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFckgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ3pELElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxZQUFZO0lBQ3BCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLHlFQUF5RTtJQUNsRixLQUFLLEVBQUUsZUFBZTtJQUN0QixPQUFPLEVBQUUsV0FBVztJQUNwQixPQUFPLEVBQUUsYUFBYTtJQUN0QixLQUFLLEVBQUUsaUJBQWlCO0lBQ3hCLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLGlCQUFpQjtJQUN6QixNQUFNLEVBQUUsWUFBWTtJQUNwQixPQUFPLEVBQUUsMkVBQTJFO0lBQ3BGLEtBQUssRUFBRSxlQUFlO0lBQ3RCLEtBQUssRUFBRSxhQUFhO0lBQ3BCLEtBQUssRUFBRSxrQkFBa0I7SUFDekIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixNQUFNLEVBQUUsWUFBWTtDQUNyQixDQUFBO0FBQ0QsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGlCQUFpQixDQUFBO0FBRS9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQSJ9

View File

@ -13,9 +13,11 @@ export const prompt = async (opts) => {
};
};
export const preferences = async (opts) => {
let preferencesPath = path.resolve(resolve(opts.preferences, false, env_vars()));
// First try local preferences
let preferencesPath = path.resolve(path.join(process.cwd(), PREFERENCES_FILE_NAME));
if (!exists(preferencesPath)) {
preferencesPath = path.resolve(path.join(process.cwd(), PREFERENCES_FILE_NAME));
// Fall back to specified preferences path if local file doesn't exist
preferencesPath = path.resolve(resolve(opts.preferences, false, env_vars()));
}
const preferences = read(preferencesPath, 'string');
return {
@ -23,4 +25,4 @@ export const preferences = async (opts) => {
content: `USER Preferences : ${preferences}` || ''
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb21wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQW1ELEVBQUU7SUFDN0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEMsT0FBTztRQUNILElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0tBQ3ZCLENBQUE7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBbUQsRUFBRTtJQUNsRyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEYsSUFBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzFCLGVBQWUsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQVcsQ0FBQTtJQUM3RCxPQUFPO1FBQ0gsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsc0JBQXNCLFdBQVcsRUFBRSxJQUFJLEVBQUU7S0FDckQsQ0FBQTtBQUNMLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb21wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQW1ELEVBQUU7SUFDN0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEMsT0FBTztRQUNILElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0tBQ3ZCLENBQUE7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBbUQsRUFBRTtJQUNsRyw4QkFBOEI7SUFDOUIsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUE7SUFDbkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzNCLHNFQUFzRTtRQUN0RSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBVyxDQUFBO0lBQzdELE9BQU87UUFDSCxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxzQkFBc0IsV0FBVyxFQUFFLElBQUksRUFBRTtLQUNyRCxDQUFBO0FBQ0wsQ0FBQyxDQUFBIn0=

View File

@ -7,11 +7,12 @@ import { RunnableFunctionWithParse } from 'openai/lib/RunnableFunction'
import { winstonLogger, } from '@polymech/ai-tools'
import { IKBotOptions } from './zod_types.js'
import { logger as loggerIntern } from './index.js'
import { getLogger } from './index.js'
import { ChatCompletion, ChatCompletionMessage, ChatCompletionMessageParam } from 'openai/resources/index.mjs'
export const collector = (options: IKBotOptions, client: OpenAI): ICollector => {
const loggerIntern = getLogger(options)
return {
//OpenAI
onMessage: (message: ChatCompletionMessageParam) => {

View File

@ -1,5 +0,0 @@
import * as path from 'node:path'
import { sync as read } from '@polymech/fs/read'
import { sync as exists } from '@polymech/fs/exists'
import { Logger } from 'tslog'
import { logger } from '../'

View File

@ -4,10 +4,8 @@ import { markedTerminal } from 'marked-terminal'
import * as path from 'node:path'
import { sync as write } from '@polymech/fs/write'
import { resolve } from '@polymech/commons'
import { IKBotTask } from '@polymech/ai-tools'
import { logger } from '../index.js'
import { dumpAsScript } from '../utils/script.js'
import { applyFilters, Filter } from '../filters.js'
import { variables } from '../variables.js'
@ -23,7 +21,7 @@ export const onCompletion = async (result: any = "", options: IKBotTask) => {
ROUTER: options.router,
}))
write(dstPath, result)
logger.debug(`Wrote completion result to ${dstPath} : ${options.dst}`)
options.logger.debug(`Wrote completion result to ${dstPath} : ${options.dst}`)
} else {
marked.use(markedTerminal({
emoji: false,
@ -38,7 +36,7 @@ export const onCompletion = async (result: any = "", options: IKBotTask) => {
export const runCompletion = async (client: OpenAI, params: any, options: IKBotTask) => {
if (options.dry) {
logger.info('Dry run - skipping API call')
options.logger.info('Dry run - skipping API call')
return false
}
// await client.beta.chat.completions.parse

View File

@ -1,30 +0,0 @@
import { globSync } from 'glob'
import * as path from 'node:path'
import { forward_slash } from '@polymech/commons'
import { logger } from '../'
import { IKBotTask } from '@polymech/ai-tools'
export const runEach = async (opts: IKBotTask, processRun: (args: IKBotTask) => Promise<any>) => {
const ret = []
if (opts.each) {
const matches = globSync(opts.each, {
cwd: path.resolve(opts.path),
absolute: false
})
if(matches.length === 0) {
logger.warn(`No files matching pattern ${opts.each} found in ${opts.path}`)
return ret
}
logger.info(`Processing ${matches.length} files matching pattern ${opts.each}...`)
for (const file of matches) {
logger.info(`Processing ${file}...`)
const fileOpts = { ...opts }
fileOpts.include = [ forward_slash(file)]
ret.push(await processRun(fileOpts))
}
} else {
ret.push(await processRun(opts))
}
return ret
}

View File

@ -5,7 +5,6 @@ import { ChatCompletionToolRunnerParams } from 'openai/lib/ChatCompletionRunner'
import { IKBotTask, ICollector } from '@polymech/ai-tools'
import { content } from '../utils/content.js'
import { logger } from '../index.js'
import { onCompletion } from './run-completion.js'
export const runTools = async (client: OpenAI, params: any, options: IKBotTask) => {
@ -17,7 +16,7 @@ export const runTools = async (client: OpenAI, params: any, options: IKBotTask)
messages: []
}
if (options.dry) {
logger.info('Dry run - skipping API call')
options.logger.info('Dry run - skipping API call')
return {
result: 'DRY RUN',
sessionMessages,
@ -48,7 +47,7 @@ export const runTools = async (client: OpenAI, params: any, options: IKBotTask)
.on('chatCompletion', (options.collector as ICollector).onChatCompletion)
.on('content', (options.collector as ICollector).onContent)
} catch (e) {
logger.trace(e)
options.logger.trace(e)
}
let result = content(runner)
@ -56,10 +55,10 @@ export const runTools = async (client: OpenAI, params: any, options: IKBotTask)
result = await runner.finalChatCompletion()
} catch (error) {
if (error.message.includes("(reading 'map')")) {
logger.error('Failed to complete runner: credits :)', error.message, error.message, error)
options.logger.error('Failed to complete runner: credits :)', error.message, error.message, error)
return
}
logger.error('Failed to complete runner:', error.message, error.issues)
options.logger.error('Failed to complete runner:', error.message, error.issues)
return
}
const ret = content(result)

View File

@ -10,10 +10,7 @@ import { ChatCompletionToolRunnerParams } from 'openai/lib/ChatCompletionRunner'
import { ChatCompletionMessageParam } from 'openai/resources/index.mjs'
import { IKBotTask } from '@polymech/ai-tools'
import { createLogger } from '@polymech/log'
import { Logger, ILogObj } from 'tslog'
import { createClient } from '../client.js'
import { OptionsSchema } from '../zod_schema.js'
import { get } from '../source.js'
@ -29,12 +26,14 @@ import { runCompletion } from './run-completion.js'
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: IKBotTask) => {
let options: IKBotTask = null
const logger = new Logger<ILogObj>({
minLevel: opts.logLevel
})
const logger = getLogger(opts)
opts.logger = logger
const target = path.resolve(opts.output || opts.path)
if (!exists(target)) {
dir(target)

View File

@ -5,9 +5,46 @@ const isWindows = platform === 'win32'
import { get_var } from '@polymech/commons'
import { MODULE_NAME } from './constants.js'
import { IKBotTask } from '@polymech/ai-tools'
import { createLogger } from '@polymech/log'
export const logger = createLogger('llm-tools') as unknown as Logger<ILogObj>
let _logger: Logger<ILogObj> = logger
export const getLogger = (options: IKBotTask): Logger<ILogObj> => {
if (_logger) {
return _logger
}
const logLevelMap: Record<string, number> = {
'silly': 0,
'trace': 1,
'debug': 2,
'info': 3,
'warn': 4,
'error': 5,
'fatal': 6
}
let minLevel = logLevelMap['info']
if (options.logLevel) {
if (typeof options.logLevel === 'string') {
const levelStr = options.logLevel as string
minLevel = logLevelMap[levelStr.toLowerCase()] || logLevelMap['info']
} else {
minLevel = options.logLevel
}
}
_logger = new Logger<ILogObj>({
name: MODULE_NAME,
minLevel,
hideLogPositionForProduction: true,
maskPlaceholder: '***',
prettyLogTemplate: "{{logLevelName}}\t[{{filePathWithLine}}{{name}}]\t",
})
return _logger
}
export { run } from './commands/run.js'
export const module_root = () => path.resolve(path.join(get_var(isWindows ? 'HOMEPATH' : 'HOME'), `.${MODULE_NAME}`))

View File

@ -20,9 +20,11 @@ export const prompt = async (opts: IKBotTask): Promise<ChatCompletionMessagePara
}
export const preferences = async (opts: IKBotTask): Promise<ChatCompletionMessageParam | undefined> => {
let preferencesPath = path.resolve(resolve(opts.preferences, false, env_vars()))
if(!exists(preferencesPath)) {
preferencesPath = path.resolve(path.join(process.cwd(), PREFERENCES_FILE_NAME))
// First try local preferences
let preferencesPath = path.resolve(path.join(process.cwd(), PREFERENCES_FILE_NAME))
if (!exists(preferencesPath)) {
// Fall back to specified preferences path if local file doesn't exist
preferencesPath = path.resolve(resolve(opts.preferences, false, env_vars()))
}
const preferences = read(preferencesPath, 'string') as string
return {

View File

@ -1,22 +1,45 @@
Here's a comprehensive list of hardware/software resources for cutting HDPE sheets with X-Carve CNC, formatted to your preferences:
To cut HDPE sheets using an X-Carve CNC, you'll need the following hardware and software resources:
## Hardware Requirements
- **X-Carve CNC Machine** with vacuum table or clamps
- **1/8" (3.175 mm) flat flute cutting bit** - Ideal for plastic cutting[1]
- **CNC Clamps** - From X-Carve kit for material securing[1]
- **HDPE Sheet** - Measure thickness carefully (typical: 3-6mm)
- **Safety Equipment** - Goggles, hearing protection
---
## Software Stack
- **Easel CAM Software** (Free) - X-Carve integration with HDPE material profile[1][2]
- **Inkscape** (Open-source) - Vector design creation/modification[2]
- **The Noun Project** - Source for ready-made SVG vectors ([nounproject.com][3])
## **Hardware Resources**
1. **X-Carve CNC Machine**
- Core tool for milling/cutting operations, compatible with HDPE sheets [1][7].
- Optional upgrades available for extended bed sizes (e.g., 1800mm rail extensions) [4].
## Tutorial Resources
- [Complete Spanish video guide with subtitles](https://www.youtube.com/watch?v=4LrrFz802To) [1]
- [Alternative manual routing techniques](https://youtu.be/gxkcffQD3eQ) [4]
2. **CNC Clamping System**
- Secures HDPE sheets using X-Carve clamps to prevent movement during cutting [1][7].
Addendum: Always verify machine calibration and perform test cuts on scrap material before final operation.
3. **1/8" Flat Flute Cutting Bits**
- Recommended for clean HDPE cuts (shank diameter: 3.175mm, cutting diameter: 3.175mm) [1][5][7].
- Alternative options: Use manual routers/jigsaws with coarse-tooth blades for basic cuts [6].
kind regards,
Guenter
4. **HDPE Plastic Sheets**
- Ideal thickness depends on project requirements; ensure sheets are measured (height, width, thickness) before cutting [1][7].
5. **Post-Processing Tools**
- Sandpaper/files for smoothing edges after CNC cutting.
---
## **Software Resources**
1. **Easel (CAM Software)**
- Free cloud-based tool for designing, simulating cuts, and generating toolpaths [1][2][7][8].
- Key features:
- Built-in HDPE material profile [1][7]
- SVG/vector file imports [2][7]
- 3D machining and automated toolpath generation (with Easel Pro) [2][8]
2. **Inkscape (Vector Design)**
- Open-source software for creating/editing SVG files [1][3][7].
- Used with **Path > Trace Bitmap** to convert raster images into CNC-ready vectors [3].
3. **The Noun Project**
- Source for open-source SVG designs compatible with Easel [1][7].
---
## **Tutorial Resources**
- **Spanish Video Guide**: Step-by-step process with subtitles [YouTube](https://www.youtube.com/watch?v=4LrrFz802To) [1][7].
- **Alternative Methods**: Manual cutting demo [YouTube](https://youtu.be/gxkcffQD3eQ) [1].
- **Community Support**: Share results on [Precious Plastic forums](https://community.preciousplastic.com) [1][7].

View File

@ -24,13 +24,13 @@ describe('Math Operations', () => {
it.each(models)('should solve quadratic equation with model %s', async (modelName) => {
const result = await runTest(
'Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.',
'-3,-2',
'-2,-3',
'quadratic',
modelName,
TEST_LOG_PATH
)
testResults.push(result)
expect(result.result[0]?.trim()?.toLowerCase()).toEqual('-3,-2')
expect(result.result[0]?.trim()?.toLowerCase()).toEqual('-2,-3')
}, { timeout: TEST_TIMEOUT })
it.each(models)('should calculate factorial with model %s', async (modelName) => {

View File

@ -6403,6 +6403,779 @@
"passed": true,
"duration": 760,
"category": "basic"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-3,-2",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:08:37.779Z",
"passed": false,
"duration": 1244,
"reason": "Expected -3,-2, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"The solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\n\\boxed{-2}, \\boxed{-3}"
],
"expected": "-3,-2",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:08:48.803Z",
"passed": false,
"duration": 11013,
"reason": "Expected -3,-2, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\n\\boxed{-2}, \\boxed{-3}",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-3,-2",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:08:50.291Z",
"passed": false,
"duration": 1482,
"reason": "Expected -3,-2, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:08:51.033Z",
"passed": true,
"duration": 736,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:08:55.877Z",
"passed": true,
"duration": 4838,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:08:56.613Z",
"passed": true,
"duration": 730,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-02T22:08:57.421Z",
"passed": true,
"duration": 802,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"The 6th number in the Fibonacci sequence is 5. \n\n5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:09:04.449Z",
"passed": false,
"duration": 7023,
"reason": "Expected 8, but got the 6th number in the fibonacci sequence is 5. \n\n5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:05.286Z",
"passed": false,
"duration": 831,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:09:06.233Z",
"passed": true,
"duration": 940,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:09:08.662Z",
"passed": true,
"duration": 2423,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:09.441Z",
"passed": true,
"duration": 773,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:09:10.298Z",
"passed": true,
"duration": 851,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:09:11.870Z",
"passed": true,
"duration": 1566,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:12.628Z",
"passed": true,
"duration": 753,
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:07.251Z",
"passed": false,
"duration": 1329,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:14.807Z",
"passed": false,
"duration": 7547,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:15.551Z",
"passed": false,
"duration": 738,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:16.305Z",
"passed": true,
"duration": 749,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:21.413Z",
"passed": true,
"duration": 5102,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:22.690Z",
"passed": true,
"duration": 1271,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-02T22:11:23.404Z",
"passed": true,
"duration": 707,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:32.032Z",
"passed": false,
"duration": 8621,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:33.022Z",
"passed": false,
"duration": 983,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:33.875Z",
"passed": true,
"duration": 845,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:37.488Z",
"passed": true,
"duration": 3608,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:38.246Z",
"passed": true,
"duration": 753,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:11:39.169Z",
"passed": true,
"duration": 918,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:11:43.117Z",
"passed": true,
"duration": 3943,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:44.077Z",
"passed": true,
"duration": 954,
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-3, -2"
],
"expected": "-2,-3",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:09:38.709Z",
"passed": false,
"duration": 1685,
"reason": "Expected -2,-3, but got -3, -2",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"The solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\nSpecific steps:\n\n1. **Identify coefficients**: a = 1, b = 5, c = 6.\n2. **Calculate discriminant**: b² - 4ac = 25 - 24 = 1.\n3. **Apply quadratic formula**: x = (-5 ± √1)/2.\n4. **Compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.\n\n-2, -3\n\nAnswer: -2,-3"
],
"expected": "-2,-3",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:09:49.547Z",
"passed": false,
"duration": 10827,
"reason": "Expected -2,-3, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\nspecific steps:\n\n1. **identify coefficients**: a = 1, b = 5, c = 6.\n2. **calculate discriminant**: b² - 4ac = 25 - 24 = 1.\n3. **apply quadratic formula**: x = (-5 ± √1)/2.\n4. **compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.\n\n-2, -3\n\nanswer: -2,-3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:09:50.489Z",
"passed": false,
"duration": 935,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:09:54.489Z",
"passed": true,
"duration": 3991,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"5! = 120\n\nThe factorial of 5 is calculated as:\n\n5 × 4 × 3 × 2 × 1 = 120\n\n**Answer:** 120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:03.614Z",
"passed": false,
"duration": 9116,
"reason": "Expected 120, but got 5! = 120\n\nthe factorial of 5 is calculated as:\n\n5 × 4 × 3 × 2 × 1 = 120\n\n**answer:** 120",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:04.483Z",
"passed": true,
"duration": 861,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-03T17:10:05.284Z",
"passed": true,
"duration": 792,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:13.584Z",
"passed": false,
"duration": 8292,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:14.350Z",
"passed": false,
"duration": 756,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:10:15.250Z",
"passed": true,
"duration": 892,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:17.013Z",
"passed": true,
"duration": 1755,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:17.849Z",
"passed": true,
"duration": 828,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-03T17:10:18.651Z",
"passed": true,
"duration": 795,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-03T17:10:25.922Z",
"passed": true,
"duration": 7263,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:26.895Z",
"passed": true,
"duration": 966,
"category": "math"
},
{
"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-03T17:14:04.393Z",
"passed": true,
"duration": 1484,
"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-03T17:14:12.861Z",
"passed": true,
"duration": 8460,
"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-03T17:14:13.779Z",
"passed": true,
"duration": 910,
"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-03T17:14:14.740Z",
"passed": true,
"duration": 955,
"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-03T17:14:22.399Z",
"passed": true,
"duration": 7653,
"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-03T17:14:23.502Z",
"passed": true,
"duration": 1095,
"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-03T17:14:24.325Z",
"passed": true,
"duration": 816,
"category": "basic"
},
{
"test": "division",
"prompt": "divide 15 by 3. Return only the number, no explanation.",
"result": [
"15 divided by 3 is 5. \n\nAnswer: 5"
],
"expected": "5",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:14:40.987Z",
"passed": false,
"duration": 16655,
"reason": "Expected 5, but got 15 divided by 3 is 5. \n\nanswer: 5",
"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-03T17:14:41.951Z",
"passed": true,
"duration": 954,
"category": "basic"
}
],
"highscores": [
@ -6411,8 +7184,8 @@
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 1295,
"duration_secs": 1.295
"duration": 935,
"duration_secs": 0.935
},
{
"model": "anthropic/claude-3.5-sonnet",
@ -6425,14 +7198,14 @@
"test": "factorial",
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 785,
"duration_secs": 0.785
"model": "openai/gpt-4o-mini",
"duration": 861,
"duration_secs": 0.861
},
{
"model": "openai/gpt-4o-mini",
"duration": 876,
"duration_secs": 0.876
"model": "anthropic/claude-3.5-sonnet",
"duration": 1454,
"duration_secs": 1.454
}
]
},
@ -6440,14 +7213,14 @@
"test": "fibonacci",
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 898,
"duration_secs": 0.898
"model": "openai/gpt-4o-mini",
"duration": 756,
"duration_secs": 0.756
},
{
"model": "openai/gpt-4o-mini",
"duration": 1149,
"duration_secs": 1.149
"model": "openai/gpt-3.5-turbo",
"duration": 792,
"duration_secs": 0.792
}
]
},
@ -6460,9 +7233,9 @@
"duration_secs": 0.819
},
{
"model": "qwen/qwq-32b",
"duration": 890,
"duration_secs": 0.89
"model": "openai/gpt-4o-mini",
"duration": 828,
"duration_secs": 0.828
}
]
},
@ -6471,13 +7244,13 @@
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 866,
"duration_secs": 0.866
"duration": 795,
"duration_secs": 0.795
},
{
"model": "openai/gpt-4o-mini",
"duration": 875,
"duration_secs": 0.875
"duration": 966,
"duration_secs": 0.966
}
]
},
@ -6486,13 +7259,13 @@
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 791,
"duration_secs": 0.791
"duration": 910,
"duration_secs": 0.91
},
{
"model": "anthropic/claude-3.5-sonnet",
"duration": 1689,
"duration_secs": 1.689
"model": "openai/gpt-3.5-turbo",
"duration": 1484,
"duration_secs": 1.484
}
]
},
@ -6500,14 +7273,14 @@
"test": "multiplication",
"rankings": [
{
"model": "anthropic/claude-3.5-sonnet",
"duration": 1190,
"duration_secs": 1.19
"model": "openai/gpt-3.5-turbo",
"duration": 955,
"duration_secs": 0.955
},
{
"model": "openai/gpt-4o-mini",
"duration": 1206,
"duration_secs": 1.206
"duration": 1095,
"duration_secs": 1.095
}
]
},
@ -6515,14 +7288,14 @@
"test": "division",
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 760,
"duration_secs": 0.76
"model": "openai/gpt-3.5-turbo",
"duration": 816,
"duration_secs": 0.816
},
{
"model": "openai/gpt-3.5-turbo",
"duration": 783,
"duration_secs": 0.783
"model": "qwen/qwq-32b",
"duration": 917,
"duration_secs": 0.917
}
]
},
@ -6587,5 +7360,5 @@
]
}
],
"lastUpdated": "2025-04-02T22:06:51.780Z"
"lastUpdated": "2025-04-03T17:14:41.955Z"
}

View File

@ -1124,6 +1124,133 @@
"passed": true,
"duration": 760,
"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-03T17:14:04.393Z",
"passed": true,
"duration": 1484,
"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-03T17:14:12.861Z",
"passed": true,
"duration": 8460,
"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-03T17:14:13.779Z",
"passed": true,
"duration": 910,
"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-03T17:14:14.740Z",
"passed": true,
"duration": 955,
"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-03T17:14:22.399Z",
"passed": true,
"duration": 7653,
"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-03T17:14:23.502Z",
"passed": true,
"duration": 1095,
"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-03T17:14:24.325Z",
"passed": true,
"duration": 816,
"category": "basic"
},
{
"test": "division",
"prompt": "divide 15 by 3. Return only the number, no explanation.",
"result": [
"15 divided by 3 is 5. \n\nAnswer: 5"
],
"expected": "5",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:14:40.987Z",
"passed": false,
"duration": 16655,
"reason": "Expected 5, but got 15 divided by 3 is 5. \n\nanswer: 5",
"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-03T17:14:41.951Z",
"passed": true,
"duration": 954,
"category": "basic"
}
],
"highscores": [
@ -1132,13 +1259,13 @@
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 791,
"duration_secs": 0.791
"duration": 910,
"duration_secs": 0.91
},
{
"model": "anthropic/claude-3.5-sonnet",
"duration": 1689,
"duration_secs": 1.689
"model": "openai/gpt-3.5-turbo",
"duration": 1484,
"duration_secs": 1.484
}
]
},
@ -1146,14 +1273,14 @@
"test": "multiplication",
"rankings": [
{
"model": "anthropic/claude-3.5-sonnet",
"duration": 1190,
"duration_secs": 1.19
"model": "openai/gpt-3.5-turbo",
"duration": 955,
"duration_secs": 0.955
},
{
"model": "openai/gpt-4o-mini",
"duration": 1206,
"duration_secs": 1.206
"duration": 1095,
"duration_secs": 1.095
}
]
},
@ -1161,17 +1288,17 @@
"test": "division",
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 760,
"duration_secs": 0.76
"model": "openai/gpt-3.5-turbo",
"duration": 816,
"duration_secs": 0.816
},
{
"model": "openai/gpt-3.5-turbo",
"duration": 783,
"duration_secs": 0.783
"model": "qwen/qwq-32b",
"duration": 917,
"duration_secs": 0.917
}
]
}
],
"lastUpdated": "2025-04-02T22:06:51.777Z"
"lastUpdated": "2025-04-03T17:14:41.951Z"
}

View File

@ -6,15 +6,15 @@
| Test | Model | Duration (ms) | Duration (s) |
|------|-------|--------------|--------------|
| addition | openai/gpt-4o-mini | 791 | 0.79 |
| addition | deepseek/deepseek-r1-distill-qwen-14b:free | 2228 | 2.23 |
| addition | openai/gpt-3.5-turbo | 2263 | 2.26 |
| multiplication | openai/gpt-4o-mini | 1206 | 1.21 |
| multiplication | openai/gpt-3.5-turbo | 1300 | 1.30 |
| multiplication | deepseek/deepseek-r1-distill-qwen-14b:free | 2782 | 2.78 |
| division | openai/gpt-4o-mini | 760 | 0.76 |
| division | openai/gpt-3.5-turbo | 783 | 0.78 |
| division | deepseek/deepseek-r1-distill-qwen-14b:free | 2982 | 2.98 |
| addition | openai/gpt-4o-mini | 910 | 0.91 |
| addition | openai/gpt-3.5-turbo | 1484 | 1.48 |
| addition | deepseek/deepseek-r1-distill-qwen-14b:free | 8460 | 8.46 |
| multiplication | openai/gpt-3.5-turbo | 955 | 0.95 |
| multiplication | openai/gpt-4o-mini | 1095 | 1.09 |
| multiplication | deepseek/deepseek-r1-distill-qwen-14b:free | 7653 | 7.65 |
| division | openai/gpt-3.5-turbo | 816 | 0.82 |
| division | openai/gpt-4o-mini | 954 | 0.95 |
| division | deepseek/deepseek-r1-distill-qwen-14b:free | 16655 | 16.66 |
## Summary
@ -22,18 +22,22 @@
- Passed: 8
- Failed: 1
- Success Rate: 88.89%
- Average Duration: 1677ms (1.68s)
- Average Duration: 4331ms (4.33s)
## 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: `8 × 3 = 24`
- Duration: 2782ms (2.78s)
- Reason: Expected 24, but got 8 × 3 = 24
- Timestamp: 4/3/2025, 12:06:46 AM
- Prompt: `divide 15 by 3. Return only the number, no explanation.`
- Expected: `5`
- Actual: `15 divided by 3 is 5.
Answer: 5`
- Duration: 16655ms (16.66s)
- Reason: Expected 5, but got 15 divided by 3 is 5.
answer: 5
- Timestamp: 4/3/2025, 7:14:40 PM
## Passed Tests
@ -42,62 +46,62 @@
- Prompt: `add 5 and 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 2263ms (2.26s)
- Timestamp: 4/3/2025, 12:06:38 AM
- Duration: 1484ms (1.48s)
- Timestamp: 4/3/2025, 7:14:04 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: 2228ms (2.23s)
- Timestamp: 4/3/2025, 12:06:41 AM
- Duration: 8460ms (8.46s)
- Timestamp: 4/3/2025, 7:14:12 PM
### addition - openai/gpt-4o-mini
- Prompt: `add 5 and 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 791ms (0.79s)
- Timestamp: 4/3/2025, 12:06:41 AM
- Duration: 910ms (0.91s)
- Timestamp: 4/3/2025, 7:14:13 PM
### multiplication - openai/gpt-3.5-turbo
- Prompt: `multiply 8 and 3. Return only the number, no explanation.`
- Expected: `24`
- Actual: `24`
- Duration: 1300ms (1.30s)
- Timestamp: 4/3/2025, 12:06:43 AM
- Duration: 955ms (0.95s)
- Timestamp: 4/3/2025, 7:14:14 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: 7653ms (7.65s)
- Timestamp: 4/3/2025, 7:14:22 PM
### multiplication - openai/gpt-4o-mini
- Prompt: `multiply 8 and 3. Return only the number, no explanation.`
- Expected: `24`
- Actual: `24`
- Duration: 1206ms (1.21s)
- Timestamp: 4/3/2025, 12:06:47 AM
- Duration: 1095ms (1.09s)
- Timestamp: 4/3/2025, 7:14:23 PM
### division - openai/gpt-3.5-turbo
- Prompt: `divide 15 by 3. Return only the number, no explanation.`
- Expected: `5`
- Actual: `5`
- Duration: 783ms (0.78s)
- Timestamp: 4/3/2025, 12:06:48 AM
### division - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `divide 15 by 3. Return only the number, no explanation.`
- Expected: `5`
- Actual: `5`
- Duration: 2982ms (2.98s)
- Timestamp: 4/3/2025, 12:06:51 AM
- Duration: 816ms (0.82s)
- Timestamp: 4/3/2025, 7:14:24 PM
### division - openai/gpt-4o-mini
- Prompt: `divide 15 by 3. Return only the number, no explanation.`
- Expected: `5`
- Actual: `5`
- Duration: 760ms (0.76s)
- Timestamp: 4/3/2025, 12:06:51 AM
- Duration: 954ms (0.95s)
- Timestamp: 4/3/2025, 7:14:41 PM

View File

@ -2182,6 +2182,652 @@
"duration": 1478,
"reason": "Expected -3,-2, but got -3, -2",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-3,-2",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:08:37.779Z",
"passed": false,
"duration": 1244,
"reason": "Expected -3,-2, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"The solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\n\\boxed{-2}, \\boxed{-3}"
],
"expected": "-3,-2",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:08:48.803Z",
"passed": false,
"duration": 11013,
"reason": "Expected -3,-2, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\n\\boxed{-2}, \\boxed{-3}",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-3,-2",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:08:50.291Z",
"passed": false,
"duration": 1482,
"reason": "Expected -3,-2, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:08:51.033Z",
"passed": true,
"duration": 736,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:08:55.877Z",
"passed": true,
"duration": 4838,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:08:56.613Z",
"passed": true,
"duration": 730,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-02T22:08:57.421Z",
"passed": true,
"duration": 802,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"The 6th number in the Fibonacci sequence is 5. \n\n5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:09:04.449Z",
"passed": false,
"duration": 7023,
"reason": "Expected 8, but got the 6th number in the fibonacci sequence is 5. \n\n5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:05.286Z",
"passed": false,
"duration": 831,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:09:06.233Z",
"passed": true,
"duration": 940,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:09:08.662Z",
"passed": true,
"duration": 2423,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:09.441Z",
"passed": true,
"duration": 773,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:09:10.298Z",
"passed": true,
"duration": 851,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:09:11.870Z",
"passed": true,
"duration": 1566,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:09:12.628Z",
"passed": true,
"duration": 753,
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:07.251Z",
"passed": false,
"duration": 1329,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:14.807Z",
"passed": false,
"duration": 7547,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:15.551Z",
"passed": false,
"duration": 738,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:16.305Z",
"passed": true,
"duration": 749,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:21.413Z",
"passed": true,
"duration": 5102,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:22.690Z",
"passed": true,
"duration": 1271,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-02T22:11:23.404Z",
"passed": true,
"duration": 707,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:32.032Z",
"passed": false,
"duration": 8621,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:33.022Z",
"passed": false,
"duration": 983,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-02T22:11:33.875Z",
"passed": true,
"duration": 845,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-02T22:11:37.488Z",
"passed": true,
"duration": 3608,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:38.246Z",
"passed": true,
"duration": 753,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:11:39.169Z",
"passed": true,
"duration": 918,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-02T22:11:43.117Z",
"passed": true,
"duration": 3943,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-02T22:11:44.077Z",
"passed": true,
"duration": 954,
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-3, -2"
],
"expected": "-2,-3",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:09:38.709Z",
"passed": false,
"duration": 1685,
"reason": "Expected -2,-3, but got -3, -2",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"The solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\nSpecific steps:\n\n1. **Identify coefficients**: a = 1, b = 5, c = 6.\n2. **Calculate discriminant**: b² - 4ac = 25 - 24 = 1.\n3. **Apply quadratic formula**: x = (-5 ± √1)/2.\n4. **Compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.\n\n-2, -3\n\nAnswer: -2,-3"
],
"expected": "-2,-3",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:09:49.547Z",
"passed": false,
"duration": 10827,
"reason": "Expected -2,-3, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.\n\nspecific steps:\n\n1. **identify coefficients**: a = 1, b = 5, c = 6.\n2. **calculate discriminant**: b² - 4ac = 25 - 24 = 1.\n3. **apply quadratic formula**: x = (-5 ± √1)/2.\n4. **compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.\n\n-2, -3\n\nanswer: -2,-3",
"category": "math"
},
{
"test": "quadratic",
"prompt": "Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.",
"result": [
"-2, -3"
],
"expected": "-2,-3",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:09:50.489Z",
"passed": false,
"duration": 935,
"reason": "Expected -2,-3, but got -2, -3",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:09:54.489Z",
"passed": true,
"duration": 3991,
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"5! = 120\n\nThe factorial of 5 is calculated as:\n\n5 × 4 × 3 × 2 × 1 = 120\n\n**Answer:** 120"
],
"expected": "120",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:03.614Z",
"passed": false,
"duration": 9116,
"reason": "Expected 120, but got 5! = 120\n\nthe factorial of 5 is calculated as:\n\n5 × 4 × 3 × 2 × 1 = 120\n\n**answer:** 120",
"category": "math"
},
{
"test": "factorial",
"prompt": "Calculate 5! (factorial of 5). Return only the number, no explanation.",
"result": [
"120"
],
"expected": "120",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:04.483Z",
"passed": true,
"duration": 861,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. 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-03T17:10:05.284Z",
"passed": true,
"duration": 792,
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:13.584Z",
"passed": false,
"duration": 8292,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "fibonacci",
"prompt": "Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.",
"result": [
"5"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:14.350Z",
"passed": false,
"duration": 756,
"reason": "Expected 8, but got 5",
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-3.5-turbo",
"router": "openai/gpt-3.5-turbo",
"timestamp": "2025-04-03T17:10:15.250Z",
"passed": true,
"duration": 892,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "deepseek/deepseek-r1-distill-qwen-14b:free",
"router": "deepseek/deepseek-r1-distill-qwen-14b:free",
"timestamp": "2025-04-03T17:10:17.013Z",
"passed": true,
"duration": 1755,
"category": "math"
},
{
"test": "square_root",
"prompt": "Calculate the square root of 16. Return only the number, no explanation.",
"result": [
"4"
],
"expected": "4",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:17.849Z",
"passed": true,
"duration": 828,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-03T17:10:18.651Z",
"passed": true,
"duration": 795,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 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-03T17:10:25.922Z",
"passed": true,
"duration": 7263,
"category": "math"
},
{
"test": "power",
"prompt": "Calculate 2 raised to the power of 3. Return only the number, no explanation.",
"result": [
"8"
],
"expected": "8",
"model": "openai/gpt-4o-mini",
"router": "openai/gpt-4o-mini",
"timestamp": "2025-04-03T17:10:26.895Z",
"passed": true,
"duration": 966,
"category": "math"
}
],
"highscores": [
@ -2190,8 +2836,8 @@
"rankings": [
{
"model": "openai/gpt-4o-mini",
"duration": 1295,
"duration_secs": 1.295
"duration": 935,
"duration_secs": 0.935
},
{
"model": "anthropic/claude-3.5-sonnet",
@ -2204,14 +2850,14 @@
"test": "factorial",
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 785,
"duration_secs": 0.785
"model": "openai/gpt-4o-mini",
"duration": 861,
"duration_secs": 0.861
},
{
"model": "openai/gpt-4o-mini",
"duration": 876,
"duration_secs": 0.876
"model": "anthropic/claude-3.5-sonnet",
"duration": 1454,
"duration_secs": 1.454
}
]
},
@ -2219,14 +2865,14 @@
"test": "fibonacci",
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 898,
"duration_secs": 0.898
"model": "openai/gpt-4o-mini",
"duration": 756,
"duration_secs": 0.756
},
{
"model": "openai/gpt-4o-mini",
"duration": 1149,
"duration_secs": 1.149
"model": "openai/gpt-3.5-turbo",
"duration": 792,
"duration_secs": 0.792
}
]
},
@ -2239,9 +2885,9 @@
"duration_secs": 0.819
},
{
"model": "qwen/qwq-32b",
"duration": 890,
"duration_secs": 0.89
"model": "openai/gpt-4o-mini",
"duration": 828,
"duration_secs": 0.828
}
]
},
@ -2250,16 +2896,16 @@
"rankings": [
{
"model": "openai/gpt-3.5-turbo",
"duration": 866,
"duration_secs": 0.866
"duration": 795,
"duration_secs": 0.795
},
{
"model": "openai/gpt-4o-mini",
"duration": 875,
"duration_secs": 0.875
"duration": 966,
"duration_secs": 0.966
}
]
}
],
"lastUpdated": "2025-04-02T13:43:41.958Z"
"lastUpdated": "2025-04-03T17:10:26.897Z"
}

View File

@ -2,283 +2,195 @@
## Highscores
### Performance Rankings (Duration)
| Test | Model | Duration (ms) | Duration (s) |
|------|-------|--------------|--------------|
| factorial | openai/gpt-3.5-turbo | 827 | 0.83 |
| factorial | openai/gpt-4o-mini | 956 | 0.96 |
| square_root | openai/gpt-4o-mini | 964 | 0.96 |
| square_root | openai/gpt-3.5-turbo | 1080 | 1.08 |
| power | anthropic/claude-3.5-sonnet | 1136 | 1.14 |
| power | openai/gpt-4o-mini | 1259 | 1.26 |
| power | openai/gpt-3.5-turbo | 1498 | 1.50 |
| fibonacci | openai/gpt-3.5-turbo | 1543 | 1.54 |
| fibonacci | openai/gpt-4o-mini | 1673 | 1.67 |
| factorial | anthropic/claude-3.5-sonnet | 1853 | 1.85 |
| fibonacci | anthropic/claude-3.5-sonnet | 2004 | 2.00 |
| square_root | anthropic/claude-3.5-sonnet | 2012 | 2.01 |
| factorial | deepseek/deepseek-r1-distill-qwen-14b:free | 4814 | 4.81 |
| power | deepseek/deepseek-r1 | 5414 | 5.41 |
| square_root | qwen/qwq-32b | 5888 | 5.89 |
| square_root | deepseek/deepseek-r1-distill-qwen-14b:free | 6114 | 6.11 |
| quadratic | qwen/qwq-32b | 6795 | 6.79 |
| factorial | qwen/qwq-32b | 6892 | 6.89 |
| power | qwen/qwq-32b | 7572 | 7.57 |
| power | deepseek/deepseek-r1-distill-qwen-14b:free | 9891 | 9.89 |
| square_root | deepseek/deepseek-r1 | 10309 | 10.31 |
| factorial | deepseek/deepseek-r1 | 11193 | 11.19 |
| quadratic | openai/gpt-4o-mini | 935 | 0.94 |
| quadratic | openai/gpt-3.5-turbo | 1685 | 1.69 |
| quadratic | deepseek/deepseek-r1-distill-qwen-14b:free | 10827 | 10.83 |
| factorial | openai/gpt-4o-mini | 861 | 0.86 |
| factorial | openai/gpt-3.5-turbo | 3991 | 3.99 |
| factorial | deepseek/deepseek-r1-distill-qwen-14b:free | 9116 | 9.12 |
| fibonacci | openai/gpt-4o-mini | 756 | 0.76 |
| fibonacci | openai/gpt-3.5-turbo | 792 | 0.79 |
| fibonacci | deepseek/deepseek-r1-distill-qwen-14b:free | 8292 | 8.29 |
| square_root | openai/gpt-4o-mini | 828 | 0.83 |
| square_root | openai/gpt-3.5-turbo | 892 | 0.89 |
| square_root | deepseek/deepseek-r1-distill-qwen-14b:free | 1755 | 1.75 |
| power | openai/gpt-3.5-turbo | 795 | 0.80 |
| power | openai/gpt-4o-mini | 966 | 0.97 |
| power | deepseek/deepseek-r1-distill-qwen-14b:free | 7263 | 7.26 |
## Summary
- Total Tests: 29
- Passed: 22
- Failed: 7
- Success Rate: 75.86%
- Average Duration: 4745ms (4.75s)
- Total Tests: 15
- Passed: 9
- Failed: 6
- Success Rate: 60.00%
- Average Duration: 3317ms (3.32s)
## Failed Tests
### quadratic - anthropic/claude-3.5-sonnet
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `-2,-3`
- Duration: 1892ms (1892.00s)
- Reason: Expected -3,-2, but got -2,-3
- Timestamp: 4/2/2025, 3:32:51 PM
### quadratic - openai/gpt-4o-mini
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `-2, -3`
- Duration: 853ms (853.00s)
- Reason: Expected -3,-2, but got -2, -3
- Timestamp: 4/2/2025, 3:32:59 PM
### quadratic - openai/gpt-3.5-turbo
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `-2, -3`
- Duration: 832ms (832.00s)
- Reason: Expected -3,-2, but got -2, -3
- Timestamp: 4/2/2025, 3:32:59 PM
### quadratic - deepseek/deepseek-r1
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `-2, -3`
- Duration: 19850ms (19850.00s)
- Reason: Expected -3,-2, but got -2, -3
- Timestamp: 4/2/2025, 3:33:19 PM
- Expected: `-2,-3`
- Actual: `-3, -2`
- Duration: 1685ms (1.69s)
- Reason: Expected -2,-3, but got -3, -2
- Timestamp: 4/3/2025, 7:09:38 PM
### quadratic - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `The solutions to the quadratic equation x² + 5x + 6 = 0 are x = -2 and x = -3.
- Expected: `-2,-3`
- Actual: `The solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.
-2,-3`
- Duration: 15811ms (15811.00s)
- Reason: Expected -3,-2, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are x = -2 and x = -3.
Specific steps:
-2,-3
- Timestamp: 4/2/2025, 3:33:35 PM
1. **Identify coefficients**: a = 1, b = 5, c = 6.
2. **Calculate discriminant**: b² - 4ac = 25 - 24 = 1.
3. **Apply quadratic formula**: x = (-5 ± √1)/2.
4. **Compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.
### fibonacci - qwen/qwq-32b
-2, -3
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `5`
- Duration: 1509ms (1509.00s)
- Reason: Expected 8, but got 5
- Timestamp: 4/2/2025, 3:34:05 PM
Answer: -2,-3`
- Duration: 10827ms (10.83s)
- Reason: Expected -2,-3, but got the solutions to the quadratic equation x² + 5x + 6 = 0 are -2 and -3.
specific steps:
1. **identify coefficients**: a = 1, b = 5, c = 6.
2. **calculate discriminant**: b² - 4ac = 25 - 24 = 1.
3. **apply quadratic formula**: x = (-5 ± √1)/2.
4. **compute solutions**: x = (-5 + 1)/2 = -2 and x = (-5 - 1)/2 = -3.
-2, -3
answer: -2,-3
- Timestamp: 4/3/2025, 7:09:49 PM
### quadratic - openai/gpt-4o-mini
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-2,-3`
- Actual: `-2, -3`
- Duration: 935ms (0.94s)
- Reason: Expected -2,-3, but got -2, -3
- Timestamp: 4/3/2025, 7:09:50 PM
### factorial - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `5! = 120
The factorial of 5 is calculated as:
5 × 4 × 3 × 2 × 1 = 120
**Answer:** 120`
- Duration: 9116ms (9.12s)
- Reason: Expected 120, but got 5! = 120
the factorial of 5 is calculated as:
5 × 4 × 3 × 2 × 1 = 120
**answer:** 120
- Timestamp: 4/3/2025, 7:10:03 PM
### fibonacci - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `5`
- Duration: 5171ms (5171.00s)
- Duration: 8292ms (8.29s)
- Reason: Expected 8, but got 5
- Timestamp: 4/2/2025, 3:34:44 PM
- Timestamp: 4/3/2025, 7:10:13 PM
### fibonacci - openai/gpt-4o-mini
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `5`
- Duration: 756ms (0.76s)
- Reason: Expected 8, but got 5
- Timestamp: 4/3/2025, 7:10:14 PM
## Passed Tests
### quadratic - qwen/qwq-32b
- Prompt: `Solve the quadratic equation x² + 5x + 6 = 0. Return only the solutions as comma-separated numbers, no explanation.`
- Expected: `-3,-2`
- Actual: `-3,-2`
- Duration: 6795ms (6795.00s)
- Timestamp: 4/2/2025, 3:32:58 PM
### factorial - anthropic/claude-3.5-sonnet
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 1853ms (1853.00s)
- Timestamp: 4/2/2025, 3:33:37 PM
### factorial - qwen/qwq-32b
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 6892ms (6892.00s)
- Timestamp: 4/2/2025, 3:33:44 PM
### factorial - openai/gpt-4o-mini
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 956ms (956.00s)
- Timestamp: 4/2/2025, 3:33:45 PM
### factorial - openai/gpt-3.5-turbo
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 827ms (827.00s)
- Timestamp: 4/2/2025, 3:33:46 PM
- Duration: 3991ms (3.99s)
- Timestamp: 4/3/2025, 7:09:54 PM
### factorial - deepseek/deepseek-r1
### factorial - openai/gpt-4o-mini
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 11193ms (11193.00s)
- Timestamp: 4/2/2025, 3:33:57 PM
### factorial - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Calculate 5! (factorial of 5). Return only the number, no explanation.`
- Expected: `120`
- Actual: `120`
- Duration: 4814ms (4814.00s)
- Timestamp: 4/2/2025, 3:34:02 PM
### fibonacci - anthropic/claude-3.5-sonnet
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 2004ms (2004.00s)
- Timestamp: 4/2/2025, 3:34:04 PM
### fibonacci - openai/gpt-4o-mini
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 1673ms (1673.00s)
- Timestamp: 4/2/2025, 3:34:07 PM
- Duration: 861ms (0.86s)
- Timestamp: 4/3/2025, 7:10:04 PM
### fibonacci - openai/gpt-3.5-turbo
- Prompt: `Calculate the 6th number in the Fibonacci sequence. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 1543ms (1543.00s)
- Timestamp: 4/2/2025, 3:34:08 PM
### square_root - anthropic/claude-3.5-sonnet
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 2012ms (2012.00s)
- Timestamp: 4/2/2025, 3:34:46 PM
### square_root - qwen/qwq-32b
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 5888ms (5888.00s)
- Timestamp: 4/2/2025, 3:34:52 PM
### square_root - openai/gpt-4o-mini
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 964ms (964.00s)
- Timestamp: 4/2/2025, 3:34:52 PM
- Duration: 792ms (0.79s)
- Timestamp: 4/3/2025, 7:10:05 PM
### square_root - openai/gpt-3.5-turbo
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 1080ms (1080.00s)
- Timestamp: 4/2/2025, 3:34:54 PM
### square_root - deepseek/deepseek-r1
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 10309ms (10309.00s)
- Timestamp: 4/2/2025, 3:35:04 PM
- Duration: 892ms (0.89s)
- Timestamp: 4/3/2025, 7:10:15 PM
### square_root - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 6114ms (6114.00s)
- Timestamp: 4/2/2025, 3:35:10 PM
- Duration: 1755ms (1.75s)
- Timestamp: 4/3/2025, 7:10:17 PM
### power - anthropic/claude-3.5-sonnet
### square_root - openai/gpt-4o-mini
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 1136ms (1136.00s)
- Timestamp: 4/2/2025, 3:35:11 PM
### power - qwen/qwq-32b
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 7572ms (7572.00s)
- Timestamp: 4/2/2025, 3:35:19 PM
### power - openai/gpt-4o-mini
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 1259ms (1259.00s)
- Timestamp: 4/2/2025, 3:35:20 PM
- Prompt: `Calculate the square root of 16. Return only the number, no explanation.`
- Expected: `4`
- Actual: `4`
- Duration: 828ms (0.83s)
- Timestamp: 4/3/2025, 7:10:17 PM
### power - openai/gpt-3.5-turbo
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 1498ms (1498.00s)
- Timestamp: 4/2/2025, 3:35:21 PM
### power - deepseek/deepseek-r1
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 5414ms (5414.00s)
- Timestamp: 4/2/2025, 3:35:27 PM
- Duration: 795ms (0.80s)
- Timestamp: 4/3/2025, 7:10:18 PM
### power - deepseek/deepseek-r1-distill-qwen-14b:free
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 9891ms (9891.00s)
- Timestamp: 4/2/2025, 3:35:37 PM
- Duration: 7263ms (7.26s)
- Timestamp: 4/3/2025, 7:10:25 PM
### power - openai/gpt-4o-mini
- Prompt: `Calculate 2 raised to the power of 3. Return only the number, no explanation.`
- Expected: `8`
- Actual: `8`
- Duration: 966ms (0.97s)
- Timestamp: 4/3/2025, 7:10:26 PM