@assistant-ui/react
Version:
Typescript/React library for AI Chat
1 lines • 1.83 kB
Source Map (JSON)
{"version":3,"sources":["../../../../src/runtimes/edge/streams/toolResultStream.ts"],"sourcesContent":["import { Tool } from \"../../../model-context/ModelContextTypes\";\nimport { z } from \"zod\";\nimport { ToolExecutionStream } from \"assistant-stream\";\n\nexport function toolResultStream(\n tools: Record<string, Tool<any, any>> | undefined,\n abortSignal: AbortSignal,\n) {\n return new ToolExecutionStream(({ toolCallId, toolName, args }) => {\n const tool = tools?.[toolName];\n if (!tool || !tool.execute) return undefined;\n\n let executeFn = tool.execute;\n\n if (tool.parameters instanceof z.ZodType) {\n const result = tool.parameters.safeParse(args);\n if (!result.success) {\n executeFn =\n tool.experimental_onSchemaValidationError ??\n (() => {\n throw (\n \"Function parameter validation failed. \" +\n JSON.stringify(result.error.issues)\n );\n });\n }\n }\n\n const getResult = async () => {\n const result = await executeFn(args, {\n toolCallId,\n abortSignal,\n });\n return result === undefined ? \"<no result>\" : result;\n };\n\n return getResult();\n });\n}\n"],"mappings":";AACA,SAAS,SAAS;AAClB,SAAS,2BAA2B;AAE7B,SAAS,iBACd,OACA,aACA;AACA,SAAO,IAAI,oBAAoB,CAAC,EAAE,YAAY,UAAU,KAAK,MAAM;AACjE,UAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAI,CAAC,QAAQ,CAAC,KAAK,QAAS,QAAO;AAEnC,QAAI,YAAY,KAAK;AAErB,QAAI,KAAK,sBAAsB,EAAE,SAAS;AACxC,YAAM,SAAS,KAAK,WAAW,UAAU,IAAI;AAC7C,UAAI,CAAC,OAAO,SAAS;AACnB,oBACE,KAAK,yCACJ,MAAM;AACL,gBACE,2CACA,KAAK,UAAU,OAAO,MAAM,MAAM;AAAA,QAEtC;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,YAAY,YAAY;AAC5B,YAAM,SAAS,MAAM,UAAU,MAAM;AAAA,QACnC;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO,WAAW,SAAY,gBAAgB;AAAA,IAChD;AAEA,WAAO,UAAU;AAAA,EACnB,CAAC;AACH;","names":[]}