{"version":3,"sources":["../../src/tools/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\n/**\n * @deprecated Use ToolEmitter instead\n */\nexport type CustomToolEmitter<\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 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"]}