diff --git a/packages/kbot/.vscode/launch.json b/packages/kbot/.vscode/launch.json index 86d989e1..ffa00c01 100644 --- a/packages/kbot/.vscode/launch.json +++ b/packages/kbot/.vscode/launch.json @@ -705,23 +705,24 @@ "!**/node_modules/**" ], "outputCapture": "std" - }, + }, { "type": "node", "request": "launch", - "name": "Debug Current Test File", - "autoAttachChildProcesses": true, - "skipFiles": [ - "/**", - "**/node_modules/**" + "name": "Debug Files Tests (Vitest)", + "skipFiles": ["/**"], + "cwd": "${workspaceFolder}", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "test:files", "--", "--inspect-brk"], + "outFiles": ["${workspaceFolder}/**/*.js", "${workspaceFolder}/**/*.ts"], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "sourceMaps": true, + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" ], - "program": "${workspaceRoot}/node_modules/vitest/vitest.mjs", - "args": [ - "run", - "${relativeFile}" - ], - "smartStep": true, - "console": "integratedTerminal" + "outputCapture": "std" } ] } \ No newline at end of file diff --git a/packages/kbot/Preferences b/packages/kbot/Preferences new file mode 100644 index 00000000..d258bdab --- /dev/null +++ b/packages/kbot/Preferences @@ -0,0 +1,3 @@ +# Preferences + +You are a helpful AI assistant. When asked to perform calculations, you should return only the numerical result without any explanation or comments. \ No newline at end of file diff --git a/packages/kbot/dist-in/commands/run.js b/packages/kbot/dist-in/commands/run.js index 44a13f99..a91cd88e 100644 --- a/packages/kbot/dist-in/commands/run.js +++ b/packages/kbot/dist-in/commands/run.js @@ -107,11 +107,15 @@ export const processRun = async (opts) => { * */ function extractPaths(input) { + // If it's a direct path that exists, return it if (exists(path.resolve(resolve(input)))) { return [input]; } + // If it's a glob pattern, return it as is + if (hasMagic(input)) { + return [input]; + } // Matches either a Windows drive pattern like "C:\" or a forward slash "/". - // Parentheses group with `|` to match either part correctly. const pathStartRegex = /([A-Za-z]:\\)|\//g; const matchIndices = []; let match; @@ -142,17 +146,20 @@ function flattenArrays(arrays) { } export const run = async (opts) => { const ret = []; - const logger = new Logger({ - minLevel: opts.logLevel - }); + const logger = new Logger({ minLevel: opts.logLevel || 2 }); if (opts.include) { if (isString(opts.include)) { opts.include = [opts.include]; } if (isArray(opts.include)) { - opts.include = flattenArrays(opts.include.map(extractPaths)); + // First check for glob patterns + const globPatterns = opts.include.filter((path) => hasMagic(path)); + // Then process non-glob patterns + const nonGlobPaths = opts.include.filter((path) => !hasMagic(path)); + const processedPaths = flattenArrays(nonGlobPaths.map(extractPaths)); + // Combine glob patterns and processed paths + opts.include = [...globPatterns, ...processedPaths]; } - opts.include = Array.from(new Set(opts.include)); } else { opts.include = []; @@ -201,4 +208,4 @@ export const run = async (opts) => { } return ret; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLElBQUksSUFBSSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLElBQUksSUFBSSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFO0lBRWxELElBQUksT0FBTyxHQUFjLElBQUksQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFFcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQVEsQ0FBQTtJQUM5QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckUsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBO0lBRW5FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUN2QyxPQUFNO0lBQ1IsQ0FBQztJQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM5QyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUU3RCxJQUFJLFFBQVEsR0FBc0MsRUFBRSxDQUFBO0lBRXBELE1BQU0sYUFBYSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hDLElBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFDLENBQUM7UUFDekIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFdEMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDakYsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekQsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFlLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQTtJQUV6QyxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixRQUFRO1FBQ1IsS0FBSyxFQUFFLEVBQUU7S0FDNkIsQ0FBQTtJQUV4QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2RSxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFBO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUE7SUFDcEMsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ25ELEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEtBQUssTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxNQUFNLHVCQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDNVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFBO0lBQ2QsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUE7SUFDakQsSUFBSSxDQUFDO1FBQ0gsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLENBQUMsVUFBVTtnQkFDcEIsR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQ2xELE1BQUs7WUFFUCxLQUFLLE1BQU0sQ0FBQyxLQUFLO2dCQUNmLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUM3QyxNQUFLO1lBRVAsS0FBSyxNQUFNLENBQUMsU0FBUztnQkFDbkIsR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQ2pELE1BQUs7WUFFUDtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUM1QixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUNEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQywrQ0FBK0M7SUFDL0MsSUFBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQztRQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEIsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztJQUUzQyxNQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7SUFDbEMsSUFBSSxLQUE2QixDQUFDO0lBRWxDLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBSSxNQUFhO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM1QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFO0lBQzNDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVwRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQixnQ0FBZ0M7WUFDaEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQzFFLGlDQUFpQztZQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUMzRSxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1lBQ3BFLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQTtRQUNyRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBYSxFQUFFLENBQUE7UUFDeEIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkIsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDbkIsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzRixLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFPLElBQUksRUFBRSxDQUFBO1FBQzdDLENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4RSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNwQixDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLElBQUksQ0FBQyxJQUFJLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7WUFDM0UsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxNQUFNLDJCQUEyQixJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQTtRQUNoRixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHO2dCQUNmLEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUUsSUFBSTtnQkFDVixTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2FBQzFCLENBQUE7WUFDRCxzQ0FBc0M7WUFDdEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUE7WUFDOUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtZQUN2QixDQUFDO1lBQ0QsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDdEMsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/kbot/logs/params.json b/packages/kbot/logs/params.json index 2d04628d..e95bf8b2 100644 --- a/packages/kbot/logs/params.json +++ b/packages/kbot/logs/params.json @@ -1,13 +1,24 @@ { - "model": "openrouter/quasar-alpha", + "model": "google/gemini-2.0-flash-exp:free", "messages": [ { "role": "user", - "content": "Generate a JavaScript function that implements bubble sort.\n The function should be named 'bubbleSort' and take one parameter 'arr' (an array of numbers).\n The function should return the sorted array.\n Return only the function code, no explanation." + "content": "What animals are shown in these images? Return as JSON array." }, { "role": "user", "content": "USER Preferences : # Preferences\r\n\r\nYou are a helpful AI assistant. When asked to perform calculations, you should return only the numerical result without any explanation or comments. " + }, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": "data:image/jpeg;base64,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" + } + } + ] } ], "tools": [] diff --git a/packages/kbot/package.json b/packages/kbot/package.json index 4a80883f..6aa52603 100644 --- a/packages/kbot/package.json +++ b/packages/kbot/package.json @@ -24,6 +24,7 @@ "test:language": "vitest run tests/unit/language.test.ts", "test:tools": "vitest run tests/unit/tools.test.ts", "test:coding": "vitest run tests/unit/coding.test.ts", + "test:files": "vitest run tests/unit/files.test.ts", "test2:watch": "vitest", "test2:coverage": "vitest run --coverage", "webpack": "webpack --config webpack.config.js --stats-error-details", diff --git a/packages/kbot/src/commands/run.ts b/packages/kbot/src/commands/run.ts index 7f04677c..9862a966 100644 --- a/packages/kbot/src/commands/run.ts +++ b/packages/kbot/src/commands/run.ts @@ -124,13 +124,17 @@ export const processRun = async (opts: IKBotTask) => { * */ function extractPaths(input: string): string[] { - + // If it's a direct path that exists, return it if(exists(path.resolve(resolve(input)))){ return [input] } + // If it's a glob pattern, return it as is + if(hasMagic(input)){ + return [input] + } + // Matches either a Windows drive pattern like "C:\" or a forward slash "/". - // Parentheses group with `|` to match either part correctly. const pathStartRegex = /([A-Za-z]:\\)|\//g; const matchIndices: number[] = []; @@ -168,18 +172,22 @@ function flattenArrays(arrays: T[][]): T[] { export const run = async (opts: IKBotTask) => { const ret = [] - const logger = new Logger({ - minLevel: opts.logLevel - }) + const logger = new Logger({ minLevel: opts.logLevel || 2 }) + if (opts.include) { if (isString(opts.include)) { opts.include = [opts.include] } if (isArray(opts.include)) { - opts.include = flattenArrays(opts.include.map(extractPaths)) + // First check for glob patterns + const globPatterns = opts.include.filter((path: string) => hasMagic(path)) + // Then process non-glob patterns + const nonGlobPaths = opts.include.filter((path: string) => !hasMagic(path)) + const processedPaths = flattenArrays(nonGlobPaths.map(extractPaths)) + // Combine glob patterns and processed paths + opts.include = [...globPatterns, ...processedPaths] } - opts.include = Array.from(new Set(opts.include)) - }else{ + } else { opts.include = [] } if (opts.each) { diff --git a/packages/kbot/tests/test-data/files/bubblesort.js b/packages/kbot/tests/test-data/files/bubblesort.js new file mode 100644 index 00000000..e72b4d35 --- /dev/null +++ b/packages/kbot/tests/test-data/files/bubblesort.js @@ -0,0 +1,20 @@ +/* Prompt: +Generate a JavaScript function that implements bubble sort. + The function should be named 'bubbleSort' and take one parameter 'arr' (an array of numbers). + The function should return the sorted array. + Return only the function code, no explanation. +*/ + +function bubbleSort(arr) { + let n = arr.length; + for (let i = 0; i < n - 1; i++) { + for (let j = 0; j < n - 1 - i; j++) { + if (arr[j] > arr[j + 1]) { + let temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + } + return arr; +} \ No newline at end of file diff --git a/packages/kbot/tests/test-data/files/factorial.js b/packages/kbot/tests/test-data/files/factorial.js new file mode 100644 index 00000000..5c58d586 --- /dev/null +++ b/packages/kbot/tests/test-data/files/factorial.js @@ -0,0 +1,12 @@ +/* Prompt: +Generate a JavaScript function that calculates the factorial of a number. + The function should be named 'factorial' and take one parameter 'n'. + Return only the function code, no explanation. +*/ + +function factorial(n) { + if (n === 0 || n === 1) { + return 1; + } + return n * factorial(n - 1); +} \ No newline at end of file diff --git a/packages/kbot/tests/test-data/files/glob/data.json b/packages/kbot/tests/test-data/files/glob/data.json new file mode 100644 index 00000000..9ecf2842 --- /dev/null +++ b/packages/kbot/tests/test-data/files/glob/data.json @@ -0,0 +1,19 @@ +{ + "title": "Injection Barrel", + "price": "90.00", + "storeName": "Vaughn", + "storeLink": "https://bazar.preciousplastic.com/vaughn/", + "mediaHTML": "\n\n \n \n\n \n \n \n \n
\n \n\n\n \n\n \n\n
\n\n \n \n\n\n\n\n\n\n\n ", + "description": "\n \n

Injection Barrel made to precious plastic design with a 3/4\" BSP thread on the end.

- Barrel diameter 34mm

\n

- Made from Steel

\n

-  Works perfectly with this heating system: https://bazar.preciousplastic....

\n

- Free shipping in Europe 

\n\n \n ", + "features": "\n \n \n
\n
Condition:
\n\n \n
New
\n
\n \n
\n
Country of Origin:
\n\n \n
Netherlands
\n
\n \n
\n
Made according to the Precious Plastic drawings? :
\n\n \n
Yes
\n
\n \n
\n
Weight (KG):
\n\n \n
1.5KG
\n
\n \n \n \n ", + "options": "\n\n\n\n\n\n \n

Injection Barrel

\n \n \n \n
\n \n\n\n
\n \n\n \n\n \n\n\n \n \n \n\n\n
\n
\n \n \n \n\n \n \n
\n \n \n \n \n €90.00\n \n\n \n\n
\n \n \n \n \n \n \n \n
\n
\n \n \n\n\n\n
\n
\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n
\n \n
\n \n
\n
\n
\n \n \n Vaughn\n \n\n
\n\n \n \n\n
\n \n
\n\n
\n
\n \n \n \n
\n \n
\n\n
\n \n
\n \n
\n \n \n In stock\n \n
\n
\n\n\n\n\n \n
\n \n \n \n
\n
\n +\n \n −\n
\n
\n
\n \n\n\n\n \n \n\n\n
\n \n \n\n \n \n\n
\n \n
\n\n\n\n\n\n\n\n \n \n \n\n\n \n\n\n\n\n\n\n \n \n \n Contact Seller\n\n\n\n\n\n
\n\n\n \n\n \n
\n \n ", + "authorImage": "https://bazar.preciousplastic.com/images/thumbnails/180/80/logos/2/PP_Veldhoven.png", + "images": [ + "https://bazar.preciousplastic.com/images/thumbnails/700/490/detailed/17/Extruder_and_barrel.jpg", + "https://bazar.preciousplastic.com/images/thumbnails/700/604/detailed/17/Fixture.PNG", + "https://bazar.preciousplastic.com/images/thumbnails/700/482/detailed/17/3D_model.PNG" + ], + "content": null, + "url": "https://bazar.preciousplastic.com/machines/injection/injection-parts/injection-barrel/", + "prefix": "machines/injection/parts" +} \ No newline at end of file diff --git a/packages/kbot/tests/test-data/files/glob/data2.json b/packages/kbot/tests/test-data/files/glob/data2.json new file mode 100644 index 00000000..5f8041dc --- /dev/null +++ b/packages/kbot/tests/test-data/files/glob/data2.json @@ -0,0 +1,21 @@ +{ + "title": "HIGH-QUALITY INJECTION BY CPTEK LAB", + "price": "3,578.00", + "storeName": "CPTek", + "storeLink": "https://bazar.preciousplastic.com/conceptos-plasticos/", + "mediaHTML": "\n\n \n \n\n \n \n \n \n
\n \n\n\n \n\n \n\n \n\n \n\n
\n\n \n \n\n\n\n\n\n\n\n ", + "description": "\n \n

Our semi-automatic injection molding machine is ideal for manufacturing lightweight parts with precision and efficiency, perfect for entrepreneurs, small workshops and educational projects. Its compact vertical design offers innovative recycling solutions in small spaces.

\n\n \n ", + "features": "\n \n \n
\n
Condition:
\n\n \n
New
\n
\n \n
\n
Country of Origin:
\n\n \n
COLOMBIA
\n
\n \n
\n
Dimensions of the listing:
\n\n \n
200 X 45 X 62 CM
\n
\n \n
\n
Frequency (Hz):
\n\n \n
60 Hz
\n
\n \n
\n
Made according to the Precious Plastic drawings? :
\n\n \n
No
\n
\n \n
\n
Plug type:
\n\n \n
  • Type A: USA, Canada, Mexico and Japan
\n
\n \n
\n
Voltage:
\n\n \n
110V
\n
\n \n
\n
Weight (KG):
\n\n \n
70KG
\n
\n \n \n \n ", + "options": "\n\n\n\n\n\n \n

HIGH-QUALITY INJECTION BY CPTEK LAB

\n \n \n \n
\n \n\n\n
\n \n\n \n\n \n\n\n \n \n \n\n\n
\n
\n \n \n \n\n \n \n
\n \n \n \n \n €3,578.00\n \n\n \n\n
\n \n \n \n \n \n \n \n
\n
\n \n \n\n\n\n
\n
\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n
\n \n
\n \n
\n
\n
\n \n \n CPTek\n \n\n
\n\n \n \n\n
\n \n
\n\n
\n
\n \n \n \n
\n \n
\n\n
\n \n
\n \n
\n \n \n In stock\n \n
\n
\n\n\n\n\n \n
\n \n \n \n
\n
\n +\n \n −\n
\n
\n
\n \n\n\n\n \n \n\n\n
\n \n \n\n \n \n\n
\n \n
\n\n\n\n\n\n\n\n \n \n \n\n\n \n\n\n\n\n\n\n \n \n \n Contact Seller\n\n\n\n\n\n
\n\n\n \n\n \n
\n \n ", + "authorImage": "https://bazar.preciousplastic.com/images/thumbnails/180/80/logos/22/cart_msc1-3l_cbx4-ai.png", + "images": [ + "https://bazar.preciousplastic.com/images/thumbnails/700/982/detailed/23/_1_.jpg", + "https://bazar.preciousplastic.com/images/thumbnails/700/1050/detailed/23/_5_.png", + "https://bazar.preciousplastic.com/images/thumbnails/700/930/detailed/23/_4_.png", + "https://bazar.preciousplastic.com/images/thumbnails/700/2013/detailed/23/_2_.jpg", + "https://bazar.preciousplastic.com/images/thumbnails/700/829/detailed/23/_3_.jpg" + ], + "content": null, + "url": "https://bazar.preciousplastic.com/machines/injection/injection-kits/high-quality-injection-by-cptek-lab/", + "prefix": "machines/injection/kits" +} \ No newline at end of file diff --git a/packages/kbot/tests/test-data/files/lazyfox.jpg b/packages/kbot/tests/test-data/files/lazyfox.jpg new file mode 100644 index 00000000..3c5c9971 Binary files /dev/null and b/packages/kbot/tests/test-data/files/lazyfox.jpg differ diff --git a/packages/kbot/tests/unit/basic.test.ts b/packages/kbot/tests/unit/basic.test.ts index 81d607b7..f7841590 100644 --- a/packages/kbot/tests/unit/basic.test.ts +++ b/packages/kbot/tests/unit/basic.test.ts @@ -26,7 +26,7 @@ describe('Basic Operations', () => { it.each(models)('should add two numbers with model %s', async (modelName) => { const result = await runTest( 'add 5 and 3. Return only the number, no explanation.', - '8', + '8', 'addition', modelName, TEST_LOG_PATH diff --git a/packages/kbot/tests/unit/commons.ts b/packages/kbot/tests/unit/commons.ts index 51dab179..39c2a0cc 100644 --- a/packages/kbot/tests/unit/commons.ts +++ b/packages/kbot/tests/unit/commons.ts @@ -11,7 +11,8 @@ export enum ModelCategory { LANGUAGE = 'language', TOOL = 'tool', ALL = 'all', - CODING = 'coding' + CODING = 'coding', + FILES = 'file' } export const getFastModels = (): string[] => { @@ -29,6 +30,14 @@ export const getCodingModels = (): string[] => { ] } +export const getFileModels = (): string[] => { + return [ + E_OPENROUTER_MODEL.MODEL_OPENAI_GPT_4O_MINI, + E_OPENROUTER_MODEL.MODEL_OPENROUTER_QUASAR_ALPHA, + E_OPENROUTER_MODEL.MODEL_GOOGLE_GEMINI_2_0_FLASH_EXP_FREE + ] +} + export const getLanguageModels = (): string[] => { return [ E_OPENROUTER_MODEL.MODEL_ANTHROPIC_CLAUDE_3_5_SONNET, @@ -54,6 +63,8 @@ export const getDefaultModels = (category: ModelCategory = ModelCategory.FAST): return getToolModels() case ModelCategory.CODING: return getCodingModels() + case ModelCategory.FILES: + return getFileModels() case ModelCategory.ALL: default: return [ diff --git a/packages/kbot/tests/unit/files.test.ts b/packages/kbot/tests/unit/files.test.ts new file mode 100644 index 00000000..53cbb428 --- /dev/null +++ b/packages/kbot/tests/unit/files.test.ts @@ -0,0 +1,132 @@ +import { describe, it, expect } from 'vitest' +import * as path from 'node:path' +import { sync as exists } from "@polymech/fs/exists" +import { sync as read } from "@polymech/fs/read" + +import { + getDefaultModels, + TEST_BASE_PATH, + TEST_LOGS_PATH, + TEST_PREFERENCES_PATH, + TEST_TIMEOUT, + TestResult, + runTest, + generateTestReport, + getReportPaths, + ModelCategory +} from './commons' +import { IKBotOptions } from '@polymech/commons' + +// Optionally override models for this specific test file +const models = getDefaultModels(ModelCategory.FILES) + +describe('File Operations', () => { + let testResults: TestResult[] = [] + const TEST_LOG_PATH = getReportPaths('files', 'json') + const TEST_REPORT_PATH = getReportPaths('files', 'md') + + it.each(models)('should process single file with model %s', async (modelName) => { + const result = await runTest( + 'What is the name of the algorithm implemented in these files? Return only the name.', + 'bubble sort', + 'file-inclusion', + modelName, + TEST_LOG_PATH, + 'completion', + { include: ['tests/test-data/files/bubblesort.js'] } + ) + testResults.push(result) + expect(result.result[0]?.trim()?.toLowerCase()).toContain('bubble') + }, { timeout: TEST_TIMEOUT }) + + + it.each(models)('should process multiple files with model %s', async (modelName) => { + console.log('Starting test for model:', modelName) + console.log('About to run test with debugger') + + const result = await runTest( + 'List all algorithms implemented in these files, as JSON array.', + '["bubble sort","factorial"]', + 'file-inclusion', + modelName, + TEST_LOG_PATH, + 'completion', + { + include: ['./tests/test-data/files/*.js'], + logLevel: 2, + format: { + type: "object", + properties: { + algorithms: { + type: "array", + items: { + type: "string" + }, + minItems: 2, + maxItems: 2 + } + }, + required: ["algorithms"] + } + } as IKBotOptions + ) + testResults.push(result) + const parsedResult = JSON.parse(result.result[0]?.trim()) + expect(parsedResult.includes('bubble')) + expect(parsedResult.includes('factorial')) + expect(parsedResult).toHaveLength(2) + }, { timeout: TEST_TIMEOUT }) + + it.each(models)('should process files in glob subdirectory with model %s', async (modelName) => { + const result = await runTest( + 'What is the title of the product in data.json? Return only the title.', + 'Injection Barrel', + 'file-inclusion', + modelName, + TEST_LOG_PATH, + 'completion', + { include: ['tests/test-data/files/glob/data.json'] } + ) + testResults.push(result) + expect(result.result[0]?.trim()).toBe('Injection Barrel') + }, { timeout: TEST_TIMEOUT }) + + it.each(models)('should identify animals in image files with model %s', async (modelName) => { + const result = await runTest( + 'What animals are shown in these images? Return as JSON array.', + '["cat","fox"]', + 'file-inclusion', + modelName, + TEST_LOG_PATH, + 'completion', + { + include: ['tests/test-data/files/lazyfox.jpg'], + logLevel: 2, + format: { + type: "object", + properties: { + animals: { + type: "array", + items: { + type: "string" + }, + minItems: 2, + maxItems: 2 + } + }, + required: ["animals"] + } + } as IKBotOptions + ) + testResults.push(result) + const parsedResult = JSON.parse(result.result[0]?.trim()) + expect(parsedResult.includes('cat')) + expect(parsedResult.includes('fox')) + expect(parsedResult.length==2) + }, { timeout: TEST_TIMEOUT }) + + it('should generate markdown report', () => { + generateTestReport(testResults, 'File Operations Test Results', TEST_REPORT_PATH) + expect(exists(TEST_REPORT_PATH) === 'file').toBe(true) + }) +}) \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/completion.json b/packages/kbot/tests/unit/logs/completion.json deleted file mode 100644 index 3ecd90c6..00000000 --- a/packages/kbot/tests/unit/logs/completion.json +++ /dev/null @@ -1,694 +0,0 @@ -[ - { - "level": "debug", - "message": { - "id": "gen-1743630981-Ui1Cks6yDC82puC81x2r", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743630981, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "Let's solve each of these equations step by step:\n\n1. **Equation 1: \\(2x + 5 = 13\\)**\n\n \\[\n 2x + 5 = 13\n \\]\n\n First, subtract 5 from both sides to isolate the term with \\(x\\):\n\n \\[\n 2x = 13 - 5\n \\]\n\n \\[\n 2x = 8\n \\]\n\n Next, divide both sides by 2 to solve for \\(x\\):\n\n \\[\n x = \\frac{8}{2}\n \\]\n\n \\[\n x = 4\n \\]\n\n2. **Equation 2: \\(3y - 7 = 20\\)**\n\n \\[\n 3y - 7 = 20\n \\]\n\n First, add 7 to both sides to isolate the term with \\(y\\):\n\n \\[\n 3y = 20 + 7\n \\]\n\n \\[\n 3y = 27\n \\]\n\n Next, divide both sides by 3 to solve for \\(y\\):\n\n \\[\n y = \\frac{27}{3}\n \\]\n\n \\[\n y = 9\n \\]\n\n3. **Equation 3: \\(4z + 8 = 32\\)**\n\n \\[\n 4z + 8 = 32\n \\]\n\n First, subtract 8 from both sides to isolate the term with \\(z\\):\n\n \\[\n 4z = 32 - 8\n \\]\n\n \\[\n 4z = 24\n \\]\n\n Next, divide both sides by 4 to solve for \\(z\\):\n\n \\[\n z = \\frac{24}{4}\n \\]\n\n \\[\n z = 6\n \\]\n\nThe solutions to the equations are indeed \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the results you provided.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 139, - "completion_tokens": 434, - "total_tokens": 573, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:56:24.861Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743630985-jop6l4mg8eqlwxxrtsU3", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743630985, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "To write the JSON data to the specified file and then read it back, you can perform the following steps in Python. The Python script uses local file I/O to write and read the JSON data:\n\n1. **Write the JSON data** to the file.\n2. **Read the JSON data** back from the file.\n\nHere is the Python code to achieve this:\n\n```python\nimport json\nimport os\n\n# JSON data\ndata = {\"test\": \"data\", \"timestamp\": \"2025-04-02t21:56:24.883z\"}\n\n# File path\nfile_path = r\"C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json\"\n\n# Ensure the directory exists\nos.makedirs(os.path.dirname(file_path), exist_ok=True)\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data, file, indent=4)\n\n# Read the JSON data back from the file\nwith open(file_path, 'r') as file:\n read_data = json.load(file)\n print(read_data)\n```\n\n### Explanation:\n\n- `json.dump()` is used to write the JSON data to a file.\n- `json.load()` is used to read the JSON data back from the file.\n- `os.makedirs()` ensures that the directory path exists before writing the file. The `exist_ok=True` parameter prevents raising an exception if the directory already exists.\n- The `indent=4` parameter in `json.dump()` makes the JSON output more readable by pretty-printing it with indentation.\n\nPlease ensure that the specified file path is correct and that your Python environment has the necessary permissions to write to this path.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_de57b65c90", - "usage": { - "prompt_tokens": 78, - "completion_tokens": 362, - "total_tokens": 440, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:56:29.189Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743630989-BpECy5n3TbfFuNSbqegq", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743630989, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "I'm unable to access or browse files on your computer or any external systems. However, I can guide you on how to list all the files in a specific directory using the command line or a script.\n\n### Using Command Prompt on Windows:\n\n1. Open Command Prompt by typing `cmd` in the Start menu and pressing Enter.\n2. Navigate to the directory by typing:\n ```\n cd C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\n ```\n3. To list all files, type:\n ```\n dir\n ```\n\n### Using Windows PowerShell:\n\n1. Open PowerShell by searching for it in the Start menu.\n2. Navigate to the directory by typing:\n ```powershell\n Set-Location -Path 'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n ```\n3. To list all files, use:\n ```powershell\n Get-ChildItem\n ```\n\n### Using a Python Script:\n\nYou can also write a simple Python script to list the files:\n\n```python\nimport os\n\ndirectory = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n\nfor filename in os.listdir(directory):\n print(filename)\n```\n\nChoose the method that best suits your needs. If you have any questions or need further assistance, feel free to ask!", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_726d488742", - "usage": { - "prompt_tokens": 49, - "completion_tokens": 319, - "total_tokens": 368, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:56:32.923Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631031-TEPvmBQ8xnWyvb04vIQ1", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631031, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "It looks like there's an issue specific to your request that involves accessing files on your local machine, which I can't do. However, you can manually provide me with the equations, and I will solve them for you. Here are solutions to the sample equations you provided:\n\n1. \\(2x + 5 = 13\\)\n\n To solve for \\(x\\), subtract 5 from both sides:\n \\[\n 2x = 13 - 5\n \\]\n \\[\n 2x = 8\n \\]\n Now, divide by 2:\n \\[\n x = \\frac{8}{2} = 4\n \\]\n\n2. \\(3y - 7 = 20\\)\n\n To solve for \\(y\\), add 7 to both sides:\n \\[\n 3y = 20 + 7\n \\]\n \\[\n 3y = 27\n \\]\n Now, divide by 3:\n \\[\n y = \\frac{27}{3} = 9\n \\]\n\n3. \\(4z + 8 = 32\\)\n\n To solve for \\(z\\), subtract 8 from both sides:\n \\[\n 4z = 32 - 8\n \\]\n \\[\n 4z = 24\n \\]\n Now, divide by 4:\n \\[\n z = \\frac{24}{4} = 6\n \\]\n\nIf you have other equations, please provide them here, and I'd be happy to solve those as well.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 139, - "completion_tokens": 336, - "total_tokens": 475, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:57:14.989Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631035-irYWrkVOuFctO9yuFPSp", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631035, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "To write JSON data to a file and read it back in a Windows environment using Python, you can follow these steps. Below is a Python script that performs this task:\n\n```python\nimport json\nimport os\n\n# Define the file path\nfile_path = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json'\n\n# JSON data to write\ndata_to_write = {\n \"test\": \"data\",\n \"timestamp\": \"2025-04-02t21:57:15.012z\"\n}\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data_to_write, file, indent=4)\n\n# Read JSON data back from the file\nwith open(file_path, 'r') as file:\n data_read = json.load(file)\n\n# Print the data read from the file\nprint(data_read)\n```\n\n### Explanation:\n\n1. **Import Necessary Modules**: We import the `json` module for handling JSON data and `os` module if needed for path operations.\n\n2. **Define the File Path**: The `file_path` variable holds the path where we want to save and read the JSON file. Make sure that all the directories in the path exist.\n\n3. **JSON Data Definition**: The `data_to_write` dictionary contains the JSON data you want to store.\n\n4. **Write JSON Data**: Using `json.dump()`, we write the JSON data to a file. The `indent=4` argument ensures the file is formatted nicely.\n\n5. **Read JSON Data**: We open the file in read mode and use `json.load()` to read the data back into a Python dictionary.\n\n6. **Print the Data**: Finally, we print the data to confirm that it was read correctly.\n\nMake sure you have the necessary file write permissions and the directory structure exists. If any directories are missing, you'll need to create them before running the script.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 78, - "completion_tokens": 421, - "total_tokens": 499, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:57:20.822Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631041-sxD3N0lo3vBaYvwpc4DN", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631041, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "I'm unable to browse or list files on your local machine or any external systems. However, you can view the files in the specified directory by following these steps:\n\n1. Open File Explorer on your Windows machine.\n2. Navigate to `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.\n3. You will see the list of files present in that directory.\n\nIf you need assistance with any specific file or task related to these files, feel free to ask!", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_726d488742", - "usage": { - "prompt_tokens": 49, - "completion_tokens": 112, - "total_tokens": 161, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:57:22.998Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631057-dXPQgGzrR5LGaSS5OBTT", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631057, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_Nz1V2egRr4OCdgNP9hSuMqkI", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 773, - "completion_tokens": 49, - "total_tokens": 822, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:57:39.218Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631106-ozgqEgJqsntkf58bE1ON", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631106, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_ZcofgyYvRZycqe5i9v00OW1a", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 773, - "completion_tokens": 49, - "total_tokens": 822, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:27.885Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631108-Q7OlFgo1GXwsrz9ZjSeI", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631108, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_bR4C5jbZCSLJ2HXCF68kcH7k", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 868, - "completion_tokens": 49, - "total_tokens": 917, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:29.963Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631110-Uzpdnyxx46oCLkIAYh6a", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631110, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_bRWTWRqxjiVUFLZtAUo0ywn6", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 963, - "completion_tokens": 49, - "total_tokens": 1012, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:32.838Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631113-7ewJ4tlprslgS4ZsTOi8", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631113, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "It seems there's an issue reading the file. Let's solve the sample equations provided:\n\n1. Solve \\(2x + 5 = 13\\):\n \\[\n 2x + 5 = 13 \\\\\n 2x = 13 - 5 \\\\\n 2x = 8 \\\\\n x = \\frac{8}{2} \\\\\n x = 4\n \\]\n\n2. Solve \\(3y - 7 = 20\\):\n \\[\n 3y - 7 = 20 \\\\\n 3y = 20 + 7 \\\\\n 3y = 27 \\\\\n y = \\frac{27}{3} \\\\\n y = 9\n \\]\n\n3. Solve \\(4z + 8 = 32\\):\n \\[\n 4z + 8 = 32 \\\\\n 4z = 32 - 8 \\\\\n 4z = 24 \\\\\n z = \\frac{24}{4} \\\\\n z = 6\n \\]\n\nThe solutions for the equations are \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the test preferences provided.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 1058, - "completion_tokens": 266, - "total_tokens": 1324, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:37.074Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631117-mzDobMKRdGgUwQk516dc", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631117, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_UBPjOY0FqjXD0jLHriQuPuMw", - "type": "function", - "function": { - "name": "write_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\",\"content\":\"eyJ0ZXN0IjoiZGF0YSIsInRpbWVzdGFtcCI6IjIwMjUtMDQtMDJUMjE6NTg6MzcuMDk1WiJ9\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 712, - "completion_tokens": 97, - "total_tokens": 809, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:39.839Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631120-LAcQkBwjTPY4Ho8kcFAF", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631120, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_pIwhdVPXqnTlfyQz7hZoALrw", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 903, - "completion_tokens": 49, - "total_tokens": 952, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:41.861Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631122-FWA3dqCLKmt8j8VZDLk1", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631122, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "The content of the file `test-data.json` has been successfully written and read back:\n\n```json\n{\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"}\n```", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_6dd05565ef", - "usage": { - "prompt_tokens": 998, - "completion_tokens": 47, - "total_tokens": 1045, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:43.202Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631123-uocGbvEEvH6vpHRoHByM", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631123, - "choices": [ - { - "logprobs": null, - "finish_reason": "tool_calls", - "native_finish_reason": "tool_calls", - "index": 0, - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_mmLKD2FDdNm1znzU1nVTK1ga", - "type": "function", - "function": { - "name": "list_files", - "arguments": "{\"directory\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\"}", - "parsed_arguments": null - } - } - ], - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 683, - "completion_tokens": 43, - "total_tokens": 726, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:45.106Z", - "service": "collector:onChatCompletion" - }, - { - "level": "debug", - "message": { - "id": "gen-1743631125-OGtG0QQwt7Azex9vNPBl", - "provider": "OpenAI", - "model": "openai/gpt-4o", - "object": "chat.completion", - "created": 1743631125, - "choices": [ - { - "logprobs": null, - "finish_reason": "stop", - "native_finish_reason": "stop", - "index": 0, - "message": { - "role": "assistant", - "content": "There are no files in the directory: `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.", - "refusal": null, - "parsed": null - } - } - ], - "system_fingerprint": "fp_898ac29719", - "usage": { - "prompt_tokens": 766, - "completion_tokens": 41, - "total_tokens": 807, - "prompt_tokens_details": { - "cached_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0 - } - } - }, - "timestamp": "2025-04-02T21:58:46.313Z", - "service": "collector:onChatCompletion" - } -] \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/content.json b/packages/kbot/tests/unit/logs/content.json deleted file mode 100644 index 808e41ce..00000000 --- a/packages/kbot/tests/unit/logs/content.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - { - "level": "debug", - "message": "Let's solve each of these equations step by step:\n\n1. **Equation 1: \\(2x + 5 = 13\\)**\n\n \\[\n 2x + 5 = 13\n \\]\n\n First, subtract 5 from both sides to isolate the term with \\(x\\):\n\n \\[\n 2x = 13 - 5\n \\]\n\n \\[\n 2x = 8\n \\]\n\n Next, divide both sides by 2 to solve for \\(x\\):\n\n \\[\n x = \\frac{8}{2}\n \\]\n\n \\[\n x = 4\n \\]\n\n2. **Equation 2: \\(3y - 7 = 20\\)**\n\n \\[\n 3y - 7 = 20\n \\]\n\n First, add 7 to both sides to isolate the term with \\(y\\):\n\n \\[\n 3y = 20 + 7\n \\]\n\n \\[\n 3y = 27\n \\]\n\n Next, divide both sides by 3 to solve for \\(y\\):\n\n \\[\n y = \\frac{27}{3}\n \\]\n\n \\[\n y = 9\n \\]\n\n3. **Equation 3: \\(4z + 8 = 32\\)**\n\n \\[\n 4z + 8 = 32\n \\]\n\n First, subtract 8 from both sides to isolate the term with \\(z\\):\n\n \\[\n 4z = 32 - 8\n \\]\n\n \\[\n 4z = 24\n \\]\n\n Next, divide both sides by 4 to solve for \\(z\\):\n\n \\[\n z = \\frac{24}{4}\n \\]\n\n \\[\n z = 6\n \\]\n\nThe solutions to the equations are indeed \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the results you provided.", - "timestamp": "2025-04-02T21:56:24.863Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "To write the JSON data to the specified file and then read it back, you can perform the following steps in Python. The Python script uses local file I/O to write and read the JSON data:\n\n1. **Write the JSON data** to the file.\n2. **Read the JSON data** back from the file.\n\nHere is the Python code to achieve this:\n\n```python\nimport json\nimport os\n\n# JSON data\ndata = {\"test\": \"data\", \"timestamp\": \"2025-04-02t21:56:24.883z\"}\n\n# File path\nfile_path = r\"C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json\"\n\n# Ensure the directory exists\nos.makedirs(os.path.dirname(file_path), exist_ok=True)\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data, file, indent=4)\n\n# Read the JSON data back from the file\nwith open(file_path, 'r') as file:\n read_data = json.load(file)\n print(read_data)\n```\n\n### Explanation:\n\n- `json.dump()` is used to write the JSON data to a file.\n- `json.load()` is used to read the JSON data back from the file.\n- `os.makedirs()` ensures that the directory path exists before writing the file. The `exist_ok=True` parameter prevents raising an exception if the directory already exists.\n- The `indent=4` parameter in `json.dump()` makes the JSON output more readable by pretty-printing it with indentation.\n\nPlease ensure that the specified file path is correct and that your Python environment has the necessary permissions to write to this path.", - "timestamp": "2025-04-02T21:56:29.191Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "I'm unable to access or browse files on your computer or any external systems. However, I can guide you on how to list all the files in a specific directory using the command line or a script.\n\n### Using Command Prompt on Windows:\n\n1. Open Command Prompt by typing `cmd` in the Start menu and pressing Enter.\n2. Navigate to the directory by typing:\n ```\n cd C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\n ```\n3. To list all files, type:\n ```\n dir\n ```\n\n### Using Windows PowerShell:\n\n1. Open PowerShell by searching for it in the Start menu.\n2. Navigate to the directory by typing:\n ```powershell\n Set-Location -Path 'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n ```\n3. To list all files, use:\n ```powershell\n Get-ChildItem\n ```\n\n### Using a Python Script:\n\nYou can also write a simple Python script to list the files:\n\n```python\nimport os\n\ndirectory = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n\nfor filename in os.listdir(directory):\n print(filename)\n```\n\nChoose the method that best suits your needs. If you have any questions or need further assistance, feel free to ask!", - "timestamp": "2025-04-02T21:56:32.925Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "It looks like there's an issue specific to your request that involves accessing files on your local machine, which I can't do. However, you can manually provide me with the equations, and I will solve them for you. Here are solutions to the sample equations you provided:\n\n1. \\(2x + 5 = 13\\)\n\n To solve for \\(x\\), subtract 5 from both sides:\n \\[\n 2x = 13 - 5\n \\]\n \\[\n 2x = 8\n \\]\n Now, divide by 2:\n \\[\n x = \\frac{8}{2} = 4\n \\]\n\n2. \\(3y - 7 = 20\\)\n\n To solve for \\(y\\), add 7 to both sides:\n \\[\n 3y = 20 + 7\n \\]\n \\[\n 3y = 27\n \\]\n Now, divide by 3:\n \\[\n y = \\frac{27}{3} = 9\n \\]\n\n3. \\(4z + 8 = 32\\)\n\n To solve for \\(z\\), subtract 8 from both sides:\n \\[\n 4z = 32 - 8\n \\]\n \\[\n 4z = 24\n \\]\n Now, divide by 4:\n \\[\n z = \\frac{24}{4} = 6\n \\]\n\nIf you have other equations, please provide them here, and I'd be happy to solve those as well.", - "timestamp": "2025-04-02T21:57:14.991Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "To write JSON data to a file and read it back in a Windows environment using Python, you can follow these steps. Below is a Python script that performs this task:\n\n```python\nimport json\nimport os\n\n# Define the file path\nfile_path = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json'\n\n# JSON data to write\ndata_to_write = {\n \"test\": \"data\",\n \"timestamp\": \"2025-04-02t21:57:15.012z\"\n}\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data_to_write, file, indent=4)\n\n# Read JSON data back from the file\nwith open(file_path, 'r') as file:\n data_read = json.load(file)\n\n# Print the data read from the file\nprint(data_read)\n```\n\n### Explanation:\n\n1. **Import Necessary Modules**: We import the `json` module for handling JSON data and `os` module if needed for path operations.\n\n2. **Define the File Path**: The `file_path` variable holds the path where we want to save and read the JSON file. Make sure that all the directories in the path exist.\n\n3. **JSON Data Definition**: The `data_to_write` dictionary contains the JSON data you want to store.\n\n4. **Write JSON Data**: Using `json.dump()`, we write the JSON data to a file. The `indent=4` argument ensures the file is formatted nicely.\n\n5. **Read JSON Data**: We open the file in read mode and use `json.load()` to read the data back into a Python dictionary.\n\n6. **Print the Data**: Finally, we print the data to confirm that it was read correctly.\n\nMake sure you have the necessary file write permissions and the directory structure exists. If any directories are missing, you'll need to create them before running the script.", - "timestamp": "2025-04-02T21:57:20.824Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "I'm unable to browse or list files on your local machine or any external systems. However, you can view the files in the specified directory by following these steps:\n\n1. Open File Explorer on your Windows machine.\n2. Navigate to `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.\n3. You will see the list of files present in that directory.\n\nIf you need assistance with any specific file or task related to these files, feel free to ask!", - "timestamp": "2025-04-02T21:57:23.000Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "It seems there's an issue reading the file. Let's solve the sample equations provided:\n\n1. Solve \\(2x + 5 = 13\\):\n \\[\n 2x + 5 = 13 \\\\\n 2x = 13 - 5 \\\\\n 2x = 8 \\\\\n x = \\frac{8}{2} \\\\\n x = 4\n \\]\n\n2. Solve \\(3y - 7 = 20\\):\n \\[\n 3y - 7 = 20 \\\\\n 3y = 20 + 7 \\\\\n 3y = 27 \\\\\n y = \\frac{27}{3} \\\\\n y = 9\n \\]\n\n3. Solve \\(4z + 8 = 32\\):\n \\[\n 4z + 8 = 32 \\\\\n 4z = 32 - 8 \\\\\n 4z = 24 \\\\\n z = \\frac{24}{4} \\\\\n z = 6\n \\]\n\nThe solutions for the equations are \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the test preferences provided.", - "timestamp": "2025-04-02T21:58:37.076Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "The content of the file `test-data.json` has been successfully written and read back:\n\n```json\n{\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"}\n```", - "timestamp": "2025-04-02T21:58:43.204Z", - "service": "collector:onContent" - }, - { - "level": "debug", - "message": "There are no files in the directory: `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.", - "timestamp": "2025-04-02T21:58:46.315Z", - "service": "collector:onContent" - } -] \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/openai-message.json b/packages/kbot/tests/unit/logs/openai-message.json deleted file mode 100644 index 93dd31e8..00000000 --- a/packages/kbot/tests/unit/logs/openai-message.json +++ /dev/null @@ -1,401 +0,0 @@ -[ - { - "level": "info", - "message": { - "role": "assistant", - "content": "Let's solve each of these equations step by step:\n\n1. **Equation 1: \\(2x + 5 = 13\\)**\n\n \\[\n 2x + 5 = 13\n \\]\n\n First, subtract 5 from both sides to isolate the term with \\(x\\):\n\n \\[\n 2x = 13 - 5\n \\]\n\n \\[\n 2x = 8\n \\]\n\n Next, divide both sides by 2 to solve for \\(x\\):\n\n \\[\n x = \\frac{8}{2}\n \\]\n\n \\[\n x = 4\n \\]\n\n2. **Equation 2: \\(3y - 7 = 20\\)**\n\n \\[\n 3y - 7 = 20\n \\]\n\n First, add 7 to both sides to isolate the term with \\(y\\):\n\n \\[\n 3y = 20 + 7\n \\]\n\n \\[\n 3y = 27\n \\]\n\n Next, divide both sides by 3 to solve for \\(y\\):\n\n \\[\n y = \\frac{27}{3}\n \\]\n\n \\[\n y = 9\n \\]\n\n3. **Equation 3: \\(4z + 8 = 32\\)**\n\n \\[\n 4z + 8 = 32\n \\]\n\n First, subtract 8 from both sides to isolate the term with \\(z\\):\n\n \\[\n 4z = 32 - 8\n \\]\n\n \\[\n 4z = 24\n \\]\n\n Next, divide both sides by 4 to solve for \\(z\\):\n\n \\[\n z = \\frac{24}{4}\n \\]\n\n \\[\n z = 6\n \\]\n\nThe solutions to the equations are indeed \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the results you provided.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:56:24.862Z", - "sessionId": "1743630981203", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:56:24.862Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "To write the JSON data to the specified file and then read it back, you can perform the following steps in Python. The Python script uses local file I/O to write and read the JSON data:\n\n1. **Write the JSON data** to the file.\n2. **Read the JSON data** back from the file.\n\nHere is the Python code to achieve this:\n\n```python\nimport json\nimport os\n\n# JSON data\ndata = {\"test\": \"data\", \"timestamp\": \"2025-04-02t21:56:24.883z\"}\n\n# File path\nfile_path = r\"C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json\"\n\n# Ensure the directory exists\nos.makedirs(os.path.dirname(file_path), exist_ok=True)\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data, file, indent=4)\n\n# Read the JSON data back from the file\nwith open(file_path, 'r') as file:\n read_data = json.load(file)\n print(read_data)\n```\n\n### Explanation:\n\n- `json.dump()` is used to write the JSON data to a file.\n- `json.load()` is used to read the JSON data back from the file.\n- `os.makedirs()` ensures that the directory path exists before writing the file. The `exist_ok=True` parameter prevents raising an exception if the directory already exists.\n- The `indent=4` parameter in `json.dump()` makes the JSON output more readable by pretty-printing it with indentation.\n\nPlease ensure that the specified file path is correct and that your Python environment has the necessary permissions to write to this path.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:56:29.189Z", - "sessionId": "1743630984996", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:56:24.883z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:56:29.190Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "I'm unable to access or browse files on your computer or any external systems. However, I can guide you on how to list all the files in a specific directory using the command line or a script.\n\n### Using Command Prompt on Windows:\n\n1. Open Command Prompt by typing `cmd` in the Start menu and pressing Enter.\n2. Navigate to the directory by typing:\n ```\n cd C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\n ```\n3. To list all files, type:\n ```\n dir\n ```\n\n### Using Windows PowerShell:\n\n1. Open PowerShell by searching for it in the Start menu.\n2. Navigate to the directory by typing:\n ```powershell\n Set-Location -Path 'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n ```\n3. To list all files, use:\n ```powershell\n Get-ChildItem\n ```\n\n### Using a Python Script:\n\nYou can also write a simple Python script to list the files:\n\n```python\nimport os\n\ndirectory = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data'\n\nfor filename in os.listdir(directory):\n print(filename)\n```\n\nChoose the method that best suits your needs. If you have any questions or need further assistance, feel free to ask!", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:56:32.923Z", - "sessionId": "1743630989316", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:56:32.924Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "It looks like there's an issue specific to your request that involves accessing files on your local machine, which I can't do. However, you can manually provide me with the equations, and I will solve them for you. Here are solutions to the sample equations you provided:\n\n1. \\(2x + 5 = 13\\)\n\n To solve for \\(x\\), subtract 5 from both sides:\n \\[\n 2x = 13 - 5\n \\]\n \\[\n 2x = 8\n \\]\n Now, divide by 2:\n \\[\n x = \\frac{8}{2} = 4\n \\]\n\n2. \\(3y - 7 = 20\\)\n\n To solve for \\(y\\), add 7 to both sides:\n \\[\n 3y = 20 + 7\n \\]\n \\[\n 3y = 27\n \\]\n Now, divide by 3:\n \\[\n y = \\frac{27}{3} = 9\n \\]\n\n3. \\(4z + 8 = 32\\)\n\n To solve for \\(z\\), subtract 8 from both sides:\n \\[\n 4z = 32 - 8\n \\]\n \\[\n 4z = 24\n \\]\n Now, divide by 4:\n \\[\n z = \\frac{24}{4} = 6\n \\]\n\nIf you have other equations, please provide them here, and I'd be happy to solve those as well.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:57:14.990Z", - "sessionId": "1743631031131", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:57:14.990Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "To write JSON data to a file and read it back in a Windows environment using Python, you can follow these steps. Below is a Python script that performs this task:\n\n```python\nimport json\nimport os\n\n# Define the file path\nfile_path = r'C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json'\n\n# JSON data to write\ndata_to_write = {\n \"test\": \"data\",\n \"timestamp\": \"2025-04-02t21:57:15.012z\"\n}\n\n# Write JSON data to the file\nwith open(file_path, 'w') as file:\n json.dump(data_to_write, file, indent=4)\n\n# Read JSON data back from the file\nwith open(file_path, 'r') as file:\n data_read = json.load(file)\n\n# Print the data read from the file\nprint(data_read)\n```\n\n### Explanation:\n\n1. **Import Necessary Modules**: We import the `json` module for handling JSON data and `os` module if needed for path operations.\n\n2. **Define the File Path**: The `file_path` variable holds the path where we want to save and read the JSON file. Make sure that all the directories in the path exist.\n\n3. **JSON Data Definition**: The `data_to_write` dictionary contains the JSON data you want to store.\n\n4. **Write JSON Data**: Using `json.dump()`, we write the JSON data to a file. The `indent=4` argument ensures the file is formatted nicely.\n\n5. **Read JSON Data**: We open the file in read mode and use `json.load()` to read the data back into a Python dictionary.\n\n6. **Print the Data**: Finally, we print the data to confirm that it was read correctly.\n\nMake sure you have the necessary file write permissions and the directory structure exists. If any directories are missing, you'll need to create them before running the script.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:57:20.822Z", - "sessionId": "1743631035132", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:57:15.012z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:57:20.823Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "I'm unable to browse or list files on your local machine or any external systems. However, you can view the files in the specified directory by following these steps:\n\n1. Open File Explorer on your Windows machine.\n2. Navigate to `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.\n3. You will see the list of files present in that directory.\n\nIf you need assistance with any specific file or task related to these files, feel free to ask!", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:57:22.999Z", - "sessionId": "1743631040948", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:57:22.999Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_Nz1V2egRr4OCdgNP9hSuMqkI", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:57:39.219Z", - "sessionId": "1743631056851", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:57:39.220Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_Nz1V2egRr4OCdgNP9hSuMqkI", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "timestamp": "2025-04-02T21:57:39.226Z", - "sessionId": "1743631056851", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:57:39.227Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_ZcofgyYvRZycqe5i9v00OW1a", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:27.886Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:27.887Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_ZcofgyYvRZycqe5i9v00OW1a", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "timestamp": "2025-04-02T21:58:27.891Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:27.891Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_bR4C5jbZCSLJ2HXCF68kcH7k", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:29.964Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:29.965Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_bR4C5jbZCSLJ2HXCF68kcH7k", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "timestamp": "2025-04-02T21:58:29.967Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:29.967Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_bRWTWRqxjiVUFLZtAUo0ywn6", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:32.839Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:32.839Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_bRWTWRqxjiVUFLZtAUo0ywn6", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\tools.test.md\"}}", - "timestamp": "2025-04-02T21:58:32.841Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:32.841Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "It seems there's an issue reading the file. Let's solve the sample equations provided:\n\n1. Solve \\(2x + 5 = 13\\):\n \\[\n 2x + 5 = 13 \\\\\n 2x = 13 - 5 \\\\\n 2x = 8 \\\\\n x = \\frac{8}{2} \\\\\n x = 4\n \\]\n\n2. Solve \\(3y - 7 = 20\\):\n \\[\n 3y - 7 = 20 \\\\\n 3y = 20 + 7 \\\\\n 3y = 27 \\\\\n y = \\frac{27}{3} \\\\\n y = 9\n \\]\n\n3. Solve \\(4z + 8 = 32\\):\n \\[\n 4z + 8 = 32 \\\\\n 4z = 32 - 8 \\\\\n 4z = 24 \\\\\n z = \\frac{24}{4} \\\\\n z = 6\n \\]\n\nThe solutions for the equations are \\(x = 4\\), \\(y = 9\\), and \\(z = 6\\), which match the test preferences provided.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:58:37.075Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:37.075Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_UBPjOY0FqjXD0jLHriQuPuMw", - "type": "function", - "function": { - "name": "write_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\",\"content\":\"eyJ0ZXN0IjoiZGF0YSIsInRpbWVzdGFtcCI6IjIwMjUtMDQtMDJUMjE6NTg6MzcuMDk1WiJ9\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:39.840Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:39.841Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_UBPjOY0FqjXD0jLHriQuPuMw", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\",\"content\":\"eyJ0ZXN0IjoiZGF0YSIsInRpbWVzdGFtcCI6IjIwMjUtMDQtMDJUMjE6NTg6MzcuMDk1WiJ9\"}}", - "timestamp": "2025-04-02T21:58:39.847Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:39.847Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_pIwhdVPXqnTlfyQz7hZoALrw", - "type": "function", - "function": { - "name": "read_file", - "arguments": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\"}}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:41.862Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:41.862Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_pIwhdVPXqnTlfyQz7hZoALrw", - "content": "{\"file\":{\"path\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\\\\test-data.json\"}}", - "timestamp": "2025-04-02T21:58:41.864Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:41.865Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "The content of the file `test-data.json` has been successfully written and read back:\n\n```json\n{\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"}\n```", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:58:43.203Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:43.203Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "", - "refusal": null, - "tool_calls": [ - { - "index": 0, - "id": "call_mmLKD2FDdNm1znzU1nVTK1ga", - "type": "function", - "function": { - "name": "list_files", - "arguments": "{\"directory\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\"}", - "parsed_arguments": null - } - } - ], - "parsed": null, - "timestamp": "2025-04-02T21:58:45.106Z", - "sessionId": "1743631123330", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:58:45.107Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "tool", - "tool_call_id": "call_mmLKD2FDdNm1znzU1nVTK1ga", - "content": "{\"directory\":\"C:\\\\Users\\\\zx\\\\Desktop\\\\polymech\\\\polymech-mono\\\\packages\\\\kbot\\\\tests\\\\unit\\\\test-data\"}", - "timestamp": "2025-04-02T21:58:45.109Z", - "sessionId": "1743631123330", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:58:45.109Z", - "service": "collector:onMessage" - }, - { - "level": "info", - "message": { - "role": "assistant", - "content": "There are no files in the directory: `C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data`.", - "refusal": null, - "parsed": null, - "timestamp": "2025-04-02T21:58:46.313Z", - "sessionId": "1743631123330", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:58:46.314Z", - "service": "collector:onMessage" - } -] \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/params.json b/packages/kbot/tests/unit/logs/params.json deleted file mode 100644 index 118791ea..00000000 --- a/packages/kbot/tests/unit/logs/params.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "model": "divide 15 by 3. Return only the number, no explanation.", - "messages": [ - { - "role": "user", - "content": "5" - }, - { - "role": "user", - "content": "USER Preferences : Test preferences" - }, - { - "role": "user", - "path": "reports/basic.json", - "content": "{\n \"results\": [\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:09.502Z\",\n \"passed\": true,\n \"duration\": 1237\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:13.802Z\",\n \"passed\": true,\n \"duration\": 4298\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:15.214Z\",\n \"passed\": true,\n \"duration\": 1411\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:18.337Z\",\n \"passed\": true,\n \"duration\": 3122\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:18.922Z\",\n \"passed\": true,\n \"duration\": 583\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T10:56:22.539Z\",\n \"passed\": true,\n \"duration\": 3615\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:08.904Z\",\n \"passed\": true,\n \"duration\": 1888\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:15.210Z\",\n \"passed\": true,\n \"duration\": 6304\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:16.502Z\",\n \"passed\": true,\n \"duration\": 1291\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:18.728Z\",\n \"passed\": true,\n \"duration\": 2225\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:19.938Z\",\n \"passed\": true,\n \"duration\": 1209\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:01:27.791Z\",\n \"passed\": true,\n \"duration\": 7852\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:21.370Z\",\n \"passed\": true,\n \"duration\": 1213,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:24.898Z\",\n \"passed\": true,\n \"duration\": 3524,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:25.624Z\",\n \"passed\": true,\n \"duration\": 724,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:26.630Z\",\n \"passed\": true,\n \"duration\": 1005,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:27.812Z\",\n \"passed\": true,\n \"duration\": 1178,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:31.317Z\",\n \"passed\": true,\n \"duration\": 3503,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:32.288Z\",\n \"passed\": true,\n \"duration\": 969,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:33.147Z\",\n \"passed\": true,\n \"duration\": 858,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:33.724Z\",\n \"passed\": true,\n \"duration\": 576,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:34.841Z\",\n \"passed\": true,\n \"duration\": 1115,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:35.673Z\",\n \"passed\": true,\n \"duration\": 831,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:16:36.762Z\",\n \"passed\": true,\n \"duration\": 1087,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:25.749Z\",\n \"passed\": true,\n \"duration\": 1644,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:31.261Z\",\n \"passed\": true,\n \"duration\": 5507,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:32.131Z\",\n \"passed\": true,\n \"duration\": 869,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:33.306Z\",\n \"passed\": true,\n \"duration\": 1173,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:34.323Z\",\n \"passed\": true,\n \"duration\": 1016,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:38.976Z\",\n \"passed\": true,\n \"duration\": 4651,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:39.914Z\",\n \"passed\": true,\n \"duration\": 937,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:41.053Z\",\n \"passed\": true,\n \"duration\": 1137,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:42.918Z\",\n \"passed\": true,\n \"duration\": 1863,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:47.234Z\",\n \"passed\": true,\n \"duration\": 4314,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:47.966Z\",\n \"passed\": true,\n \"duration\": 730,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:20:48.941Z\",\n \"passed\": true,\n \"duration\": 973,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:15.745Z\",\n \"passed\": true,\n \"duration\": 1951,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:19.476Z\",\n \"passed\": true,\n \"duration\": 3726,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:20.854Z\",\n \"passed\": true,\n \"duration\": 1376,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:28.044Z\",\n \"passed\": true,\n \"duration\": 7188,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:43.203Z\",\n \"passed\": true,\n \"duration\": 15157,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:50.736Z\",\n \"passed\": true,\n \"duration\": 7531,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:51.834Z\",\n \"passed\": true,\n \"duration\": 1096,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:55.428Z\",\n \"passed\": true,\n \"duration\": 3592,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:56.874Z\",\n \"passed\": true,\n \"duration\": 1444,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:25:57.746Z\",\n \"passed\": true,\n \"duration\": 870,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:08.731Z\",\n \"passed\": true,\n \"duration\": 10983,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:14.379Z\",\n \"passed\": true,\n \"duration\": 5646,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:15.658Z\",\n \"passed\": true,\n \"duration\": 1276,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:21.428Z\",\n \"passed\": true,\n \"duration\": 5768,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:22.358Z\",\n \"passed\": true,\n \"duration\": 929,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:23.155Z\",\n \"passed\": true,\n \"duration\": 794,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:38.566Z\",\n \"passed\": true,\n \"duration\": 15409,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"openrouter\",\n \"timestamp\": \"2025-04-02T11:26:40.358Z\",\n \"passed\": true,\n \"duration\": 1790,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"anthropic/claude-3.5-sonnet\",\n \"timestamp\": \"2025-04-02T13:44:06.429Z\",\n \"passed\": true,\n \"duration\": 1689,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"qwen/qwq-32b\",\n \"timestamp\": \"2025-04-02T13:44:10.240Z\",\n \"passed\": true,\n \"duration\": 3807,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openai/gpt-4o-mini\",\n \"timestamp\": \"2025-04-02T13:44:11.128Z\",\n \"passed\": true,\n \"duration\": 885,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openai/gpt-3.5-turbo\",\n \"timestamp\": \"2025-04-02T13:44:21.587Z\",\n \"passed\": true,\n \"duration\": 10455,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"8\"\n ],\n \"expected\": \"8\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"deepseek/deepseek-r1\",\n \"timestamp\": \"2025-04-02T13:44:33.654Z\",\n \"passed\": true,\n \"duration\": 12064,\n \"category\": \"basic\"\n },\n {\n \"test\": \"addition\",\n \"prompt\": \"add 5 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"The sum of 5 and 3 is 8. Therefore, the result is \\\\boxed{8}.\"\n ],\n \"expected\": \"8\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"timestamp\": \"2025-04-02T13:44:40.062Z\",\n \"passed\": false,\n \"duration\": 6405,\n \"reason\": \"Expected 8, but got the sum of 5 and 3 is 8. therefore, the result is \\\\boxed{8}.\",\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"anthropic/claude-3.5-sonnet\",\n \"timestamp\": \"2025-04-02T13:44:41.261Z\",\n \"passed\": true,\n \"duration\": 1190,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"qwen/qwq-32b\",\n \"timestamp\": \"2025-04-02T13:44:46.272Z\",\n \"passed\": true,\n \"duration\": 5008,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openai/gpt-4o-mini\",\n \"timestamp\": \"2025-04-02T13:44:47.386Z\",\n \"passed\": true,\n \"duration\": 1111,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openai/gpt-3.5-turbo\",\n \"timestamp\": \"2025-04-02T13:44:48.372Z\",\n \"passed\": true,\n \"duration\": 984,\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\\n\\n24\\n\\nThe result is 24.\\n\\n24\\n\\nHere's the answer: 24\\n\\nThe answer will be 24.\\n\\n24\\n\\n24\\n\\nThe product of 8 and 3 is 24.\\n\\n24\\n\\nThe answer is 24.\\n\\n24\\n\\n24\\n\\n24\\n\\nThe result is 24.\\n\\n24\\n\\nHere's the numerical result: 24\\n\\nThe answer is 24.\\n\\n24\\n\\n24\\n\\nThe answer is 24.\"\n ],\n \"expected\": \"24\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"deepseek/deepseek-r1\",\n \"timestamp\": \"2025-04-02T13:44:53.633Z\",\n \"passed\": false,\n \"duration\": 5258,\n \"reason\": \"Expected 24, but got 24\\n\\n24\\n\\nthe result is 24.\\n\\n24\\n\\nhere's the answer: 24\\n\\nthe answer will be 24.\\n\\n24\\n\\n24\\n\\nthe product of 8 and 3 is 24.\\n\\n24\\n\\nthe answer is 24.\\n\\n24\\n\\n24\\n\\n24\\n\\nthe result is 24.\\n\\n24\\n\\nhere's the numerical result: 24\\n\\nthe answer is 24.\\n\\n24\\n\\n24\\n\\nthe answer is 24.\",\n \"category\": \"basic\"\n },\n {\n \"test\": \"multiplication\",\n \"prompt\": \"multiply 8 and 3. Return only the number, no explanation.\",\n \"result\": [\n \"24\"\n ],\n \"expected\": \"24\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"timestamp\": \"2025-04-02T13:44:55.196Z\",\n \"passed\": true,\n \"duration\": 1558,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"router\": \"anthropic/claude-3.5-sonnet\",\n \"timestamp\": \"2025-04-02T13:44:56.604Z\",\n \"passed\": true,\n \"duration\": 1405,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"qwen/qwq-32b\",\n \"router\": \"qwen/qwq-32b\",\n \"timestamp\": \"2025-04-02T13:44:57.523Z\",\n \"passed\": true,\n \"duration\": 917,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-4o-mini\",\n \"router\": \"openai/gpt-4o-mini\",\n \"timestamp\": \"2025-04-02T13:44:58.630Z\",\n \"passed\": true,\n \"duration\": 1104,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"openai/gpt-3.5-turbo\",\n \"router\": \"openai/gpt-3.5-turbo\",\n \"timestamp\": \"2025-04-02T13:44:59.523Z\",\n \"passed\": true,\n \"duration\": 889,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"deepseek/deepseek-r1\",\n \"router\": \"deepseek/deepseek-r1\",\n \"timestamp\": \"2025-04-02T13:45:06.658Z\",\n \"passed\": true,\n \"duration\": 7130,\n \"category\": \"basic\"\n },\n {\n \"test\": \"division\",\n \"prompt\": \"divide 15 by 3. Return only the number, no explanation.\",\n \"result\": [\n \"5\"\n ],\n \"expected\": \"5\",\n \"model\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"router\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"timestamp\": \"2025-04-02T13:45:10.307Z\",\n \"passed\": true,\n \"duration\": 3646,\n \"category\": \"basic\"\n }\n ],\n \"highscores\": [\n {\n \"test\": \"addition\",\n \"rankings\": [\n {\n \"model\": \"openai/gpt-4o-mini\",\n \"duration\": 885,\n \"duration_secs\": 0.885\n },\n {\n \"model\": \"anthropic/claude-3.5-sonnet\",\n \"duration\": 1689,\n \"duration_secs\": 1.689\n }\n ]\n },\n {\n \"test\": \"multiplication\",\n \"rankings\": [\n {\n \"model\": \"openai/gpt-3.5-turbo\",\n \"duration\": 984,\n \"duration_secs\": 0.984\n },\n {\n \"model\": \"openai/gpt-4o-mini\",\n \"duration\": 1111,\n \"duration_secs\": 1.111\n }\n ]\n },\n {\n \"test\": \"division\",\n \"rankings\": [\n {\n \"model\": \"openai/gpt-3.5-turbo\",\n \"duration\": 889,\n \"duration_secs\": 0.889\n },\n {\n \"model\": \"qwen/qwq-32b\",\n \"duration\": 917,\n \"duration_secs\": 0.917\n }\n ]\n }\n ],\n \"lastUpdated\": \"2025-04-02T13:45:10.308Z\"\n}" - } - ], - "tools": [], - "tool_choice": "auto", - "parallel_tool_calls": false -} \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/preferences.md b/packages/kbot/tests/unit/logs/preferences.md deleted file mode 100644 index 97c697bf..00000000 --- a/packages/kbot/tests/unit/logs/preferences.md +++ /dev/null @@ -1 +0,0 @@ -Test preferences \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/tool-call-result.json b/packages/kbot/tests/unit/logs/tool-call-result.json deleted file mode 100644 index ea6d83b5..00000000 --- a/packages/kbot/tests/unit/logs/tool-call-result.json +++ /dev/null @@ -1,71 +0,0 @@ -[ - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "timestamp": "2025-04-02T21:57:39.228Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "timestamp": "2025-04-02T21:58:27.892Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "timestamp": "2025-04-02T21:58:29.968Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "timestamp": "2025-04-02T21:58:32.842Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json", - "content": "eyJ0ZXN0IjoiZGF0YSIsInRpbWVzdGFtcCI6IjIwMjUtMDQtMDJUMjE6NTg6MzcuMDk1WiJ9" - } - }, - "timestamp": "2025-04-02T21:58:39.848Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json" - } - }, - "timestamp": "2025-04-02T21:58:41.865Z", - "service": "collector:onFunctionCallResult" - }, - { - "level": "debug", - "message": { - "directory": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:58:45.110Z", - "service": "collector:onFunctionCallResult" - } -] \ No newline at end of file diff --git a/packages/kbot/tests/unit/logs/tool-call.json b/packages/kbot/tests/unit/logs/tool-call.json deleted file mode 100644 index 3215e2ca..00000000 --- a/packages/kbot/tests/unit/logs/tool-call.json +++ /dev/null @@ -1,120 +0,0 @@ -[ - { - "level": "debug", - "message": { - "name": "read_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:57:39.221Z", - "sessionId": "1743631056851", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:57:39.222Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "read_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:27.887Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:27.888Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "read_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:29.965Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:29.965Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "read_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:32.839Z", - "sessionId": "1743631106089", - "prompt": "Read equations from C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\tools.test.md and solve them" - }, - "timestamp": "2025-04-02T21:58:32.840Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "write_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json", - "content": "eyJ0ZXN0IjoiZGF0YSIsInRpbWVzdGFtcCI6IjIwMjUtMDQtMDJUMjE6NTg6MzcuMDk1WiJ9" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:39.841Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:39.842Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "read_file", - "arguments": { - "file": { - "path": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json" - } - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:41.862Z", - "sessionId": "1743631117208", - "prompt": "Write {\"test\":\"data\",\"timestamp\":\"2025-04-02t21:58:37.095z\"} to C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data\\test-data.json and read it back" - }, - "timestamp": "2025-04-02T21:58:41.863Z", - "service": "collector:onToolCall" - }, - { - "level": "debug", - "message": { - "name": "list_files", - "arguments": { - "directory": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "parsed_arguments": null, - "timestamp": "2025-04-02T21:58:45.107Z", - "sessionId": "1743631123330", - "prompt": "List all files in C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\test-data" - }, - "timestamp": "2025-04-02T21:58:45.108Z", - "service": "collector:onToolCall" - } -] \ No newline at end of file diff --git a/packages/kbot/tests/unit/reports/all.json b/packages/kbot/tests/unit/reports/all.json index e36b0732..66531e6f 100644 --- a/packages/kbot/tests/unit/reports/all.json +++ b/packages/kbot/tests/unit/reports/all.json @@ -8422,6 +8422,2023 @@ "duration": 1657, "reason": "Expected function bubbleSort(arr) { const n = arr.length; for(let i = 0; i < n; i++) { for(let j = 0; j < n-i-1; j++) { if(arr[j] > arr[j+1]) { [arr[j], arr[j+1]] = [arr[j+1], arr[j]]; } } } return arr; }, but got function bubblesort(arr) {\n let n = arr.length;\n for (let i = 0; i < n - 1; i++) {\n for (let j = 0; j < n - 1 - i; j++) {\n if (arr[j] > arr[j + 1]) {\n let temp = arr[j];\n arr[j] = arr[j + 1];\n arr[j + 1] = temp;\n }\n }\n }\n return arr;\n}", "category": "coding" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Dijkstra's Algorithm" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:18:51.155Z", + "passed": false, + "duration": 1359, + "reason": "Expected bubble sort, but got dijkstra's algorithm", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the provided files is AES encryption in CTR mode with a key derived using PBKDF2-HMAC-SHA256. The primary cipher used is AES (Advanced Encryption Standard), specifically in CTR (Counter) mode. Therefore, the name is AES-CTR.\n\n**Answer:** AES" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:19:05.797Z", + "passed": false, + "duration": 14630, + "reason": "Expected bubble sort, but got the algorithm implemented in the provided files is aes encryption in ctr mode with a key derived using pbkdf2-hmac-sha256. the primary cipher used is aes (advanced encryption standard), specifically in ctr (counter) mode. therefore, the name is aes-ctr.\n\n**answer:** aes", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The name of the algorithm is not provided in your request." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:19:07.137Z", + "passed": false, + "duration": 1330, + "reason": "Expected bubble sort, but got the name of the algorithm is not provided in your request.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:19:07.935Z", + "passed": false, + "duration": 790, + "reason": "Expected bubble sort, but got please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in these files is \"Collaborative Filtering.\"" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:19:09.003Z", + "passed": false, + "duration": 1058, + "reason": "Expected bubble sort, but got the algorithm implemented in these files is \"collaborative filtering.\"", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:19:39.019Z", + "passed": false, + "duration": 30009, + "error": { + "message": "API call timed out", + "code": "UNKNOWN", + "type": "Error", + "details": { + "stack": "Error: API call timed out\n at Timeout._onTimeout (C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\commons.ts:194:33)\n at listOnTimeout (node:internal/timers:594:17)\n at processTimers (node:internal/timers:529:7)", + "message": "API call timed out" + } + }, + "reason": "API call timed out", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "I'm sorry, but I cannot determine the name of the algorithm without more context or specific information about the files in question." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:19:41.008Z", + "passed": false, + "duration": 1979, + "reason": "Expected bubble sort, but got i'm sorry, but i cannot determine the name of the algorithm without more context or specific information about the files in question.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:19:41.854Z", + "passed": false, + "duration": 838, + "reason": "Expected bubble sort, but got please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:20:05.993Z", + "passed": true, + "duration": 1179, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the provided code is the **Bubble Sort Algorithm**." + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:20:11.767Z", + "passed": false, + "duration": 5763, + "reason": "Expected bubble sort, but got the algorithm implemented in the provided code is the **bubble sort algorithm**.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:20:13.107Z", + "passed": true, + "duration": 1334, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:20:14.287Z", + "passed": true, + "duration": 1173, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "K-means clustering" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:20:15.141Z", + "passed": false, + "duration": 847, + "reason": "Expected bubble sort, but got k-means clustering", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the files is **Gradient Descent**." + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:20:23.840Z", + "passed": false, + "duration": 8688, + "reason": "Expected bubble sort, but got the algorithm implemented in the files is **gradient descent**.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "I cannot determine the name of the algorithm based on the provided information." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:20:25.805Z", + "passed": false, + "duration": 1956, + "reason": "Expected bubble sort, but got i cannot determine the name of the algorithm based on the provided information.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:20:26.593Z", + "passed": false, + "duration": 780, + "reason": "Expected bubble sort, but got please provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:21:25.673Z", + "passed": true, + "duration": 1367, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort Algorithm" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:21:30.787Z", + "passed": false, + "duration": 5106, + "reason": "Expected bubble sort, but got bubble sort algorithm", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:21:31.712Z", + "passed": true, + "duration": 918, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:21:32.767Z", + "passed": true, + "duration": 1048, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:21:33.649Z", + "passed": true, + "duration": 875, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:21:40.963Z", + "passed": true, + "duration": 7307, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:21:42.451Z", + "passed": true, + "duration": 1480, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:21:43.287Z", + "passed": true, + "duration": 829, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubbleSort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:24.033Z", + "passed": false, + "duration": 1519, + "reason": "Expected bubble sort, but got bubblesort", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubble sort" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:29.018Z", + "passed": true, + "duration": 4977, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:30.154Z", + "passed": true, + "duration": 1128, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:30.838Z", + "passed": true, + "duration": 677, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "1. Bubblesort\n2. Quicksort\n3. Selection sort\n4. Insertion sort\n5. Merge sort\n6. Linear search\n7. Binary search" + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:32.076Z", + "passed": false, + "duration": 1231, + "reason": "Expected bubble sort\nfactorial, but got 1. bubblesort\n2. quicksort\n3. selection sort\n4. insertion sort\n5. merge sort\n6. linear search\n7. binary search", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Algorithm1\nAlgorithm2\nAlgorithm3\nAlgorithm4\nAlgorithm5\nAlgorithm6\nAlgorithm7\nAlgorithm8\nAlgorithm9\nAlgorithm10" + ], + "expected": "bubble sort\nfactorial", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:37.874Z", + "passed": false, + "duration": 5787, + "reason": "Expected bubble sort\nfactorial, but got algorithm1\nalgorithm2\nalgorithm3\nalgorithm4\nalgorithm5\nalgorithm6\nalgorithm7\nalgorithm8\nalgorithm9\nalgorithm10", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "I'm sorry, but I cannot access or analyze files directly. However, if you provide me with the names of the algorithms or a list of the file contents, I can help you identify the algorithms from that information." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:39.653Z", + "passed": false, + "duration": 1771, + "reason": "Expected bubble sort\nfactorial, but got i'm sorry, but i cannot access or analyze files directly. however, if you provide me with the names of the algorithms or a list of the file contents, i can help you identify the algorithms from that information.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Certainly! Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort\nfactorial", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:40.428Z", + "passed": false, + "duration": 765, + "reason": "Expected bubble sort\nfactorial, but got certainly! please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:41.577Z", + "passed": false, + "duration": 1140, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:50.090Z", + "passed": false, + "duration": 8505, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:51.366Z", + "passed": false, + "duration": 1269, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:52.495Z", + "passed": false, + "duration": 1122, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "2" + ], + "expected": "2", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:53.296Z", + "passed": true, + "duration": 794, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:31:12.749Z", + "passed": false, + "duration": 19446, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:31:13.650Z", + "passed": false, + "duration": 892, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:31:14.354Z", + "passed": false, + "duration": 696, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:31.043Z", + "passed": true, + "duration": 1340, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Sure! Please provide the files you want me to analyze for the algorithms." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:31.940Z", + "passed": false, + "duration": 888, + "reason": "Expected bubble sort\nfactorial, but got sure! please provide the files you want me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:33.493Z", + "passed": false, + "duration": 1542, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:22.969Z", + "passed": true, + "duration": 1883, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Sure! Please provide the files or the content you would like me to analyze for the algorithms." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:24.039Z", + "passed": false, + "duration": 1061, + "reason": "Expected bubble sort\nfactorial, but got sure! please provide the files or the content you would like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:25.186Z", + "passed": false, + "duration": 1133, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:02.427Z", + "passed": true, + "duration": 1733, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the specific file names or content you're referring to in order to identify the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:03.619Z", + "passed": false, + "duration": 1184, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the specific file names or content you're referring to in order to identify the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:04.692Z", + "passed": false, + "duration": 1065, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:34.623Z", + "passed": true, + "duration": 1278, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the list of files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:36.650Z", + "passed": false, + "duration": 2019, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the list of files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:37.745Z", + "passed": false, + "duration": 1086, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:33.859Z", + "passed": true, + "duration": 1628, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the files or the content of the files you are referring to, and I can help you list the algorithms implemented in them as a JSON array." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:35.542Z", + "passed": false, + "duration": 1674, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the files or the content of the files you are referring to, and i can help you list the algorithms implemented in them as a json array.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:37.182Z", + "passed": false, + "duration": 1631, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:34.182Z", + "passed": true, + "duration": 1315, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "{\"algorithms\": []}" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:35.193Z", + "passed": false, + "duration": 1003, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got {\"algorithms\": []}", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:37.295Z", + "passed": false, + "duration": 2091, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:40.121Z", + "passed": true, + "duration": 1641, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure, please provide the names of the files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:41.289Z", + "passed": false, + "duration": 1159, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure, please provide the names of the files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:42.379Z", + "passed": false, + "duration": 1080, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:41.061Z", + "passed": true, + "duration": 1819, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:42.391Z", + "passed": false, + "duration": 1321, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:43.653Z", + "passed": false, + "duration": 1252, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:00.091Z", + "passed": true, + "duration": 1818, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure, please provide the filenames or contents of the files that contain the algorithms you want me to analyze." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:01.558Z", + "passed": false, + "duration": 1458, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure, please provide the filenames or contents of the files that contain the algorithms you want me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:02.916Z", + "passed": false, + "duration": 1349, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:57.758Z", + "passed": true, + "duration": 1504, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you'd like me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:58.900Z", + "passed": false, + "duration": 1132, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you'd like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:00.008Z", + "passed": false, + "duration": 1098, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:31.841Z", + "passed": true, + "duration": 1319, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "I would need to see the specific files you are referring to in order to list the algorithms implemented within them. Please provide the files or their content." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:34.248Z", + "passed": false, + "duration": 2396, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got i would need to see the specific files you are referring to in order to list the algorithms implemented within them. please provide the files or their content.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:35.295Z", + "passed": false, + "duration": 1038, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:20.776Z", + "passed": true, + "duration": 1509, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files or the content of the files you want me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:22.070Z", + "passed": false, + "duration": 1285, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files or the content of the files you want me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:23.445Z", + "passed": false, + "duration": 1365, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:48.866Z", + "passed": true, + "duration": 1918, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:50.013Z", + "passed": false, + "duration": 1138, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:51.201Z", + "passed": false, + "duration": 1178, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:51:37.261Z", + "passed": true, + "duration": 22396, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:10.696Z", + "passed": false, + "duration": 33423, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:20.423Z", + "passed": false, + "duration": 9714, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:35.377Z", + "passed": true, + "duration": 1392, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to inspect for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:36.546Z", + "passed": false, + "duration": 1159, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to inspect for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:37.611Z", + "passed": false, + "duration": 1055, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:50.539Z", + "passed": true, + "duration": 7831, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the files or their contents for me to help you list the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:54:10.941Z", + "passed": false, + "duration": 80392, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the files or their contents for me to help you list the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:54:12.194Z", + "passed": false, + "duration": 1242, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:06.412Z", + "passed": false, + "duration": 140731, + "error": { + "message": "API call timed out", + "code": "UNKNOWN", + "type": "Error", + "details": { + "stack": "Error: API call timed out\n at Timeout._onTimeout (C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\commons.ts:204:33)\n at listOnTimeout (node:internal/timers:594:17)\n at processTimers (node:internal/timers:529:7)", + "message": "API call timed out" + } + }, + "reason": "API call timed out", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:14.901Z", + "passed": false, + "duration": 8474, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:30.681Z", + "passed": false, + "duration": 1601, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:34.787Z", + "passed": false, + "duration": 1611, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\n \"factorial\",\n \"bubbleSort\"\n]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:00:10.350Z", + "passed": false, + "duration": 1817, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\n \"factorial\",\n \"bubblesort\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:00:38.929Z", + "passed": false, + "duration": 1513, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:05.089Z", + "passed": false, + "duration": 1403, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:06.608Z", + "passed": false, + "duration": 1508, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:42.090Z", + "passed": false, + "duration": 4288, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:14.412Z", + "passed": false, + "duration": 1862, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:20.785Z", + "passed": false, + "duration": 1419, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:35.408Z", + "passed": false, + "duration": 2098, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:10.823Z", + "passed": false, + "duration": 7679, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:12.186Z", + "passed": false, + "duration": 1350, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\n \"factorial\",\n \"bubbleSort\"\n]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:45.485Z", + "passed": false, + "duration": 1379, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\n \"factorial\",\n \"bubblesort\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:46.562Z", + "passed": false, + "duration": 1067, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:09.410Z", + "passed": true, + "duration": 2135, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:10.529Z", + "passed": false, + "duration": 1109, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:11.750Z", + "passed": false, + "duration": 1212, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:14.639Z", + "passed": false, + "duration": 2881, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:11.907Z", + "passed": true, + "duration": 1372, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:12.999Z", + "passed": false, + "duration": 1082, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:14.666Z", + "passed": false, + "duration": 1659, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:17.346Z", + "passed": false, + "duration": 2672, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubble sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:35.717Z", + "passed": true, + "duration": 1411, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:36.740Z", + "passed": false, + "duration": 1012, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:37.999Z", + "passed": false, + "duration": 1250, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:40.832Z", + "passed": false, + "duration": 2824, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:23.284Z", + "passed": true, + "duration": 1409, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:24.272Z", + "passed": false, + "duration": 977, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:25.514Z", + "passed": false, + "duration": 1232, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:28.304Z", + "passed": false, + "duration": 2782, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:08.365Z", + "passed": true, + "duration": 1648, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:09.414Z", + "passed": false, + "duration": 1039, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:11.169Z", + "passed": false, + "duration": 1746, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:13.188Z", + "passed": false, + "duration": 2010, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:18.071Z", + "passed": true, + "duration": 1198, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:18.811Z", + "passed": true, + "duration": 730, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubbleSort\n" + ], + "expected": "bubble sort", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:20.745Z", + "passed": false, + "duration": 1926, + "reason": "Expected bubble sort, but got bubblesort", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:21.710Z", + "passed": false, + "duration": 956, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubble sort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:22.906Z", + "passed": false, + "duration": 1187, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubble sort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:24.649Z", + "passed": false, + "duration": 1734, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:26.014Z", + "passed": false, + "duration": 1357, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:27.012Z", + "passed": false, + "duration": 989, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:28.231Z", + "passed": false, + "duration": 1212, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"wildcat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:31.563Z", + "passed": false, + "duration": 3323, + "reason": "Expected [\"cat\",\"fox\"], but got [\"wildcat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\n \"cat\",\n \"fox\"\n]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:33.448Z", + "passed": false, + "duration": 1876, + "reason": "Expected [\"cat\",\"fox\"], but got [\n \"cat\",\n \"fox\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:35.906Z", + "passed": false, + "duration": 2449, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" } ], "highscores": [ @@ -8664,7 +10681,22 @@ "duration_secs": 2.181 } ] + }, + { + "test": "file-inclusion", + "rankings": [ + { + "model": "openai/gpt-3.5-turbo", + "duration": 794, + "duration_secs": 0.794 + }, + { + "model": "openrouter/quasar-alpha", + "duration": 1876, + "duration_secs": 1.876 + } + ] } ], - "lastUpdated": "2025-04-04T13:12:05.778Z" + "lastUpdated": "2025-04-04T16:13:35.912Z" } \ No newline at end of file diff --git a/packages/kbot/tests/unit/reports/files.json b/packages/kbot/tests/unit/reports/files.json new file mode 100644 index 00000000..eea6386f --- /dev/null +++ b/packages/kbot/tests/unit/reports/files.json @@ -0,0 +1,2039 @@ +{ + "results": [ + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Dijkstra's Algorithm" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:18:51.155Z", + "passed": false, + "duration": 1359, + "reason": "Expected bubble sort, but got dijkstra's algorithm", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the provided files is AES encryption in CTR mode with a key derived using PBKDF2-HMAC-SHA256. The primary cipher used is AES (Advanced Encryption Standard), specifically in CTR (Counter) mode. Therefore, the name is AES-CTR.\n\n**Answer:** AES" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:19:05.797Z", + "passed": false, + "duration": 14630, + "reason": "Expected bubble sort, but got the algorithm implemented in the provided files is aes encryption in ctr mode with a key derived using pbkdf2-hmac-sha256. the primary cipher used is aes (advanced encryption standard), specifically in ctr (counter) mode. therefore, the name is aes-ctr.\n\n**answer:** aes", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The name of the algorithm is not provided in your request." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:19:07.137Z", + "passed": false, + "duration": 1330, + "reason": "Expected bubble sort, but got the name of the algorithm is not provided in your request.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:19:07.935Z", + "passed": false, + "duration": 790, + "reason": "Expected bubble sort, but got please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in these files is \"Collaborative Filtering.\"" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:19:09.003Z", + "passed": false, + "duration": 1058, + "reason": "Expected bubble sort, but got the algorithm implemented in these files is \"collaborative filtering.\"", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:19:39.019Z", + "passed": false, + "duration": 30009, + "error": { + "message": "API call timed out", + "code": "UNKNOWN", + "type": "Error", + "details": { + "stack": "Error: API call timed out\n at Timeout._onTimeout (C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\commons.ts:194:33)\n at listOnTimeout (node:internal/timers:594:17)\n at processTimers (node:internal/timers:529:7)", + "message": "API call timed out" + } + }, + "reason": "API call timed out", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "I'm sorry, but I cannot determine the name of the algorithm without more context or specific information about the files in question." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:19:41.008Z", + "passed": false, + "duration": 1979, + "reason": "Expected bubble sort, but got i'm sorry, but i cannot determine the name of the algorithm without more context or specific information about the files in question.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:19:41.854Z", + "passed": false, + "duration": 838, + "reason": "Expected bubble sort, but got please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:20:05.993Z", + "passed": true, + "duration": 1179, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the provided code is the **Bubble Sort Algorithm**." + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:20:11.767Z", + "passed": false, + "duration": 5763, + "reason": "Expected bubble sort, but got the algorithm implemented in the provided code is the **bubble sort algorithm**.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:20:13.107Z", + "passed": true, + "duration": 1334, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:20:14.287Z", + "passed": true, + "duration": 1173, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "K-means clustering" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:20:15.141Z", + "passed": false, + "duration": 847, + "reason": "Expected bubble sort, but got k-means clustering", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "The algorithm implemented in the files is **Gradient Descent**." + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:20:23.840Z", + "passed": false, + "duration": 8688, + "reason": "Expected bubble sort, but got the algorithm implemented in the files is **gradient descent**.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "I cannot determine the name of the algorithm based on the provided information." + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:20:25.805Z", + "passed": false, + "duration": 1956, + "reason": "Expected bubble sort, but got i cannot determine the name of the algorithm based on the provided information.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Please provide the files you'd like me to analyze." + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:20:26.593Z", + "passed": false, + "duration": 780, + "reason": "Expected bubble sort, but got please provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:21:25.673Z", + "passed": true, + "duration": 1367, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort Algorithm" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:21:30.787Z", + "passed": false, + "duration": 5106, + "reason": "Expected bubble sort, but got bubble sort algorithm", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:21:31.712Z", + "passed": true, + "duration": 918, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:21:32.767Z", + "passed": true, + "duration": 1048, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:21:33.649Z", + "passed": true, + "duration": 875, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:21:40.963Z", + "passed": true, + "duration": 7307, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:21:42.451Z", + "passed": true, + "duration": 1480, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:21:43.287Z", + "passed": true, + "duration": 829, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubbleSort" + ], + "expected": "bubble sort", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:24.033Z", + "passed": false, + "duration": 1519, + "reason": "Expected bubble sort, but got bubblesort", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubble sort" + ], + "expected": "bubble sort", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:29.018Z", + "passed": true, + "duration": 4977, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:30.154Z", + "passed": true, + "duration": 1128, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:30.838Z", + "passed": true, + "duration": 677, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "1. Bubblesort\n2. Quicksort\n3. Selection sort\n4. Insertion sort\n5. Merge sort\n6. Linear search\n7. Binary search" + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:32.076Z", + "passed": false, + "duration": 1231, + "reason": "Expected bubble sort\nfactorial, but got 1. bubblesort\n2. quicksort\n3. selection sort\n4. insertion sort\n5. merge sort\n6. linear search\n7. binary search", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Algorithm1\nAlgorithm2\nAlgorithm3\nAlgorithm4\nAlgorithm5\nAlgorithm6\nAlgorithm7\nAlgorithm8\nAlgorithm9\nAlgorithm10" + ], + "expected": "bubble sort\nfactorial", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:37.874Z", + "passed": false, + "duration": 5787, + "reason": "Expected bubble sort\nfactorial, but got algorithm1\nalgorithm2\nalgorithm3\nalgorithm4\nalgorithm5\nalgorithm6\nalgorithm7\nalgorithm8\nalgorithm9\nalgorithm10", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "I'm sorry, but I cannot access or analyze files directly. However, if you provide me with the names of the algorithms or a list of the file contents, I can help you identify the algorithms from that information." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:39.653Z", + "passed": false, + "duration": 1771, + "reason": "Expected bubble sort\nfactorial, but got i'm sorry, but i cannot access or analyze files directly. however, if you provide me with the names of the algorithms or a list of the file contents, i can help you identify the algorithms from that information.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Certainly! Please upload or provide the files you'd like me to analyze." + ], + "expected": "bubble sort\nfactorial", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:40.428Z", + "passed": false, + "duration": 765, + "reason": "Expected bubble sort\nfactorial, but got certainly! please upload or provide the files you'd like me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:41.577Z", + "passed": false, + "duration": 1140, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:30:50.090Z", + "passed": false, + "duration": 8505, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:30:51.366Z", + "passed": false, + "duration": 1269, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:30:52.495Z", + "passed": false, + "duration": 1122, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "2" + ], + "expected": "2", + "model": "openai/gpt-3.5-turbo", + "router": "openai/gpt-3.5-turbo", + "timestamp": "2025-04-04T15:30:53.296Z", + "passed": true, + "duration": 794, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "deepseek/deepseek-r1-distill-qwen-14b:free", + "router": "deepseek/deepseek-r1-distill-qwen-14b:free", + "timestamp": "2025-04-04T15:31:12.749Z", + "passed": false, + "duration": 19446, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:31:13.650Z", + "passed": false, + "duration": 892, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "How many json files are included? Return only the number.", + "result": [ + "0" + ], + "expected": "2", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T15:31:14.354Z", + "passed": false, + "duration": 696, + "reason": "Expected 2, but got 0", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:31.043Z", + "passed": true, + "duration": 1340, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Sure! Please provide the files you want me to analyze for the algorithms." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:31.940Z", + "passed": false, + "duration": 888, + "reason": "Expected bubble sort\nfactorial, but got sure! please provide the files you want me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:33:33.493Z", + "passed": false, + "duration": 1542, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:22.969Z", + "passed": true, + "duration": 1883, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files. Return only the names, one per line.", + "result": [ + "Sure! Please provide the files or the content you would like me to analyze for the algorithms." + ], + "expected": "bubble sort\nfactorial", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:24.039Z", + "passed": false, + "duration": 1061, + "reason": "Expected bubble sort\nfactorial, but got sure! please provide the files or the content you would like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:34:25.186Z", + "passed": false, + "duration": 1133, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:02.427Z", + "passed": true, + "duration": 1733, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the specific file names or content you're referring to in order to identify the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:03.619Z", + "passed": false, + "duration": 1184, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the specific file names or content you're referring to in order to identify the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:04.692Z", + "passed": false, + "duration": 1065, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:34.623Z", + "passed": true, + "duration": 1278, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the list of files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:36.650Z", + "passed": false, + "duration": 2019, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the list of files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:38:37.745Z", + "passed": false, + "duration": 1086, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:33.859Z", + "passed": true, + "duration": 1628, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the files or the content of the files you are referring to, and I can help you list the algorithms implemented in them as a JSON array." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:35.542Z", + "passed": false, + "duration": 1674, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the files or the content of the files you are referring to, and i can help you list the algorithms implemented in them as a json array.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:39:37.182Z", + "passed": false, + "duration": 1631, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:34.182Z", + "passed": true, + "duration": 1315, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "{\"algorithms\": []}" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:35.193Z", + "passed": false, + "duration": 1003, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got {\"algorithms\": []}", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:42:37.295Z", + "passed": false, + "duration": 2091, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:40.121Z", + "passed": true, + "duration": 1641, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure, please provide the names of the files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:41.289Z", + "passed": false, + "duration": 1159, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure, please provide the names of the files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:43:42.379Z", + "passed": false, + "duration": 1080, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:41.061Z", + "passed": true, + "duration": 1819, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:42.391Z", + "passed": false, + "duration": 1321, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:44:43.653Z", + "passed": false, + "duration": 1252, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:00.091Z", + "passed": true, + "duration": 1818, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure, please provide the filenames or contents of the files that contain the algorithms you want me to analyze." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:01.558Z", + "passed": false, + "duration": 1458, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure, please provide the filenames or contents of the files that contain the algorithms you want me to analyze.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:02.916Z", + "passed": false, + "duration": 1349, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:57.758Z", + "passed": true, + "duration": 1504, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you'd like me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:45:58.900Z", + "passed": false, + "duration": 1132, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you'd like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:00.008Z", + "passed": false, + "duration": 1098, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:31.841Z", + "passed": true, + "duration": 1319, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "I would need to see the specific files you are referring to in order to list the algorithms implemented within them. Please provide the files or their content." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:34.248Z", + "passed": false, + "duration": 2396, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got i would need to see the specific files you are referring to in order to list the algorithms implemented within them. please provide the files or their content.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:46:35.295Z", + "passed": false, + "duration": 1038, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:20.776Z", + "passed": true, + "duration": 1509, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files or the content of the files you want me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:22.070Z", + "passed": false, + "duration": 1285, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files or the content of the files you want me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:23.445Z", + "passed": false, + "duration": 1365, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:48.866Z", + "passed": true, + "duration": 1918, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for the algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:50.013Z", + "passed": false, + "duration": 1138, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for the algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:49:51.201Z", + "passed": false, + "duration": 1178, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:51:37.261Z", + "passed": true, + "duration": 22396, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to analyze for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:10.696Z", + "passed": false, + "duration": 33423, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to analyze for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:20.423Z", + "passed": false, + "duration": 9714, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:35.377Z", + "passed": true, + "duration": 1392, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Sure! Please provide the files you would like me to inspect for algorithms." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:36.546Z", + "passed": false, + "duration": 1159, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got sure! please provide the files you would like me to inspect for algorithms.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:37.611Z", + "passed": false, + "duration": 1055, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:52:50.539Z", + "passed": true, + "duration": 7831, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "Please provide the files or their contents for me to help you list the algorithms implemented in them." + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:54:10.941Z", + "passed": false, + "duration": 80392, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got please provide the files or their contents for me to help you list the algorithms implemented in them.", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:54:12.194Z", + "passed": false, + "duration": 1242, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:06.412Z", + "passed": false, + "duration": 140731, + "error": { + "message": "API call timed out", + "code": "UNKNOWN", + "type": "Error", + "details": { + "stack": "Error: API call timed out\n at Timeout._onTimeout (C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\kbot\\tests\\unit\\commons.ts:204:33)\n at listOnTimeout (node:internal/timers:594:17)\n at processTimers (node:internal/timers:529:7)", + "message": "API call timed out" + } + }, + "reason": "API call timed out", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:14.901Z", + "passed": false, + "duration": 8474, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:30.681Z", + "passed": false, + "duration": 1601, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T15:59:34.787Z", + "passed": false, + "duration": 1611, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\n \"factorial\",\n \"bubbleSort\"\n]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:00:10.350Z", + "passed": false, + "duration": 1817, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\n \"factorial\",\n \"bubblesort\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:00:38.929Z", + "passed": false, + "duration": 1513, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:05.089Z", + "passed": false, + "duration": 1403, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:06.608Z", + "passed": false, + "duration": 1508, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:01:42.090Z", + "passed": false, + "duration": 4288, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:14.412Z", + "passed": false, + "duration": 1862, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:20.785Z", + "passed": false, + "duration": 1419, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:02:35.408Z", + "passed": false, + "duration": 2098, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:10.823Z", + "passed": false, + "duration": 7679, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:12.186Z", + "passed": false, + "duration": 1350, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\n \"factorial\",\n \"bubbleSort\"\n]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:45.485Z", + "passed": false, + "duration": 1379, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\n \"factorial\",\n \"bubblesort\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:03:46.562Z", + "passed": false, + "duration": 1067, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:09.410Z", + "passed": true, + "duration": 2135, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:10.529Z", + "passed": false, + "duration": 1109, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:11.750Z", + "passed": false, + "duration": 1212, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:09:14.639Z", + "passed": false, + "duration": 2881, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:11.907Z", + "passed": true, + "duration": 1372, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:12.999Z", + "passed": false, + "duration": 1082, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:14.666Z", + "passed": false, + "duration": 1659, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:17.346Z", + "passed": false, + "duration": 2672, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubble sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:35.717Z", + "passed": true, + "duration": 1411, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:36.740Z", + "passed": false, + "duration": 1012, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:37.999Z", + "passed": false, + "duration": 1250, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:10:40.832Z", + "passed": false, + "duration": 2824, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:23.284Z", + "passed": true, + "duration": 1409, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:24.272Z", + "passed": false, + "duration": 977, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:25.514Z", + "passed": false, + "duration": 1232, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:11:28.304Z", + "passed": false, + "duration": 2782, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:08.365Z", + "passed": true, + "duration": 1648, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:09.414Z", + "passed": false, + "duration": 1039, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:11.169Z", + "passed": false, + "duration": 1746, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:12:13.188Z", + "passed": false, + "duration": 2010, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:18.071Z", + "passed": true, + "duration": 1198, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "Bubble Sort" + ], + "expected": "bubble sort", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:18.811Z", + "passed": true, + "duration": 730, + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the name of the algorithm implemented in these files? Return only the name.", + "result": [ + "bubbleSort\n" + ], + "expected": "bubble sort", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:20.745Z", + "passed": false, + "duration": 1926, + "reason": "Expected bubble sort, but got bubblesort", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:21.710Z", + "passed": false, + "duration": 956, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubble sort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:22.906Z", + "passed": false, + "duration": 1187, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubble sort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "List all algorithms implemented in these files, as JSON array.", + "result": [ + "[\"factorial\", \"bubbleSort\"]" + ], + "expected": "[\"bubble sort\",\"factorial\"]", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:24.649Z", + "passed": false, + "duration": 1734, + "reason": "Expected [\"bubble sort\",\"factorial\"], but got [\"factorial\", \"bubblesort\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:26.014Z", + "passed": false, + "duration": 1357, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:27.012Z", + "passed": false, + "duration": 989, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What is the title of the product in data.json? Return only the title.", + "result": [ + "Injection Barrel" + ], + "expected": "Injection Barrel", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:28.231Z", + "passed": false, + "duration": 1212, + "reason": "Expected Injection Barrel, but got injection barrel", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"wildcat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openai/gpt-4o-mini", + "router": "openai/gpt-4o-mini", + "timestamp": "2025-04-04T16:13:31.563Z", + "passed": false, + "duration": 3323, + "reason": "Expected [\"cat\",\"fox\"], but got [\"wildcat\", \"fox\"]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\n \"cat\",\n \"fox\"\n]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "openrouter/quasar-alpha", + "router": "openrouter/quasar-alpha", + "timestamp": "2025-04-04T16:13:33.448Z", + "passed": false, + "duration": 1876, + "reason": "Expected [\"cat\",\"fox\"], but got [\n \"cat\",\n \"fox\"\n]", + "category": "files" + }, + { + "test": "file-inclusion", + "prompt": "What animals are shown in these images? Return as JSON array.", + "result": [ + "[\"cat\", \"fox\"]" + ], + "expected": "[\"cat\",\"fox\"]", + "model": "google/gemini-2.0-flash-exp:free", + "router": "google/gemini-2.0-flash-exp:free", + "timestamp": "2025-04-04T16:13:35.906Z", + "passed": false, + "duration": 2449, + "reason": "Expected [\"cat\",\"fox\"], but got [\"cat\", \"fox\"]", + "category": "files" + } + ], + "highscores": [ + { + "test": "file-inclusion", + "rankings": [ + { + "model": "openai/gpt-3.5-turbo", + "duration": 794, + "duration_secs": 0.794 + }, + { + "model": "openrouter/quasar-alpha", + "duration": 1876, + "duration_secs": 1.876 + } + ] + } + ], + "lastUpdated": "2025-04-04T16:13:35.907Z" +} \ No newline at end of file diff --git a/packages/kbot/tests/unit/reports/files.md b/packages/kbot/tests/unit/reports/files.md new file mode 100644 index 00000000..0976918a --- /dev/null +++ b/packages/kbot/tests/unit/reports/files.md @@ -0,0 +1,59 @@ +# File Operations Test Results + +## Highscores + +### Performance Rankings (Duration) + +| Test | Model | Duration (ms) | Duration (s) | +|------|-------|--------------|--------------| +| file-inclusion | openrouter/quasar-alpha | 1876 | 1.88 | +| file-inclusion | google/gemini-2.0-flash-exp:free | 2449 | 2.45 | +| file-inclusion | openai/gpt-4o-mini | 3323 | 3.32 | + +## Summary + +- Total Tests: 12 +- Passed: 2 +- Failed: 10 +- Success Rate: 16.67% +- Average Duration: 1578ms (1.58s) + +## Failed Tests + +### file-inclusion - openai/gpt-4o-mini + +- Prompt: `What animals are shown in these images? Return as JSON array.` +- Expected: `["cat","fox"]` +- Actual: `["wildcat", "fox"]` +- Duration: 3323ms (3.32s) +- Reason: Expected ["cat","fox"], but got ["wildcat", "fox"] +- Timestamp: 4/4/2025, 6:13:31 PM + +### file-inclusion - openrouter/quasar-alpha + +- Prompt: `What animals are shown in these images? Return as JSON array.` +- Expected: `["cat","fox"]` +- Actual: `[ + "cat", + "fox" +]` +- Duration: 1876ms (1.88s) +- Reason: Expected ["cat","fox"], but got [ + "cat", + "fox" +] +- Timestamp: 4/4/2025, 6:13:33 PM + +### file-inclusion - google/gemini-2.0-flash-exp:free + +- Prompt: `What animals are shown in these images? Return as JSON array.` +- Expected: `["cat","fox"]` +- Actual: `["cat", "fox"]` +- Duration: 2449ms (2.45s) +- Reason: Expected ["cat","fox"], but got ["cat", "fox"] +- Timestamp: 4/4/2025, 6:13:35 PM + +## Passed Tests + +*No passed tests* + diff --git a/packages/kbot/tests/unit/test-data/test.md b/packages/kbot/tests/unit/test-data/test.md deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/kbot/tests/unit/test-data/tools.test.md b/packages/kbot/tests/unit/test-data/tools.test.md deleted file mode 100644 index b52aa1a8..00000000 --- a/packages/kbot/tests/unit/test-data/tools.test.md +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "equation": "2x + 5 = 13", - "result": "4" - }, - { - "equation": "3y - 7 = 20", - "result": "9" - }, - { - "equation": "4z + 8 = 32", - "result": "6" - } -] \ No newline at end of file