@assistant-ui/react 0.8.5 → 0.8.7
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/api/MessageRuntime.js +1 -1
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/MessageRuntime.mjs +1 -1
- package/dist/api/MessageRuntime.mjs.map +1 -1
- package/dist/api/subscribable/NestedSubscriptionSubject.d.ts.map +1 -1
- package/dist/api/subscribable/NestedSubscriptionSubject.js.map +1 -1
- package/dist/api/subscribable/NestedSubscriptionSubject.mjs.map +1 -1
- 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/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.mjs.map +1 -1
- package/dist/context/react/utils/ensureBinding.js.map +1 -1
- package/dist/context/react/utils/ensureBinding.mjs.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +2 -1
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.mjs +2 -1
- package/dist/model-context/makeAssistantVisible.mjs.map +1 -1
- package/dist/model-context/useAssistantInstructions.js +1 -1
- package/dist/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/model-context/useAssistantInstructions.mjs +1 -1
- package/dist/model-context/useAssistantInstructions.mjs.map +1 -1
- package/dist/model-context/useAssistantToolUI.js +1 -1
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.mjs +1 -1
- package/dist/model-context/useAssistantToolUI.mjs.map +1 -1
- package/dist/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/model-context/useInlineRender.js +8 -5
- package/dist/model-context/useInlineRender.js.map +1 -1
- package/dist/model-context/useInlineRender.mjs +8 -5
- package/dist/model-context/useInlineRender.mjs.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +6 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.mjs +6 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.mjs.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +7 -2
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.mjs +7 -2
- package/dist/primitives/composer/ComposerInput.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/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.mjs +4 -1
- package/dist/primitives/thread/ThreadScrollToBottom.mjs.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +1 -0
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.mjs +1 -0
- package/dist/primitives/thread/ThreadViewport.mjs.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.mjs +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.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/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js +3 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +3 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.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 +8 -3
- package/dist/runtimes/edge/EdgeChatAdapter.d.ts.map +1 -1
- package/dist/runtimes/edge/EdgeChatAdapter.js +8 -9
- package/dist/runtimes/edge/EdgeChatAdapter.js.map +1 -1
- package/dist/runtimes/edge/EdgeChatAdapter.mjs +11 -9
- 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/external-store/external-message-converter.js +1 -1
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.mjs +1 -1
- package/dist/runtimes/external-store/external-message-converter.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/local/useLocalRuntime.d.ts.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.js +3 -1
- package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.mjs +3 -1
- package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +2 -2
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +2 -2
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.mjs +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.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 +3 -3
- package/src/api/MessageRuntime.ts +1 -1
- package/src/api/subscribable/NestedSubscriptionSubject.ts +7 -2
- package/src/cloud/auiV0.ts +9 -2
- package/src/context/react/utils/createStateHookForRuntime.ts +3 -0
- package/src/context/react/utils/ensureBinding.ts +1 -1
- package/src/model-context/makeAssistantVisible.tsx +3 -1
- package/src/model-context/useAssistantInstructions.tsx +1 -1
- package/src/model-context/useAssistantToolUI.tsx +1 -1
- package/src/model-context/useInlineRender.tsx +8 -5
- package/src/primitives/assistantModal/AssistantModalRoot.tsx +6 -1
- package/src/primitives/composer/ComposerInput.tsx +7 -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/primitives/thread/ThreadScrollToBottom.tsx +4 -1
- package/src/primitives/thread/ThreadViewport.tsx +3 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.tsx +1 -1
- package/src/runtimes/adapters/thread-history/ThreadHistoryAdapter.ts +5 -1
- package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +3 -1
- package/src/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.ts +2 -2
- package/src/runtimes/edge/EdgeChatAdapter.ts +26 -15
- 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 +31 -48
- 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/external-store/external-message-converter.tsx +1 -1
- package/src/runtimes/local/ChatModelAdapter.tsx +2 -0
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +31 -7
- package/src/runtimes/local/useLocalRuntime.tsx +3 -1
- package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +1 -1
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +2 -3
- package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
- 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,9 +1,13 @@
|
|
1
|
+
import { ChatModelRunOptions, ChatModelRunResult } from "../../local";
|
1
2
|
import {
|
2
3
|
ExportedMessageRepository,
|
3
4
|
ExportedMessageRepositoryItem,
|
4
5
|
} from "../../utils/MessageRepository";
|
5
6
|
|
6
7
|
export type ThreadHistoryAdapter = {
|
7
|
-
load(): Promise<ExportedMessageRepository>;
|
8
|
+
load(): Promise<ExportedMessageRepository & { unstable_resume?: boolean }>;
|
9
|
+
resume?(
|
10
|
+
options: ChatModelRunOptions,
|
11
|
+
): AsyncGenerator<ChatModelRunResult, void, unknown>;
|
8
12
|
append(item: ExportedMessageRepositoryItem): Promise<void>;
|
9
13
|
};
|
@@ -159,7 +159,9 @@ export abstract class BaseComposerRuntimeCore
|
|
159
159
|
if (!adapter) throw new Error("Attachments are not supported");
|
160
160
|
|
161
161
|
const upsertAttachment = (a: PendingAttachment) => {
|
162
|
-
const idx = this._attachments.findIndex(
|
162
|
+
const idx = this._attachments.findIndex(
|
163
|
+
(attachment) => attachment.id === a.id,
|
164
|
+
);
|
163
165
|
if (idx !== -1)
|
164
166
|
this._attachments = [
|
165
167
|
...this._attachments.slice(0, idx),
|
@@ -5,13 +5,13 @@ import {
|
|
5
5
|
import { toCoreMessages } from "../edge/converters/toCoreMessages";
|
6
6
|
import { toLanguageModelTools } from "../edge/converters/toLanguageModelTools";
|
7
7
|
import { EdgeRuntimeRequestOptions } from "../edge/EdgeRuntimeRequestOptions";
|
8
|
-
import { runResultStream } from "../edge/streams/runResultStream";
|
9
8
|
import { toolResultStream } from "../edge/streams/toolResultStream";
|
10
9
|
import { asAsyncIterable } from "../edge/EdgeChatAdapter";
|
11
10
|
import {
|
12
11
|
CreateEdgeRuntimeAPIOptions,
|
13
12
|
getEdgeRuntimeStream,
|
14
13
|
} from "../edge/createEdgeRuntimeAPI";
|
14
|
+
import { AssistantMessageAccumulator } from "assistant-stream";
|
15
15
|
|
16
16
|
export type DangerousInBrowserAdapterOptions = CreateEdgeRuntimeAPIOptions;
|
17
17
|
|
@@ -33,7 +33,7 @@ export class DangerousInBrowserAdapter implements ChatModelAdapter {
|
|
33
33
|
|
34
34
|
const stream = res
|
35
35
|
.pipeThrough(toolResultStream(context.tools, abortSignal))
|
36
|
-
.pipeThrough(
|
36
|
+
.pipeThrough(new AssistantMessageAccumulator());
|
37
37
|
|
38
38
|
for await (const update of asAsyncIterable(stream)) {
|
39
39
|
yield update;
|
@@ -2,13 +2,9 @@ import {
|
|
2
2
|
ChatModelAdapter,
|
3
3
|
ChatModelRunOptions,
|
4
4
|
} from "../local/ChatModelAdapter";
|
5
|
-
import { ChatModelRunResult } from "../local/ChatModelAdapter";
|
6
5
|
import { toCoreMessages } from "./converters/toCoreMessages";
|
7
6
|
import { toLanguageModelTools } from "./converters/toLanguageModelTools";
|
8
7
|
import { EdgeRuntimeRequestOptions } from "./EdgeRuntimeRequestOptions";
|
9
|
-
import { assistantDecoderStream } from "./streams/assistantDecoderStream";
|
10
|
-
import { streamPartDecoderStream } from "./streams/utils/streamPartDecoderStream";
|
11
|
-
import { runResultStream } from "./streams/runResultStream";
|
12
8
|
import { toolResultStream } from "./streams/toolResultStream";
|
13
9
|
import { toLanguageModelMessages } from "./converters";
|
14
10
|
import { ThreadMessage } from "../../types";
|
@@ -16,6 +12,10 @@ import { Tool } from "../../model-context";
|
|
16
12
|
import { z } from "zod";
|
17
13
|
import zodToJsonSchema from "zod-to-json-schema";
|
18
14
|
import { JSONSchema7 } from "json-schema";
|
15
|
+
import {
|
16
|
+
AssistantMessageAccumulator,
|
17
|
+
DataStreamDecoder,
|
18
|
+
} from "assistant-stream";
|
19
19
|
|
20
20
|
export function asAsyncIterable<T>(
|
21
21
|
source: ReadableStream<T>,
|
@@ -35,6 +35,8 @@ export function asAsyncIterable<T>(
|
|
35
35
|
};
|
36
36
|
}
|
37
37
|
|
38
|
+
type HeadersValue = Record<string, string> | Headers;
|
39
|
+
|
38
40
|
export type EdgeChatAdapterOptions = {
|
39
41
|
api: string;
|
40
42
|
|
@@ -65,7 +67,13 @@ export type EdgeChatAdapterOptions = {
|
|
65
67
|
onError?: (error: Error) => void;
|
66
68
|
|
67
69
|
credentials?: RequestCredentials;
|
68
|
-
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Headers to be sent with the request.
|
73
|
+
* Can be a static headers object or a function that returns a Promise of headers.
|
74
|
+
*/
|
75
|
+
headers?: HeadersValue | (() => Promise<HeadersValue>);
|
76
|
+
|
69
77
|
body?: object;
|
70
78
|
|
71
79
|
/**
|
@@ -112,7 +120,12 @@ export class EdgeChatAdapter implements ChatModelAdapter {
|
|
112
120
|
unstable_assistantMessageId,
|
113
121
|
unstable_getMessage,
|
114
122
|
}: ChatModelRunOptions) {
|
115
|
-
const
|
123
|
+
const headersValue =
|
124
|
+
typeof this.options.headers === "function"
|
125
|
+
? await this.options.headers()
|
126
|
+
: this.options.headers;
|
127
|
+
|
128
|
+
const headers = new Headers(headersValue);
|
116
129
|
headers.set("Content-Type", "application/json");
|
117
130
|
|
118
131
|
const result = await fetch(this.options.api, {
|
@@ -153,21 +166,19 @@ export class EdgeChatAdapter implements ChatModelAdapter {
|
|
153
166
|
if (!result.ok) {
|
154
167
|
throw new Error(`Status ${result.status}: ${await result.text()}`);
|
155
168
|
}
|
169
|
+
if (!result.body) {
|
170
|
+
throw new Error("Response body is null");
|
171
|
+
}
|
156
172
|
|
157
|
-
const stream = result
|
158
|
-
.
|
159
|
-
.pipeThrough(assistantDecoderStream())
|
173
|
+
const stream = result.body
|
174
|
+
.pipeThrough(new DataStreamDecoder())
|
160
175
|
.pipeThrough(toolResultStream(context.tools, abortSignal))
|
161
|
-
.pipeThrough(
|
176
|
+
.pipeThrough(new AssistantMessageAccumulator());
|
162
177
|
|
163
|
-
|
164
|
-
for await (update of asAsyncIterable(stream)) {
|
178
|
+
for await (const update of asAsyncIterable(stream)) {
|
165
179
|
yield update;
|
166
180
|
}
|
167
181
|
|
168
|
-
if (update === undefined)
|
169
|
-
throw new Error("No data received from Edge Runtime");
|
170
|
-
|
171
182
|
this.options.onFinish?.(unstable_getMessage());
|
172
183
|
} catch (error: unknown) {
|
173
184
|
this.options.onError?.(error as Error);
|
@@ -4,12 +4,12 @@ import { Writable } from "stream";
|
|
4
4
|
import { ReadonlyJSONObject } from "../../../utils/json/json-value";
|
5
5
|
|
6
6
|
type fromLanguageModelMessagesOptions = {
|
7
|
-
mergeSteps
|
7
|
+
mergeSteps?: boolean;
|
8
8
|
};
|
9
9
|
|
10
10
|
export const fromLanguageModelMessages = (
|
11
11
|
lm: LanguageModelV1Message[],
|
12
|
-
{ mergeSteps }: fromLanguageModelMessagesOptions,
|
12
|
+
{ mergeSteps }: fromLanguageModelMessagesOptions = {},
|
13
13
|
): CoreMessage[] => {
|
14
14
|
const messages: CoreMessage[] = [];
|
15
15
|
|
@@ -70,18 +70,28 @@ export const fromLanguageModelMessages = (
|
|
70
70
|
break;
|
71
71
|
}
|
72
72
|
case "assistant": {
|
73
|
-
const newContent = lmMessage.content
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
73
|
+
const newContent = lmMessage.content
|
74
|
+
.map((part) => {
|
75
|
+
if (part.type === "tool-call") {
|
76
|
+
return {
|
77
|
+
type: "tool-call",
|
78
|
+
toolCallId: part.toolCallId,
|
79
|
+
toolName: part.toolName,
|
80
|
+
argsText: JSON.stringify(part.args),
|
81
|
+
args: part.args as ReadonlyJSONObject,
|
82
|
+
} satisfies ToolCallContentPart;
|
83
|
+
}
|
84
|
+
// TODO handle these
|
85
|
+
if (
|
86
|
+
part.type === "redacted-reasoning" ||
|
87
|
+
part.type === "file" ||
|
88
|
+
part.type === "reasoning"
|
89
|
+
) {
|
90
|
+
return null;
|
91
|
+
}
|
92
|
+
return part;
|
93
|
+
})
|
94
|
+
.filter((p) => !!p);
|
85
95
|
|
86
96
|
if (mergeSteps) {
|
87
97
|
const previousMessage = messages[messages.length - 1];
|
@@ -23,8 +23,12 @@ export const toCoreMessage = <T extends boolean = false>(
|
|
23
23
|
role,
|
24
24
|
content: message.content
|
25
25
|
.map((part) => {
|
26
|
-
if (
|
27
|
-
|
26
|
+
if (
|
27
|
+
part.type === "reasoning" ||
|
28
|
+
part.type === "source" ||
|
29
|
+
part.type === "file"
|
30
|
+
)
|
31
|
+
return null; // reasoning, source, and file parts are omitted
|
28
32
|
if (part.type === "tool-call") {
|
29
33
|
const { argsText, ...rest } = part;
|
30
34
|
return rest;
|
@@ -151,8 +151,9 @@ export function toLanguageModelMessages(
|
|
151
151
|
const type = part.type;
|
152
152
|
switch (type) {
|
153
153
|
case "reasoning":
|
154
|
-
case "source":
|
155
|
-
|
154
|
+
case "source":
|
155
|
+
case "file": {
|
156
|
+
break; // reasoning, source, and file parts are omitted
|
156
157
|
}
|
157
158
|
|
158
159
|
case "text": {
|
@@ -5,28 +5,32 @@ import {
|
|
5
5
|
LanguageModelV1Prompt,
|
6
6
|
LanguageModelV1CallOptions,
|
7
7
|
} from "@ai-sdk/provider";
|
8
|
-
import {
|
9
|
-
|
8
|
+
import {
|
9
|
+
CoreMessage,
|
10
|
+
ThreadMessage,
|
11
|
+
ThreadStep,
|
12
|
+
} from "../../types/AssistantTypes";
|
10
13
|
import { EdgeRuntimeRequestOptionsSchema } from "./EdgeRuntimeRequestOptions";
|
11
14
|
import { toLanguageModelMessages } from "./converters/toLanguageModelMessages";
|
12
15
|
import { toLanguageModelTools } from "./converters/toLanguageModelTools";
|
13
|
-
import {
|
14
|
-
toolResultStream,
|
15
|
-
ToolResultStreamPart,
|
16
|
-
} from "./streams/toolResultStream";
|
17
|
-
import { runResultStream } from "./streams/runResultStream";
|
16
|
+
import { toolResultStream } from "./streams/toolResultStream";
|
18
17
|
import {
|
19
18
|
LanguageModelConfig,
|
20
19
|
LanguageModelV1CallSettings,
|
21
20
|
LanguageModelV1CallSettingsSchema,
|
22
21
|
Tool,
|
23
22
|
} from "../../model-context/ModelContextTypes";
|
24
|
-
import { CoreChatModelRunResult } from "../local/ChatModelAdapter";
|
25
|
-
import { streamPartEncoderStream } from "./streams/utils/streamPartEncoderStream";
|
26
23
|
import { z } from "zod";
|
24
|
+
import {
|
25
|
+
AssistantMessage,
|
26
|
+
AssistantMessageAccumulator,
|
27
|
+
AssistantStreamChunk,
|
28
|
+
DataStreamEncoder,
|
29
|
+
} from "assistant-stream";
|
30
|
+
import { LanguageModelV1StreamDecoder } from "assistant-stream/ai-sdk";
|
27
31
|
|
28
32
|
type FinishResult = {
|
29
|
-
messages: readonly (CoreMessage |
|
33
|
+
messages: readonly (CoreMessage | ThreadMessage)[];
|
30
34
|
metadata: {
|
31
35
|
steps: readonly ThreadStep[];
|
32
36
|
};
|
@@ -44,14 +48,6 @@ export type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {
|
|
44
48
|
onFinish?: (result: FinishResult) => void;
|
45
49
|
};
|
46
50
|
|
47
|
-
const voidStream = () => {
|
48
|
-
return new WritableStream({
|
49
|
-
abort(reason) {
|
50
|
-
console.error("Server stream processing aborted:", reason);
|
51
|
-
},
|
52
|
-
});
|
53
|
-
};
|
54
|
-
|
55
51
|
type GetEdgeRuntimeStreamOptions = {
|
56
52
|
abortSignal: AbortSignal;
|
57
53
|
requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;
|
@@ -102,7 +98,7 @@ export const getEdgeRuntimeStream = async ({
|
|
102
98
|
? await modelOrCreator({ apiKey, baseUrl, modelName })
|
103
99
|
: modelOrCreator;
|
104
100
|
|
105
|
-
let stream: ReadableStream<
|
101
|
+
let stream: ReadableStream<AssistantStreamChunk>;
|
106
102
|
const streamResult = await streamMessage({
|
107
103
|
...(settings as Partial<StreamMessageOptions>),
|
108
104
|
...callSettings,
|
@@ -115,7 +111,7 @@ export const getEdgeRuntimeStream = async ({
|
|
115
111
|
tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),
|
116
112
|
...(toolChoice ? { toolChoice } : undefined),
|
117
113
|
});
|
118
|
-
stream = streamResult.stream;
|
114
|
+
stream = streamResult.stream.pipeThrough(new LanguageModelV1StreamDecoder());
|
119
115
|
|
120
116
|
// add tool results if we have server tools
|
121
117
|
const canExecuteTools = hasServerTools && toolChoice?.type !== "none";
|
@@ -130,13 +126,13 @@ export const getEdgeRuntimeStream = async ({
|
|
130
126
|
let serverStream = tees[1];
|
131
127
|
|
132
128
|
if (onFinish) {
|
133
|
-
let lastChunk:
|
134
|
-
serverStream
|
135
|
-
new
|
136
|
-
|
129
|
+
let lastChunk: AssistantMessage | undefined;
|
130
|
+
serverStream.pipeThrough(new AssistantMessageAccumulator()).pipeTo(
|
131
|
+
new WritableStream({
|
132
|
+
write(chunk) {
|
137
133
|
lastChunk = chunk;
|
138
134
|
},
|
139
|
-
|
135
|
+
close() {
|
140
136
|
if (!lastChunk?.status || lastChunk.status.type === "running")
|
141
137
|
return;
|
142
138
|
|
@@ -148,31 +144,22 @@ export const getEdgeRuntimeStream = async ({
|
|
148
144
|
role: "assistant",
|
149
145
|
content: lastChunk.content,
|
150
146
|
status: lastChunk.status,
|
151
|
-
metadata:
|
152
|
-
unstable_data: lastChunk.metadata?.unstable_data ?? [],
|
153
|
-
unstable_annotations: lastChunk.metadata?.unstable_annotations ?? [],
|
154
|
-
steps: lastChunk.metadata?.steps ?? [],
|
155
|
-
custom: lastChunk.metadata?.custom ?? {},
|
156
|
-
}
|
147
|
+
metadata: lastChunk.metadata,
|
157
148
|
} satisfies ThreadMessage,
|
158
149
|
];
|
159
150
|
onFinish({
|
160
151
|
messages: resultingMessages,
|
161
152
|
metadata: {
|
162
|
-
|
163
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
164
|
-
steps: lastChunk.metadata?.steps!,
|
153
|
+
steps: lastChunk.metadata.steps,
|
165
154
|
},
|
166
155
|
});
|
167
156
|
},
|
157
|
+
abort(e) {
|
158
|
+
console.error("Server stream processing error:", e);
|
159
|
+
},
|
168
160
|
}),
|
169
161
|
);
|
170
162
|
}
|
171
|
-
|
172
|
-
// drain the server stream
|
173
|
-
serverStream.pipeTo(voidStream()).catch((e) => {
|
174
|
-
console.error("Server stream processing error:", e);
|
175
|
-
});
|
176
163
|
}
|
177
164
|
|
178
165
|
return stream;
|
@@ -186,16 +173,12 @@ export const getEdgeRuntimeResponse = async (
|
|
186
173
|
options: getEdgeRuntimeResponse.Options,
|
187
174
|
) => {
|
188
175
|
const stream = await getEdgeRuntimeStream(options);
|
189
|
-
return new Response(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
{
|
194
|
-
headers: {
|
195
|
-
"Content-Type": "text/plain; charset=utf-8",
|
196
|
-
},
|
176
|
+
return new Response(stream.pipeThrough(new DataStreamEncoder()), {
|
177
|
+
headers: {
|
178
|
+
"Content-Type": "text/plain; charset=utf-8",
|
179
|
+
"x-vercel-ai-data-stream": "v1",
|
197
180
|
},
|
198
|
-
);
|
181
|
+
});
|
199
182
|
};
|
200
183
|
|
201
184
|
export const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({
|
@@ -1,7 +1,5 @@
|
|
1
1
|
export * from "./converters";
|
2
2
|
|
3
|
-
export * from "./streams/utils";
|
4
|
-
|
5
3
|
export { useEdgeRuntime, type EdgeRuntimeOptions } from "./useEdgeRuntime";
|
6
4
|
export { EdgeChatAdapter } from "./EdgeChatAdapter";
|
7
5
|
export type { EdgeRuntimeRequestOptions } from "./EdgeRuntimeRequestOptions";
|
@@ -1,163 +1,39 @@
|
|
1
1
|
import { Tool } from "../../../model-context/ModelContextTypes";
|
2
|
-
import { LanguageModelV1StreamPart } from "@ai-sdk/provider";
|
3
2
|
import { z } from "zod";
|
4
|
-
import
|
5
|
-
import { ReadonlyJSONValue } from "../../../utils/json/json-value";
|
6
|
-
|
7
|
-
export type ToolResultStreamPart =
|
8
|
-
| LanguageModelV1StreamPart
|
9
|
-
| {
|
10
|
-
type: "annotations";
|
11
|
-
annotations: ReadonlyJSONValue[];
|
12
|
-
}
|
13
|
-
| {
|
14
|
-
type: "data";
|
15
|
-
data: ReadonlyJSONValue[];
|
16
|
-
}
|
17
|
-
| {
|
18
|
-
type: "source";
|
19
|
-
source: {
|
20
|
-
readonly sourceType: "url";
|
21
|
-
readonly id: string;
|
22
|
-
readonly url: string;
|
23
|
-
readonly title?: string;
|
24
|
-
};
|
25
|
-
}
|
26
|
-
| {
|
27
|
-
type: "tool-result";
|
28
|
-
toolCallType: "function";
|
29
|
-
toolCallId: string;
|
30
|
-
toolName: string;
|
31
|
-
result: unknown;
|
32
|
-
isError?: boolean;
|
33
|
-
}
|
34
|
-
| {
|
35
|
-
type: "step-finish";
|
36
|
-
finishReason:
|
37
|
-
| "stop"
|
38
|
-
| "length"
|
39
|
-
| "content-filter"
|
40
|
-
| "tool-calls"
|
41
|
-
| "error"
|
42
|
-
| "other"
|
43
|
-
| "unknown";
|
44
|
-
usage: {
|
45
|
-
promptTokens: number;
|
46
|
-
completionTokens: number;
|
47
|
-
};
|
48
|
-
isContinued: boolean;
|
49
|
-
};
|
3
|
+
import { ToolExecutionStream } from "assistant-stream";
|
50
4
|
|
51
5
|
export function toolResultStream(
|
52
6
|
tools: Record<string, Tool<any, any>> | undefined,
|
53
7
|
abortSignal: AbortSignal,
|
54
8
|
) {
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
args = sjson.parse(argsText);
|
73
|
-
} catch (e) {
|
74
|
-
controller.enqueue({
|
75
|
-
type: "tool-result",
|
76
|
-
toolCallType,
|
77
|
-
toolCallId,
|
78
|
-
toolName,
|
79
|
-
result:
|
80
|
-
"Function parameter parsing failed. " +
|
81
|
-
JSON.stringify((e as Error).message),
|
82
|
-
isError: true,
|
83
|
-
});
|
84
|
-
return;
|
85
|
-
}
|
86
|
-
|
87
|
-
toolCallExecutions.set(
|
88
|
-
toolCallId,
|
89
|
-
(async () => {
|
90
|
-
if (!tool.execute) return;
|
91
|
-
|
92
|
-
let executeFn = tool.execute;
|
93
|
-
|
94
|
-
if (tool.parameters instanceof z.ZodType) {
|
95
|
-
const result = tool.parameters.safeParse(args);
|
96
|
-
if (!result.success) {
|
97
|
-
executeFn =
|
98
|
-
tool.experimental_onSchemaValidationError ??
|
99
|
-
(() => {
|
100
|
-
throw (
|
101
|
-
"Function parameter validation failed. " +
|
102
|
-
JSON.stringify(result.error.issues)
|
103
|
-
);
|
104
|
-
});
|
105
|
-
}
|
106
|
-
}
|
107
|
-
|
108
|
-
try {
|
109
|
-
const result = await executeFn(args, {
|
110
|
-
toolCallId,
|
111
|
-
abortSignal,
|
112
|
-
});
|
113
|
-
|
114
|
-
controller.enqueue({
|
115
|
-
type: "tool-result",
|
116
|
-
toolCallType,
|
117
|
-
toolCallId,
|
118
|
-
toolName,
|
119
|
-
result: result === undefined ? "<no result>" : result,
|
120
|
-
});
|
121
|
-
} catch (error) {
|
122
|
-
controller.enqueue({
|
123
|
-
type: "tool-result",
|
124
|
-
toolCallType,
|
125
|
-
toolCallId,
|
126
|
-
toolName,
|
127
|
-
result: "Error: " + error,
|
128
|
-
isError: true,
|
129
|
-
});
|
130
|
-
} finally {
|
131
|
-
toolCallExecutions.delete(toolCallId);
|
132
|
-
}
|
133
|
-
})(),
|
134
|
-
);
|
135
|
-
break;
|
136
|
-
}
|
137
|
-
|
138
|
-
// ignore other parts
|
139
|
-
case "text-delta":
|
140
|
-
case "reasoning":
|
141
|
-
case "source":
|
142
|
-
case "tool-call-delta":
|
143
|
-
case "tool-result":
|
144
|
-
case "step-finish":
|
145
|
-
case "finish":
|
146
|
-
case "error":
|
147
|
-
case "response-metadata":
|
148
|
-
case "annotations":
|
149
|
-
case "data":
|
150
|
-
break;
|
151
|
-
|
152
|
-
default: {
|
153
|
-
const unhandledType: never = chunkType;
|
154
|
-
throw new Error(`Unhandled chunk type: ${unhandledType}`);
|
155
|
-
}
|
9
|
+
return new ToolExecutionStream(({ toolCallId, toolName, args }) => {
|
10
|
+
const tool = tools?.[toolName];
|
11
|
+
if (!tool || !tool.execute) return undefined;
|
12
|
+
|
13
|
+
let executeFn = tool.execute;
|
14
|
+
|
15
|
+
if (tool.parameters instanceof z.ZodType) {
|
16
|
+
const result = tool.parameters.safeParse(args);
|
17
|
+
if (!result.success) {
|
18
|
+
executeFn =
|
19
|
+
tool.experimental_onSchemaValidationError ??
|
20
|
+
(() => {
|
21
|
+
throw (
|
22
|
+
"Function parameter validation failed. " +
|
23
|
+
JSON.stringify(result.error.issues)
|
24
|
+
);
|
25
|
+
});
|
156
26
|
}
|
157
|
-
}
|
27
|
+
}
|
28
|
+
|
29
|
+
const getResult = async () => {
|
30
|
+
const result = await executeFn(args, {
|
31
|
+
toolCallId,
|
32
|
+
abortSignal,
|
33
|
+
});
|
34
|
+
return result === undefined ? "<no result>" : result;
|
35
|
+
};
|
158
36
|
|
159
|
-
|
160
|
-
await Promise.all(toolCallExecutions.values());
|
161
|
-
},
|
37
|
+
return getResult();
|
162
38
|
});
|
163
39
|
}
|
@@ -100,6 +100,7 @@ export const fromThreadMessageLike = (
|
|
100
100
|
if (part.text.trim().length === 0) return null;
|
101
101
|
return part;
|
102
102
|
|
103
|
+
case "file":
|
103
104
|
case "source":
|
104
105
|
return part;
|
105
106
|
|
@@ -121,7 +122,7 @@ export const fromThreadMessageLike = (
|
|
121
122
|
}
|
122
123
|
|
123
124
|
default: {
|
124
|
-
const unhandledType: "image" | "audio"
|
125
|
+
const unhandledType: "image" | "audio" = type;
|
125
126
|
throw new Error(
|
126
127
|
`Unsupported assistant content part type: ${unhandledType}`,
|
127
128
|
);
|
@@ -317,7 +317,7 @@ export const useExternalMessageConverter = <T extends WeakKey>({
|
|
317
317
|
] = messages;
|
318
318
|
|
319
319
|
return threadMessages;
|
320
|
-
}, [state, messages, isRunning]);
|
320
|
+
}, [state, messages, isRunning, joinStrategy]);
|
321
321
|
};
|
322
322
|
|
323
323
|
const shallowArrayEqual = (a: unknown[], b: unknown[]) => {
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import type {
|
2
|
+
FileContentPart,
|
2
3
|
MessageStatus,
|
3
4
|
ReasoningContentPart,
|
4
5
|
RunConfig,
|
@@ -34,6 +35,7 @@ export type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
|
|
34
35
|
| ReasoningContentPart
|
35
36
|
| ToolCallContentPart
|
36
37
|
| SourceContentPart
|
38
|
+
| FileContentPart
|
37
39
|
)[];
|
38
40
|
};
|
39
41
|
|