diff --git a/packages/kbot/.vscode/launch.json b/packages/kbot/.vscode/launch.json index 84d72409..b805a8a3 100644 --- a/packages/kbot/.vscode/launch.json +++ b/packages/kbot/.vscode/launch.json @@ -741,6 +741,29 @@ "!**/node_modules/**" ], "outputCapture": "std" + }, + { + "type": "node", + "request": "launch", + "name": "each:image", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}/dist-in/main.js", + "args": [ + "--router2=openai", + "--model=meta-llama/llama-3.2-90b-vision-instruct", + "--prompt=./tests/pdf/prompt_manual.md", + "--each=./tests/pdf/780/*.jpg", // Note: Glob pattern passed directly + "--mode=completion", + "--preferences=none", + "--dst=./tests/pdf/sako_manual.md", + "--filters=code", + "--append=concat" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "outputCapture": "std" } ] } \ No newline at end of file diff --git a/packages/kbot/dist-in/commands/run.d.ts b/packages/kbot/dist-in/commands/run.d.ts index b7001aa6..5d59a5f8 100644 --- a/packages/kbot/dist-in/commands/run.d.ts +++ b/packages/kbot/dist-in/commands/run.d.ts @@ -1,6 +1,7 @@ import { ChatCompletionToolRunnerParams } from 'openai/lib/ChatCompletionRunner'; import { ChatCompletionMessageParam } from 'openai/resources/index.mjs'; import { IKBotTask } from '@polymech/ai-tools'; +export declare const default_sort: (files: string[]) => string[]; type ProcessRunResult = string | boolean | Record | null; /** * Complete options by setting up defaults, validating inputs, and initializing required components diff --git a/packages/kbot/dist-in/commands/run.js b/packages/kbot/dist-in/commands/run.js index 06198847..461c17c8 100644 --- a/packages/kbot/dist-in/commands/run.js +++ b/packages/kbot/dist-in/commands/run.js @@ -22,6 +22,23 @@ import { runTools } from './run-tools.js'; import { runAssistant } from './run-assistant.js'; import { all } from '../models/index.js'; import { getLogger } from '../index.js'; +export const default_sort = (files) => { + const getSortableParts = (filename) => { + const baseName = path.parse(filename).name; + const match = baseName.match(/^(\d+)_?(.*)$/); // Match leading numbers + const numPart = match ? parseInt(match[1], 10) : NaN; + const textPart = match ? match[2] : baseName; // Extract text part + return { numPart, textPart }; + }; + return files.sort((a, b) => { + const { numPart: aNum, textPart: aText } = getSortableParts(a); + const { numPart: bNum, textPart: bText } = getSortableParts(b); + if (!isNaN(aNum) && !isNaN(bNum)) { + return aNum - bNum || aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + } + return aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + }); +}; /** * Complete options by setting up defaults, validating inputs, and initializing required components * @@ -240,8 +257,10 @@ export const run = async (opts) => { items = read(opts.each, 'json') || []; } else if (hasMagic(opts.each)) { - const info = pathInfoEx(forward_slash(path.resolve(resolve(opts.each)))); - items = info.FILES; + const info = pathInfoEx(forward_slash(path.resolve(resolve(opts.each))), false, { + absolute: true, + }); + items = default_sort(info.FILES); } else if (isFile(opts.each) && exists(opts.each)) { items = [opts.each]; @@ -281,4 +300,4 @@ export const run = async (opts) => { } return ret; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLElBQUksV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQy9DLE9BQU8sRUFB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLElBQUksV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQy9DLE9BQU8sRUFB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LENBQUMsQ0FBQTtJQUN6RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksT0FBTyxDQUFDLElBQUksTUFBTSxPQUFPLENBQUMsS0FBSyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sS0FBSyxDQUFDLE1BQU0sdUJBQXVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN1IsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEtBQUssTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxNQUFNLHVCQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNwTixDQUFDO0lBQ0QsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUE7SUFDakQsTUFBTSxHQUFHLEdBQUcsTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMs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 \ No newline at end of file diff --git a/packages/kbot/dist-in/utils/merge.d.ts b/packages/kbot/dist-in/utils/merge.d.ts new file mode 100644 index 00000000..9785b4ee --- /dev/null +++ b/packages/kbot/dist-in/utils/merge.d.ts @@ -0,0 +1,28 @@ +/** + * Appends new content to existing content. + * + * @param existingContent - The original content string. + * @param newContent - The content string to append. + * @returns The combined string with new content appended. + */ +export declare function concat(existingContent: string, newContent: string): string; +/** + * Merges new content into existing content. + * For now, this simply concatenates with a newline separator. + * TODO: Implement more sophisticated merging logic if needed (e.g., JSON merge). + * + * @param existingContent - The original content string. + * @param newContent - The content string to merge/append. + * @returns The combined string. + */ +export declare function merge(existingContent: string, newContent: string): string; +/** + * Writes content to a destination file, handling append/merge logic if the file exists. + * + * @param dstPath - The absolute path to the destination file. + * @param content - The content to write. + * @param appendMode - Optional mode ('concat' or 'merge') to handle existing files. + * @param logger - Optional logger instance conforming to SimpleLogger. + * @returns The final content written to the file or the original content if read fails. + */ +export declare function writeOrAppend(dstPath: string, content: string, appendMode?: 'concat' | 'merge'): string; diff --git a/packages/kbot/dist-in/utils/merge.js b/packages/kbot/dist-in/utils/merge.js new file mode 100644 index 00000000..c5a1ce00 --- /dev/null +++ b/packages/kbot/dist-in/utils/merge.js @@ -0,0 +1,54 @@ +import { sync as exists } from '@polymech/fs/exists'; +import { sync as read } from '@polymech/fs/read'; +import { sync as write } from '@polymech/fs/write'; +/** + * Appends new content to existing content. + * + * @param existingContent - The original content string. + * @param newContent - The content string to append. + * @returns The combined string with new content appended. + */ +export function concat(existingContent, newContent) { + return existingContent + '\n\n' + newContent + '\n'; +} +/** + * Merges new content into existing content. + * For now, this simply concatenates with a newline separator. + * TODO: Implement more sophisticated merging logic if needed (e.g., JSON merge). + * + * @param existingContent - The original content string. + * @param newContent - The content string to merge/append. + * @returns The combined string. + */ +export function merge(existingContent, newContent) { + // Placeholder: Simple concatenation + // Potential future implementation: Detect JSON/YAML and perform structured merge + return existingContent + '\n' + newContent; +} +/** + * Writes content to a destination file, handling append/merge logic if the file exists. + * + * @param dstPath - The absolute path to the destination file. + * @param content - The content to write. + * @param appendMode - Optional mode ('concat' or 'merge') to handle existing files. + * @param logger - Optional logger instance conforming to SimpleLogger. + * @returns The final content written to the file or the original content if read fails. + */ +export function writeOrAppend(dstPath, content, appendMode) { + let finalContent = content; + if (exists(dstPath) && appendMode) { + const existingContentBuffer = read(dstPath); // Read returns Buffer | undefined + if (existingContentBuffer) { // Check if read was successful + const existingContent = existingContentBuffer.toString(); + if (appendMode === 'concat') { + finalContent = concat(existingContent, content); + } + else if (appendMode === 'merge') { + finalContent = merge(existingContent, content); // Using placeholder merge for now + } + } + } + write(dstPath, finalContent); + return finalContent; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxlQUF1QixFQUFFLFVBQWtCO0lBQ2hFLE9BQU8sZUFBZSxHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFBO0FBQ3JELENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsZUFBdUIsRUFBRSxVQUFrQjtJQUMvRCxvQ0FBb0M7SUFDcEMsaUZBQWlGO0lBQ2pGLE9BQU8sZUFBZSxHQUFHLElBQUksR0FBRyxVQUFVLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUErQjtJQUUvQixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDM0IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFDL0UsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUMsK0JBQStCO1lBQzFELE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQzVCLE9BQU8sWUFBWSxDQUFBO0FBQ3JCLENBQUMifQ== \ No newline at end of file diff --git a/packages/kbot/src/commands/run.ts b/packages/kbot/src/commands/run.ts index 2bceb96e..bbba40a8 100644 --- a/packages/kbot/src/commands/run.ts +++ b/packages/kbot/src/commands/run.ts @@ -28,6 +28,24 @@ import { runAssistant } from './run-assistant.js' import { all } from '../models/index.js' import { getLogger } from '../index.js' +export const default_sort = (files: string[]): string[] => { + const getSortableParts = (filename: string) => { + const baseName = path.parse(filename).name; + const match = baseName.match(/^(\d+)_?(.*)$/); // Match leading numbers + const numPart = match ? parseInt(match[1], 10) : NaN; + const textPart = match ? match[2] : baseName; // Extract text part + + return { numPart, textPart }; + } + return files.sort((a, b) => { + const { numPart: aNum, textPart: aText } = getSortableParts(a) + const { numPart: bNum, textPart: bText } = getSortableParts(b) + if (!isNaN(aNum) && !isNaN(bNum)) { + return aNum - bNum || aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }) + } + return aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }) + }) +} type ProcessRunResult = string | boolean | Record | null; @@ -293,8 +311,10 @@ export const run = async (opts: IKBotTask): Promise => { } else if (exists(opts.each) && isFile(opts.each) && path.parse(opts.each).ext === '.json') { items = read(opts.each, 'json') as [] || [] } else if (hasMagic(opts.each)) { - const info = pathInfoEx(forward_slash(path.resolve(resolve(opts.each)))) - items = info.FILES + const info = pathInfoEx(forward_slash(path.resolve(resolve(opts.each))),false,{ + absolute: true, + }) + items = default_sort(info.FILES) } else if (isFile(opts.each) && exists(opts.each)) { items = [opts.each] } else if (isString(opts.each)) { diff --git a/packages/kbot/src/utils/merge.ts b/packages/kbot/src/utils/merge.ts new file mode 100644 index 00000000..de159bd5 --- /dev/null +++ b/packages/kbot/src/utils/merge.ts @@ -0,0 +1,59 @@ +import { sync as exists } from '@polymech/fs/exists' +import { sync as read } from '@polymech/fs/read' +import { sync as write } from '@polymech/fs/write' + +/** + * Appends new content to existing content. + * + * @param existingContent - The original content string. + * @param newContent - The content string to append. + * @returns The combined string with new content appended. + */ +export function concat(existingContent: string, newContent: string): string { + return existingContent + '\n\n' + newContent + '\n' +} + +/** + * Merges new content into existing content. + * For now, this simply concatenates with a newline separator. + * TODO: Implement more sophisticated merging logic if needed (e.g., JSON merge). + * + * @param existingContent - The original content string. + * @param newContent - The content string to merge/append. + * @returns The combined string. + */ +export function merge(existingContent: string, newContent: string): string { + // Placeholder: Simple concatenation + // Potential future implementation: Detect JSON/YAML and perform structured merge + return existingContent + '\n' + newContent; +} + +/** + * Writes content to a destination file, handling append/merge logic if the file exists. + * + * @param dstPath - The absolute path to the destination file. + * @param content - The content to write. + * @param appendMode - Optional mode ('concat' or 'merge') to handle existing files. + * @param logger - Optional logger instance conforming to SimpleLogger. + * @returns The final content written to the file or the original content if read fails. + */ +export function writeOrAppend( + dstPath: string, + content: string, + appendMode?: 'concat' | 'merge' +): string { + let finalContent = content; + if (exists(dstPath) && appendMode) { + const existingContentBuffer = read(dstPath); // Read returns Buffer | undefined + if (existingContentBuffer) { // Check if read was successful + const existingContent = existingContentBuffer.toString(); + if (appendMode === 'concat') { + finalContent = concat(existingContent, content); + } else if (appendMode === 'merge') { + finalContent = merge(existingContent, content); // Using placeholder merge for now + } + } + } + write(dstPath, finalContent) + return finalContent +} \ No newline at end of file diff --git a/packages/kbot/tests/pdf/780/manual.pdf b/packages/kbot/tests/pdf/780/manual.pdf new file mode 100644 index 00000000..d5094ecc Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual.pdf differ diff --git a/packages/kbot/tests/pdf/780/manual_19.jpg b/packages/kbot/tests/pdf/780/manual_19.jpg new file mode 100644 index 00000000..fddfafd6 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_19.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_20.jpg b/packages/kbot/tests/pdf/780/manual_20.jpg new file mode 100644 index 00000000..6fa9c6bb Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_20.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_21.jpg b/packages/kbot/tests/pdf/780/manual_21.jpg new file mode 100644 index 00000000..4f225c5b Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_21.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_22.jpg b/packages/kbot/tests/pdf/780/manual_22.jpg new file mode 100644 index 00000000..17213888 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_22.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_23.jpg b/packages/kbot/tests/pdf/780/manual_23.jpg new file mode 100644 index 00000000..e1ff8571 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_23.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_24.jpg b/packages/kbot/tests/pdf/780/manual_24.jpg new file mode 100644 index 00000000..546c3272 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_24.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_25.jpg b/packages/kbot/tests/pdf/780/manual_25.jpg new file mode 100644 index 00000000..6381b0d4 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_25.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_26.jpg b/packages/kbot/tests/pdf/780/manual_26.jpg new file mode 100644 index 00000000..071a85d8 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_26.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_27.jpg b/packages/kbot/tests/pdf/780/manual_27.jpg new file mode 100644 index 00000000..08bbfb68 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_27.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_28.jpg b/packages/kbot/tests/pdf/780/manual_28.jpg new file mode 100644 index 00000000..025ce964 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_28.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_29.jpg b/packages/kbot/tests/pdf/780/manual_29.jpg new file mode 100644 index 00000000..8f0af367 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_29.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_30.jpg b/packages/kbot/tests/pdf/780/manual_30.jpg new file mode 100644 index 00000000..f6547bcc Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_30.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_31.jpg b/packages/kbot/tests/pdf/780/manual_31.jpg new file mode 100644 index 00000000..377fe04b Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_31.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_32.jpg b/packages/kbot/tests/pdf/780/manual_32.jpg new file mode 100644 index 00000000..d7902eb7 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_32.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_33.jpg b/packages/kbot/tests/pdf/780/manual_33.jpg new file mode 100644 index 00000000..e121a197 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_33.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_34.jpg b/packages/kbot/tests/pdf/780/manual_34.jpg new file mode 100644 index 00000000..9fc36aa6 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_34.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_35.jpg b/packages/kbot/tests/pdf/780/manual_35.jpg new file mode 100644 index 00000000..b349b0ba Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_35.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_36.jpg b/packages/kbot/tests/pdf/780/manual_36.jpg new file mode 100644 index 00000000..2b21124a Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_36.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_37.jpg b/packages/kbot/tests/pdf/780/manual_37.jpg new file mode 100644 index 00000000..d935c0b7 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_37.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_38.jpg b/packages/kbot/tests/pdf/780/manual_38.jpg new file mode 100644 index 00000000..f2663a37 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_38.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_39.jpg b/packages/kbot/tests/pdf/780/manual_39.jpg new file mode 100644 index 00000000..4a506b27 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_39.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_40.jpg b/packages/kbot/tests/pdf/780/manual_40.jpg new file mode 100644 index 00000000..6dea2a77 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_40.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_41.jpg b/packages/kbot/tests/pdf/780/manual_41.jpg new file mode 100644 index 00000000..fb6579ae Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_41.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_42.jpg b/packages/kbot/tests/pdf/780/manual_42.jpg new file mode 100644 index 00000000..63f2b391 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_42.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_43.jpg b/packages/kbot/tests/pdf/780/manual_43.jpg new file mode 100644 index 00000000..0da4273f Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_43.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_44.jpg b/packages/kbot/tests/pdf/780/manual_44.jpg new file mode 100644 index 00000000..3dca5f64 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_44.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_45.jpg b/packages/kbot/tests/pdf/780/manual_45.jpg new file mode 100644 index 00000000..e9824e3a Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_45.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_46.jpg b/packages/kbot/tests/pdf/780/manual_46.jpg new file mode 100644 index 00000000..3cc3da4c Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_46.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_47.jpg b/packages/kbot/tests/pdf/780/manual_47.jpg new file mode 100644 index 00000000..61eef058 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_47.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_48.jpg b/packages/kbot/tests/pdf/780/manual_48.jpg new file mode 100644 index 00000000..952d398c Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_48.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_49.jpg b/packages/kbot/tests/pdf/780/manual_49.jpg new file mode 100644 index 00000000..e02b5823 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_49.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_50.jpg b/packages/kbot/tests/pdf/780/manual_50.jpg new file mode 100644 index 00000000..fd65d178 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_50.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_51.jpg b/packages/kbot/tests/pdf/780/manual_51.jpg new file mode 100644 index 00000000..f5d833c7 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_51.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_52.jpg b/packages/kbot/tests/pdf/780/manual_52.jpg new file mode 100644 index 00000000..091417d0 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_52.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_53.jpg b/packages/kbot/tests/pdf/780/manual_53.jpg new file mode 100644 index 00000000..65548a45 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_53.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_54.jpg b/packages/kbot/tests/pdf/780/manual_54.jpg new file mode 100644 index 00000000..01f8e0fe Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_54.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_55.jpg b/packages/kbot/tests/pdf/780/manual_55.jpg new file mode 100644 index 00000000..56af6c99 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_55.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_56.jpg b/packages/kbot/tests/pdf/780/manual_56.jpg new file mode 100644 index 00000000..f5ae9c25 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_56.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_57.jpg b/packages/kbot/tests/pdf/780/manual_57.jpg new file mode 100644 index 00000000..c91c08d7 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_57.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_58.jpg b/packages/kbot/tests/pdf/780/manual_58.jpg new file mode 100644 index 00000000..ce793063 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_58.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_59.jpg b/packages/kbot/tests/pdf/780/manual_59.jpg new file mode 100644 index 00000000..1ca21e8f Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_59.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_60.jpg b/packages/kbot/tests/pdf/780/manual_60.jpg new file mode 100644 index 00000000..4e80b847 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_60.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_61.jpg b/packages/kbot/tests/pdf/780/manual_61.jpg new file mode 100644 index 00000000..ceb80391 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_61.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_62.jpg b/packages/kbot/tests/pdf/780/manual_62.jpg new file mode 100644 index 00000000..dc02d85a Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_62.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_63.jpg b/packages/kbot/tests/pdf/780/manual_63.jpg new file mode 100644 index 00000000..bf95cf92 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_63.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_64.jpg b/packages/kbot/tests/pdf/780/manual_64.jpg new file mode 100644 index 00000000..f5b18a6b Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_64.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_65.jpg b/packages/kbot/tests/pdf/780/manual_65.jpg new file mode 100644 index 00000000..9af99acd Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_65.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_66.jpg b/packages/kbot/tests/pdf/780/manual_66.jpg new file mode 100644 index 00000000..b7b40234 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_66.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_67.jpg b/packages/kbot/tests/pdf/780/manual_67.jpg new file mode 100644 index 00000000..1685b1c0 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_67.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_68.jpg b/packages/kbot/tests/pdf/780/manual_68.jpg new file mode 100644 index 00000000..2b03124c Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_68.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_69.jpg b/packages/kbot/tests/pdf/780/manual_69.jpg new file mode 100644 index 00000000..4c7eda83 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_69.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_70.jpg b/packages/kbot/tests/pdf/780/manual_70.jpg new file mode 100644 index 00000000..5eaec794 Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_70.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_71.jpg b/packages/kbot/tests/pdf/780/manual_71.jpg new file mode 100644 index 00000000..fd07449f Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_71.jpg differ diff --git a/packages/kbot/tests/pdf/780/manual_72.jpg b/packages/kbot/tests/pdf/780/manual_72.jpg new file mode 100644 index 00000000..267f09bc Binary files /dev/null and b/packages/kbot/tests/pdf/780/manual_72.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-1.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-1.jpg new file mode 100644 index 00000000..6b60de11 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-1.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-10.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-10.jpg new file mode 100644 index 00000000..c5621070 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-10.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-11.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-11.jpg new file mode 100644 index 00000000..05e57305 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-11.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-12.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-12.jpg new file mode 100644 index 00000000..f93f7e6e Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-12.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-13.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-13.jpg new file mode 100644 index 00000000..6fb102ca Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-13.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-14.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-14.jpg new file mode 100644 index 00000000..45417849 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-14.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-15.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-15.jpg new file mode 100644 index 00000000..aca3f455 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-15.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-16.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-16.jpg new file mode 100644 index 00000000..2f4aff6c Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-16.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-17.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-17.jpg new file mode 100644 index 00000000..bcd07320 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-17.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-18.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-18.jpg new file mode 100644 index 00000000..ebf2a504 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-18.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-19.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-19.jpg new file mode 100644 index 00000000..b2bcaf50 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-19.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-2.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-2.jpg new file mode 100644 index 00000000..0e7cd435 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-2.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-20.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-20.jpg new file mode 100644 index 00000000..dacef5bd Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-20.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-21.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-21.jpg new file mode 100644 index 00000000..491a7834 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-21.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-22.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-22.jpg new file mode 100644 index 00000000..d247585c Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-22.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-23.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-23.jpg new file mode 100644 index 00000000..1345b09b Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-23.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-24.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-24.jpg new file mode 100644 index 00000000..51f68643 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-24.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-25.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-25.jpg new file mode 100644 index 00000000..133f2ae1 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-25.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-26.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-26.jpg new file mode 100644 index 00000000..3f9f7305 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-26.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-27.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-27.jpg new file mode 100644 index 00000000..5554424d Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-27.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-28.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-28.jpg new file mode 100644 index 00000000..6198655a Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-28.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-29.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-29.jpg new file mode 100644 index 00000000..368a87c9 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-29.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-3.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-3.jpg new file mode 100644 index 00000000..7e489d07 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-3.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-4.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-4.jpg new file mode 100644 index 00000000..7fa2538a Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-4.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-5.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-5.jpg new file mode 100644 index 00000000..a9b1b38a Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-5.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-6.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-6.jpg new file mode 100644 index 00000000..21b56e64 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-6.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-7.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-7.jpg new file mode 100644 index 00000000..20c3cc2b Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-7.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-8.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-8.jpg new file mode 100644 index 00000000..40cb14b0 Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-8.jpg differ diff --git a/packages/kbot/tests/pdf/RS485-780/RS485-780-9.jpg b/packages/kbot/tests/pdf/RS485-780/RS485-780-9.jpg new file mode 100644 index 00000000..e712d62b Binary files /dev/null and b/packages/kbot/tests/pdf/RS485-780/RS485-780-9.jpg differ diff --git a/packages/kbot/tests/pdf/extract.sh b/packages/kbot/tests/pdf/extract.sh new file mode 100644 index 00000000..77b3f612 --- /dev/null +++ b/packages/kbot/tests/pdf/extract.sh @@ -0,0 +1,6 @@ +kbot-d --router2=openai --model=google/gemini-2.5-pro-preview-03-25 \ + --prompt=./tests/pdf/prompt.md \ + --each=./tests/pdf/RS485-780/RS485-780-*.jpg \ + --mode=completion --preferences=none \ + --dst=./tests/pdf/sako.md \ + --filters=code --append=concat diff --git a/packages/kbot/tests/pdf/extract_manual.sh b/packages/kbot/tests/pdf/extract_manual.sh new file mode 100644 index 00000000..665669f1 --- /dev/null +++ b/packages/kbot/tests/pdf/extract_manual.sh @@ -0,0 +1,6 @@ +kbot-d --router2=openai --model=meta-llama/llama-3.2-90b-vision-instruct \ + --prompt=./tests/pdf/prompt_manual.md \ + --each=./tests/pdf/780/*.jpg \ + --mode=completion --preferences=none \ + --dst=./tests/pdf/sako_manual.md \ + --filters=code --append=concat diff --git a/packages/kbot/tests/pdf/prompt.md b/packages/kbot/tests/pdf/prompt.md new file mode 100644 index 00000000..1c4a1131 --- /dev/null +++ b/packages/kbot/tests/pdf/prompt.md @@ -0,0 +1,14 @@ + +Extract all Modbus read & write registers, as Markdown table. If none can be identified, abort and return message "No registers found" !! + + +## Columns +- type (read/write holding register/coil) as function code +- description +- address in Hex +- address in decimal +- if provided, parameter group + +- Dont comment or explain, just return Markdown +- insert new lines before and after headers +- insert a descriptive chapter name, header level 3 with the page number diff --git a/packages/kbot/tests/pdf/prompt_manual.md b/packages/kbot/tests/pdf/prompt_manual.md new file mode 100644 index 00000000..754dff1f --- /dev/null +++ b/packages/kbot/tests/pdf/prompt_manual.md @@ -0,0 +1,28 @@ + +Extract all parameters, as Markdown tables, return "Skipping Number Page : Nothing found" if nothing has been found, otherwise use this layout and structure (only valid Markdown!!) + + +## Parameters + +### Columns + +- parameter +- description +- if provided, parameter group +- range +- default +- Dont comment or explain, just return Markdown +- insert new lines before and after headers +- insert a descriptive chapter name, header level 3 with the page number + +## Error Codes + +### Columns + +- code +- description +- if provided, parameter group +- Dont comment or explain, just return Markdown +- insert new lines before and after headers +- insert a descriptive chapter name, header level 3 with the page number + diff --git a/packages/kbot/tests/pdf/sako.md b/packages/kbot/tests/pdf/sako.md new file mode 100644 index 00000000..cde2bd53 --- /dev/null +++ b/packages/kbot/tests/pdf/sako.md @@ -0,0 +1,15 @@ +No registers found + + +### Modbus Registers + +| type | description | address (Hex) | address (dec) | parameter group | +| :--------------------- | :------------------------- | :------------ | :------------ | :-------------- | +| write holding register | P0-16 functional parameters | F010H | 61456 | P0 | +| write holding register | AC-08 functional parameters | AC08H | 44040 | AC | + + +No registers found + + +No registers found diff --git a/packages/kbot/tests/pdf/sako_manual.md b/packages/kbot/tests/pdf/sako_manual.md new file mode 100644 index 00000000..e69de29b