diff --git a/packages/kbot/dist-in/async-iterator.d.ts b/packages/kbot/dist-in/async-iterator.d.ts index bad86783..68c2b4c4 100644 --- a/packages/kbot/dist-in/async-iterator.d.ts +++ b/packages/kbot/dist-in/async-iterator.d.ts @@ -2,42 +2,40 @@ export type AsyncTransformer = (input: string, path: string) => Promise; export type ErrorCallback = (path: string, value: string, error: unknown) => void; export type FilterCallback = (input: string, path: string) => Promise; export type Filter = (input: string) => Promise; -export interface TransformOptions { - transform: AsyncTransformer; - path: string; - throttleDelay: number; - concurrentTasks: number; - errorCallback: ErrorCallback; - filterCallback: FilterCallback; - targetPath?: string | null; +export interface INetworkOptions { + throttleDelay?: number; + concurrentTasks?: number; maxRetries?: number; retryDelay?: number; } +export declare const DEFAULT_NETWORK_OPTIONS: Required; +export interface TransformOptions { + transform: AsyncTransformer; + path: string; + network?: INetworkOptions; + errorCallback: ErrorCallback; + filterCallback: FilterCallback; + targetPath?: string | null; +} export interface GlobalOptions { - throttleDelay?: number; - concurrentTasks?: number; + network?: INetworkOptions; errorCallback?: ErrorCallback; filterCallback?: FilterCallback; - maxRetries?: number; - retryDelay?: number; } export declare const isNumber: Filter; export declare const isBoolean: Filter; export declare const isValidString: Filter; export declare const testFilters: (filters: Filter[]) => FilterCallback; export declare const defaultFilters: (filters?: Filter[]) => Filter[]; -export declare function transformObject(obj: Record, transform: AsyncTransformer, path: string, throttleDelay: number, concurrentTasks: number, errorCallback: ErrorCallback, testCallback: FilterCallback, maxRetries?: number, retryDelay?: number): Promise; -export declare function transformPath(obj: Record, keys: string[], transform: AsyncTransformer, throttleDelay: number, concurrentTasks: number, currentPath: string, errorCallback: ErrorCallback, testCallback: FilterCallback, maxRetries?: number, retryDelay?: number): Promise; +export declare function transformObject(obj: Record, transform: AsyncTransformer, path: string, networkOptions: Required, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; +export declare function transformPath(obj: Record, keys: string[], transform: AsyncTransformer, networkOptions: Required, currentPath: string, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; export declare const defaultError: ErrorCallback; export interface TransformWithOptionsInput { jsonPath: string; targetPath?: string | null; - throttleDelay?: number; - concurrentTasks?: number; + network?: INetworkOptions; errorCallback?: ErrorCallback; filterCallback?: FilterCallback; - maxRetries?: number; - retryDelay?: number; } export declare function transformObjectWithOptions(obj: Record, transform: AsyncTransformer, options: TransformWithOptionsInput): Promise; export declare const defaultOptions: (options?: Partial) => TransformOptions; diff --git a/packages/kbot/dist-in/async-iterator.js b/packages/kbot/dist-in/async-iterator.js index deda7e08..ac2375fe 100644 --- a/packages/kbot/dist-in/async-iterator.js +++ b/packages/kbot/dist-in/async-iterator.js @@ -2,6 +2,12 @@ import { JSONPath } from 'jsonpath-plus'; import pThrottle from 'p-throttle'; import pMap from 'p-map'; import { deepClone } from "@polymech/core/objects"; +export const DEFAULT_NETWORK_OPTIONS = { + throttleDelay: 1000, + concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 +}; // Sleep utility for retry mechanism const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); export const isNumber = async (input) => (/^-?\d+(\.\d+)?$/.test(input)); @@ -20,14 +26,14 @@ export const testFilters = (filters) => { export const defaultFilters = (filters = []) => [ isNumber, isBoolean, isValidString, ...filters ]; -export async function transformObject(obj, transform, path, throttleDelay, concurrentTasks, errorCallback, testCallback, maxRetries = 3, retryDelay = 2000) { +export async function transformObject(obj, transform, path, networkOptions, errorCallback, testCallback) { const paths = JSONPath({ path, json: obj, resultType: 'pointer' }); await pMap(paths, async (jsonPointer) => { const keys = jsonPointer.slice(1).split('/'); - await transformPath(obj, keys, transform, throttleDelay, concurrentTasks, jsonPointer, errorCallback, testCallback, maxRetries, retryDelay); - }, { concurrency: concurrentTasks }); + await transformPath(obj, keys, transform, networkOptions, jsonPointer, errorCallback, testCallback); + }, { concurrency: networkOptions.concurrentTasks }); } -export async function transformPath(obj, keys, transform, throttleDelay, concurrentTasks, currentPath, errorCallback, testCallback, maxRetries = 3, retryDelay = 2000) { +export async function transformPath(obj, keys, transform, networkOptions, currentPath, errorCallback, testCallback) { let current = obj; for (let i = 0; i < keys.length - 1; i++) { if (current[keys[i]] === undefined || current[keys[i]] === null) { @@ -38,7 +44,7 @@ export async function transformPath(obj, keys, transform, throttleDelay, concurr const lastKey = keys[keys.length - 1]; const throttle = pThrottle({ limit: 1, - interval: throttleDelay, + interval: networkOptions.throttleDelay, }); if (typeof lastKey === 'string' && lastKey !== '') { if (typeof current[lastKey] === 'string' && current[lastKey] !== '') { @@ -47,7 +53,7 @@ export async function transformPath(obj, keys, transform, throttleDelay, concurr let attempts = 0; let success = false; let lastError; - while (attempts < maxRetries && !success) { + while (attempts < networkOptions.maxRetries && !success) { try { current[lastKey] = await throttle(transform)(current[lastKey], `${currentPath}/${lastKey}`); success = true; @@ -55,9 +61,9 @@ export async function transformPath(obj, keys, transform, throttleDelay, concurr catch (error) { lastError = error; attempts++; - if (attempts < maxRetries) { + if (attempts < networkOptions.maxRetries) { // Exponential backoff: retry delay increases with each attempt - const backoffDelay = retryDelay * Math.pow(2, attempts - 1); + const backoffDelay = networkOptions.retryDelay * Math.pow(2, attempts - 1); await sleep(backoffDelay); } } @@ -68,7 +74,7 @@ export async function transformPath(obj, keys, transform, throttleDelay, concurr } } else if (typeof current[lastKey] === 'object' && current[lastKey] !== null) { - await transformObject(current[lastKey], transform, '$.*', throttleDelay, concurrentTasks, errorCallback, testCallback, maxRetries, retryDelay); + await transformObject(current[lastKey], transform, '$.*', networkOptions, errorCallback, testCallback); } } } @@ -76,15 +82,19 @@ export const defaultError = (path, value, error) => { console.error(`Error at path: ${path}, value: ${value}, error: ${error}`); }; export async function transformObjectWithOptions(obj, transform, options) { - const { jsonPath, targetPath = null, throttleDelay = 1000, concurrentTasks = 1, errorCallback = defaultError, filterCallback = testFilters(defaultFilters()), maxRetries = 3, retryDelay = 2000 } = options; + const { jsonPath, targetPath = null, network = {}, errorCallback = defaultError, filterCallback = testFilters(defaultFilters()) } = options; + const networkOptions = { + ...DEFAULT_NETWORK_OPTIONS, + ...network + }; // If targetPath is null, directly transform the object at jsonPath if (!targetPath) { - return transformObject(obj, transform, jsonPath, throttleDelay, concurrentTasks, errorCallback, filterCallback, maxRetries, retryDelay); + return transformObject(obj, transform, jsonPath, networkOptions, errorCallback, filterCallback); } // For targetPath case, create a deep clone and transform it const dataCopy = deepClone(obj); // Transform the copy - await transformObject(dataCopy, transform, jsonPath, throttleDelay, concurrentTasks, errorCallback, filterCallback, maxRetries, retryDelay); + await transformObject(dataCopy, transform, jsonPath, networkOptions, errorCallback, filterCallback); // Get paths from original object const paths = JSONPath({ path: jsonPath, json: obj, resultType: 'pointer' }); // Apply transformed values to original object with targetPath @@ -117,15 +127,14 @@ export async function transformObjectWithOptions(obj, transform, options) { } } export const defaultOptions = (options = {}) => { + const network = { ...DEFAULT_NETWORK_OPTIONS, ...options.network }; return { transform: options.transform, path: options.path || '$[*][0,1,2]', - throttleDelay: options.throttleDelay || 10, - concurrentTasks: options.concurrentTasks || 1, + network, errorCallback: options.errorCallback || defaultError, filterCallback: options.filterCallback || testFilters(defaultFilters()), - maxRetries: options.maxRetries || 3, - retryDelay: options.retryDelay || 2000 + targetPath: options.targetPath }; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXN5bmMtaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQTRCbEQsb0NBQW9DO0FBQ3BDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUN4RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBVyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQWlCLEVBQWtCLEVBQUU7SUFDN0QsT0FBTyxLQUFLLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3pDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEtB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXN5bmMtaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQWNsRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBOEI7SUFDOUQsYUFBYSxFQUFFLElBQUk7SUFDbkIsZUFBZSxFQUFFLENBQUM7SUFDbEIsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsSUFBSTtDQUNuQixDQUFDO0FBaUJGLG9DQUFvQztBQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDeEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUVqRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFpQixFQUFrQixFQUFFO0lBQzdELE9BQU8sS0FBSyxFQUFF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 \ No newline at end of file diff --git a/packages/kbot/dist-in/examples/core/async-iterator-example.js b/packages/kbot/dist-in/examples/core/async-iterator-example.js index a11c4288..3dcf7c91 100644 --- a/packages/kbot/dist-in/examples/core/async-iterator-example.js +++ b/packages/kbot/dist-in/examples/core/async-iterator-example.js @@ -114,10 +114,16 @@ export async function transformExample() { logLevel: LOG_LEVEL, mode: E_Mode.COMPLETION }; - // Create an iterator factory instance - const iterator = createIterator(data, globalOptionsMixin, { + // Network configuration + const networkOptions = { throttleDelay: 1000, concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 + }; + // Create an iterator factory instance + const iterator = createIterator(data, globalOptionsMixin, { + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: createLLMTransformer @@ -195,4 +201,4 @@ if (isDirectExecution) { }); } export { createLLMTransformer, exampleData }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3ItZXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlcy9jb3JlL2FzeW5jLWl0ZXJhdG9yLWV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFNUMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7QUFDL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQzVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVwQixJQUFJLE1BQU0sR0FBRztJQUNULElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO0lBQzFELElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO0lBQzFELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0lBQzlELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0lBQzVELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0NBQy9ELENBQUM7QUFNRixPQUFPLEVBRUgsY0FBYyxFQUNqQixN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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3ItZXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlcy9jb3JlL2FzeW5jLWl0ZXJhdG9yLWV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFNUMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7QUFDL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQzVCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVwQixJQUFJLE1BQU0sR0FBRztJQUNULElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO0lBQzFELElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO0lBQzFELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0lBQzlELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0lBQzVELEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxDQUFDO0NBQy9ELENBQUM7QUFNRixPQUFPLEVBRUgsY0FBYyxFQUVqQixN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 \ No newline at end of file diff --git a/packages/kbot/dist-in/examples/core/iterator-factory-example.js b/packages/kbot/dist-in/examples/core/iterator-factory-example.js index 85c1e051..6b506ddc 100644 --- a/packages/kbot/dist-in/examples/core/iterator-factory-example.js +++ b/packages/kbot/dist-in/examples/core/iterator-factory-example.js @@ -25,7 +25,7 @@ const exampleData = { fruits: [ { id: 'f1', - name: 'apple2', + name: 'apple', description: 'A sweet and crunchy fruit', details: { color: 'red', @@ -74,6 +74,13 @@ const fieldMappings = [ const errorCallback = (path, value, error) => { logger.error(`Error transforming ${path}: ${error.message}`); }; +// Network configuration +const networkOptions = { + throttleDelay: 1000, + concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 +}; // Cache configuration const cacheConfig = { enabled: true, @@ -95,8 +102,7 @@ export async function factoryExample() { }; // Create an iterator factory instance const iterator = createIterator(data, globalOptionsMixin, { - throttleDelay: 1000, - concurrentTasks: 1, + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: (options) => createLLMTransformer(options, logger, cacheConfig), @@ -126,8 +132,7 @@ export async function factoryExample() { console.log("========================================"); const data2 = JSON.parse(JSON.stringify(exampleData)); const iterator2 = createIterator(data2, globalOptionsMixin, { - throttleDelay: 1000, - concurrentTasks: 1, + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: (options) => createLLMTransformer(options, logger, cacheConfig), @@ -160,4 +165,4 @@ if (process.argv[1] && process.argv[1].includes('iterator-factory-example')) { console.error("Unhandled error:", error); }); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3ItZmFjdG9yeS1leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4YW1wbGVzL2NvcmUvaXRlcmF0b3ItZmFjdG9yeS1leGFtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFcEc7Ozs7R0FJRztBQUdILE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO0FBQy9ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztBQUM1QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFcEIsTUFBTSxNQUFNLEdBQUc7SUFDWCxJQUFJLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxPQUFPLEVBQUUsQ0FBQztJQUMxRCxJQUFJLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxPQUFPLEVBQUUsQ0FBQztJQUMxRCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxPQUFPLEVBQUUsQ0FBQztJQUM5RCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPLEVBQUUsQ0FBQztJQUM1RCxLQUFL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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3ItZmFjdG9yeS1leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2V4YW1wbGVzL2NvcmUvaXRlcmF0b3ItZmFjdG9yeS1leGFtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLG9CQUFvQixFQUFnQyxNQUFNLG1CQUFtQixDQUFDO0FBRXJIOzs7O0dBSUc7QUFHSCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQztBQUMvRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLE1BQU0sTUFBTSxHQUFHO0lBQ1gsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsT0FBTyxFQUFFLENBQUM7SUFDMUQsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsT0FBTyxFQUFFLENBQUM7SUFDMUQsS0FBSyxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsT0FBTyxFQUFFLENBQUM7SUFDOUQsS0FBSyxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxFQUFFLENBQUM7SUFDNUQsS0FB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 \ No newline at end of file diff --git a/packages/kbot/dist-in/iterator.d.ts b/packages/kbot/dist-in/iterator.d.ts index 018a7112..4cbd1e29 100644 --- a/packages/kbot/dist-in/iterator.d.ts +++ b/packages/kbot/dist-in/iterator.d.ts @@ -1,5 +1,5 @@ import { IKBotTask } from '@polymech/ai-tools'; -import { AsyncTransformer, ErrorCallback, FilterCallback } from './async-iterator.js'; +import { AsyncTransformer, ErrorCallback, FilterCallback, INetworkOptions } from './async-iterator.js'; /** * Notes for LLM modifications * @@ -16,8 +16,6 @@ export interface FieldMapping { jsonPath: string; targetPath?: string | null; options?: IKBotTask; - maxRetries?: number; - retryDelay?: number; } export interface IteratorFactory { transform: (mappings: FieldMapping[]) => Promise; @@ -29,25 +27,14 @@ export interface CacheConfig { expiration?: number; } export interface IOptions { - throttleDelay?: number; - concurrentTasks?: number; + network?: INetworkOptions; errorCallback?: ErrorCallback; filterCallback?: FilterCallback; transformerFactory?: (options: IKBotTask) => AsyncTransformer; - maxRetries?: number; - retryDelay?: number; logger?: ILogger; cacheConfig?: CacheConfig; } +export { INetworkOptions }; export declare function createLLMTransformer(options: IKBotTask, logger?: ILogger, cacheConfig?: CacheConfig): AsyncTransformer; export declare function createIterator(obj: Record, optionsMixin: Partial, globalOptions?: IOptions): IteratorFactory; -export declare function transformWithMappings(obj: Record, createTransformer: (options: IKBotTask) => AsyncTransformer, mappings: FieldMapping[], globalOptions?: { - throttleDelay?: number; - concurrentTasks?: number; - errorCallback?: ErrorCallback; - filterCallback?: FilterCallback; - maxRetries?: number; - retryDelay?: number; - logger?: ILogger; - cacheConfig?: CacheConfig; -}): Promise; +export declare function transformWithMappings(obj: Record, createTransformer: (options: IKBotTask) => AsyncTransformer, mappings: FieldMapping[], globalOptions?: IOptions): Promise; diff --git a/packages/kbot/dist-in/iterator.js b/packages/kbot/dist-in/iterator.js index 01b1e4bb..6577991d 100644 --- a/packages/kbot/dist-in/iterator.js +++ b/packages/kbot/dist-in/iterator.js @@ -1,4 +1,4 @@ -import { defaultError, defaultFilters, testFilters, transformObjectWithOptions } from './async-iterator.js'; +import { defaultError, defaultFilters, testFilters, transformObjectWithOptions, DEFAULT_NETWORK_OPTIONS } from './async-iterator.js'; import { run } from './commands/run.js'; import { get_cached_object, set_cached_object } from "@polymech/cache"; const dummyLogger = { @@ -74,7 +74,11 @@ export function createLLMTransformer(options, logger = dummyLogger, cacheConfig) }; } export function createIterator(obj, optionsMixin, globalOptions = {}) { - const { throttleDelay = 1000, concurrentTasks = 1, errorCallback = defaultError, filterCallback = testFilters(defaultFilters()), transformerFactory, maxRetries = 3, retryDelay = 2000, logger = dummyLogger, cacheConfig } = globalOptions; + const { network = {}, errorCallback = defaultError, filterCallback = testFilters(defaultFilters()), transformerFactory, logger = dummyLogger, cacheConfig } = globalOptions; + const networkOptions = { + ...DEFAULT_NETWORK_OPTIONS, + ...network + }; const config = { ...DEFAULT_CACHE_CONFIG, ...cacheConfig }; const defaultTransformerFactory = (options) => { return async (input) => input; @@ -123,17 +127,14 @@ export function createIterator(obj, optionsMixin, globalOptions = {}) { const transformedObj = JSON.parse(JSON.stringify(obj)); for (const mapping of mappings) { const mergedOptions = { ...optionsMixin, ...mapping.options }; - const { jsonPath, targetPath = null, maxRetries: mappingRetries, retryDelay: mappingRetryDelay } = mapping; + const { jsonPath, targetPath = null } = mapping; const transformer = createTransformer(mergedOptions); await transformObjectWithOptions(transformedObj, transformer, { jsonPath, targetPath, - throttleDelay, - concurrentTasks, + network: networkOptions, errorCallback, - filterCallback, - maxRetries: mappingRetries || maxRetries, - retryDelay: mappingRetryDelay || retryDelay + filterCallback }); } // Cache the transformed object @@ -151,4 +152,4 @@ export async function transformWithMappings(obj, createTransformer, mappings, gl const iterator = createIterator(obj, {}, globalOptions); await iterator.transform(mappings); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFtRCxZQUFZLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzVKLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0saUJBQWlCLENBQUE7QUFnQnhGLE1BQU0sV0FBVyxHQUFZO0lBQ3pCLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztDQUNsQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQU8sRUFBRTtJQUNoRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxTQUFTO1FBQ2hELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtZQUN2QixDQUFDLEdBQUcsSUFBSSxPQUFPLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUM3RSxDQUFDO1lBQ0MsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlILFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLDBCQUEwQixFQUUxQix1QkFBdUIsRUFDMUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFvQixNQUFNLGlCQUFpQixDQUFBO0FBZ0J4RixNQUFNLFdBQVcsR0FBWTtJQUN6QixJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztJQUNkLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7SUFDaEQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDbEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDcEIsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQUUsU0FBUztRQUNoRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFDdkIsQ0FBQyxHQUFHLElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFDN0UsQ0FBQztZQUNDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMs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 \ No newline at end of file diff --git a/packages/kbot/logs/params.json b/packages/kbot/logs/params.json index 91aaaabc..8f996877 100644 --- a/packages/kbot/logs/params.json +++ b/packages/kbot/logs/params.json @@ -3,7 +3,7 @@ "messages": [ { "role": "user", - "content": "Generate a more appealing marketing name for this product\n\nText to transform: \"apple2\"" + "content": "Generate a more appealing marketing name for this product\n\nText to transform: \"broccoli\"" }, { "role": "user", diff --git a/packages/kbot/src/async-iterator.ts b/packages/kbot/src/async-iterator.ts index ec62471b..8fe8e037 100644 --- a/packages/kbot/src/async-iterator.ts +++ b/packages/kbot/src/async-iterator.ts @@ -8,25 +8,33 @@ export type ErrorCallback = (path: string, value: string, error: unknown) => voi export type FilterCallback = (input: string, path: string) => Promise export type Filter = (input: string) => Promise +export interface INetworkOptions { + throttleDelay?: number; + concurrentTasks?: number; + maxRetries?: number; + retryDelay?: number; +} + +export const DEFAULT_NETWORK_OPTIONS: Required = { + throttleDelay: 1000, + concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 +}; + export interface TransformOptions { transform: AsyncTransformer path: string - throttleDelay: number - concurrentTasks: number + network?: INetworkOptions errorCallback: ErrorCallback filterCallback: FilterCallback targetPath?: string | null - maxRetries?: number - retryDelay?: number } export interface GlobalOptions { - throttleDelay?: number - concurrentTasks?: number + network?: INetworkOptions errorCallback?: ErrorCallback filterCallback?: FilterCallback - maxRetries?: number - retryDelay?: number } // Sleep utility for retry mechanism @@ -56,12 +64,9 @@ export async function transformObject( obj: Record, transform: AsyncTransformer, path: string, - throttleDelay: number, - concurrentTasks: number, + networkOptions: Required, errorCallback: ErrorCallback, - testCallback: FilterCallback, - maxRetries: number = 3, - retryDelay: number = 2000 + testCallback: FilterCallback ): Promise { const paths = JSONPath({ path, json: obj, resultType: 'pointer' }); await pMap( @@ -72,16 +77,13 @@ export async function transformObject( obj, keys, transform, - throttleDelay, - concurrentTasks, + networkOptions, jsonPointer, errorCallback, - testCallback, - maxRetries, - retryDelay + testCallback ) }, - { concurrency: concurrentTasks } + { concurrency: networkOptions.concurrentTasks } ) } @@ -89,13 +91,10 @@ export async function transformPath( obj: Record, keys: string[], transform: AsyncTransformer, - throttleDelay: number, - concurrentTasks: number, + networkOptions: Required, currentPath: string, errorCallback: ErrorCallback, - testCallback: FilterCallback, - maxRetries: number = 3, - retryDelay: number = 2000 + testCallback: FilterCallback ): Promise { let current: Record = obj @@ -109,7 +108,7 @@ export async function transformPath( const lastKey = keys[keys.length - 1] const throttle = pThrottle({ limit: 1, - interval: throttleDelay, + interval: networkOptions.throttleDelay, }) if (typeof lastKey === 'string' && lastKey !== '') { if (typeof current[lastKey] === 'string' && current[lastKey] !== '') { @@ -119,7 +118,7 @@ export async function transformPath( let success = false; let lastError: unknown; - while (attempts < maxRetries && !success) { + while (attempts < networkOptions.maxRetries && !success) { try { current[lastKey] = await throttle(transform)(current[lastKey], `${currentPath}/${lastKey}`); success = true; @@ -127,9 +126,9 @@ export async function transformPath( lastError = error; attempts++; - if (attempts < maxRetries) { + if (attempts < networkOptions.maxRetries) { // Exponential backoff: retry delay increases with each attempt - const backoffDelay = retryDelay * Math.pow(2, attempts - 1); + const backoffDelay = networkOptions.retryDelay * Math.pow(2, attempts - 1); await sleep(backoffDelay); } } @@ -144,12 +143,9 @@ export async function transformPath( current[lastKey] as Record, transform, '$.*', - throttleDelay, - concurrentTasks, + networkOptions, errorCallback, - testCallback, - maxRetries, - retryDelay + testCallback ) } } @@ -162,12 +158,9 @@ export const defaultError: ErrorCallback = (path: string, value: string, error: export interface TransformWithOptionsInput { jsonPath: string targetPath?: string | null - throttleDelay?: number - concurrentTasks?: number + network?: INetworkOptions errorCallback?: ErrorCallback filterCallback?: FilterCallback - maxRetries?: number - retryDelay?: number } export async function transformObjectWithOptions( @@ -178,26 +171,25 @@ export async function transformObjectWithOptions( const { jsonPath, targetPath = null, - throttleDelay = 1000, - concurrentTasks = 1, + network = {}, errorCallback = defaultError, - filterCallback = testFilters(defaultFilters()), - maxRetries = 3, - retryDelay = 2000 + filterCallback = testFilters(defaultFilters()) } = options; + const networkOptions: Required = { + ...DEFAULT_NETWORK_OPTIONS, + ...network + }; + // If targetPath is null, directly transform the object at jsonPath if (!targetPath) { return transformObject( obj, transform, jsonPath, - throttleDelay, - concurrentTasks, + networkOptions, errorCallback, - filterCallback, - maxRetries, - retryDelay + filterCallback ); } @@ -209,12 +201,9 @@ export async function transformObjectWithOptions( dataCopy, transform, jsonPath, - throttleDelay, - concurrentTasks, + networkOptions, errorCallback, - filterCallback, - maxRetries, - retryDelay + filterCallback ); // Get paths from original object @@ -251,14 +240,14 @@ export async function transformObjectWithOptions( } export const defaultOptions = (options: Partial = {}): TransformOptions => { + const network = { ...DEFAULT_NETWORK_OPTIONS, ...options.network }; + return { transform: options.transform, path: options.path || '$[*][0,1,2]', - throttleDelay: options.throttleDelay || 10, - concurrentTasks: options.concurrentTasks || 1, + network, errorCallback: options.errorCallback || defaultError, filterCallback: options.filterCallback || testFilters(defaultFilters()), - maxRetries: options.maxRetries || 3, - retryDelay: options.retryDelay || 2000 + targetPath: options.targetPath } } diff --git a/packages/kbot/src/examples/core/async-iterator-example.ts b/packages/kbot/src/examples/core/async-iterator-example.ts index 507a5331..fd9be086 100644 --- a/packages/kbot/src/examples/core/async-iterator-example.ts +++ b/packages/kbot/src/examples/core/async-iterator-example.ts @@ -22,7 +22,8 @@ import { import { FieldMapping, - createIterator + createIterator, + INetworkOptions } from '../../iterator.js'; import { run } from '../../commands/run.js'; @@ -136,13 +137,20 @@ export async function transformExample() { mode: E_Mode.COMPLETION }; + // Network configuration + const networkOptions: INetworkOptions = { + throttleDelay: 1000, + concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 + }; + // Create an iterator factory instance const iterator = createIterator( data, globalOptionsMixin, { - throttleDelay: 1000, - concurrentTasks: 1, + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: createLLMTransformer diff --git a/packages/kbot/src/examples/core/iterator-factory-example.ts b/packages/kbot/src/examples/core/iterator-factory-example.ts index 130ce548..9b6dd380 100644 --- a/packages/kbot/src/examples/core/iterator-factory-example.ts +++ b/packages/kbot/src/examples/core/iterator-factory-example.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import type { IKBotTask } from '@polymech/ai-tools'; import { E_OPENROUTER_MODEL } from '../../models/cache/openrouter-models.js'; import { E_Mode } from '../../zod_schema.js'; -import { FieldMapping, createIterator, createLLMTransformer, CacheConfig } from '../../iterator.js'; +import { FieldMapping, createIterator, createLLMTransformer, CacheConfig, INetworkOptions } from '../../iterator.js'; /** * Notes for LLM modifications @@ -31,7 +31,7 @@ const exampleData = { fruits: [ { id: 'f1', - name: 'apple2', + name: 'apple', description: 'A sweet and crunchy fruit', details: { color: 'red', @@ -83,6 +83,14 @@ const errorCallback = (path: string, value: string, error: any) => { logger.error(`Error transforming ${path}: ${error.message}`); }; +// Network configuration +const networkOptions: INetworkOptions = { + throttleDelay: 1000, + concurrentTasks: 1, + maxRetries: 3, + retryDelay: 2000 +}; + // Cache configuration const cacheConfig: CacheConfig = { enabled: true, @@ -111,8 +119,7 @@ export async function factoryExample() { data, globalOptionsMixin, { - throttleDelay: 1000, - concurrentTasks: 1, + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: (options) => createLLMTransformer(options, logger, cacheConfig), @@ -153,8 +160,7 @@ export async function factoryExample() { data2, globalOptionsMixin, { - throttleDelay: 1000, - concurrentTasks: 1, + network: networkOptions, errorCallback, filterCallback: async () => true, transformerFactory: (options) => createLLMTransformer(options, logger, cacheConfig), diff --git a/packages/kbot/src/iterator.ts b/packages/kbot/src/iterator.ts index 9e823bc4..6dc31c76 100644 --- a/packages/kbot/src/iterator.ts +++ b/packages/kbot/src/iterator.ts @@ -1,5 +1,15 @@ import { IKBotTask } from '@polymech/ai-tools' -import { AsyncTransformer, ErrorCallback, FilterCallback, defaultError, defaultFilters, testFilters, transformObjectWithOptions } from './async-iterator.js' +import { + AsyncTransformer, + ErrorCallback, + FilterCallback, + defaultError, + defaultFilters, + testFilters, + transformObjectWithOptions, + INetworkOptions, + DEFAULT_NETWORK_OPTIONS +} from './async-iterator.js' import { run } from './commands/run.js' import { get_cached_object, set_cached_object, rm_cached_object } from "@polymech/cache" import { deepClone } from "@polymech/core/objects" @@ -44,8 +54,6 @@ export interface FieldMapping { jsonPath: string targetPath?: string | null options?: IKBotTask - maxRetries?: number - retryDelay?: number } export interface IteratorFactory { @@ -60,13 +68,10 @@ export interface CacheConfig { } export interface IOptions { - throttleDelay?: number; - concurrentTasks?: number; + network?: INetworkOptions; errorCallback?: ErrorCallback; filterCallback?: FilterCallback; transformerFactory?: (options: IKBotTask) => AsyncTransformer; - maxRetries?: number; - retryDelay?: number; logger?: ILogger; cacheConfig?: CacheConfig; } @@ -77,6 +82,9 @@ const DEFAULT_CACHE_CONFIG: Required = { expiration: 7 * 24 * 60 * 60 // 7 days in seconds }; +// Re-export INetworkOptions for other modules to use +export { INetworkOptions }; + export function createLLMTransformer( options: IKBotTask, logger: ILogger = dummyLogger, @@ -145,17 +153,19 @@ export function createIterator( globalOptions: IOptions = {} ): IteratorFactory { const { - throttleDelay = 1000, - concurrentTasks = 1, + network = {}, errorCallback = defaultError, filterCallback = testFilters(defaultFilters()), transformerFactory, - maxRetries = 3, - retryDelay = 2000, logger = dummyLogger, cacheConfig } = globalOptions; + const networkOptions: Required = { + ...DEFAULT_NETWORK_OPTIONS, + ...network + }; + const config: Required = { ...DEFAULT_CACHE_CONFIG, ...cacheConfig }; const defaultTransformerFactory = (options: IKBotTask): AsyncTransformer => { @@ -212,7 +222,7 @@ export function createIterator( const transformedObj = JSON.parse(JSON.stringify(obj)); for (const mapping of mappings) { const mergedOptions = { ...optionsMixin, ...mapping.options } as IKBotTask; - const { jsonPath, targetPath = null, maxRetries: mappingRetries, retryDelay: mappingRetryDelay } = mapping; + const { jsonPath, targetPath = null } = mapping; const transformer = createTransformer(mergedOptions); await transformObjectWithOptions( @@ -221,12 +231,9 @@ export function createIterator( { jsonPath, targetPath, - throttleDelay, - concurrentTasks, + network: networkOptions, errorCallback, - filterCallback, - maxRetries: mappingRetries || maxRetries, - retryDelay: mappingRetryDelay || retryDelay + filterCallback } ); } @@ -253,16 +260,7 @@ export async function transformWithMappings( obj: Record, createTransformer: (options: IKBotTask) => AsyncTransformer, mappings: FieldMapping[], - globalOptions: { - throttleDelay?: number; - concurrentTasks?: number; - errorCallback?: ErrorCallback; - filterCallback?: FilterCallback; - maxRetries?: number; - retryDelay?: number; - logger?: ILogger; - cacheConfig?: CacheConfig; - } = {} + globalOptions: IOptions = {} ): Promise { const iterator = createIterator(obj, {}, globalOptions); await iterator.transform(mappings); diff --git a/packages/kbot/tests/test-data/core/async-iterator-data.json b/packages/kbot/tests/test-data/core/async-iterator-data.json index b01ef60f..a8005247 100644 --- a/packages/kbot/tests/test-data/core/async-iterator-data.json +++ b/packages/kbot/tests/test-data/core/async-iterator-data.json @@ -4,22 +4,22 @@ { "id": "f1", "name": "apple", - "description": "A deliciously sweet fruit bursting with juicy flavor and a satisfying crunch, offering a refreshing taste experience in every bite, perfect for a healthy, invigorating snack.", + "description": "A deliciously juicy fruit that bursts with natural sweetness and offers a satisfying crunch, making every bite a refreshing and energizing treat for your senses.", "details": { "color": "red", "origin": "Worldwide", - "nutrition": "Rich in fiber and vitamin C, it supports healthy digestion, helps regulate blood sugar levels, and boosts immune function by protecting against infections and promoting collagen production for skin health." + "nutrition": "Rich in fiber and vitamin C, which supports healthy digestion and promotes regular bowel movements. Vitamin C boosts the immune system, aids in collagen production, and helps protect cells from oxidative damage." }, - "marketingName": "Crimson Orchard Delight" + "marketingName": "Orchard Bliss" }, { "id": "f2", "name": "banana", - "description": "A vibrant, sun-kissed tropical fruit with a bright yellow skin, offering a sweet, juicy flavor bursting with tropical essence and a refreshing, exotic aroma.", + "description": "A vibrant, sun-kissed tropical fruit with a smooth golden skin, juicy flesh bursting with sweet, tangy flavor, and an irresistibly refreshing aroma that captures the essence of summer.", "details": { "color": "yellow", "origin": "Southeast Asia", - "nutrition": "High in potassium, which helps regulate blood pressure, supports proper nerve and muscle function, and reduces the risk of kidney stones by maintaining healthy electrolyte balance in the body." + "nutrition": "High in potassium, which helps regulate blood pressure, supports proper muscle and nerve function, and aids in maintaining fluid balance in the body, contributing to overall cardiovascular and muscular health." }, "marketingName": "Golden Tropic Delight" } @@ -28,22 +28,22 @@ { "id": "v1", "name": "carrot", - "description": "A vibrant, earthy-hued root vegetable bursting with natural sweetness and rich in vitamins, perfect for roasting, juicing, or enjoying raw for a crunchy snack.", + "description": "A vibrant, nutrient-packed orange root vegetable with a crisp texture and sweet, earthy flavor, often enjoyed fresh, roasted, or blended into nourishing soups and juices.", "details": { "color": "orange", "origin": "Eurasia", - "nutrition": "Supports eye health by protecting against age-related macular degeneration, maintains healthy night vision, and provides antioxidants that reduce the risk of cataracts, contributing to overall visual clarity and longevity." + "nutrition": "Supports sharp vision by protecting eye cells from oxidative stress, reduces risk of age-related macular degeneration, and helps maintain retinal health for overall improved eye function and long-term visual clarity." }, - "marketingName": "Golden Harvest Ruby" + "marketingName": "Golden Crunch" }, { "id": "v2", "name": "broccoli", - "description": "A vibrant, nutrient-rich green vegetable from the cruciferous family, packed with antioxidants and vitamins, known for its crisp texture and subtly peppery, earthy flavor.", + "description": "A vibrant green, nutrient-packed cruciferous vegetable known for its crisp texture and subtle peppery flavor, rich in vitamins, minerals, and powerful antioxidants promoting overall health.", "details": { "color": "green", "origin": "Italy", - "nutrition": "Rich in vitamins K and C, this supports healthy blood clotting, strengthens the immune system, and promotes collagen production, which benefits skin health and helps maintain strong bones." + "nutrition": "Rich in vitamins K and C, this supports strong immune function, promotes healthy blood clotting, and enhances collagen production for skin health. Together, they also help reduce inflammation and support bone strength." }, "marketingName": "Emerald Crown Veggie" } @@ -52,6 +52,6 @@ "metadata": { "lastUpdated": "2023-04-15", "source": "Foods Database", - "description": "A vibrant assortment of fresh, colorful fruits and vegetables, bursting with natural flavors and essential nutrients—perfect for creating healthy, delicious meals every day." + "description": "A vibrant assortment of fresh, colorful fruits and crisp vegetables, featuring a diverse selection of popular, nutrient-rich produce perfect for healthy snacks, delicious recipes, and vibrant meals." } } \ No newline at end of file diff --git a/packages/kbot/tests/test-data/core/iterator-factory-data.json b/packages/kbot/tests/test-data/core/iterator-factory-data.json index 1a338c9a..c20c0257 100644 --- a/packages/kbot/tests/test-data/core/iterator-factory-data.json +++ b/packages/kbot/tests/test-data/core/iterator-factory-data.json @@ -3,14 +3,14 @@ "fruits": [ { "id": "f1", - "name": "apple2", + "name": "apple", "description": "A deliciously sweet fruit with a satisfying crunch, bursting with juicy flavor and vibrant freshness in every bite, perfect for a refreshing and healthy snack.", "details": { "color": "red", "origin": "Worldwide", "nutrition": "Rich in fiber and vitamin D, this promotes digestive health, supports gut microbiome balance, and helps maintain strong bones and immune function through enhanced calcium absorption and regulation of immune responses." }, - "marketingName": "Apple Fusion" + "marketingName": "Crimson Orchard Delight" }, { "id": "f2", diff --git a/packages/kbot/tests/unit/core/async-iterator.test.ts b/packages/kbot/tests/unit/core/async-iterator.test.ts index 08ae238b..5ac12b9a 100644 --- a/packages/kbot/tests/unit/core/async-iterator.test.ts +++ b/packages/kbot/tests/unit/core/async-iterator.test.ts @@ -7,7 +7,9 @@ import { defaultFilters, AsyncTransformer, ErrorCallback, - FilterCallback + FilterCallback, + INetworkOptions, + DEFAULT_NETWORK_OPTIONS } from '../../../src/async-iterator' // Helper function to manually transform paths in the test data based on mockFilterCallback and mockTransform @@ -300,12 +302,13 @@ describe('async-iterator', () => { // Empty object - this test passes without changes const emptyObj = {} + const networkOptions = { ...DEFAULT_NETWORK_OPTIONS, throttleDelay: 10, concurrentTasks: 1 }; + await transformObject( emptyObj, mockTransform, '$.items[*].name', - 10, - 1, + networkOptions, mockErrorCallback, mockFilterCallback ) @@ -321,8 +324,7 @@ describe('async-iterator', () => { testObj, mockTransform, '', - 10, - 1, + networkOptions, mockErrorCallback, mockFilterCallback ) @@ -476,12 +478,13 @@ describe('async-iterator', () => { // Now test with the actual transformObject function to ensure it works with arrays const actualArray = JSON.parse(JSON.stringify(arrayData)) + const networkOptions = { ...DEFAULT_NETWORK_OPTIONS, throttleDelay: 10, concurrentTasks: 1 }; + await transformObject( actualArray, transformer, '$[*].[name,description]', // JSONPath expression targeting name and description in array items - 10, - 1, + networkOptions, mockErrorCallback, filter ) @@ -498,5 +501,45 @@ describe('async-iterator', () => { expect(actualArray[0].id).toBe('1') expect(actualArray[0].type).toBe('fresh') }) + + it('should transform objects with the default filter callback', async () => { + const path = '$..description' + const testObj = JSON.parse(JSON.stringify(testData)) + const networkOptions = {...DEFAULT_NETWORK_OPTIONS, throttleDelay: 10, concurrentTasks: 2} + + await transformObject( + testObj, + mockTransform, + path, + networkOptions, + mockErrorCallback, + mockFilterCallback + ) + + expect(testObj.items[0].description).toBe('A FRUIT') + expect(testObj.items[1].description).toBe('YELLOW FRUIT') + expect(testObj.items[2].description).toBe('ORANGE FRUIT') + expect(testObj.metadata.description).toBe('COLLECTION OF FRUITS') + }) + + it('should use provided options over defaults', async () => { + const path = '$..description' + const testObj = JSON.parse(JSON.stringify(testData)) + const networkOptions = {...DEFAULT_NETWORK_OPTIONS, throttleDelay: 50, concurrentTasks: 3} + + await transformObject( + testObj, + mockTransform, + path, + networkOptions, + mockErrorCallback, + mockFilterCallback + ) + + expect(testObj.items[0].description).toBe('A FRUIT') + expect(testObj.items[1].description).toBe('YELLOW FRUIT') + expect(testObj.items[2].description).toBe('ORANGE FRUIT') + expect(testObj.metadata.description).toBe('COLLECTION OF FRUITS') + }) }) }) \ No newline at end of file