beeai-framework 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +21 -14
  2. package/dist/adapters/vercel/backend/chat.cjs +11 -1
  3. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  4. package/dist/adapters/vercel/backend/chat.js +12 -2
  5. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  6. package/dist/agents/base.cjs +1 -4
  7. package/dist/agents/base.cjs.map +1 -1
  8. package/dist/agents/base.js +1 -4
  9. package/dist/agents/base.js.map +1 -1
  10. package/dist/agents/react/prompts.d.cts +4 -4
  11. package/dist/agents/react/prompts.d.ts +4 -4
  12. package/dist/agents/react/runners/deep-think/prompts.d.cts +4 -4
  13. package/dist/agents/react/runners/deep-think/prompts.d.ts +4 -4
  14. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  15. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  16. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  17. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  18. package/dist/agents/react/runners/granite/prompts.d.cts +4 -4
  19. package/dist/agents/react/runners/granite/prompts.d.ts +4 -4
  20. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  21. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  22. package/dist/backend/chat.cjs +1 -3
  23. package/dist/backend/chat.cjs.map +1 -1
  24. package/dist/backend/chat.js +2 -4
  25. package/dist/backend/chat.js.map +1 -1
  26. package/dist/tools/base.cjs +1 -3
  27. package/dist/tools/base.cjs.map +1 -1
  28. package/dist/tools/base.js +2 -4
  29. package/dist/tools/base.js.map +1 -1
  30. package/dist/tools/database/milvus.d.cts +4 -4
  31. package/dist/tools/database/milvus.d.ts +4 -4
  32. package/dist/version.cjs +1 -1
  33. package/dist/version.cjs.map +1 -1
  34. package/dist/version.js +1 -1
  35. package/dist/version.js.map +1 -1
  36. package/dist/workflows/agent.d.cts +45 -45
  37. package/dist/workflows/agent.d.ts +45 -45
  38. package/package.json +1 -8
  39. package/dist/instrumentation/config.cjs +0 -12
  40. package/dist/instrumentation/config.cjs.map +0 -1
  41. package/dist/instrumentation/config.d.cts +0 -19
  42. package/dist/instrumentation/config.d.ts +0 -19
  43. package/dist/instrumentation/config.js +0 -9
  44. package/dist/instrumentation/config.js.map +0 -1
  45. package/dist/instrumentation/create-telemetry-middleware.cjs +0 -239
  46. package/dist/instrumentation/create-telemetry-middleware.cjs.map +0 -1
  47. package/dist/instrumentation/create-telemetry-middleware.d.cts +0 -26
  48. package/dist/instrumentation/create-telemetry-middleware.d.ts +0 -26
  49. package/dist/instrumentation/create-telemetry-middleware.js +0 -237
  50. package/dist/instrumentation/create-telemetry-middleware.js.map +0 -1
  51. package/dist/instrumentation/helpers/create-span.cjs +0 -36
  52. package/dist/instrumentation/helpers/create-span.cjs.map +0 -1
  53. package/dist/instrumentation/helpers/create-span.d.cts +0 -34
  54. package/dist/instrumentation/helpers/create-span.d.ts +0 -34
  55. package/dist/instrumentation/helpers/create-span.js +0 -34
  56. package/dist/instrumentation/helpers/create-span.js.map +0 -1
  57. package/dist/instrumentation/helpers/get-error-safe.cjs +0 -20
  58. package/dist/instrumentation/helpers/get-error-safe.cjs.map +0 -1
  59. package/dist/instrumentation/helpers/get-error-safe.d.cts +0 -18
  60. package/dist/instrumentation/helpers/get-error-safe.d.ts +0 -18
  61. package/dist/instrumentation/helpers/get-error-safe.js +0 -18
  62. package/dist/instrumentation/helpers/get-error-safe.js.map +0 -1
  63. package/dist/instrumentation/helpers/get-serialized-object-safe.cjs +0 -27
  64. package/dist/instrumentation/helpers/get-serialized-object-safe.cjs.map +0 -1
  65. package/dist/instrumentation/helpers/get-serialized-object-safe.d.cts +0 -18
  66. package/dist/instrumentation/helpers/get-serialized-object-safe.d.ts +0 -18
  67. package/dist/instrumentation/helpers/get-serialized-object-safe.js +0 -25
  68. package/dist/instrumentation/helpers/get-serialized-object-safe.js.map +0 -1
  69. package/dist/instrumentation/helpers/id-name-manager.cjs +0 -34
  70. package/dist/instrumentation/helpers/id-name-manager.cjs.map +0 -1
  71. package/dist/instrumentation/helpers/id-name-manager.d.cts +0 -31
  72. package/dist/instrumentation/helpers/id-name-manager.d.ts +0 -31
  73. package/dist/instrumentation/helpers/id-name-manager.js +0 -32
  74. package/dist/instrumentation/helpers/id-name-manager.js.map +0 -1
  75. package/dist/instrumentation/helpers/trace-serializer.cjs +0 -30
  76. package/dist/instrumentation/helpers/trace-serializer.cjs.map +0 -1
  77. package/dist/instrumentation/helpers/trace-serializer.d.cts +0 -20
  78. package/dist/instrumentation/helpers/trace-serializer.d.ts +0 -20
  79. package/dist/instrumentation/helpers/trace-serializer.js +0 -28
  80. package/dist/instrumentation/helpers/trace-serializer.js.map +0 -1
  81. package/dist/instrumentation/helpers/utils.cjs +0 -14
  82. package/dist/instrumentation/helpers/utils.cjs.map +0 -1
  83. package/dist/instrumentation/helpers/utils.d.cts +0 -40
  84. package/dist/instrumentation/helpers/utils.d.ts +0 -40
  85. package/dist/instrumentation/helpers/utils.js +0 -12
  86. package/dist/instrumentation/helpers/utils.js.map +0 -1
  87. package/dist/instrumentation/logger.cjs +0 -12
  88. package/dist/instrumentation/logger.cjs.map +0 -1
  89. package/dist/instrumentation/logger.d.cts +0 -26
  90. package/dist/instrumentation/logger.d.ts +0 -26
  91. package/dist/instrumentation/logger.js +0 -10
  92. package/dist/instrumentation/logger.js.map +0 -1
  93. package/dist/instrumentation/tracer.cjs +0 -84
  94. package/dist/instrumentation/tracer.cjs.map +0 -1
  95. package/dist/instrumentation/tracer.d.cts +0 -36
  96. package/dist/instrumentation/tracer.d.ts +0 -36
  97. package/dist/instrumentation/tracer.js +0 -76
  98. package/dist/instrumentation/tracer.js.map +0 -1
  99. package/dist/instrumentation/types.cjs +0 -4
  100. package/dist/instrumentation/types.cjs.map +0 -1
  101. package/dist/instrumentation/types.d.cts +0 -39
  102. package/dist/instrumentation/types.d.ts +0 -39
  103. package/dist/instrumentation/types.js +0 -3
  104. package/dist/instrumentation/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
1
+ {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { FrameworkError } from '../errors.js';
2
2
  import * as R from 'remeda';
3
- import { doNothing, toCamelCase } from 'remeda';
3
+ import { toCamelCase } from 'remeda';
4
4
  import { Retryable } from '../internals/helpers/retryable.js';
5
5
  import { Serializable } from '../internals/serializable.js';
6
6
  import { Task } from 'promise-based-task';
@@ -12,8 +12,6 @@ import { z, ZodSchema } from 'zod';
12
12
  import { Emitter } from '../emitter/emitter.js';
13
13
  import { RunContext } from '../context.js';
14
14
  import { shallowCopy } from '../serializer/utils.js';
15
- import { INSTRUMENTATION_ENABLED } from '../instrumentation/config.js';
16
- import { createTelemetryMiddleware } from '../instrumentation/create-telemetry-middleware.js';
17
15
 
18
16
  var __defProp = Object.defineProperty;
19
17
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -213,7 +211,7 @@ class Tool extends Serializable {
213
211
  } finally {
214
212
  await run.emitter.emit("finish", null);
215
213
  }
216
- }).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());
214
+ });
217
215
  }
218
216
  async _runCached(input, options, run) {
219
217
  const key = ObjectHashKeyFn({
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","middleware","INSTRUMENTATION_ENABLED","createTelemetryMiddleware","doNothing","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { INSTRUMENTATION_ENABLED } from \"@/instrumentation/config.js\";\nimport { createTelemetryMiddleware } from \"@/instrumentation/create-telemetry-middleware.js\";\nimport { doNothing, toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(INSTRUMENTATION_ENABLED ? createTelemetryMiddleware() : doNothing());\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
1
+ {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
@@ -56,22 +56,22 @@ declare class MilvusDatabaseTool extends Tool<JSONToolOutput<MilvusSearchToolRes
56
56
  searchOutput: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
57
57
  }, "strip", z.ZodTypeAny, {
58
58
  action: MilvusAction;
59
- metadata?: Record<string, any> | undefined;
60
59
  filter?: string | undefined;
61
- topK?: number | undefined;
60
+ metadata?: Record<string, any> | undefined;
62
61
  collectionName?: string | undefined;
63
62
  vector?: number[] | undefined;
64
63
  vectors?: number[][] | undefined;
64
+ topK?: number | undefined;
65
65
  ids?: (string | number)[] | undefined;
66
66
  searchOutput?: string[] | undefined;
67
67
  }, {
68
68
  action: MilvusAction;
69
- metadata?: Record<string, any> | undefined;
70
69
  filter?: string | undefined;
71
- topK?: number | undefined;
70
+ metadata?: Record<string, any> | undefined;
72
71
  collectionName?: string | undefined;
73
72
  vector?: number[] | undefined;
74
73
  vectors?: number[][] | undefined;
74
+ topK?: number | undefined;
75
75
  ids?: (string | number)[] | undefined;
76
76
  searchOutput?: string[] | undefined;
77
77
  }>;
@@ -56,22 +56,22 @@ declare class MilvusDatabaseTool extends Tool<JSONToolOutput<MilvusSearchToolRes
56
56
  searchOutput: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
57
57
  }, "strip", z.ZodTypeAny, {
58
58
  action: MilvusAction;
59
- metadata?: Record<string, any> | undefined;
60
59
  filter?: string | undefined;
61
- topK?: number | undefined;
60
+ metadata?: Record<string, any> | undefined;
62
61
  collectionName?: string | undefined;
63
62
  vector?: number[] | undefined;
64
63
  vectors?: number[][] | undefined;
64
+ topK?: number | undefined;
65
65
  ids?: (string | number)[] | undefined;
66
66
  searchOutput?: string[] | undefined;
67
67
  }, {
68
68
  action: MilvusAction;
69
- metadata?: Record<string, any> | undefined;
70
69
  filter?: string | undefined;
71
- topK?: number | undefined;
70
+ metadata?: Record<string, any> | undefined;
72
71
  collectionName?: string | undefined;
73
72
  vector?: number[] | undefined;
74
73
  vectors?: number[][] | undefined;
74
+ topK?: number | undefined;
75
75
  ids?: (string | number)[] | undefined;
76
76
  searchOutput?: string[] | undefined;
77
77
  }>;
package/dist/version.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports.Version = "0.0.0";
4
4
  try {
5
- exports.Version = "0.1.8";
5
+ exports.Version = "0.1.10";
6
6
  } catch {
7
7
  }
8
8
  //# sourceMappingURL=version.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["version.ts"],"names":["Version","__LIBRARY_VERSION"],"mappings":";;AAkBIA,eAAU,GAAA;AACd,IAAI;AACFA,EAAUC,eAAAA,GAAAA,OAAAA;AACZ,CAAQ,CAAA,MAAA;AAER","file":"version.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ndeclare const __LIBRARY_VERSION: string;\n\nlet Version = \"0.0.0\";\ntry {\n Version = __LIBRARY_VERSION;\n} catch {\n /* empty */\n}\n\nexport { Version };\n"]}
1
+ {"version":3,"sources":["version.ts"],"names":["Version","__LIBRARY_VERSION"],"mappings":";;AAkBIA,eAAU,GAAA;AACd,IAAI;AACFA,EAAUC,eAAAA,GAAAA,QAAAA;AACZ,CAAQ,CAAA,MAAA;AAER","file":"version.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ndeclare const __LIBRARY_VERSION: string;\n\nlet Version = \"0.0.0\";\ntry {\n Version = __LIBRARY_VERSION;\n} catch {\n /* empty */\n}\n\nexport { Version };\n"]}
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  let Version = "0.0.0";
2
2
  try {
3
- Version = "0.1.8";
3
+ Version = "0.1.10";
4
4
  } catch {
5
5
  }
6
6
 
@@ -1 +1 @@
1
- {"version":3,"sources":["version.ts"],"names":["Version","__LIBRARY_VERSION"],"mappings":"AAkBA,IAAIA,OAAU,GAAA;AACd,IAAI;AACFA,EAAUC,OAAAA,GAAAA,OAAAA;AACZ,CAAQ,CAAA,MAAA;AAER","file":"version.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ndeclare const __LIBRARY_VERSION: string;\n\nlet Version = \"0.0.0\";\ntry {\n Version = __LIBRARY_VERSION;\n} catch {\n /* empty */\n}\n\nexport { Version };\n"]}
1
+ {"version":3,"sources":["version.ts"],"names":["Version","__LIBRARY_VERSION"],"mappings":"AAkBA,IAAIA,OAAU,GAAA;AACd,IAAI;AACFA,EAAUC,OAAAA,GAAAA,QAAAA;AACZ,CAAQ,CAAA,MAAA;AAER","file":"version.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ndeclare const __LIBRARY_VERSION: string;\n\nlet Version = \"0.0.0\";\ntry {\n Version = __LIBRARY_VERSION;\n} catch {\n /* empty */\n}\n\nexport { Version };\n"]}