From 82922e5fafce24af50b1902f7ac25c69d43b9090 Mon Sep 17 00:00:00 2001 From: Code Date: Sat, 1 Feb 2025 20:19:12 +0100 Subject: [PATCH] kbot:parse includes --- packages/osr-code-bot/.vscode/launch.json | 63 +++++++++++++---- packages/osr-code-bot/commands/run.js | 54 ++++++++++++-- packages/osr-code-bot/main.js | 7 +- packages/osr-code-bot/package-lock.json | 17 ++++- packages/osr-code-bot/package.json | 1 + packages/osr-code-bot/profile.js | 2 +- packages/osr-code-bot/src/commands/run.ts | 70 ++++++++++++++++--- packages/osr-code-bot/src/main.ts | 6 +- packages/osr-code-bot/src/merge.ts | 28 ++++++++ packages/osr-code-bot/src/profile.ts | 6 +- packages/osr-code-bot/tests/iterator/g1.md | 4 +- packages/osr-code-bot/tests/salamand/g1.md | 11 +++ packages/osr-code-bot/tests/salamand/g2.md | 17 +++++ packages/osr-code-bot/tests/salamand/sum.json | 54 ++++++++++++++ packages/osr-code-bot/tests/salamand/test.sh | 1 + 15 files changed, 293 insertions(+), 48 deletions(-) create mode 100644 packages/osr-code-bot/src/merge.ts create mode 100644 packages/osr-code-bot/tests/salamand/g1.md create mode 100644 packages/osr-code-bot/tests/salamand/g2.md create mode 100644 packages/osr-code-bot/tests/salamand/sum.json create mode 100644 packages/osr-code-bot/tests/salamand/test.sh diff --git a/packages/osr-code-bot/.vscode/launch.json b/packages/osr-code-bot/.vscode/launch.json index 609d2d0..e39e246 100644 --- a/packages/osr-code-bot/.vscode/launch.json +++ b/packages/osr-code-bot/.vscode/launch.json @@ -52,7 +52,7 @@ { "type": "node", "request": "launch", - "name": "modify:git", + "name": "git", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -75,7 +75,7 @@ { "type": "node", "request": "launch", - "name": "modify:templates:solidworks", + "name": "templates:solidworks", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -98,7 +98,7 @@ { "type": "node", "request": "launch", - "name": "modify:prompt:docker", + "name": "prompt:docker", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -123,7 +123,7 @@ { "type": "node", "request": "launch", - "name": "modify:iterator", + "name": "iterator", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -152,7 +152,7 @@ { "type": "node", "request": "launch", - "name": "modify:search:google", + "name": "search:google", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -175,7 +175,7 @@ { "type": "node", "request": "launch", - "name": "modify:search:serpapi", + "name": "search:serpapi", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -197,7 +197,7 @@ { "type": "node", "request": "launch", - "name": "modify:interact", + "name": "interact", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -222,7 +222,7 @@ { "type": "node", "request": "launch", - "name": "modify:web", + "name": "web", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -267,7 +267,7 @@ { "type": "node", "request": "launch", - "name": "modify:tools:email", + "name": "tools:email", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -289,7 +289,7 @@ { "type": "node", "request": "launch", - "name": "modify:tools:terminal:astro", + "name": "tools:terminal:astro", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -331,7 +331,7 @@ { "type": "node", "request": "launch", - "name": "modify:tools:search", + "name": "tools:search", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -434,7 +434,7 @@ { "type": "node", "request": "launch", - "name": "modify:each:glob", + "name": "each:glob", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -460,7 +460,7 @@ { "type": "node", "request": "launch", - "name": "modify:each:array", + "name": "each:array", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -492,7 +492,40 @@ { "type": "node", "request": "launch", - "name": "modify:tools:test", + "name": "salamand", + "skipFiles": [], + "program": "${workspaceFolder}\\main.js", + "outFiles": [ + "${workspaceFolder}/**/*.js" + ], + "cwd": "${workspaceFolder}", + "args": [ + "summarize all markdow files as json", + "--logLevel=1", + "--var-test=foo", + "--dry", + "--mode=completion", + "--filters=code", + "--logs=./tests/each", + "--preferences=none", + "--each=gpt-3.5-turbo,gpt-4o", + "--router=openai", + "--include=C:\\Users\\zx\\Desktop\\osr\\osr-mono\\packages\\osr-code-bot\\tests\\salamand\\g1.md C:\\Users\\zx\\Desktop\\osr\\osr-mono\\packages\\osr-code-bot\\tests\\salamand\\g2.md", + "--include=C:\\Users\\zx\\Desktop\\osr\\osr-mono\\packages\\osr-code-bot\\tests\\salamand\\g1.md", + "--dst=./tests/each/${ITEM}.json", + "--disable='npm,terminal,interact,git,search'", + ], + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" + ], + "outputCapture": "std", + "console": "integratedTerminal" + }, + { + "type": "node", + "request": "launch", + "name": "tools:test", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ @@ -521,7 +554,7 @@ { "type": "node", "request": "launch", - "name": "modify:hono", + "name": "hono", "skipFiles": [], "program": "${workspaceFolder}\\main.js", "outFiles": [ diff --git a/packages/osr-code-bot/commands/run.js b/packages/osr-code-bot/commands/run.js index 0eb9afe..79384e4 100644 --- a/packages/osr-code-bot/commands/run.js +++ b/packages/osr-code-bot/commands/run.js @@ -125,8 +125,57 @@ const processRun = async (opts) => { return ret; }; exports.processRun = processRun; +/** + * Extract file paths (Windows or POSIX style) from a single string, + * preserving any spaces within the paths. Needed for Salamand File Manager selections (eg: kbot "summarize, as json" -i $(ListOfSelectedFullNames)) + * - For Windows, it looks for patterns like "C:\" (any drive letter). + * - For POSIX, it looks for a leading slash "/". + * + * Returns an array of path strings. If no matches are found, returns []. + * + */ +function extractPaths(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; + // Collect the start index of each path + while ((match = pathStartRegex.exec(input)) !== null) { + matchIndices.push(match.index); + } + // If none found, return empty + if (!matchIndices.length) { + return []; + } + // Slice from each index to just before the next + const paths = []; + for (let i = 0; i < matchIndices.length; i++) { + const start = matchIndices[i]; + const end = i < matchIndices.length - 1 ? matchIndices[i + 1] : input.length; + const path = input.substring(start, end).trim(); + if (path) { + paths.push(path); + } + } + return paths; +} +function flattenArrays(arrays) { + return arrays.reduce((accumulator, current) => { + return accumulator.concat(current); + }, []); +} const run = async (opts) => { const ret = []; + if (opts.include) { + if ((0, primitives_1.isString)(opts.include)) { + opts.include = extractPaths(opts.include); + } + else if ((0, primitives_1.isArray)(opts.include)) { + opts.include = flattenArrays(opts.include.map(extractPaths)); + } + opts.include = Array.from(new Set(opts.include)); + } if (opts.each) { let items = []; if ((0, primitives_1.isArray)(opts.each)) { @@ -150,9 +199,6 @@ const run = async (opts) => { return ret; } __1.logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`); - if (opts.include && (0, primitives_1.isString)(opts.include)) { - opts.include = [opts.include]; - } const _models = (0, models_1.all)(); for (const item of items) { const itemOpts = { @@ -175,4 +221,4 @@ const run = async (opts) => { return ret; }; exports.run = run; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDRDQUFnRDtBQUNoRCxrREFBc0Q7QUFDdEQsZ0RBQW9EO0FBQ3BELDhDQUFrRDtBQUNsRCx5REFBOEY7QUFDOUYsNERBQStEO0FBRy9ELDJCQUE0QjtBQUM1QixzQ0FBd0M7QUFDeEMsOENBQTZDO0FBQzdDLHNDQUErQjtBQUMvQiwwQ0FBd0M7QUFDeEMsNENBQXdDO0FBQ3hDLHdDQUFnRDtBQUNoRCxvQ0FBNEM7QUFDNUMsc0NBQStDO0FBQy9DLDRDQUF3QztBQUN4Qyw4Q0FBa0Q7QUFFbEQscURBQWdEO0FBQ2hELDJDQUFzQztBQUN0QyxtREFBOEM7QUFFOUMsc0NBQStCO0FBRXhCLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQUUsRUFBRTtJQUVsRCxJQUFJLE9BQU8sR0FBYyxJQUFJLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyRCxJQUFJLENBQUMsSUFBQSxhQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNwQixJQUFBLFVBQUcsRUFBQyxNQUFNLENBQUMsQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNw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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDRDQUFnRDtBQUNoRCxrREFBc0Q7QUFDdEQsZ0RBQW9EO0FBQ3BELDhDQUFrRDtBQUNsRCx5REFBOEY7QUFDOUYsNERBQStEO0FBRy9ELDJCQUE0QjtBQUM1QixzQ0FBd0M7QUFDeEMsOENBQTZDO0FBQzdDLHNDQUErQjtBQUMvQiwwQ0FBd0M7QUFDeEMsNENBQXdDO0FBQ3hDLHdDQUFnRDtBQUNoRCxvQ0FBNEM7QUFDNUMsc0NBQStDO0FBQy9DLDRDQUF3QztBQUN4Qyw4Q0FBa0Q7QUFFbEQscURBQWdEO0FBQ2hELDJDQUFzQztBQUN0QyxtREFBOEM7QUFFOUMsc0NBQStCO0FBRXhCLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQUUsRUFBRTtJQUVsRCxJQUFJLE9BQU8sR0FBYyxJQUFJLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyRCxJQUFJLENBQUMsSUFBQSxhQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNwQixJQUFBLFVBQUcsRUFBQyxNQUFNLENBQUMsQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNw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 \ No newline at end of file diff --git a/packages/osr-code-bot/main.js b/packages/osr-code-bot/main.js index ea794c7..9aebe6a 100644 --- a/packages/osr-code-bot/main.js +++ b/packages/osr-code-bot/main.js @@ -17,10 +17,7 @@ const init_1 = require("./commands/init"); const build_1 = require("./commands/build"); const fetch_1 = require("./commands/fetch"); exports.logger = (0, osr_log_1.createLogger)('llm-tools'); -const modify = async (argv) => { - const ret = await (0, run_1.run)(argv); - return ret; -}; +const modify = async (argv) => await (0, run_1.run)(argv); const yargOptions = { onKey: ((_yargs, key, options) => { switch (key) { @@ -47,4 +44,4 @@ const yargOptions = { .help() .wrap(yargs_1.default.terminalWidth() - 20) .parse(); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxrREFBeUI7QUFDekIsMkNBQXVDO0FBQ3ZDLHdDQUFvQztBQUVwQyxpREFBa0Q7QUFDbEQsNkNBQW1EO0FBRW5ELHlEQUFpRDtBQUNqRCwyREFBeUM7QUFDekMsa0RBQThDO0FBQzlDLDBDQUFzQztBQUN0Qyw0Q0FBd0M7QUFDeEMsNENBQXdDO0FBRTNCLFFBQUEsTUFBTSxHQUFvQixJQUFBLHNCQUFZLEVBQUMsV0FBVyxDQUFDLENBQUE7QUFDaEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxTQUFHLEVBQUMsSUFBaUIsQ0FBQyxDQUFBO0lBQ3hDLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBQ0QsTUFBTSxXQUFXLEdBQVE7SUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQy9CLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLFFBQVE7Z0JBQ1gsQ0FBQztvQkFDQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUN4QyxDQUFDO1lBQ0gsS0FBSyxTQUFTO2dCQUNaLENBQUM7b0JBQ0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFBO2dCQUN0RSxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNILENBQUE7QUFFRCxJQUFBLGVBQUssRUFBQyxJQUFBLGlCQUFPLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3pCLE9BQU8sQ0FDTixNQUFNLEVBQ04sK0JBQStCLEVBQy9CLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFPLEVBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsR0FBRSxFQUFFLFdBQVcsQ0FBQyxFQUN2RCxXQUFJLENBQ0w7S0FDQSxPQUFPLENBQ04saUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBTyxFQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEdBQUUsRUFBRSxXQUFXLENBQUMsRUFDdkQsTUFBTSxDQUNQO0tBQ0EsT0FBTyxDQUNOLE9BQU8sRUFDUCxnQkFBZ0IsRUFDaEIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxrQkFBSyxHQUFFLENBQ2xCO0tBQ0EsT0FBTyxDQUNOLE9BQU8sRUFDUCx1QkFBdUIsRUFDdkIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxhQUFLLEdBQUUsQ0FDbEI7S0FDQSxPQUFPLENBQ04sT0FBTyxFQUNQLCtCQUErQixFQUMvQixDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUNkLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGFBQUssR0FBRSxDQUNsQjtLQUNBLE9BQU8sQ0FDTixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsY0FBVyxDQUNaO0tBQ0EsT0FBTyxDQUNOLFVBQVUsRUFDVixlQUFlLEVBQ2YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxtQkFBUSxDQUNUO0tBQ0EsT0FBTyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEVBQUUsd0JBQXdCLEVBQzFELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFPLEVBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsR0FBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztLQUNqRSxJQUFJLEVBQUU7S0FDTixJQUFJLENBQUMsZUFBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNoQyxLQUFLLEVBQUUsQ0FBQSJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxrREFBeUI7QUFDekIsMkNBQXVDO0FBQ3ZDLHdDQUFvQztBQUVwQyxpREFBa0Q7QUFDbEQsNkNBQW1EO0FBRW5ELHlEQUFpRDtBQUNqRCwyREFBeUM7QUFDekMsa0RBQThDO0FBQzlDLDBDQUFzQztBQUN0Qyw0Q0FBd0M7QUFDeEMsNENBQXdDO0FBRTNCLFFBQUEsTUFBTSxHQUFvQixJQUFBLHNCQUFZLEVBQUMsV0FBVyxDQUFDLENBQUE7QUFDaEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFLENBQUUsTUFBTSxJQUFBLFNBQUcsRUFBQyxJQUFpQixDQUFDLENBQUE7QUFFdkUsTUFBTSxXQUFXLEdBQVE7SUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQy9CLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLFFBQVE7Z0JBQ1gsQ0FBQztvQkFDQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUN4QyxDQUFDO1lBQ0gsS0FBSyxTQUFTO2dCQUNaLENBQUM7b0JBQ0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFBO2dCQUN0RSxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNILENBQUE7QUFFRCxJQUFBLGVBQUssRUFBQyxJQUFBLGlCQUFPLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3pCLE9BQU8sQ0FDTixNQUFNLEVBQ04sK0JBQStCLEVBQy9CLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFPLEVBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsR0FBRSxFQUFFLFdBQVcsQ0FBQyxFQUN2RCxXQUFJLENBQ0w7S0FDQSxPQUFPLENBQ04saUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBTyxFQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEdBQUUsRUFBRSxXQUFXLENBQUMsRUFDdkQsTUFBTSxDQUNQO0tBQ0EsT0FBTyxDQUNOLE9BQU8sRUFDUCxnQkFBZ0IsRUFDaEIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxrQkFBSyxHQUFFLENBQ2xCO0tBQ0EsT0FBTyxDQUNOLE9BQU8sRUFDUCx1QkFBdUIsRUFDdkIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxhQUFLLEdBQUUsQ0FDbEI7S0FDQSxPQUFPLENBQ04sT0FBTyxFQUNQLCtCQUErQixFQUMvQixDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUNkLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGFBQUssR0FBRSxDQUNsQjtLQUNBLE9BQU8sQ0FDTixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsY0FBVyxDQUNaO0tBQ0EsT0FBTyxDQUNOLFVBQVUsRUFDVixlQUFlLEVBQ2YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxtQkFBUSxDQUNUO0tBQ0EsT0FBTyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEVBQUUsd0JBQXdCLEVBQzFELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFPLEVBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsR0FBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztLQUNqRSxJQUFJLEVBQUU7S0FDTixJQUFJLENBQUMsZUFBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNoQyxLQUFLLEVBQUUsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/osr-code-bot/package-lock.json b/packages/osr-code-bot/package-lock.json index 94162b3..cb0b55d 100644 --- a/packages/osr-code-bot/package-lock.json +++ b/packages/osr-code-bot/package-lock.json @@ -16,6 +16,7 @@ "@plastichub/osr-log": "0.1.6", "axios": "1.7.9", "chalk": "4.0.0", + "deepmerge-ts": "7.1.4", "emojilib": "4.0.1", "free-astro-components": "1.1.1", "glob": "11.0.1", @@ -60,12 +61,13 @@ "axios": "^1.7.9", "cheerio": "^1.0.0", "find-up": "^5.0.0", + "glob": "^11.0.1", "inquirer": "^12.2.0", "jsdom": "^25.0.1", "marked": "^15.0.4", "mime-types": "^2.1.35", "nodemailer": "^6.9.16", - "openai": "^4.76.3", + "openai": "^4.80.1", "p-map": "^4.0.0", "puppeteer": "^23.11.1", "screenshot-desktop": "^1.15.0", @@ -85,11 +87,11 @@ "devDependencies": { "@types/jsdom": "^21.1.7", "@types/marked": "^6.0.0", - "@types/node": "^18.19.68", + "@types/node": "^18.19.74", "@types/nodemailer": "^6.4.17", "@types/turndown": "^5.0.5", "@types/yargs": "^17.0.33", - "ts-node": "^10.9.0", + "ts-node": "^10.9.2", "typescript": "^4.9.5" } }, @@ -5137,6 +5139,15 @@ "node": ">=0.10.0" } }, + "node_modules/deepmerge-ts": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.4.tgz", + "integrity": "sha512-fxqo6nHGQ9zOVgI4KXqtWXJR/yCLtC7aXIVq+6jc8tHPFUxlFmuUcm2kC4vztQ+LJxQ3gER/XAWearGYQ8niGA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", diff --git a/packages/osr-code-bot/package.json b/packages/osr-code-bot/package.json index 0b6e1e0..928cfd1 100644 --- a/packages/osr-code-bot/package.json +++ b/packages/osr-code-bot/package.json @@ -28,6 +28,7 @@ "@plastichub/osr-log": "0.1.6", "axios": "1.7.9", "chalk": "4.0.0", + "deepmerge-ts": "7.1.4", "emojilib": "4.0.1", "free-astro-components": "1.1.1", "glob": "11.0.1", diff --git a/packages/osr-code-bot/profile.js b/packages/osr-code-bot/profile.js index 37426f5..885587e 100644 --- a/packages/osr-code-bot/profile.js +++ b/packages/osr-code-bot/profile.js @@ -57,4 +57,4 @@ const load = async (options) => { return profile.variables; }; exports.load = load; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHlEQUF5RDtBQUN6RCxrREFBc0Q7QUFDdEQsZ0RBQWlDO0FBQ2pDLDZEQUE4RDtBQUM5RCxxQ0FBc0M7QUFFdEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUU7SUFDckMsSUFBRyxDQUFDLFdBQVcsRUFBQyxDQUFDO1FBQ2IsT0FBTTtJQUNWLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUEscUJBQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUEsY0FBUSxHQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hFLElBQUcsSUFBQSxhQUFNLEVBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLE9BQWtCLEVBQW1DLEVBQUU7SUFDOUUsSUFBSSxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDM0UsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUE7SUFDdEYsSUFBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUEsYUFBTSxFQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBQSxvQkFBTSxFQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUM7UUFDN0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBQSxzQkFBWSxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQTtJQUMxRixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBUlksUUFBQSxJQUFJLFFBUWhCIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHlEQUF5RDtBQUN6RCxrREFBc0Q7QUFDdEQsZ0RBQWlDO0FBQ2pDLDZEQUF3RTtBQUN4RSxxQ0FBc0M7QUFFdEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUU7SUFDckMsSUFBRyxDQUFDLFdBQVcsRUFBQyxDQUFDO1FBQ2IsT0FBTTtJQUNWLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUEscUJBQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUEsY0FBUSxHQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hFLElBQUcsSUFBQSxhQUFNLEVBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLE9BQWtCLEVBQW1DLEVBQUU7SUFDOUUsSUFBSSxPQUFPLEdBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDckYsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUE7SUFDaEcsSUFBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUEsYUFBTSxFQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBQSxvQkFBTSxFQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUM7UUFDN0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBQSxzQkFBWSxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQTtJQUMxRixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBUlksUUFBQSxJQUFJLFFBUWhCIn0= \ No newline at end of file diff --git a/packages/osr-code-bot/src/commands/run.ts b/packages/osr-code-bot/src/commands/run.ts index b47c396..c60e5d0 100644 --- a/packages/osr-code-bot/src/commands/run.ts +++ b/packages/osr-code-bot/src/commands/run.ts @@ -55,10 +55,10 @@ export const processRun = async (opts: IKBotTask) => { options.collector = collector(options, client) let messages: Array = [] - + messages.push(await prompt(opts)) messages.push(await preferences(opts)) - + let files = await get(path.resolve(options.path), options.include) || [] files = files.map(f => { return { ...f, role: 'user' } }) messages = [...messages as any, ...files] @@ -106,12 +106,65 @@ export const processRun = async (opts: IKBotTask) => { return ret } -export const run = async (opts: IKBotTask) => { - const ret = [] +/** + * Extract file paths (Windows or POSIX style) from a single string, + * preserving any spaces within the paths. Needed for Salamand File Manager selections (eg: kbot "summarize, as json" -i $(ListOfSelectedFullNames)) + * - For Windows, it looks for patterns like "C:\" (any drive letter). + * - For POSIX, it looks for a leading slash "/". + * + * Returns an array of path strings. If no matches are found, returns []. + * + */ +function extractPaths(input: string): string[] { + // 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[] = []; + let match: RegExpExecArray | null; + + // Collect the start index of each path + while ((match = pathStartRegex.exec(input)) !== null) { + matchIndices.push(match.index); + } + + // If none found, return empty + if (!matchIndices.length) { + return []; + } + + // Slice from each index to just before the next + const paths: string[] = []; + for (let i = 0; i < matchIndices.length; i++) { + const start = matchIndices[i]; + const end = i < matchIndices.length - 1 ? matchIndices[i + 1] : input.length; + const path = input.substring(start, end).trim(); + if (path) { + paths.push(path); + } + } + + return paths; +} + +function flattenArrays(arrays: T[][]): T[] { + return arrays.reduce((accumulator, current) => { + return accumulator.concat(current); + }, [] as T[]); +} + +export const run = async (opts: IKBotTask) => { + const ret = [] + if (opts.include) { + if (isString(opts.include)) { + opts.include = extractPaths(opts.include) + }else if (isArray(opts.include)) { + opts.include = flattenArrays(opts.include.map(extractPaths)) + } + opts.include = Array.from(new Set(opts.include)) + } if (opts.each) { let items: string[] = [] - if (isArray(opts.each)) { items = opts.each } else if (exists(opts.each) && isFile(opts.each) && path.parse(opts.each).ext === '.json') { @@ -129,11 +182,7 @@ export const run = async (opts: IKBotTask) => { return ret } logger.info(`Processing ${items.length} items matching pattern ${opts.each}...`) - if (opts.include && isString(opts.include)) { - opts.include = [opts.include as any] - } const _models = all() - for (const item of items) { const itemOpts = { ...opts, @@ -142,10 +191,9 @@ export const run = async (opts: IKBotTask) => { } //override model if item is a model id const model = _models.find(m => m.id === item) - if(model){ + if (model) { itemOpts.model = item } - itemOpts.include = [...opts.include, ...[forward_slash(item)]] ret.push(await processRun(itemOpts)) } diff --git a/packages/osr-code-bot/src/main.ts b/packages/osr-code-bot/src/main.ts index 6773387..e031e4b 100644 --- a/packages/osr-code-bot/src/main.ts +++ b/packages/osr-code-bot/src/main.ts @@ -14,10 +14,8 @@ import { build } from './commands/build' import { fetch } from './commands/fetch' export const logger: Logger = createLogger('llm-tools') -const modify = async (argv: IKBotTask) => { - const ret = await run(argv as IKBotTask) - return ret -} +const modify = async (argv: IKBotTask) => await run(argv as IKBotTask) + const yargOptions: any = { onKey: ((_yargs, key, options) => { switch (key) { diff --git a/packages/osr-code-bot/src/merge.ts b/packages/osr-code-bot/src/merge.ts new file mode 100644 index 0000000..1c0a0d0 --- /dev/null +++ b/packages/osr-code-bot/src/merge.ts @@ -0,0 +1,28 @@ +import { isString } from '@plastichub/core/primitives' +import { sync as read } from '@plastichub/fs/read' +import { logger } from '..' +import { deepmerge as merge } from 'deepmerge-ts' +export const deepMerge = async (target: string, source: any) => { + if (!isString(target) || !source) { + logger.error(`Invalid deepmerge parameters:`, target, source) + return source + } + target = read(target, 'json') as any || [] + try { + source = isString(source) ? JSON.parse(source) : source + } catch (e) { + logger.error('Error parsing completion:', e) + return source + } + try { + const ret = merge(target, source) + return JSON.stringify(ret, null, 2) + } catch (error) { + logger.error('Error merging completion:', error) + } + return target; +} +export const mergers = +{ + json: deepMerge +} diff --git a/packages/osr-code-bot/src/profile.ts b/packages/osr-code-bot/src/profile.ts index 5d2b88d..76f3ada 100644 --- a/packages/osr-code-bot/src/profile.ts +++ b/packages/osr-code-bot/src/profile.ts @@ -2,7 +2,7 @@ import { IKBotTask } from "./types" import { isFile, resolve } from '@plastichub/osr-commons' import { sync as exists } from '@plastichub/fs/exists' import * as path from 'node:path' -import { parseProfile } from '@plastichub/osr-commons/profile' +import { IProfile, parseProfile } from '@plastichub/osr-commons/profile' import { env_vars } from './utils/env' const testPath = (profilePath: string) => { @@ -14,8 +14,8 @@ const testPath = (profilePath: string) => { } export const load = async (options: IKBotTask): Promise> => { - let profile = { includes: [], variables: options.variables || {}, env: {} } - let profilePath = testPath(options.profile || path.join(options.logs, 'profile.json')) + let profile: IProfile = { includes: [], variables: options.variables || {}, env: {} } + let profilePath = testPath(options.profile || path.join(options.logs as string, 'profile.json')) if(!profilePath || !exists(profilePath) || !isFile(profilePath)){ return profile.variables } diff --git a/packages/osr-code-bot/tests/iterator/g1.md b/packages/osr-code-bot/tests/iterator/g1.md index 5a2bf87..59dc72b 100644 --- a/packages/osr-code-bot/tests/iterator/g1.md +++ b/packages/osr-code-bot/tests/iterator/g1.md @@ -1,5 +1,5 @@ -1. **Initial Inspection**: +1. **Initial Inspection**: - Inspect the lathe for wear and damage. Identify parts that need replacement. -2. **Disassembly**: +2. **Disassembly**: - Carefully disassemble the lathe, keeping track of each part and its placement. Use labels or a diagram to avoid confusion during reassembly. diff --git a/packages/osr-code-bot/tests/salamand/g1.md b/packages/osr-code-bot/tests/salamand/g1.md new file mode 100644 index 0000000..d780a57 --- /dev/null +++ b/packages/osr-code-bot/tests/salamand/g1.md @@ -0,0 +1,11 @@ +1. **Initial Inspection**: + - Inspect the lathe for wear and damage. Identify parts that need replacement. + +2. **Disassembly**: + - Carefully disassemble the lathe, keeping track of each part and its placement. Use labels or a diagram to avoid confusion during reassembly. + +3. **Cleaning**: + - Clean all parts thoroughly to remove oil, debris, and rust. Use appropriate cleaning agents for different materials. + +4. **Replacing Worn Parts**: + - Acquire replacement parts for those that are worn or damaged. This may include bearings, gears, or belts. diff --git a/packages/osr-code-bot/tests/salamand/g2.md b/packages/osr-code-bot/tests/salamand/g2.md new file mode 100644 index 0000000..a3bc1c4 --- /dev/null +++ b/packages/osr-code-bot/tests/salamand/g2.md @@ -0,0 +1,17 @@ +5. **Lubrication**: + - Lubricate moving parts to ensure smooth operation. Use the correct type of oil or grease as per the manufacturer's recommendations. + +6. **Reassembly**: + - Assemble the lathe, following your labels or diagram. Ensure all components are properly aligned and tightened. + +7. **Calibration**: + - Calibrate the lathe to ensure precision. Adjust settings such as alignment and tension. + +8. **Testing**: + - Test the lathe under controlled conditions to ensure it operates correctly. Look for any signs of malfunction or misalignment. + +9. **Fine-tuning**: + - Make necessary adjustments to optimize performance and precision. + +10. **Final Inspection**: + - Conduct a thorough final inspection. Ensure that the lathe operates smoothly and is ready for use. diff --git a/packages/osr-code-bot/tests/salamand/sum.json b/packages/osr-code-bot/tests/salamand/sum.json new file mode 100644 index 0000000..51c0821 --- /dev/null +++ b/packages/osr-code-bot/tests/salamand/sum.json @@ -0,0 +1,54 @@ +{ + "hatua": [ + { + "namba": 1, + "kichwa": "Ukaguzi wa Awali", + "maelezo": "Kagua cherehani kwa uchakavu na uharibifu. Tambua sehemu zinazohitaji kubadilishwa." + }, + { + "namba": 2, + "kichwa": "Kubandua", + "maelezo": "Bandua cherehani kwa uangalifu, ukiweka alama kwa kila sehemu. Tumia lebo au mchoro kuepuka kuchanganyikiwa wakati wa kuunganisha." + }, + { + "namba": 3, + "kichwa": "Kusafisha", + "maelezo": "Safisha sehemu zote kwa undani kuondoa mafuta, uchafu, na kutu. Tumia vifaa vya usafishaji vinavyofaa." + }, + { + "namba": 4, + "kichwa": "Kubadilisha Sehemu Chakavu", + "maelezo": "Pata vipuri vipya kwa sehemu zilizochakaa au kuharibiwa. Hii inaweza kujumuisha bearing, gear, au belt." + }, + { + "namba": 5, + "kichwa": "Upakaji Mafuta", + "maelezo": "Paka mafuta kwenye sehemu zinazosogea. Tumia aina sahihi ya mafuta kulingana na maelekezo ya mtengenezaji." + }, + { + "namba": 6, + "kichwa": "Kuunganisha", + "maelezo": "Unganisha cherehani, ukifuata lebo au mchoro wako. Hakikisha sehemu zote zimepangwa vizuri." + }, + { + "namba": 7, + "kichwa": "Urekebishaji", + "maelezo": "Rekebisha cherehani kuhakikisha usahihi. Sawazisha mpangilio na mvutano." + }, + { + "namba": 8, + "kichwa": "Upimaji", + "maelezo": "Jaribu cherehani chini ya hali thabiti kuhakikisha inafanya kazi vizuri." + }, + { + "namba": 9, + "kichwa": "Marekebisho Madogo", + "maelezo": "Fanya marekebisho muhimu kuboresha utendaji na usahihi." + }, + { + "namba": 10, + "kichwa": "Ukaguzi wa Mwisho", + "maelezo": "Fanya ukaguzi wa kina wa mwisho. Hakikisha cherehani inafanya kazi vizuri na iko tayari kutumika." + } + ] +} \ No newline at end of file diff --git a/packages/osr-code-bot/tests/salamand/test.sh b/packages/osr-code-bot/tests/salamand/test.sh new file mode 100644 index 0000000..ecc6669 --- /dev/null +++ b/packages/osr-code-bot/tests/salamand/test.sh @@ -0,0 +1 @@ +kbotd "summarize, as json, in swahili, add a field for the step number" -i "C:\Users\zx\Desktop\osr\osr-mono\packages\osr-code-bot\tests\salamand\g2.md C:\Users\zx\Desktop\osr\osr-mono\packages\osr-code-bot\tests\salamand\g1.md" --mode=completion --dst=sum.json \ No newline at end of file