{"version":3,"file":"ibm.cjs","names":["StructuredTool","fields: WatsonXAI.TextChatParameterFunction","service: WatsonXAI","configSchema?: WatsonXAI.JsonObject","jsonSchemaToZod","inputObject: Record<string, any>","config: Record<string, any>","BaseToolkit","fields: WatsonxAuth & WatsonxInit","authenticateAndSetInstance","props: WatsonxAuth & WatsonxInit","toolName: string","config?: Record<string, any>"],"sources":["../../../src/agents/toolkits/ibm.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  WatsonXAI,\n  convertUtilityToolToWatsonxTool,\n} from \"@ibm-cloud/watsonx-ai\";\nimport {\n  BaseToolkit,\n  StructuredTool,\n  StructuredToolInterface,\n} from \"@langchain/core/tools\";\nimport {\n  InteropZodObject,\n  ZodObjectV3,\n  interopSafeParse,\n} from \"@langchain/core/utils/types\";\nimport {\n  authenticateAndSetInstance,\n  jsonSchemaToZod,\n} from \"../../utils/ibm.js\";\nimport { WatsonxAuth, WatsonxInit } from \"../../types/ibm.js\";\n\nexport interface WatsonxToolParams {\n  name: string;\n  description: string;\n  schema?: Record<string, any>;\n  service?: WatsonXAI;\n  configSchema?: Record<string, any>;\n}\n\nexport class WatsonxTool extends StructuredTool implements WatsonxToolParams {\n  name: string;\n\n  description: string;\n\n  service: WatsonXAI;\n\n  schema: ZodObjectV3;\n\n  configSchema?: InteropZodObject;\n\n  toolConfig?: Record<string, any>;\n\n  constructor(\n    fields: WatsonXAI.TextChatParameterFunction,\n    service: WatsonXAI,\n    configSchema?: WatsonXAI.JsonObject\n  ) {\n    super();\n\n    this.name = fields?.name;\n    this.description = fields?.description || \"\";\n    this.schema = jsonSchemaToZod(fields?.parameters);\n    this.configSchema = configSchema\n      ? jsonSchemaToZod(configSchema)\n      : undefined;\n\n    this.service = service;\n  }\n\n  protected async _call(inputObject: Record<string, any>): Promise<string> {\n    const { input } = inputObject;\n    const response = await this.service.runUtilityAgentToolByName({\n      toolId: this.name,\n      wxUtilityAgentToolsRunRequest: {\n        input: input ?? inputObject,\n        tool_name: this.name,\n        config: this.toolConfig,\n      },\n    });\n\n    const result = response?.result.output;\n    return new Promise((resolve) => {\n      resolve(result ?? \"Sorry, the tool did not work as expected\");\n    });\n  }\n\n  set config(config: Record<string, any>) {\n    if (!this.configSchema) {\n      this.toolConfig = config;\n      return;\n    }\n    const result = interopSafeParse(this.configSchema, config);\n    this.toolConfig = result.data;\n  }\n}\n\nexport class WatsonxToolkit extends BaseToolkit {\n  tools: WatsonxTool[];\n\n  service: WatsonXAI;\n\n  constructor(fields: WatsonxAuth & WatsonxInit) {\n    super();\n    const {\n      watsonxAIApikey,\n      watsonxAIAuthType,\n      watsonxAIBearerToken,\n      watsonxAIUsername,\n      watsonxAIPassword,\n      watsonxAIUrl,\n      version,\n      disableSSL,\n      serviceUrl,\n    } = fields;\n\n    const auth = authenticateAndSetInstance({\n      watsonxAIApikey,\n      watsonxAIAuthType,\n      watsonxAIBearerToken,\n      watsonxAIUsername,\n      watsonxAIPassword,\n      watsonxAIUrl,\n      disableSSL,\n      version,\n      serviceUrl,\n    });\n    if (auth) this.service = auth;\n  }\n\n  async loadTools() {\n    const { result: tools } = await this.service.listUtilityAgentTools();\n    this.tools = tools.resources\n      .map((tool) => {\n        const { function: watsonxTool } = convertUtilityToolToWatsonxTool(tool);\n        if (watsonxTool)\n          return new WatsonxTool(watsonxTool, this.service, tool.config_schema);\n        else return undefined;\n      })\n      .filter((item): item is WatsonxTool => item !== undefined);\n  }\n\n  static async init(props: WatsonxAuth & WatsonxInit) {\n    const instance = new WatsonxToolkit({ ...props });\n    await instance.loadTools();\n    return instance;\n  }\n\n  getTools(): StructuredToolInterface[] {\n    return this.tools;\n  }\n\n  getTool(toolName: string, config?: Record<string, any>) {\n    const selectedTool = this.tools.find((item) => item.name === toolName);\n    if (!selectedTool)\n      throw new Error(\"Tool with provided name does not exist\");\n    if (config) {\n      selectedTool.config = config;\n    }\n    return selectedTool;\n  }\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,IAAa,cAAb,cAAiCA,sCAA4C;CAC3E;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YACEC,QACAC,SACAC,cACA;EACA,OAAO;EAEP,KAAK,OAAO,QAAQ;EACpB,KAAK,cAAc,QAAQ,eAAe;EAC1C,KAAK,SAASC,4BAAgB,QAAQ,WAAW;EACjD,KAAK,eAAe,eAChBA,4BAAgB,aAAa,GAC7B;EAEJ,KAAK,UAAU;CAChB;CAED,MAAgB,MAAMC,aAAmD;EACvE,MAAM,EAAE,OAAO,GAAG;EAClB,MAAM,WAAW,MAAM,KAAK,QAAQ,0BAA0B;GAC5D,QAAQ,KAAK;GACb,+BAA+B;IAC7B,OAAO,SAAS;IAChB,WAAW,KAAK;IAChB,QAAQ,KAAK;GACd;EACF,EAAC;EAEF,MAAM,SAAS,UAAU,OAAO;AAChC,SAAO,IAAI,QAAQ,CAAC,YAAY;GAC9B,QAAQ,UAAU,2CAA2C;EAC9D;CACF;CAED,IAAI,OAAOC,QAA6B;AACtC,MAAI,CAAC,KAAK,cAAc;GACtB,KAAK,aAAa;AAClB;EACD;EACD,MAAM,4DAA0B,KAAK,cAAc,OAAO;EAC1D,KAAK,aAAa,OAAO;CAC1B;AACF;AAED,IAAa,iBAAb,MAAa,uBAAuBC,mCAAY;CAC9C;CAEA;CAEA,YAAYC,QAAmC;EAC7C,OAAO;EACP,MAAM,EACJ,iBACA,mBACA,sBACA,mBACA,mBACA,cACA,SACA,YACA,YACD,GAAG;EAEJ,MAAM,OAAOC,uCAA2B;GACtC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,EAAC;AACF,MAAI,MAAM,KAAK,UAAU;CAC1B;CAED,MAAM,YAAY;EAChB,MAAM,EAAE,QAAQ,OAAO,GAAG,MAAM,KAAK,QAAQ,uBAAuB;EACpE,KAAK,QAAQ,MAAM,UAChB,IAAI,CAAC,SAAS;GACb,MAAM,EAAE,UAAU,aAAa,+DAAmC,KAAK;AACvE,OAAI,YACF,QAAO,IAAI,YAAY,aAAa,KAAK,SAAS,KAAK;OACpD,QAAO;EACb,EAAC,CACD,OAAO,CAAC,SAA8B,SAAS,OAAU;CAC7D;CAED,aAAa,KAAKC,OAAkC;EAClD,MAAM,WAAW,IAAI,eAAe,EAAE,GAAG,MAAO;EAChD,MAAM,SAAS,WAAW;AAC1B,SAAO;CACR;CAED,WAAsC;AACpC,SAAO,KAAK;CACb;CAED,QAAQC,UAAkBC,QAA8B;EACtD,MAAM,eAAe,KAAK,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,SAAS;AACtE,MAAI,CAAC,aACH,OAAM,IAAI,MAAM;AAClB,MAAI,QACF,aAAa,SAAS;AAExB,SAAO;CACR;AACF"}