{"version":3,"file":"render.cjs","names":["isOpenAITool"],"sources":["../../src/tools/render.ts"],"sourcesContent":["import { StructuredToolInterface } from \"@langchain/core/tools\";\nimport {\n  ToolDefinition,\n  isOpenAITool,\n} from \"@langchain/core/language_models/base\";\nimport {\n  toJsonSchema,\n  type JsonSchema7Type,\n} from \"@langchain/core/utils/json_schema\";\nimport { isInteropZodSchema } from \"@langchain/core/utils/types\";\n\n/**\n * Render the tool name and description in plain text.\n *\n * Output will be in the format of:\n * ```\n * search: This tool is used for search\n * calculator: This tool is used for math\n * ```\n * @param tools\n * @returns a string of all tools and their descriptions\n */\nexport function renderTextDescription(\n  tools: StructuredToolInterface[] | ToolDefinition[]\n): string {\n  if ((tools as unknown[]).every(isOpenAITool)) {\n    return (tools as ToolDefinition[])\n      .map(\n        (tool) =>\n          `${tool.function.name}${\n            tool.function.description ? `: ${tool.function.description}` : \"\"\n          }`\n      )\n      .join(\"\\n\");\n  }\n  return (tools as StructuredToolInterface[])\n    .map((tool) => `${tool.name}: ${tool.description}`)\n    .join(\"\\n\");\n}\n\n/**\n * Render the tool name, description, and args in plain text.\n * Output will be in the format of:'\n * ```\n * search: This tool is used for search, args: {\"query\": {\"type\": \"string\"}}\n * calculator: This tool is used for math,\n * args: {\"expression\": {\"type\": \"string\"}}\n * ```\n * @param tools\n * @returns a string of all tools, their descriptions and a stringified version of their schemas\n */\nexport function renderTextDescriptionAndArgs(\n  tools: StructuredToolInterface[] | ToolDefinition[]\n): string {\n  if ((tools as unknown[]).every(isOpenAITool)) {\n    return (tools as ToolDefinition[])\n      .map(\n        (tool) =>\n          `${tool.function.name}${\n            tool.function.description ? `: ${tool.function.description}` : \"\"\n          }, args: ${JSON.stringify(tool.function.parameters)}`\n      )\n      .join(\"\\n\");\n  }\n  return (tools as StructuredToolInterface[])\n    .map((tool) => {\n      const jsonSchema = (\n        isInteropZodSchema(tool.schema)\n          ? toJsonSchema(tool.schema)\n          : tool.schema\n      ) as { properties?: Record<string, JsonSchema7Type> } | undefined;\n      return `${tool.name}: ${tool.description}, args: ${JSON.stringify(\n        jsonSchema?.properties\n      )}`;\n    })\n    .join(\"\\n\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,sBACd,OACQ;AACR,KAAK,MAAoB,MAAMA,qCAAAA,aAAa,CAC1C,QAAQ,MACL,KACE,SACC,GAAG,KAAK,SAAS,OACf,KAAK,SAAS,cAAc,KAAK,KAAK,SAAS,gBAAgB,KAEpE,CACA,KAAK,KAAK;AAEf,QAAQ,MACL,KAAK,SAAS,GAAG,KAAK,KAAK,IAAI,KAAK,cAAc,CAClD,KAAK,KAAK;;;;;;;;;;;;;AAcf,SAAgB,6BACd,OACQ;AACR,KAAK,MAAoB,MAAMA,qCAAAA,aAAa,CAC1C,QAAQ,MACL,KACE,SACC,GAAG,KAAK,SAAS,OACf,KAAK,SAAS,cAAc,KAAK,KAAK,SAAS,gBAAgB,GAChE,UAAU,KAAK,UAAU,KAAK,SAAS,WAAW,GACtD,CACA,KAAK,KAAK;AAEf,QAAQ,MACL,KAAK,SAAS;EACb,MAAM,cAAA,GAAA,4BAAA,oBACe,KAAK,OAAO,IAAA,GAAA,kCAAA,cACd,KAAK,OAAO,GACzB,KAAK;AAEX,SAAO,GAAG,KAAK,KAAK,IAAI,KAAK,YAAY,UAAU,KAAK,UACtD,YAAY,WACb;GACD,CACD,KAAK,KAAK"}