{"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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>;\nexport type AnyToolClass = abstract new (...args: any[]) => AnyTool;\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"]}