@assistant-ui/react 0.8.6 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cloud/auiV0.d.ts.map +1 -1
- package/dist/cloud/auiV0.js +9 -2
- package/dist/cloud/auiV0.js.map +1 -1
- package/dist/cloud/auiV0.mjs +9 -2
- package/dist/cloud/auiV0.mjs.map +1 -1
- package/dist/primitives/contentPart/useContentPartFile.d.ts +5 -0
- package/dist/primitives/contentPart/useContentPartFile.d.ts.map +1 -0
- package/dist/{runtimes/edge/streams/utils/index.js → primitives/contentPart/useContentPartFile.js} +18 -12
- package/dist/primitives/contentPart/useContentPartFile.js.map +1 -0
- package/dist/primitives/contentPart/useContentPartFile.mjs +18 -0
- package/dist/primitives/contentPart/useContentPartFile.mjs.map +1 -0
- package/dist/primitives/contentPart/useContentPartSource.d.ts +5 -0
- package/dist/primitives/contentPart/useContentPartSource.d.ts.map +1 -0
- package/dist/{runtimes/edge/streams/utils/PipeableTransformStream.js → primitives/contentPart/useContentPartSource.js} +18 -16
- package/dist/primitives/contentPart/useContentPartSource.js.map +1 -0
- package/dist/primitives/contentPart/useContentPartSource.mjs +18 -0
- package/dist/primitives/contentPart/useContentPartSource.mjs.map +1 -0
- package/dist/primitives/index.d.ts +3 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +7 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/index.mjs +5 -1
- package/dist/primitives/index.mjs.map +1 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts +5 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js.map +1 -1
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.d.ts +1 -1
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.d.ts.map +1 -1
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.js +2 -2
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.js.map +1 -1
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.mjs +2 -2
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.mjs.map +1 -1
- package/dist/runtimes/edge/EdgeChatAdapter.d.ts +1 -2
- package/dist/runtimes/edge/EdgeChatAdapter.d.ts.map +1 -1
- package/dist/runtimes/edge/EdgeChatAdapter.js +6 -8
- package/dist/runtimes/edge/EdgeChatAdapter.js.map +1 -1
- package/dist/runtimes/edge/EdgeChatAdapter.mjs +9 -8
- package/dist/runtimes/edge/EdgeChatAdapter.mjs.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts +2 -2
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.js +5 -2
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs +5 -2
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs.map +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.js +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.mjs +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.mjs.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.js +2 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs +2 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts +2 -2
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js +17 -34
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs +21 -37
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
- package/dist/runtimes/edge/index.d.ts +0 -1
- package/dist/runtimes/edge/index.d.ts.map +1 -1
- package/dist/runtimes/edge/index.js +1 -3
- package/dist/runtimes/edge/index.js.map +1 -1
- package/dist/runtimes/edge/index.mjs +0 -1
- package/dist/runtimes/edge/index.mjs.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.d.ts +2 -33
- package/dist/runtimes/edge/streams/toolResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.js +19 -96
- package/dist/runtimes/edge/streams/toolResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.mjs +19 -86
- package/dist/runtimes/edge/streams/toolResultStream.mjs.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.js +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.mjs +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +2 -2
- package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
- package/dist/runtimes/local/LocalRuntimeOptions.d.ts +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +3 -2
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +22 -7
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +22 -7
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/utils/MessageRepository.d.ts +1 -0
- package/dist/runtimes/utils/MessageRepository.d.ts.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +3 -0
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.mjs +3 -0
- package/dist/runtimes/utils/MessageRepository.mjs.map +1 -1
- package/dist/types/AssistantTypes.d.ts +1 -1
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/AssistantTypes.js.map +1 -1
- package/dist/utils/json/is-json.d.ts +1 -1
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/is-json.js +10 -4
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/json/is-json.mjs +10 -4
- package/dist/utils/json/is-json.mjs.map +1 -1
- package/package.json +5 -5
- package/src/cloud/auiV0.ts +9 -2
- package/src/primitives/contentPart/useContentPartFile.tsx +18 -0
- package/src/primitives/contentPart/useContentPartSource.tsx +18 -0
- package/src/primitives/index.ts +3 -1
- package/src/runtimes/adapters/thread-history/ThreadHistoryAdapter.ts +5 -1
- package/src/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.ts +2 -2
- package/src/runtimes/edge/EdgeChatAdapter.ts +18 -19
- package/src/runtimes/edge/converters/fromLanguageModelMessages.ts +24 -14
- package/src/runtimes/edge/converters/toCoreMessages.ts +6 -2
- package/src/runtimes/edge/converters/toLanguageModelMessages.ts +3 -2
- package/src/runtimes/edge/createEdgeRuntimeAPI.ts +25 -47
- package/src/runtimes/edge/index.ts +0 -2
- package/src/runtimes/edge/streams/toolResultStream.ts +28 -152
- package/src/runtimes/external-store/ThreadMessageLike.tsx +2 -1
- package/src/runtimes/local/ChatModelAdapter.tsx +2 -0
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +31 -7
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +1 -2
- package/src/runtimes/utils/MessageRepository.tsx +4 -0
- package/src/types/AssistantTypes.ts +2 -1
- package/src/utils/json/is-json.ts +17 -4
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts +0 -62
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.js +0 -46
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.js.map +0 -1
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs +0 -21
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs.map +0 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts +0 -5
- package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.js +0 -170
- package/dist/runtimes/edge/streams/assistantDecoderStream.js.map +0 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs +0 -147
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts +0 -5
- package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.js +0 -137
- package/dist/runtimes/edge/streams/assistantEncoderStream.js.map +0 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs +0 -114
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/runResultStream.d.ts +0 -4
- package/dist/runtimes/edge/streams/runResultStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/runResultStream.js +0 -313
- package/dist/runtimes/edge/streams/runResultStream.js.map +0 -1
- package/dist/runtimes/edge/streams/runResultStream.mjs +0 -288
- package/dist/runtimes/edge/streams/runResultStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/PipeableTransformStream.d.ts +0 -4
- package/dist/runtimes/edge/streams/utils/PipeableTransformStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/PipeableTransformStream.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/PipeableTransformStream.mjs +0 -15
- package/dist/runtimes/edge/streams/utils/PipeableTransformStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/StreamPart.d.ts +0 -7
- package/dist/runtimes/edge/streams/utils/StreamPart.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/StreamPart.js +0 -19
- package/dist/runtimes/edge/streams/utils/StreamPart.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/StreamPart.mjs +0 -1
- package/dist/runtimes/edge/streams/utils/StreamPart.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.d.ts +0 -2
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.js +0 -48
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.mjs +0 -23
- package/dist/runtimes/edge/streams/utils/chunkByLineStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/index.d.ts +0 -14
- package/dist/runtimes/edge/streams/utils/index.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/index.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/index.mjs +0 -11
- package/dist/runtimes/edge/streams/utils/index.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.d.ts +0 -4
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.js +0 -50
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.mjs +0 -25
- package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.mjs.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts +0 -3
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.js +0 -48
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.js.map +0 -1
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.mjs +0 -23
- package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.mjs.map +0 -1
- package/src/runtimes/edge/streams/AssistantStreamChunkType.ts +0 -73
- package/src/runtimes/edge/streams/assistantDecoderStream.ts +0 -170
- package/src/runtimes/edge/streams/assistantEncoderStream.ts +0 -126
- package/src/runtimes/edge/streams/runResultStream.ts +0 -360
- package/src/runtimes/edge/streams/utils/PipeableTransformStream.ts +0 -10
- package/src/runtimes/edge/streams/utils/StreamPart.ts +0 -3
- package/src/runtimes/edge/streams/utils/chunkByLineStream.ts +0 -24
- package/src/runtimes/edge/streams/utils/index.ts +0 -15
- package/src/runtimes/edge/streams/utils/streamPartDecoderStream.ts +0 -29
- package/src/runtimes/edge/streams/utils/streamPartEncoderStream.ts +0 -23
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n CoreMessage,\n ThreadMessage,\n ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: readonly (CoreMessage | ThreadMessage)[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages,\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n id: \"DEFAULT\",\n createdAt: new Date(),\n role: \"assistant\",\n content: lastChunk.content,\n status: lastChunk.status,\n metadata: {\n unstable_data: lastChunk.metadata?.unstable_data ?? [],\n unstable_annotations:\n lastChunk.metadata?.unstable_annotations ?? [],\n steps: lastChunk.metadata?.steps ?? [],\n custom: lastChunk.metadata?.custom ?? {},\n },\n } satisfies ThreadMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: readonly CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: readonly CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n CoreMessage,\n ThreadMessage,\n ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport { toolResultStream } from \"./streams/toolResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { z } from \"zod\";\nimport {\n AssistantMessage,\n AssistantMessageAccumulator,\n AssistantStreamChunk,\n DataStreamEncoder,\n} from \"assistant-stream\";\nimport { LanguageModelV1StreamDecoder } from \"assistant-stream/ai-sdk\";\n\ntype FinishResult = {\n messages: readonly (CoreMessage | ThreadMessage)[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<AssistantStreamChunk>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages,\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream.pipeThrough(new LanguageModelV1StreamDecoder());\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: AssistantMessage | undefined;\n serverStream.pipeThrough(new AssistantMessageAccumulator()).pipeTo(\n new WritableStream({\n write(chunk) {\n lastChunk = chunk;\n },\n close() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n id: \"DEFAULT\",\n createdAt: new Date(),\n role: \"assistant\",\n content: lastChunk.content,\n status: lastChunk.status,\n metadata: lastChunk.metadata,\n } satisfies ThreadMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n steps: lastChunk.metadata.steps,\n },\n });\n },\n abort(e) {\n console.error(\"Server stream processing error:\", e);\n },\n }),\n );\n }\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(stream.pipeThrough(new DataStreamEncoder()), {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"x-vercel-ai-data-stream\": \"v1\",\n },\n });\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: readonly CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: readonly CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
@@ -1,23 +1,16 @@
|
|
1
1
|
// src/runtimes/edge/createEdgeRuntimeAPI.ts
|
2
|
-
import { assistantEncoderStream } from "./streams/assistantEncoderStream.mjs";
|
3
2
|
import { EdgeRuntimeRequestOptionsSchema } from "./EdgeRuntimeRequestOptions.mjs";
|
4
3
|
import { toLanguageModelMessages } from "./converters/toLanguageModelMessages.mjs";
|
5
4
|
import { toLanguageModelTools } from "./converters/toLanguageModelTools.mjs";
|
6
|
-
import {
|
7
|
-
toolResultStream
|
8
|
-
} from "./streams/toolResultStream.mjs";
|
9
|
-
import { runResultStream } from "./streams/runResultStream.mjs";
|
5
|
+
import { toolResultStream } from "./streams/toolResultStream.mjs";
|
10
6
|
import {
|
11
7
|
LanguageModelV1CallSettingsSchema
|
12
8
|
} from "../../model-context/ModelContextTypes.mjs";
|
13
|
-
import {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
}
|
19
|
-
});
|
20
|
-
};
|
9
|
+
import {
|
10
|
+
AssistantMessageAccumulator,
|
11
|
+
DataStreamEncoder
|
12
|
+
} from "assistant-stream";
|
13
|
+
import { LanguageModelV1StreamDecoder } from "assistant-stream/ai-sdk";
|
21
14
|
var getEdgeRuntimeStream = async ({
|
22
15
|
abortSignal,
|
23
16
|
requestData: unsafeRequest,
|
@@ -65,7 +58,7 @@ var getEdgeRuntimeStream = async ({
|
|
65
58
|
tools: lmServerTools.concat(clientTools),
|
66
59
|
...toolChoice ? { toolChoice } : void 0
|
67
60
|
});
|
68
|
-
stream = streamResult.stream;
|
61
|
+
stream = streamResult.stream.pipeThrough(new LanguageModelV1StreamDecoder());
|
69
62
|
const canExecuteTools = hasServerTools && toolChoice?.type !== "none";
|
70
63
|
if (canExecuteTools) {
|
71
64
|
stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));
|
@@ -76,12 +69,12 @@ var getEdgeRuntimeStream = async ({
|
|
76
69
|
let serverStream = tees[1];
|
77
70
|
if (onFinish) {
|
78
71
|
let lastChunk;
|
79
|
-
serverStream
|
80
|
-
new
|
81
|
-
|
72
|
+
serverStream.pipeThrough(new AssistantMessageAccumulator()).pipeTo(
|
73
|
+
new WritableStream({
|
74
|
+
write(chunk) {
|
82
75
|
lastChunk = chunk;
|
83
76
|
},
|
84
|
-
|
77
|
+
close() {
|
85
78
|
if (!lastChunk?.status || lastChunk.status.type === "running")
|
86
79
|
return;
|
87
80
|
const resultingMessages = [
|
@@ -92,42 +85,33 @@ var getEdgeRuntimeStream = async ({
|
|
92
85
|
role: "assistant",
|
93
86
|
content: lastChunk.content,
|
94
87
|
status: lastChunk.status,
|
95
|
-
metadata:
|
96
|
-
unstable_data: lastChunk.metadata?.unstable_data ?? [],
|
97
|
-
unstable_annotations: lastChunk.metadata?.unstable_annotations ?? [],
|
98
|
-
steps: lastChunk.metadata?.steps ?? [],
|
99
|
-
custom: lastChunk.metadata?.custom ?? {}
|
100
|
-
}
|
88
|
+
metadata: lastChunk.metadata
|
101
89
|
}
|
102
90
|
];
|
103
91
|
onFinish({
|
104
92
|
messages: resultingMessages,
|
105
93
|
metadata: {
|
106
|
-
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
108
|
-
steps: lastChunk.metadata?.steps
|
94
|
+
steps: lastChunk.metadata.steps
|
109
95
|
}
|
110
96
|
});
|
97
|
+
},
|
98
|
+
abort(e) {
|
99
|
+
console.error("Server stream processing error:", e);
|
111
100
|
}
|
112
101
|
})
|
113
102
|
);
|
114
103
|
}
|
115
|
-
serverStream.pipeTo(voidStream()).catch((e) => {
|
116
|
-
console.error("Server stream processing error:", e);
|
117
|
-
});
|
118
104
|
}
|
119
105
|
return stream;
|
120
106
|
};
|
121
107
|
var getEdgeRuntimeResponse = async (options) => {
|
122
108
|
const stream = await getEdgeRuntimeStream(options);
|
123
|
-
return new Response(
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
"Content-Type": "text/plain; charset=utf-8"
|
128
|
-
}
|
109
|
+
return new Response(stream.pipeThrough(new DataStreamEncoder()), {
|
110
|
+
headers: {
|
111
|
+
"Content-Type": "text/plain; charset=utf-8",
|
112
|
+
"x-vercel-ai-data-stream": "v1"
|
129
113
|
}
|
130
|
-
);
|
114
|
+
});
|
131
115
|
};
|
132
116
|
var createEdgeRuntimeAPI = (options) => ({
|
133
117
|
POST: async (request) => getEdgeRuntimeResponse({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n CoreMessage,\n ThreadMessage,\n ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { assistantEncoderStream } from \"./streams/assistantEncoderStream\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport {\n toolResultStream,\n ToolResultStreamPart,\n} from \"./streams/toolResultStream\";\nimport { runResultStream } from \"./streams/runResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { CoreChatModelRunResult } from \"../local/ChatModelAdapter\";\nimport { streamPartEncoderStream } from \"./streams/utils/streamPartEncoderStream\";\nimport { z } from \"zod\";\n\ntype FinishResult = {\n messages: readonly (CoreMessage | ThreadMessage)[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\nconst voidStream = () => {\n return new WritableStream({\n abort(reason) {\n console.error(\"Server stream processing aborted:\", reason);\n },\n });\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<ToolResultStreamPart>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages,\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream;\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: CoreChatModelRunResult | undefined;\n serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(\n new TransformStream({\n transform(chunk) {\n lastChunk = chunk;\n },\n flush() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n id: \"DEFAULT\",\n createdAt: new Date(),\n role: \"assistant\",\n content: lastChunk.content,\n status: lastChunk.status,\n metadata: {\n unstable_data: lastChunk.metadata?.unstable_data ?? [],\n unstable_annotations:\n lastChunk.metadata?.unstable_annotations ?? [],\n steps: lastChunk.metadata?.steps ?? [],\n custom: lastChunk.metadata?.custom ?? {},\n },\n } satisfies ThreadMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n steps: lastChunk.metadata?.steps!,\n },\n });\n },\n }),\n );\n }\n\n // drain the server stream\n serverStream.pipeTo(voidStream()).catch((e) => {\n console.error(\"Server stream processing error:\", e);\n });\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(\n stream\n .pipeThrough(assistantEncoderStream())\n .pipeThrough(streamPartEncoderStream()),\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n },\n );\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: readonly CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: readonly CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/createEdgeRuntimeAPI.ts"],"sourcesContent":["import {\n LanguageModelV1,\n LanguageModelV1ToolChoice,\n LanguageModelV1FunctionTool,\n LanguageModelV1Prompt,\n LanguageModelV1CallOptions,\n} from \"@ai-sdk/provider\";\nimport {\n CoreMessage,\n ThreadMessage,\n ThreadStep,\n} from \"../../types/AssistantTypes\";\nimport { EdgeRuntimeRequestOptionsSchema } from \"./EdgeRuntimeRequestOptions\";\nimport { toLanguageModelMessages } from \"./converters/toLanguageModelMessages\";\nimport { toLanguageModelTools } from \"./converters/toLanguageModelTools\";\nimport { toolResultStream } from \"./streams/toolResultStream\";\nimport {\n LanguageModelConfig,\n LanguageModelV1CallSettings,\n LanguageModelV1CallSettingsSchema,\n Tool,\n} from \"../../model-context/ModelContextTypes\";\nimport { z } from \"zod\";\nimport {\n AssistantMessage,\n AssistantMessageAccumulator,\n AssistantStreamChunk,\n DataStreamEncoder,\n} from \"assistant-stream\";\nimport { LanguageModelV1StreamDecoder } from \"assistant-stream/ai-sdk\";\n\ntype FinishResult = {\n messages: readonly (CoreMessage | ThreadMessage)[];\n metadata: {\n steps: readonly ThreadStep[];\n };\n};\n\ntype LanguageModelCreator = (\n config: LanguageModelConfig,\n) => Promise<LanguageModelV1> | LanguageModelV1;\n\nexport type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1 | LanguageModelCreator;\n system?: string;\n tools?: Record<string, Tool<any, any>>;\n toolChoice?: LanguageModelV1ToolChoice;\n onFinish?: (result: FinishResult) => void;\n};\n\ntype GetEdgeRuntimeStreamOptions = {\n abortSignal: AbortSignal;\n requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;\n options: CreateEdgeRuntimeAPIOptions;\n};\n\nexport const getEdgeRuntimeStream = async ({\n abortSignal,\n requestData: unsafeRequest,\n options: {\n model: modelOrCreator,\n system: serverSystem,\n tools: serverTools = {},\n toolChoice,\n onFinish,\n ...unsafeSettings\n },\n}: GetEdgeRuntimeStreamOptions) => {\n const settings = LanguageModelV1CallSettingsSchema.parse(unsafeSettings);\n const lmServerTools = toLanguageModelTools(serverTools);\n const hasServerTools = Object.values(serverTools).some((v) => !!v.execute);\n\n const {\n system: clientSystem,\n tools: clientTools = [],\n messages,\n apiKey,\n baseUrl,\n modelName,\n ...callSettings\n } = EdgeRuntimeRequestOptionsSchema.parse(unsafeRequest);\n\n const systemMessages = [];\n if (serverSystem) systemMessages.push(serverSystem);\n if (clientSystem) systemMessages.push(clientSystem);\n const system = systemMessages.join(\"\\n\\n\");\n\n for (const clientTool of clientTools) {\n if (serverTools?.[clientTool.name]) {\n throw new Error(\n `Tool ${clientTool.name} was defined in both the client and server tools. This is not allowed.`,\n );\n }\n }\n\n const model =\n typeof modelOrCreator === \"function\"\n ? await modelOrCreator({ apiKey, baseUrl, modelName })\n : modelOrCreator;\n\n let stream: ReadableStream<AssistantStreamChunk>;\n const streamResult = await streamMessage({\n ...(settings as Partial<StreamMessageOptions>),\n ...callSettings,\n\n model,\n abortSignal,\n\n ...(!!system ? { system } : undefined),\n messages,\n tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),\n ...(toolChoice ? { toolChoice } : undefined),\n });\n stream = streamResult.stream.pipeThrough(new LanguageModelV1StreamDecoder());\n\n // add tool results if we have server tools\n const canExecuteTools = hasServerTools && toolChoice?.type !== \"none\";\n if (canExecuteTools) {\n stream = stream.pipeThrough(toolResultStream(serverTools, abortSignal));\n }\n\n if (canExecuteTools || onFinish) {\n // tee the stream to process server tools and onFinish asap\n const tees = stream.tee();\n stream = tees[0];\n let serverStream = tees[1];\n\n if (onFinish) {\n let lastChunk: AssistantMessage | undefined;\n serverStream.pipeThrough(new AssistantMessageAccumulator()).pipeTo(\n new WritableStream({\n write(chunk) {\n lastChunk = chunk;\n },\n close() {\n if (!lastChunk?.status || lastChunk.status.type === \"running\")\n return;\n\n const resultingMessages = [\n ...messages,\n {\n id: \"DEFAULT\",\n createdAt: new Date(),\n role: \"assistant\",\n content: lastChunk.content,\n status: lastChunk.status,\n metadata: lastChunk.metadata,\n } satisfies ThreadMessage,\n ];\n onFinish({\n messages: resultingMessages,\n metadata: {\n steps: lastChunk.metadata.steps,\n },\n });\n },\n abort(e) {\n console.error(\"Server stream processing error:\", e);\n },\n }),\n );\n }\n }\n\n return stream;\n};\n\nexport declare namespace getEdgeRuntimeResponse {\n export type { GetEdgeRuntimeStreamOptions as Options };\n}\n\nexport const getEdgeRuntimeResponse = async (\n options: getEdgeRuntimeResponse.Options,\n) => {\n const stream = await getEdgeRuntimeStream(options);\n return new Response(stream.pipeThrough(new DataStreamEncoder()), {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"x-vercel-ai-data-stream\": \"v1\",\n },\n });\n};\n\nexport const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({\n POST: async (request: Request) =>\n getEdgeRuntimeResponse({\n abortSignal: request.signal,\n requestData: await request.json(),\n options,\n }),\n});\n\ntype StreamMessageOptions = LanguageModelV1CallSettings & {\n model: LanguageModelV1;\n system?: string;\n messages: readonly CoreMessage[];\n tools?: LanguageModelV1FunctionTool[];\n toolChoice?: LanguageModelV1ToolChoice;\n abortSignal: AbortSignal;\n};\n\nasync function streamMessage({\n model,\n system,\n messages,\n tools,\n toolChoice,\n ...options\n}: StreamMessageOptions) {\n return model.doStream({\n inputFormat: \"messages\",\n mode: {\n type: \"regular\",\n ...(tools ? { tools } : undefined),\n ...(toolChoice ? { toolChoice } : undefined),\n },\n prompt: convertToLanguageModelPrompt(system, messages),\n ...(options as Partial<LanguageModelV1CallOptions>),\n });\n}\n\nexport function convertToLanguageModelPrompt(\n system: string | undefined,\n messages: readonly CoreMessage[],\n): LanguageModelV1Prompt {\n const languageModelMessages: LanguageModelV1Prompt = [];\n\n if (system != null) {\n languageModelMessages.push({ role: \"system\", content: system });\n }\n languageModelMessages.push(...toLanguageModelMessages(messages));\n\n return languageModelMessages;\n}\n"],"mappings":"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","names":[]}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export * from "./converters";
|
2
|
-
export * from "./streams/utils";
|
3
2
|
export { useEdgeRuntime, type EdgeRuntimeOptions } from "./useEdgeRuntime";
|
4
3
|
export { EdgeChatAdapter } from "./EdgeChatAdapter";
|
5
4
|
export type { EdgeRuntimeRequestOptions } from "./EdgeRuntimeRequestOptions";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/edge/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAE7B,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/edge/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
@@ -26,14 +26,12 @@ __export(edge_exports, {
|
|
26
26
|
});
|
27
27
|
module.exports = __toCommonJS(edge_exports);
|
28
28
|
__reExport(edge_exports, require("./converters/index.js"), module.exports);
|
29
|
-
__reExport(edge_exports, require("./streams/utils/index.js"), module.exports);
|
30
29
|
var import_useEdgeRuntime = require("./useEdgeRuntime.js");
|
31
30
|
var import_EdgeChatAdapter = require("./EdgeChatAdapter.js");
|
32
31
|
// Annotate the CommonJS export names for ESM import in node:
|
33
32
|
0 && (module.exports = {
|
34
33
|
EdgeChatAdapter,
|
35
34
|
useEdgeRuntime,
|
36
|
-
...require("./converters/index.js")
|
37
|
-
...require("./streams/utils/index.js")
|
35
|
+
...require("./converters/index.js")
|
38
36
|
});
|
39
37
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/index.ts"],"sourcesContent":["export * from \"./converters\";\n\nexport
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/index.ts"],"sourcesContent":["export * from \"./converters\";\n\nexport { useEdgeRuntime, type EdgeRuntimeOptions } from \"./useEdgeRuntime\";\nexport { EdgeChatAdapter } from \"./EdgeChatAdapter\";\nexport type { EdgeRuntimeRequestOptions } from \"./EdgeRuntimeRequestOptions\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAc,kCAAd;AAEA,4BAAwD;AACxD,6BAAgC;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/edge/index.ts"],"sourcesContent":["export * from \"./converters\";\n\nexport
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/edge/index.ts"],"sourcesContent":["export * from \"./converters\";\n\nexport { useEdgeRuntime, type EdgeRuntimeOptions } from \"./useEdgeRuntime\";\nexport { EdgeChatAdapter } from \"./EdgeChatAdapter\";\nexport type { EdgeRuntimeRequestOptions } from \"./EdgeRuntimeRequestOptions\";\n"],"mappings":";AAAA,cAAc;AAEd,SAAS,sBAA+C;AACxD,SAAS,uBAAuB;","names":[]}
|
@@ -1,35 +1,4 @@
|
|
1
1
|
import { Tool } from "../../../model-context/ModelContextTypes";
|
2
|
-
import {
|
3
|
-
|
4
|
-
export type ToolResultStreamPart = LanguageModelV1StreamPart | {
|
5
|
-
type: "annotations";
|
6
|
-
annotations: ReadonlyJSONValue[];
|
7
|
-
} | {
|
8
|
-
type: "data";
|
9
|
-
data: ReadonlyJSONValue[];
|
10
|
-
} | {
|
11
|
-
type: "source";
|
12
|
-
source: {
|
13
|
-
readonly sourceType: "url";
|
14
|
-
readonly id: string;
|
15
|
-
readonly url: string;
|
16
|
-
readonly title?: string;
|
17
|
-
};
|
18
|
-
} | {
|
19
|
-
type: "tool-result";
|
20
|
-
toolCallType: "function";
|
21
|
-
toolCallId: string;
|
22
|
-
toolName: string;
|
23
|
-
result: unknown;
|
24
|
-
isError?: boolean;
|
25
|
-
} | {
|
26
|
-
type: "step-finish";
|
27
|
-
finishReason: "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
|
28
|
-
usage: {
|
29
|
-
promptTokens: number;
|
30
|
-
completionTokens: number;
|
31
|
-
};
|
32
|
-
isContinued: boolean;
|
33
|
-
};
|
34
|
-
export declare function toolResultStream(tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): TransformStream<ToolResultStreamPart, ToolResultStreamPart>;
|
2
|
+
import { ToolExecutionStream } from "assistant-stream";
|
3
|
+
export declare function toolResultStream(tools: Record<string, Tool<any, any>> | undefined, abortSignal: AbortSignal): ToolExecutionStream;
|
35
4
|
//# sourceMappingURL=toolResultStream.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"toolResultStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/toolResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;
|
1
|
+
{"version":3,"file":"toolResultStream.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/edge/streams/toolResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,EACjD,WAAW,EAAE,WAAW,uBAgCzB"}
|
@@ -1,9 +1,7 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __create = Object.create;
|
3
2
|
var __defProp = Object.defineProperty;
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
6
|
var __export = (target, all) => {
|
9
7
|
for (var name in all)
|
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
17
15
|
}
|
18
16
|
return to;
|
19
17
|
};
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
-
mod
|
27
|
-
));
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
19
|
|
30
20
|
// src/runtimes/edge/streams/toolResultStream.ts
|
@@ -34,95 +24,28 @@ __export(toolResultStream_exports, {
|
|
34
24
|
});
|
35
25
|
module.exports = __toCommonJS(toolResultStream_exports);
|
36
26
|
var import_zod = require("zod");
|
37
|
-
var
|
27
|
+
var import_assistant_stream = require("assistant-stream");
|
38
28
|
function toolResultStream(tools, abortSignal) {
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
let args;
|
50
|
-
try {
|
51
|
-
args = import_secure_json_parse.default.parse(argsText);
|
52
|
-
} catch (e) {
|
53
|
-
controller.enqueue({
|
54
|
-
type: "tool-result",
|
55
|
-
toolCallType,
|
56
|
-
toolCallId,
|
57
|
-
toolName,
|
58
|
-
result: "Function parameter parsing failed. " + JSON.stringify(e.message),
|
59
|
-
isError: true
|
60
|
-
});
|
61
|
-
return;
|
62
|
-
}
|
63
|
-
toolCallExecutions.set(
|
64
|
-
toolCallId,
|
65
|
-
(async () => {
|
66
|
-
if (!tool.execute) return;
|
67
|
-
let executeFn = tool.execute;
|
68
|
-
if (tool.parameters instanceof import_zod.z.ZodType) {
|
69
|
-
const result = tool.parameters.safeParse(args);
|
70
|
-
if (!result.success) {
|
71
|
-
executeFn = tool.experimental_onSchemaValidationError ?? (() => {
|
72
|
-
throw "Function parameter validation failed. " + JSON.stringify(result.error.issues);
|
73
|
-
});
|
74
|
-
}
|
75
|
-
}
|
76
|
-
try {
|
77
|
-
const result = await executeFn(args, {
|
78
|
-
toolCallId,
|
79
|
-
abortSignal
|
80
|
-
});
|
81
|
-
controller.enqueue({
|
82
|
-
type: "tool-result",
|
83
|
-
toolCallType,
|
84
|
-
toolCallId,
|
85
|
-
toolName,
|
86
|
-
result: result === void 0 ? "<no result>" : result
|
87
|
-
});
|
88
|
-
} catch (error) {
|
89
|
-
controller.enqueue({
|
90
|
-
type: "tool-result",
|
91
|
-
toolCallType,
|
92
|
-
toolCallId,
|
93
|
-
toolName,
|
94
|
-
result: "Error: " + error,
|
95
|
-
isError: true
|
96
|
-
});
|
97
|
-
} finally {
|
98
|
-
toolCallExecutions.delete(toolCallId);
|
99
|
-
}
|
100
|
-
})()
|
101
|
-
);
|
102
|
-
break;
|
103
|
-
}
|
104
|
-
// ignore other parts
|
105
|
-
case "text-delta":
|
106
|
-
case "reasoning":
|
107
|
-
case "source":
|
108
|
-
case "tool-call-delta":
|
109
|
-
case "tool-result":
|
110
|
-
case "step-finish":
|
111
|
-
case "finish":
|
112
|
-
case "error":
|
113
|
-
case "response-metadata":
|
114
|
-
case "annotations":
|
115
|
-
case "data":
|
116
|
-
break;
|
117
|
-
default: {
|
118
|
-
const unhandledType = chunkType;
|
119
|
-
throw new Error(`Unhandled chunk type: ${unhandledType}`);
|
120
|
-
}
|
29
|
+
return new import_assistant_stream.ToolExecutionStream(({ toolCallId, toolName, args }) => {
|
30
|
+
const tool = tools?.[toolName];
|
31
|
+
if (!tool || !tool.execute) return void 0;
|
32
|
+
let executeFn = tool.execute;
|
33
|
+
if (tool.parameters instanceof import_zod.z.ZodType) {
|
34
|
+
const result = tool.parameters.safeParse(args);
|
35
|
+
if (!result.success) {
|
36
|
+
executeFn = tool.experimental_onSchemaValidationError ?? (() => {
|
37
|
+
throw "Function parameter validation failed. " + JSON.stringify(result.error.issues);
|
38
|
+
});
|
121
39
|
}
|
122
|
-
},
|
123
|
-
async flush() {
|
124
|
-
await Promise.all(toolCallExecutions.values());
|
125
40
|
}
|
41
|
+
const getResult = async () => {
|
42
|
+
const result = await executeFn(args, {
|
43
|
+
toolCallId,
|
44
|
+
abortSignal
|
45
|
+
});
|
46
|
+
return result === void 0 ? "<no result>" : result;
|
47
|
+
};
|
48
|
+
return getResult();
|
126
49
|
});
|
127
50
|
}
|
128
51
|
// Annotate the CommonJS export names for ESM import in node:
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/toolResultStream.ts"],"sourcesContent":["import { Tool } from \"../../../model-context/ModelContextTypes\";\nimport {
|
1
|
+
{"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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAkB;AAClB,8BAAoC;AAE7B,SAAS,iBACd,OACA,aACA;AACA,SAAO,IAAI,4CAAoB,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,aAAE,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":[]}
|
@@ -1,94 +1,27 @@
|
|
1
1
|
// src/runtimes/edge/streams/toolResultStream.ts
|
2
2
|
import { z } from "zod";
|
3
|
-
import
|
3
|
+
import { ToolExecutionStream } from "assistant-stream";
|
4
4
|
function toolResultStream(tools, abortSignal) {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
let args;
|
16
|
-
try {
|
17
|
-
args = sjson.parse(argsText);
|
18
|
-
} catch (e) {
|
19
|
-
controller.enqueue({
|
20
|
-
type: "tool-result",
|
21
|
-
toolCallType,
|
22
|
-
toolCallId,
|
23
|
-
toolName,
|
24
|
-
result: "Function parameter parsing failed. " + JSON.stringify(e.message),
|
25
|
-
isError: true
|
26
|
-
});
|
27
|
-
return;
|
28
|
-
}
|
29
|
-
toolCallExecutions.set(
|
30
|
-
toolCallId,
|
31
|
-
(async () => {
|
32
|
-
if (!tool.execute) return;
|
33
|
-
let executeFn = tool.execute;
|
34
|
-
if (tool.parameters instanceof z.ZodType) {
|
35
|
-
const result = tool.parameters.safeParse(args);
|
36
|
-
if (!result.success) {
|
37
|
-
executeFn = tool.experimental_onSchemaValidationError ?? (() => {
|
38
|
-
throw "Function parameter validation failed. " + JSON.stringify(result.error.issues);
|
39
|
-
});
|
40
|
-
}
|
41
|
-
}
|
42
|
-
try {
|
43
|
-
const result = await executeFn(args, {
|
44
|
-
toolCallId,
|
45
|
-
abortSignal
|
46
|
-
});
|
47
|
-
controller.enqueue({
|
48
|
-
type: "tool-result",
|
49
|
-
toolCallType,
|
50
|
-
toolCallId,
|
51
|
-
toolName,
|
52
|
-
result: result === void 0 ? "<no result>" : result
|
53
|
-
});
|
54
|
-
} catch (error) {
|
55
|
-
controller.enqueue({
|
56
|
-
type: "tool-result",
|
57
|
-
toolCallType,
|
58
|
-
toolCallId,
|
59
|
-
toolName,
|
60
|
-
result: "Error: " + error,
|
61
|
-
isError: true
|
62
|
-
});
|
63
|
-
} finally {
|
64
|
-
toolCallExecutions.delete(toolCallId);
|
65
|
-
}
|
66
|
-
})()
|
67
|
-
);
|
68
|
-
break;
|
69
|
-
}
|
70
|
-
// ignore other parts
|
71
|
-
case "text-delta":
|
72
|
-
case "reasoning":
|
73
|
-
case "source":
|
74
|
-
case "tool-call-delta":
|
75
|
-
case "tool-result":
|
76
|
-
case "step-finish":
|
77
|
-
case "finish":
|
78
|
-
case "error":
|
79
|
-
case "response-metadata":
|
80
|
-
case "annotations":
|
81
|
-
case "data":
|
82
|
-
break;
|
83
|
-
default: {
|
84
|
-
const unhandledType = chunkType;
|
85
|
-
throw new Error(`Unhandled chunk type: ${unhandledType}`);
|
86
|
-
}
|
5
|
+
return new ToolExecutionStream(({ toolCallId, toolName, args }) => {
|
6
|
+
const tool = tools?.[toolName];
|
7
|
+
if (!tool || !tool.execute) return void 0;
|
8
|
+
let executeFn = tool.execute;
|
9
|
+
if (tool.parameters instanceof z.ZodType) {
|
10
|
+
const result = tool.parameters.safeParse(args);
|
11
|
+
if (!result.success) {
|
12
|
+
executeFn = tool.experimental_onSchemaValidationError ?? (() => {
|
13
|
+
throw "Function parameter validation failed. " + JSON.stringify(result.error.issues);
|
14
|
+
});
|
87
15
|
}
|
88
|
-
},
|
89
|
-
async flush() {
|
90
|
-
await Promise.all(toolCallExecutions.values());
|
91
16
|
}
|
17
|
+
const getResult = async () => {
|
18
|
+
const result = await executeFn(args, {
|
19
|
+
toolCallId,
|
20
|
+
abortSignal
|
21
|
+
});
|
22
|
+
return result === void 0 ? "<no result>" : result;
|
23
|
+
};
|
24
|
+
return getResult();
|
92
25
|
});
|
93
26
|
}
|
94
27
|
export {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/edge/streams/toolResultStream.ts"],"sourcesContent":["import { Tool } from \"../../../model-context/ModelContextTypes\";\nimport {
|
1
|
+
{"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":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ThreadMessageLike.d.ts","sourceRoot":"","sources":["../../../src/runtimes/external-store/ThreadMessageLike.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EAMb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,QAAQ,CAAC,OAAO,EACZ,MAAM,GACN,SAAS,CACL,eAAe,GACf,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,yBAAyB,GACzB;QACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACxC,CACJ,EAAE,CAAC;IACR,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,QAAQ,CAAC,EACd;QACE,QAAQ,CAAC,oBAAoB,CAAC,EAC1B,SAAS,iBAAiB,EAAE,GAC5B,SAAS,CAAC;QACd,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;QAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;QACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACvD,GACD,SAAS,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,iBAAiB,EACvB,YAAY,MAAM,EAClB,gBAAgB,aAAa,KAC5B,
|
1
|
+
{"version":3,"file":"ThreadMessageLike.d.ts","sourceRoot":"","sources":["../../../src/runtimes/external-store/ThreadMessageLike.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EAMb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,QAAQ,CAAC,OAAO,EACZ,MAAM,GACN,SAAS,CACL,eAAe,GACf,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,yBAAyB,GACzB;QACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACxC,CACJ,EAAE,CAAC;IACR,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,QAAQ,CAAC,EACd;QACE,QAAQ,CAAC,oBAAoB,CAAC,EAC1B,SAAS,iBAAiB,EAAE,GAC5B,SAAS,CAAC;QACd,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;QAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;QACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACvD,GACD,SAAS,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,iBAAiB,EACvB,YAAY,MAAM,EAClB,gBAAgB,aAAa,KAC5B,aAyHF,CAAC"}
|