UNPKG

@langchain/community

Version:
1 lines 5.55 kB
{"version":3,"file":"ibm.cjs","names":["StructuredTool","jsonSchemaToZod","BaseToolkit","authenticateAndSetInstance"],"sources":["../../../src/agents/toolkits/ibm.ts"],"sourcesContent":["/* oxlint-disable typescript/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,sBAAAA,eAA4C;CAC3E;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YACE,QACA,SACA,cACA;AACA,SAAO;AAEP,OAAK,OAAO,QAAQ;AACpB,OAAK,cAAc,QAAQ,eAAe;AAC1C,OAAK,SAASC,YAAAA,gBAAgB,QAAQ,WAAW;AACjD,OAAK,eAAe,eAChBA,YAAAA,gBAAgB,aAAa,GAC7B,KAAA;AAEJ,OAAK,UAAU;;CAGjB,MAAgB,MAAM,aAAmD;EACvE,MAAM,EAAE,UAAU;EAUlB,MAAM,UATW,MAAM,KAAK,QAAQ,0BAA0B;GAC5D,QAAQ,KAAK;GACb,+BAA+B;IAC7B,OAAO,SAAS;IAChB,WAAW,KAAK;IAChB,QAAQ,KAAK;IACd;GACF,CAAC,GAEuB,OAAO;AAChC,SAAO,IAAI,SAAS,YAAY;AAC9B,WAAQ,UAAU,2CAA2C;IAC7D;;CAGJ,IAAI,OAAO,QAA6B;AACtC,MAAI,CAAC,KAAK,cAAc;AACtB,QAAK,aAAa;AAClB;;AAGF,OAAK,cAAA,GAAA,4BAAA,kBAD2B,KAAK,cAAc,OAAO,CACjC;;;AAI7B,IAAa,iBAAb,MAAa,uBAAuBC,sBAAAA,YAAY;CAC9C;CAEA;CAEA,YAAY,QAAmC;AAC7C,SAAO;EACP,MAAM,EACJ,iBACA,mBACA,sBACA,mBACA,mBACA,cACA,SACA,YACA,eACE;EAEJ,MAAM,OAAOC,YAAAA,2BAA2B;GACtC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;AACF,MAAI,KAAM,MAAK,UAAU;;CAG3B,MAAM,YAAY;EAChB,MAAM,EAAE,QAAQ,UAAU,MAAM,KAAK,QAAQ,uBAAuB;AACpE,OAAK,QAAQ,MAAM,UAChB,KAAK,SAAS;GACb,MAAM,EAAE,UAAU,iBAAA,GAAA,sBAAA,iCAAgD,KAAK;AACvE,OAAI,YACF,QAAO,IAAI,YAAY,aAAa,KAAK,SAAS,KAAK,cAAc;OAClE,QAAO,KAAA;IACZ,CACD,QAAQ,SAA8B,SAAS,KAAA,EAAU;;CAG9D,aAAa,KAAK,OAAkC;EAClD,MAAM,WAAW,IAAI,eAAe,EAAE,GAAG,OAAO,CAAC;AACjD,QAAM,SAAS,WAAW;AAC1B,SAAO;;CAGT,WAAsC;AACpC,SAAO,KAAK;;CAGd,QAAQ,UAAkB,QAA8B;EACtD,MAAM,eAAe,KAAK,MAAM,MAAM,SAAS,KAAK,SAAS,SAAS;AACtE,MAAI,CAAC,aACH,OAAM,IAAI,MAAM,yCAAyC;AAC3D,MAAI,OACF,cAAa,SAAS;AAExB,SAAO"}