diff --git a/packages/ai/src/parseTools.ts b/packages/ai/src/parseTools.ts index fc8e00bf47..0e732cdb4a 100644 --- a/packages/ai/src/parseTools.ts +++ b/packages/ai/src/parseTools.ts @@ -1,4 +1,5 @@ import type { VariableStore } from "@typebot.io/forge/types"; +import { safeStringify } from "@typebot.io/lib/safeStringify"; import { isNotEmpty } from "@typebot.io/lib/utils"; import { executeFunction } from "@typebot.io/variables/executeFunction"; import type { Variable } from "@typebot.io/variables/schemas"; @@ -27,7 +28,7 @@ export const parseTools = ({ body: tool.code!, }); newVariables?.forEach((v) => variables.set(v.id, v.value)); - return output; + return safeStringify(output) ?? ""; }, } satisfies CoreTool; return acc; diff --git a/packages/forge/blocks/openai/src/actions/askAssistant.ts b/packages/forge/blocks/openai/src/actions/askAssistant.ts index 0e4487f0bb..5608e3f18a 100644 --- a/packages/forge/blocks/openai/src/actions/askAssistant.ts +++ b/packages/forge/blocks/openai/src/actions/askAssistant.ts @@ -4,6 +4,7 @@ import type { LogsStore, VariableStore, } from "@typebot.io/forge/types"; +import { safeStringify } from "@typebot.io/lib/safeStringify"; import { isDefined, isEmpty, isNotEmpty } from "@typebot.io/lib/utils"; import { executeFunction } from "@typebot.io/variables/executeFunction"; import { readDataStream } from "ai"; @@ -339,7 +340,7 @@ const createAssistantStream = async ({ return { tool_call_id: toolCall.id, - output, + output: safeStringify(output) ?? "", }; }, ), diff --git a/packages/variables/src/executeFunction.ts b/packages/variables/src/executeFunction.ts index dc7983929b..b41f824c0c 100644 --- a/packages/variables/src/executeFunction.ts +++ b/packages/variables/src/executeFunction.ts @@ -1,4 +1,3 @@ -import { safeStringify } from "@typebot.io/lib/safeStringify"; import { stringifyError } from "@typebot.io/lib/stringifyError"; import { isDefined } from "@typebot.io/lib/utils"; import ivm from "isolated-vm"; @@ -74,9 +73,9 @@ export const executeFunction = async ({ ); try { - const output = await run(parsedBody); + const output: unknown = await run(parsedBody); return { - output: safeStringify(output) ?? "", + output, newVariables: Object.entries(updatedVariables) .map(([name, value]) => { const existingVariable = variables.find((v) => v.name === name);