@assistant-ui/core 0.3.19 → 0.3.21
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/adapters/attachment.d.ts +50 -43
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +52 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +2 -5
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +7 -8
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +63 -65
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +19 -22
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +60 -58
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +8 -11
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +50 -45
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -4
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +20 -23
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +28 -30
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +24 -27
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +9 -12
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +15 -18
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +15 -17
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +12 -14
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +40 -43
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +9 -12
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +4 -8
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +2 -5
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +9 -12
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +3 -6
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -37
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +10 -12
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -11
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +42 -46
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +13 -6
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -4
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -6
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +26 -29
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +5 -7
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -4
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +44 -32
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +3 -6
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +9 -13
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +3 -6
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +40 -40
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -9
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +208 -194
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +16 -19
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +120 -8
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +17 -21
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +60 -60
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +21 -24
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +6 -8
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +35 -37
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -6
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +28 -31
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +51 -49
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +35 -35
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +215 -201
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +31 -30
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +25 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -82
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +4 -3
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +54 -57
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +306 -308
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +174 -62
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +32 -33
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +10 -2
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +7 -10
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +11 -13
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +6 -5
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +6 -9
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +24 -27
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +52 -54
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
- package/dist/runtime/utils/stored-message-parts.js +103 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +23 -26
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +38 -34
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +2 -5
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +56 -58
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1270 -741
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +2 -5
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +3 -6
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +2 -5
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +4 -6
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +8 -11
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +12 -12
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -4
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +7 -10
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -4
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +14 -16
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +10 -5
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +2 -5
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +19 -22
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +33 -35
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +147 -135
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +119 -112
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +10 -13
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +53 -50
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +21 -23
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +14 -17
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +18 -21
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +27 -30
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +68 -71
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +197 -200
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +49 -52
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +73 -69
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +35 -37
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +7 -8
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +13 -16
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -17
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +358 -318
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +3 -6
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +10 -13
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -4
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -5
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +9 -13
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +16 -19
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +19 -21
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -6
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -4
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -4
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -4
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +5 -8
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +6 -8
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -4
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +1 -4
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -5
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -5
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -6
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +15 -13
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +77 -20
- package/src/adapters/feedback.ts +1 -0
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +106 -20
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
- package/src/react/client/Interactables.test.ts +865 -8
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +221 -4
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +275 -6
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +44 -1
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +25 -7
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
- package/src/runtime/base/base-thread-runtime-core.ts +236 -46
- package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +91 -0
- package/src/runtime/utils/external-message-conversion.ts +9 -6
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +216 -0
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +79 -48
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +25 -0
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
- package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +669 -144
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +119 -0
- package/src/store/primitive-predicates.ts +19 -4
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +12 -1
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +205 -3
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +412 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +212 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +120 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
- package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
- package/src/tests/external-thread-attachments.test.tsx +763 -26
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/message-queue.test.ts +45 -10
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/tests/thread-switch-events.test.tsx +11 -7
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
- package/src/types/message.test.ts +19 -0
- package/src/types/message.ts +65 -10
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { isAttachmentComplete } from "../../types/attachment.js";
|
|
2
|
+
//#region src/runtime/utils/attachment-send-operations.ts
|
|
3
|
+
var AttachmentSendOperations = class {
|
|
4
|
+
entries = /* @__PURE__ */ new WeakMap();
|
|
5
|
+
removed = /* @__PURE__ */ new WeakSet();
|
|
6
|
+
markRemoved(attachment) {
|
|
7
|
+
this.removed.add(attachment);
|
|
8
|
+
}
|
|
9
|
+
unmarkRemoved(attachment) {
|
|
10
|
+
this.removed.delete(attachment);
|
|
11
|
+
}
|
|
12
|
+
isRemoved(attachment) {
|
|
13
|
+
return this.removed.has(attachment);
|
|
14
|
+
}
|
|
15
|
+
async send(attachment, adapter, signal) {
|
|
16
|
+
if (isAttachmentComplete(attachment)) return attachment;
|
|
17
|
+
const entry = this.entries.get(attachment) ?? {};
|
|
18
|
+
if (entry.result) return entry.result;
|
|
19
|
+
if (!adapter) throw new Error("Attachments are not supported");
|
|
20
|
+
this.entries.set(attachment, entry);
|
|
21
|
+
const result = await adapter.send(attachment, signal ? { signal } : void 0);
|
|
22
|
+
entry.result = result;
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
transfer(original, replacement) {
|
|
26
|
+
const entry = this.entries.get(original);
|
|
27
|
+
if (entry) this.entries.set(replacement, entry);
|
|
28
|
+
return replacement;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { AttachmentSendOperations };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=attachment-send-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment-send-operations.js","names":["AttachmentAdapter","isAttachmentComplete","Attachment","CompleteAttachment","AttachmentSendOperations","entries","WeakMap","result","removed","WeakSet","markRemoved","attachment","add","unmarkRemoved","delete","isRemoved","has","send","adapter","signal","AbortSignal","Promise","entry","get","Error","set","undefined","transfer","original","replacement"],"sources":["../../../src/runtime/utils/attachment-send-operations.ts"],"sourcesContent":["import type { AttachmentAdapter } from \"../../adapters/attachment\";\nimport {\n isAttachmentComplete,\n type Attachment,\n type CompleteAttachment,\n} from \"../../types/attachment\";\n\nexport class AttachmentSendOperations {\n // Draft attachments stay pending so discarding an unsent upload still calls remove.\n private readonly entries = new WeakMap<\n Attachment,\n { result?: CompleteAttachment }\n >();\n // Removal marks are per-object and never bulk-cleared: a removed attachment\n // either leaves the draft or is replaced via transfer with a fresh unmarked\n // object, so a mark cannot leak into a later send's batch.\n private readonly removed = new WeakSet<Attachment>();\n\n markRemoved(attachment: Attachment) {\n this.removed.add(attachment);\n }\n\n unmarkRemoved(attachment: Attachment) {\n this.removed.delete(attachment);\n }\n\n isRemoved(attachment: Attachment) {\n return this.removed.has(attachment);\n }\n\n async send(\n attachment: Attachment,\n adapter: AttachmentAdapter | undefined,\n signal?: AbortSignal,\n ): Promise<CompleteAttachment> {\n if (isAttachmentComplete(attachment)) return attachment;\n const entry = this.entries.get(attachment) ?? {};\n if (entry.result) return entry.result;\n if (!adapter) throw new Error(\"Attachments are not supported\");\n this.entries.set(attachment, entry);\n const result = await adapter.send(\n attachment,\n signal ? { signal } : undefined,\n );\n entry.result = result;\n return result;\n }\n\n transfer(original: Attachment, replacement: Attachment) {\n const entry = this.entries.get(original);\n if (entry) this.entries.set(replacement, entry);\n return replacement;\n }\n}\n"],"mappings":";;AAOA,IAAaI,2BAAb,MAAsC;CAEpC,0BAA2B,IAAIE,QAG7B;CAIF,0BAA2B,IAAIG,QAAoB;CAEnDC,YAAYC,YAAwB;EAClC,KAAKH,QAAQI,IAAID,UAAU;CAC7B;CAEAE,cAAcF,YAAwB;EACpC,KAAKH,QAAQM,OAAOH,UAAU;CAChC;CAEAI,UAAUJ,YAAwB;EAChC,OAAO,KAAKH,QAAQQ,IAAIL,UAAU;CACpC;CAEA,MAAMM,KACJN,YACAO,SACAC,QAC6B;EAC7B,IAAIlB,qBAAqBU,UAAU,GAAG,OAAOA;EAC7C,MAAMW,QAAQ,KAAKjB,QAAQkB,IAAIZ,UAAU,KAAK,CAAC;EAC/C,IAAIW,MAAMf,QAAQ,OAAOe,MAAMf;EAC/B,IAAI,CAACW,SAAS,MAAM,IAAIM,MAAM,+BAA+B;EAC7D,KAAKnB,QAAQoB,IAAId,YAAYW,KAAK;EAClC,MAAMf,SAAS,MAAMW,QAAQD,KAC3BN,YACAQ,SAAS,EAAEA,OAAO,IAAIO,KAAAA,CACxB;EACAJ,MAAMf,SAASA;EACf,OAAOA;CACT;CAEAoB,SAASC,UAAsBC,aAAyB;EACtD,MAAMP,QAAQ,KAAKjB,QAAQkB,IAAIK,QAAQ;EACvC,IAAIN,OAAO,KAAKjB,QAAQoB,IAAII,aAAaP,KAAK;EAC9C,OAAOO;CACT;AACF"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { MessageStatus } from "../../types/message.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
//#region src/runtime/utils/auto-status.d.ts
|
|
1
|
+
import type { MessageStatus } from "../../types/message.js";
|
|
2
|
+
import type { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
3
|
+
import type { ThreadMessageLike } from "./thread-message-like.js";
|
|
5
4
|
type ThreadMessageLikeContentItem = Exclude<ThreadMessageLike["content"], string>[number];
|
|
6
|
-
declare const isPendingToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
5
|
+
export declare const isPendingToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
7
6
|
/** A pending tool call whose nested conversation is still streaming; the outer message stays running until the nested run settles. */
|
|
8
|
-
declare const isBackgroundToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
9
|
-
declare const isInterruptedToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
10
|
-
declare const isAutoStatus: (status: MessageStatus) => boolean;
|
|
11
|
-
declare const getAutoStatus: (isLast: boolean, isRunning: boolean, hasInterruptedToolCalls: boolean, hasPendingToolCalls: boolean, error?: ReadonlyJSONValue, isCancelled?: boolean, hasBackgroundToolCalls?: boolean) => MessageStatus;
|
|
7
|
+
export declare const isBackgroundToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
8
|
+
export declare const isInterruptedToolCall: (c: ThreadMessageLikeContentItem) => boolean;
|
|
9
|
+
export declare const isAutoStatus: (status: MessageStatus) => boolean;
|
|
10
|
+
export declare const getAutoStatus: (isLast: boolean, isRunning: boolean, hasInterruptedToolCalls: boolean, hasPendingToolCalls: boolean, error?: ReadonlyJSONValue, isCancelled?: boolean, hasBackgroundToolCalls?: boolean) => MessageStatus;
|
|
12
11
|
/** Status for a message entering the repository: the nested conversation is not being fed here, so it never keeps the message running. */
|
|
13
|
-
declare const getRepositoryContentAutoStatus: (content: ThreadMessageLike["content"]) => MessageStatus;
|
|
14
|
-
declare const getContentAutoStatus: (content: ThreadMessageLike["content"], isLast: boolean, isRunning: boolean) => MessageStatus;
|
|
15
|
-
|
|
16
|
-
export { getAutoStatus, getContentAutoStatus, getRepositoryContentAutoStatus, isAutoStatus, isBackgroundToolCall, isInterruptedToolCall, isPendingToolCall };
|
|
12
|
+
export declare const getRepositoryContentAutoStatus: (content: ThreadMessageLike["content"]) => MessageStatus;
|
|
13
|
+
export declare const getContentAutoStatus: (content: ThreadMessageLike["content"], isLast: boolean, isRunning: boolean) => MessageStatus;
|
|
14
|
+
export {};
|
|
17
15
|
//# sourceMappingURL=auto-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-status.d.ts","
|
|
1
|
+
{"version":3,"file":"auto-status.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/auto-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA4B;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iCAA8B;AAG/D,KAAK,4BAA4B,GAAG,OAAO,CACzC,iBAAiB,CAAC,SAAS,CAAC,EAC5B,MAAM,CACP,CAAC,MAAM,CAAC,CAAC;AAEV,eAAO,MAAM,iBAAiB,GAAI,GAAG,4BAA4B,KAAG,OAClB,CAAC;AAEnD,sIAAsI;AACtI,eAAO,MAAM,oBAAoB,GAC/B,GAAG,4BAA4B,KAC9B,OAIF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,GAAG,4BAA4B,KAC9B,OAA4D,CAAC;AA8ChE,eAAO,MAAM,YAAY,GAAI,QAAQ,aAAa,YACN,CAAC;AAE7C,eAAO,MAAM,aAAa,GACxB,QAAQ,OAAO,EACf,WAAW,OAAO,EAClB,yBAAyB,OAAO,EAChC,qBAAqB,OAAO,EAC5B,QAAQ,iBAAiB,EACzB,cAAc,OAAO,EACrB,yBAAyB,OAAO,KAC/B,aAuBF,CAAC;AAEF,0IAA0I;AAC1I,eAAO,MAAM,8BAA8B,GACzC,SAAS,iBAAiB,CAAC,SAAS,CAAC,KACpC,aAMA,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,SAAS,iBAAiB,CAAC,SAAS,CAAC,EACrC,QAAQ,OAAO,EACf,WAAW,OAAO,KACjB,aASA,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { hasPendingToolAction } from "../../utils/normalizePartStatus.js";
|
|
1
2
|
//#region src/runtime/utils/auto-status.ts
|
|
2
3
|
const isPendingToolCall = (c) => c.type === "tool-call" && c.result === void 0;
|
|
3
4
|
/** A pending tool call whose nested conversation is still streaming; the outer message stays running until the nested run settles. */
|
|
@@ -6,10 +7,7 @@ const isBackgroundToolCall = (c) => {
|
|
|
6
7
|
const last = c.messages?.at(-1);
|
|
7
8
|
return last?.role === "assistant" && last.status.type === "running";
|
|
8
9
|
};
|
|
9
|
-
const isInterruptedToolCall = (c) =>
|
|
10
|
-
if (c.type !== "tool-call" || c.result !== void 0) return false;
|
|
11
|
-
return c.interrupt != null || c.approval != null && c.approval.approved === void 0 && c.approval.resolution === void 0;
|
|
12
|
-
};
|
|
10
|
+
const isInterruptedToolCall = (c) => c.type === "tool-call" && hasPendingToolAction(c);
|
|
13
11
|
const symbolAutoStatus = Symbol("autoStatus");
|
|
14
12
|
const AUTO_STATUS_RUNNING = Object.freeze(Object.assign({ type: "running" }, { [symbolAutoStatus]: true }));
|
|
15
13
|
const AUTO_STATUS_COMPLETE = Object.freeze(Object.assign({
|
|
@@ -30,7 +28,7 @@ const AUTO_STATUS_INTERRUPT = Object.freeze(Object.assign({
|
|
|
30
28
|
}, { [symbolAutoStatus]: true }));
|
|
31
29
|
const isAutoStatus = (status) => status[symbolAutoStatus] === true;
|
|
32
30
|
const getAutoStatus = (isLast, isRunning, hasInterruptedToolCalls, hasPendingToolCalls, error, isCancelled, hasBackgroundToolCalls) => {
|
|
33
|
-
if (isLast && error) return Object.assign({
|
|
31
|
+
if (isLast && error !== void 0 && error !== null) return Object.assign({
|
|
34
32
|
type: "incomplete",
|
|
35
33
|
reason: "error",
|
|
36
34
|
error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-status.js","names":["MessageStatus","ReadonlyJSONValue","ThreadMessageLike","ThreadMessageLikeContentItem","Exclude","isPendingToolCall","c","type","result","undefined","isBackgroundToolCall","last","messages","at","role","status","isInterruptedToolCall","
|
|
1
|
+
{"version":3,"file":"auto-status.js","names":["MessageStatus","ReadonlyJSONValue","ThreadMessageLike","hasPendingToolAction","ThreadMessageLikeContentItem","Exclude","isPendingToolCall","c","type","result","undefined","isBackgroundToolCall","last","messages","at","role","status","isInterruptedToolCall","symbolAutoStatus","Symbol","AUTO_STATUS_RUNNING","Object","freeze","assign","const","AUTO_STATUS_COMPLETE","reason","AUTO_STATUS_CANCELLED","AUTO_STATUS_PENDING","AUTO_STATUS_INTERRUPT","isAutoStatus","getAutoStatus","isLast","isRunning","hasInterruptedToolCalls","hasPendingToolCalls","error","isCancelled","hasBackgroundToolCalls","getRepositoryContentAutoStatus","content","some","getContentAutoStatus"],"sources":["../../../src/runtime/utils/auto-status.ts"],"sourcesContent":["import type { MessageStatus } from \"../../types/message\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { ThreadMessageLike } from \"./thread-message-like\";\nimport { hasPendingToolAction } from \"../../utils/normalizePartStatus\";\n\ntype ThreadMessageLikeContentItem = Exclude<\n ThreadMessageLike[\"content\"],\n string\n>[number];\n\nexport const isPendingToolCall = (c: ThreadMessageLikeContentItem): boolean =>\n c.type === \"tool-call\" && c.result === undefined;\n\n/** A pending tool call whose nested conversation is still streaming; the outer message stays running until the nested run settles. */\nexport const isBackgroundToolCall = (\n c: ThreadMessageLikeContentItem,\n): boolean => {\n if (c.type !== \"tool-call\" || c.result !== undefined) return false;\n const last = c.messages?.at(-1);\n return last?.role === \"assistant\" && last.status.type === \"running\";\n};\n\nexport const isInterruptedToolCall = (\n c: ThreadMessageLikeContentItem,\n): boolean => c.type === \"tool-call\" && hasPendingToolAction(c);\n\nconst symbolAutoStatus = Symbol(\"autoStatus\");\n\nconst AUTO_STATUS_RUNNING = Object.freeze(\n Object.assign({ type: \"running\" as const }, { [symbolAutoStatus]: true }),\n);\nconst AUTO_STATUS_COMPLETE = Object.freeze(\n Object.assign(\n {\n type: \"complete\" as const,\n reason: \"unknown\" as const,\n },\n { [symbolAutoStatus]: true },\n ),\n);\nconst AUTO_STATUS_CANCELLED = Object.freeze(\n Object.assign(\n {\n type: \"incomplete\" as const,\n reason: \"cancelled\" as const,\n },\n { [symbolAutoStatus]: true },\n ),\n);\n\nconst AUTO_STATUS_PENDING = Object.freeze(\n Object.assign(\n {\n type: \"requires-action\" as const,\n reason: \"tool-calls\" as const,\n },\n { [symbolAutoStatus]: true },\n ),\n);\n\nconst AUTO_STATUS_INTERRUPT = Object.freeze(\n Object.assign(\n {\n type: \"requires-action\" as const,\n reason: \"interrupt\" as const,\n },\n { [symbolAutoStatus]: true },\n ),\n);\n\nexport const isAutoStatus = (status: MessageStatus) =>\n (status as any)[symbolAutoStatus] === true;\n\nexport const getAutoStatus = (\n isLast: boolean,\n isRunning: boolean,\n hasInterruptedToolCalls: boolean,\n hasPendingToolCalls: boolean,\n error?: ReadonlyJSONValue,\n isCancelled?: boolean,\n hasBackgroundToolCalls?: boolean,\n): MessageStatus => {\n if (isLast && error !== undefined && error !== null) {\n return Object.assign(\n {\n type: \"incomplete\" as const,\n reason: \"error\" as const,\n error: error,\n },\n { [symbolAutoStatus]: true },\n );\n }\n\n return isLast && isRunning\n ? AUTO_STATUS_RUNNING\n : hasInterruptedToolCalls\n ? AUTO_STATUS_INTERRUPT\n : hasBackgroundToolCalls && !isCancelled\n ? AUTO_STATUS_RUNNING\n : hasPendingToolCalls\n ? AUTO_STATUS_PENDING\n : isCancelled\n ? AUTO_STATUS_CANCELLED\n : AUTO_STATUS_COMPLETE;\n};\n\n/** Status for a message entering the repository: the nested conversation is not being fed here, so it never keeps the message running. */\nexport const getRepositoryContentAutoStatus = (\n content: ThreadMessageLike[\"content\"],\n): MessageStatus =>\n getAutoStatus(\n false,\n false,\n typeof content !== \"string\" && content.some(isInterruptedToolCall),\n typeof content !== \"string\" && content.some(isPendingToolCall),\n );\n\nexport const getContentAutoStatus = (\n content: ThreadMessageLike[\"content\"],\n isLast: boolean,\n isRunning: boolean,\n): MessageStatus =>\n getAutoStatus(\n isLast,\n isRunning,\n typeof content !== \"string\" && content.some(isInterruptedToolCall),\n typeof content !== \"string\" && content.some(isPendingToolCall),\n undefined,\n undefined,\n typeof content !== \"string\" && content.some(isBackgroundToolCall),\n );\n"],"mappings":";;AAUA,MAAaM,qBAAqBC,MAChCA,EAAEC,SAAS,eAAeD,EAAEE,WAAWC,KAAAA;;AAGzC,MAAaC,wBACXJ,MACY;CACZ,IAAIA,EAAEC,SAAS,eAAeD,EAAEE,WAAWC,KAAAA,GAAW,OAAO;CAC7D,MAAME,OAAOL,EAAEM,UAAUC,GAAG,EAAE;CAC9B,OAAOF,MAAMG,SAAS,eAAeH,KAAKI,OAAOR,SAAS;AAC5D;AAEA,MAAaS,yBACXV,MACYA,EAAEC,SAAS,eAAeL,qBAAqBI,CAAC;AAE9D,MAAMW,mBAAmBC,OAAO,YAAY;AAE5C,MAAMC,sBAAsBC,OAAOC,OACjCD,OAAOE,OAAO,EAAEf,MAAM,UAAmB,GAAG,GAAGU,mBAAmB,KAAK,CAAC,CAC1E;AACA,MAAMO,uBAAuBJ,OAAOC,OAClCD,OAAOE,OACL;CACEf,MAAM;CACNkB,QAAQ;AACV,GACA,GAAGR,mBAAmB,KAAK,CAC7B,CACF;AACA,MAAMS,wBAAwBN,OAAOC,OACnCD,OAAOE,OACL;CACEf,MAAM;CACNkB,QAAQ;AACV,GACA,GAAGR,mBAAmB,KAAK,CAC7B,CACF;AAEA,MAAMU,sBAAsBP,OAAOC,OACjCD,OAAOE,OACL;CACEf,MAAM;CACNkB,QAAQ;AACV,GACA,GAAGR,mBAAmB,KAAK,CAC7B,CACF;AAEA,MAAMW,wBAAwBR,OAAOC,OACnCD,OAAOE,OACL;CACEf,MAAM;CACNkB,QAAQ;AACV,GACA,GAAGR,mBAAmB,KAAK,CAC7B,CACF;AAEA,MAAaY,gBAAgBd,WAC1BA,OAAeE,sBAAsB;AAExC,MAAaa,iBACXC,QACAC,WACAC,yBACAC,qBACAC,OACAC,aACAC,2BACkB;CAClB,IAAIN,UAAUI,UAAU1B,KAAAA,KAAa0B,UAAU,MAC7C,OAAOf,OAAOE,OACZ;EACEf,MAAM;EACNkB,QAAQ;EACDU;CACT,GACA,GAAGlB,mBAAmB,KAAK,CAC7B;CAGF,OAAOc,UAAUC,YACbb,sBACAc,0BACEL,wBACAS,0BAA0B,CAACD,cACzBjB,sBACAe,sBACEP,sBACAS,cACEV,wBACAF;AACd;;AAGA,MAAac,kCACXC,YAEAT,cACE,OACA,OACA,OAAOS,YAAY,YAAYA,QAAQC,KAAKxB,qBAAqB,GACjE,OAAOuB,YAAY,YAAYA,QAAQC,KAAKnC,iBAAiB,CAC/D;AAEF,MAAaoC,wBACXF,SACAR,QACAC,cAEAF,cACEC,QACAC,WACA,OAAOO,YAAY,YAAYA,QAAQC,KAAKxB,qBAAqB,GACjE,OAAOuB,YAAY,YAAYA,QAAQC,KAAKnC,iBAAiB,GAC7DI,KAAAA,GACAA,KAAAA,GACA,OAAO8B,YAAY,YAAYA,QAAQC,KAAK9B,oBAAoB,CAClE"}
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
import { FileMessagePart, MessageStatus,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
type ChatModelRunUpdate = {
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import type { FileMessagePart, MessageStatus, ReasoningMessagePart, SourceMessagePart, ThreadAssistantMessagePart, ThreadMessage, ThreadStep, ToolCallMessagePart } from "../../types/message.js";
|
|
2
|
+
import type { MessageTiming, RunConfig, TextMessagePart } from "../../types/message.js";
|
|
3
|
+
import type { ModelContext } from "../../model-context/types.js";
|
|
4
|
+
import type { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
5
|
+
export type ChatModelRunUpdate = {
|
|
6
|
+
readonly content: readonly ThreadAssistantMessagePart[];
|
|
7
|
+
readonly metadata?: Record<string, unknown>;
|
|
8
8
|
};
|
|
9
|
-
type ChatModelRunResult = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
export type ChatModelRunResult = {
|
|
10
|
+
readonly content?: readonly ThreadAssistantMessagePart[] | undefined;
|
|
11
|
+
readonly status?: MessageStatus | undefined;
|
|
12
|
+
readonly metadata?: {
|
|
13
|
+
readonly unstable_state?: ReadonlyJSONValue;
|
|
14
|
+
readonly unstable_annotations?: readonly ReadonlyJSONValue[] | undefined;
|
|
15
|
+
readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;
|
|
16
|
+
readonly steps?: readonly ThreadStep[] | undefined;
|
|
17
|
+
readonly timing?: MessageTiming | undefined;
|
|
18
|
+
readonly custom?: Record<string, unknown> | undefined;
|
|
19
|
+
};
|
|
20
20
|
};
|
|
21
|
-
type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
|
|
22
|
-
|
|
21
|
+
export type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
|
|
22
|
+
readonly content: readonly (TextMessagePart | ReasoningMessagePart | ToolCallMessagePart | SourceMessagePart | FileMessagePart)[];
|
|
23
23
|
};
|
|
24
|
-
type ChatModelRunOptions = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
export type ChatModelRunOptions = {
|
|
25
|
+
readonly messages: readonly ThreadMessage[];
|
|
26
|
+
readonly runConfig: RunConfig;
|
|
27
|
+
readonly abortSignal: AbortSignal;
|
|
28
|
+
readonly context: ModelContext;
|
|
29
|
+
readonly unstable_assistantMessageId?: string | undefined;
|
|
30
|
+
readonly unstable_threadId?: string | undefined;
|
|
31
|
+
readonly unstable_parentId?: string | null | undefined;
|
|
32
|
+
unstable_getMessage(): ThreadMessage;
|
|
33
33
|
};
|
|
34
|
-
type ChatModelAdapter = {
|
|
35
|
-
|
|
34
|
+
export type ChatModelAdapter = {
|
|
35
|
+
run(options: ChatModelRunOptions): Promise<ChatModelRunResult> | AsyncGenerator<ChatModelRunResult, void>;
|
|
36
36
|
};
|
|
37
|
-
//#endregion
|
|
38
|
-
export { ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, ChatModelRunUpdate, CoreChatModelRunResult };
|
|
39
37
|
//# sourceMappingURL=chat-model-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-model-adapter.d.ts","
|
|
1
|
+
{"version":3,"file":"chat-model-adapter.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/chat-model-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,aAAa,EACb,UAAU,EACV,mBAAmB,EACpB,+BAA4B;AAC7B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EAChB,+BAA4B;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,qCAAkC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,0BAA0B,EAAE,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC;QAC5C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;QACzE,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,aAAa,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACvD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACzE,QAAQ,CAAC,OAAO,EAAE,SAAS,CACvB,eAAe,GACf,oBAAoB,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,CAClB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAE/B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,mBAAmB,IAAI,aAAa,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CACD,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;CAC3E,CAAC"}
|
|
@@ -1,60 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ToolExecutionStatus } from "../../runtimes/tool-invocations/ToolInvocationTracker.js";
|
|
1
|
+
import type { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
2
|
+
import type { ToolExecutionStatus } from "../../runtimes/tool-invocations/ToolInvocationTracker.js";
|
|
4
3
|
import { ThreadMessageConverter } from "../../runtimes/external-store/thread-message-converter.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
type
|
|
8
|
-
type
|
|
9
|
-
|
|
10
|
-
readonly
|
|
11
|
-
|
|
4
|
+
import type { ThreadMessage } from "../../types/message.js";
|
|
5
|
+
import type { MessageTiming } from "../../types/message.js";
|
|
6
|
+
import { type ThreadMessageLike } from "./thread-message-like.js";
|
|
7
|
+
export type JoinStrategy = "concat-content" | "none";
|
|
8
|
+
export type ExternalMessageConverterMessage = (ThreadMessageLike & {
|
|
9
|
+
readonly convertConfig?: {
|
|
10
|
+
readonly joinStrategy?: JoinStrategy;
|
|
11
|
+
};
|
|
12
12
|
}) | {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
role: "tool";
|
|
14
|
+
toolCallId: string;
|
|
15
|
+
toolName?: string | undefined;
|
|
16
|
+
result: any;
|
|
17
|
+
artifact?: any;
|
|
18
|
+
isError?: boolean;
|
|
19
|
+
messages?: readonly ThreadMessage[];
|
|
20
20
|
};
|
|
21
|
-
type ExternalMessageConverterMetadata = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
export type ExternalMessageConverterMetadata = {
|
|
22
|
+
readonly toolStatuses?: Record<string, ToolExecutionStatus>;
|
|
23
|
+
readonly error?: ReadonlyJSONValue;
|
|
24
|
+
readonly cancelledMessageIds?: ReadonlySet<string>;
|
|
25
|
+
readonly messageTiming?: Record<string, MessageTiming>;
|
|
26
26
|
};
|
|
27
|
-
type ExternalMessageConverterCallback<T> = (message: T, metadata: ExternalMessageConverterMetadata) => ExternalMessageConverterMessage | ExternalMessageConverterMessage[];
|
|
28
|
-
type ExternalMessageConverterCallbackResult<T> = {
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
export type ExternalMessageConverterCallback<T> = (message: T, metadata: ExternalMessageConverterMetadata) => ExternalMessageConverterMessage | ExternalMessageConverterMessage[];
|
|
28
|
+
export type ExternalMessageConverterCallbackResult<T> = {
|
|
29
|
+
input: T;
|
|
30
|
+
outputs: ExternalMessageConverterMessage[];
|
|
31
31
|
};
|
|
32
|
-
type ExternalMessageConverterChunk<T> = {
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
export type ExternalMessageConverterChunk<T> = {
|
|
33
|
+
inputs: T[];
|
|
34
|
+
outputs: ExternalMessageConverterMessage[];
|
|
35
35
|
};
|
|
36
|
-
declare const convertExternalMessageCallback: <T>(input: T, callback: ExternalMessageConverterCallback<T>, metadata: ExternalMessageConverterMetadata) => ExternalMessageConverterCallbackResult<T>;
|
|
37
|
-
declare const joinExternalMessages: (messages: readonly ExternalMessageConverterMessage[]) => ThreadMessageLike;
|
|
38
|
-
declare const chunkExternalMessages: <T>(callbackResults: ExternalMessageConverterCallbackResult<T>[], joinStrategy?: JoinStrategy) => ExternalMessageConverterChunk<T>[];
|
|
39
|
-
declare const shallowArrayEqual: (a: readonly unknown[], b: readonly unknown[]) => boolean;
|
|
36
|
+
export declare const convertExternalMessageCallback: <T>(input: T, callback: ExternalMessageConverterCallback<T>, metadata: ExternalMessageConverterMetadata) => ExternalMessageConverterCallbackResult<T>;
|
|
37
|
+
export declare const joinExternalMessages: (messages: readonly ExternalMessageConverterMessage[]) => ThreadMessageLike;
|
|
38
|
+
export declare const chunkExternalMessages: <T>(callbackResults: ExternalMessageConverterCallbackResult<T>[], joinStrategy?: JoinStrategy) => ExternalMessageConverterChunk<T>[];
|
|
39
|
+
export declare const shallowArrayEqual: (a: readonly unknown[], b: readonly unknown[]) => boolean;
|
|
40
40
|
type ExternalMessageChunkConversionCache = {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
message: ThreadMessage | undefined;
|
|
42
|
+
generatedFallbackMessages: WeakSet<object>;
|
|
43
43
|
};
|
|
44
44
|
type ExternalMessageConversionCallbackCacheEntry<T> = ExternalMessageConverterCallbackResult<T> & {
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
metadata: ExternalMessageConverterMetadata;
|
|
46
|
+
callback: ExternalMessageConverterCallback<T>;
|
|
47
47
|
};
|
|
48
|
-
type InternalExternalMessageConversionCache<T extends WeakKey = WeakKey> = {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
export type InternalExternalMessageConversionCache<T extends WeakKey = WeakKey> = {
|
|
49
|
+
callbackCache: WeakMap<T, ExternalMessageConversionCallbackCacheEntry<T>>;
|
|
50
|
+
chunkCache: WeakMap<ExternalMessageConverterMessage, ExternalMessageConverterChunk<T>>;
|
|
51
|
+
converterCache: ThreadMessageConverter;
|
|
52
|
+
generatedFallbackMessages: WeakSet<object>;
|
|
53
53
|
};
|
|
54
|
-
declare const createExternalMessageConversionCache: <T extends WeakKey = WeakKey>() => InternalExternalMessageConversionCache<T>;
|
|
55
|
-
declare const convertExternalMessageChunk: <T>(message: ExternalMessageConverterChunk<T>, idx: number, chunkCount: number, isRunning: boolean, error: ReadonlyJSONValue | undefined, cache?: ExternalMessageChunkConversionCache, cancelledMessageIds?: ReadonlySet<string>) => ThreadMessage;
|
|
56
|
-
declare const completeExternalMessageConversion: (messages: ThreadMessage[], error: ReadonlyJSONValue | undefined) => ThreadMessage[];
|
|
57
|
-
declare const convertExternalMessages: <T extends WeakKey>(messages: T[], callback: ExternalMessageConverterCallback<T>, isRunning: boolean, metadata: ExternalMessageConverterMetadata, joinStrategy?: JoinStrategy, cache?: InternalExternalMessageConversionCache<T>) => ThreadMessage[];
|
|
58
|
-
|
|
59
|
-
export { ExternalMessageConverterCallback, ExternalMessageConverterCallbackResult, ExternalMessageConverterChunk, ExternalMessageConverterMessage, ExternalMessageConverterMetadata, InternalExternalMessageConversionCache, JoinStrategy, chunkExternalMessages, completeExternalMessageConversion, convertExternalMessageCallback, convertExternalMessageChunk, convertExternalMessages, createExternalMessageConversionCache, joinExternalMessages, shallowArrayEqual };
|
|
54
|
+
export declare const createExternalMessageConversionCache: <T extends WeakKey = WeakKey>() => InternalExternalMessageConversionCache<T>;
|
|
55
|
+
export declare const convertExternalMessageChunk: <T>(message: ExternalMessageConverterChunk<T>, idx: number, chunkCount: number, isRunning: boolean, error: ReadonlyJSONValue | undefined, cache?: ExternalMessageChunkConversionCache, cancelledMessageIds?: ReadonlySet<string>) => ThreadMessage;
|
|
56
|
+
export declare const completeExternalMessageConversion: (messages: ThreadMessage[], error: ReadonlyJSONValue | undefined) => ThreadMessage[];
|
|
57
|
+
export declare const convertExternalMessages: <T extends WeakKey>(messages: T[], callback: ExternalMessageConverterCallback<T>, isRunning: boolean, metadata: ExternalMessageConverterMetadata, joinStrategy?: JoinStrategy, cache?: InternalExternalMessageConversionCache<T>) => ThreadMessage[];
|
|
58
|
+
export {};
|
|
60
59
|
//# sourceMappingURL=external-message-conversion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-message-conversion.d.ts","
|
|
1
|
+
{"version":3,"file":"external-message-conversion.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/external-message-conversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isJSONValueEqual } from "../../utils/json/is-json-equal.js";
|
|
2
1
|
import { generateErrorMessageId } from "../../utils/id.js";
|
|
2
|
+
import { isJSONValueEqual } from "../../utils/json/is-json-equal.js";
|
|
3
3
|
import { fromThreadMessageLike } from "./thread-message-like.js";
|
|
4
4
|
import { FALLBACK_ID_PREFIX, bindExternalStoreMessage, getExternalStoreMessages, symbolInnerMessage } from "./external-store-message.js";
|
|
5
5
|
import { getAutoStatus, isAutoStatus, isBackgroundToolCall, isInterruptedToolCall, isPendingToolCall } from "./auto-status.js";
|
|
@@ -43,7 +43,7 @@ const joinExternalMessages = (messages) => {
|
|
|
43
43
|
for (const output of messages) if (output.role === "tool") {
|
|
44
44
|
const toolCallIdx = !isNaNToolCallId(output.toolCallId) ? toolCallIndices.get(output.toolCallId) ?? -1 : -1;
|
|
45
45
|
if (toolCallIdx !== -1) {
|
|
46
|
-
const toolCall = assistantMessage.content[toolCallIdx];
|
|
46
|
+
const { isPreliminary: _isPreliminary, ...toolCall } = assistantMessage.content[toolCallIdx];
|
|
47
47
|
if (output.toolName != null) {
|
|
48
48
|
if (toolCall.toolName !== output.toolName) throw new Error(`Tool call name ${output.toolCallId} ${output.toolName} does not match existing tool call ${toolCall.toolName}`);
|
|
49
49
|
}
|
|
@@ -146,11 +146,12 @@ const chunkExternalMessages = (callbackResults, joinStrategy) => {
|
|
|
146
146
|
pendingNone = false;
|
|
147
147
|
};
|
|
148
148
|
for (const callbackResult of callbackResults) for (const output of callbackResult.outputs) {
|
|
149
|
-
|
|
149
|
+
const isVoice = output.role === "assistant" && output.metadata?.modality === "voice";
|
|
150
|
+
if (pendingNone && output.role !== "tool" || !isAssistant || output.role === "user" || output.role === "system" || isVoice) flush();
|
|
150
151
|
isAssistant = output.role === "assistant" || output.role === "tool";
|
|
151
152
|
if (inputs.at(-1) !== callbackResult.input) inputs.push(callbackResult.input);
|
|
152
153
|
outputs.push(output);
|
|
153
|
-
if (output.role === "assistant" && (output.convertConfig?.joinStrategy === "none" || joinStrategy === "none")) pendingNone = true;
|
|
154
|
+
if (output.role === "assistant" && (isVoice || output.convertConfig?.joinStrategy === "none" || joinStrategy === "none")) pendingNone = true;
|
|
154
155
|
}
|
|
155
156
|
flush();
|
|
156
157
|
return results;
|
|
@@ -219,7 +220,7 @@ function createErrorAssistantMessage(error) {
|
|
|
219
220
|
return msg;
|
|
220
221
|
}
|
|
221
222
|
const completeExternalMessageConversion = (messages, error) => {
|
|
222
|
-
if (error) {
|
|
223
|
+
if (error !== void 0 && error !== null) {
|
|
223
224
|
const lastMessage = messages.at(-1);
|
|
224
225
|
if (!lastMessage || lastMessage.role !== "assistant") messages.push(createErrorAssistantMessage(error));
|
|
225
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-message-conversion.js","names":["ReadonlyJSONValue","ToolExecutionStatus","ThreadMessageConverter","ThreadAssistantMessage","ThreadMessage","ToolCallMessagePart","MessageTiming","generateErrorMessageId","isJSONValueEqual","getAutoStatus","isAutoStatus","isBackgroundToolCall","isInterruptedToolCall","isPendingToolCall","bindExternalStoreMessage","FALLBACK_ID_PREFIX","getExternalStoreMessages","symbolInnerMessage","fromThreadMessageLike","ThreadMessageLike","JoinStrategy","ExternalMessageConverterMessage","convertConfig","joinStrategy","role","toolCallId","toolName","result","artifact","isError","messages","ExternalMessageConverterMetadata","toolStatuses","Record","error","cancelledMessageIds","ReadonlySet","messageTiming","ExternalMessageConverterCallback","message","T","metadata","ExternalMessageConverterCallbackResult","input","outputs","ExternalMessageConverterChunk","inputs","Mutable","P","stringifyForError","value","text","Error","String","JSON","stringify","length","slice","toCallbackOutputs","output","Array","isArray","o","valid","content","filter","warnedDroppedToolResults","has","add","console","warn","WeakSet","convertExternalMessageCallback","callback","mergeInnerMessages","existing","incoming","isNaNToolCallId","Number","isNaN","joinExternalMessages","assistantMessage","Omit","Exclude","toolCallIndices","Map","reasoningIndices","toolCallIdx","get","toolCall","type","const","map","c","id","createdAt","status","attachments","unstable_state","undefined","unstable_annotations","unstable_data","steps","custom","timing","modality","submittedFeedback","isOptimistic","part","existingIdx","parentId","partIdx","push","set","unsupportedRole","chunkExternalMessages","callbackResults","results","isAssistant","pendingNone","flush","callbackResult","at","shallowArrayEqual","a","b","i","ExternalMessageChunkConversionCache","generatedFallbackMessages","ExternalMessageConversionCallbackCacheEntry","InternalExternalMessageConversionCache","WeakKey","callbackCache","WeakMap","chunkCache","converterCache","createExternalMessageConversionCache","convertExternalMessageChunk","idx","chunkCount","isRunning","cache","isLast","joined","isCancelled","some","hasInterruptedToolCalls","hasPendingToolCalls","hasBackgroundToolCalls","autoStatus","fallbackId","cachedMessage","reason","updated","newMessage","createErrorAssistantMessage","msg","Date","completeExternalMessageConversion","lastMessage","convertExternalMessages","chunks","key","cached","convertMessages"],"sources":["../../../src/runtime/utils/external-message-conversion.ts"],"sourcesContent":["import type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { ToolExecutionStatus } from \"../../runtimes/tool-invocations/ToolInvocationTracker\";\nimport { ThreadMessageConverter } from \"../../runtimes/external-store/thread-message-converter\";\nimport type {\n ThreadAssistantMessage,\n ThreadMessage,\n ToolCallMessagePart,\n} from \"../../types/message\";\nimport type { MessageTiming } from \"../../types/message\";\nimport { generateErrorMessageId } from \"../../utils/id\";\nimport { isJSONValueEqual } from \"../../utils/json/is-json-equal\";\nimport {\n getAutoStatus,\n isAutoStatus,\n isBackgroundToolCall,\n isInterruptedToolCall,\n isPendingToolCall,\n} from \"./auto-status\";\nimport {\n bindExternalStoreMessage,\n FALLBACK_ID_PREFIX,\n getExternalStoreMessages,\n symbolInnerMessage,\n} from \"./external-store-message\";\nimport {\n fromThreadMessageLike,\n type ThreadMessageLike,\n} from \"./thread-message-like\";\n\nexport type JoinStrategy = \"concat-content\" | \"none\";\n\nexport type ExternalMessageConverterMessage =\n | (ThreadMessageLike & {\n readonly convertConfig?: {\n readonly joinStrategy?: JoinStrategy;\n };\n })\n | {\n role: \"tool\";\n toolCallId: string;\n toolName?: string | undefined;\n result: any;\n artifact?: any;\n isError?: boolean;\n messages?: readonly ThreadMessage[];\n };\n\nexport type ExternalMessageConverterMetadata = {\n readonly toolStatuses?: Record<string, ToolExecutionStatus>;\n readonly error?: ReadonlyJSONValue;\n readonly cancelledMessageIds?: ReadonlySet<string>;\n readonly messageTiming?: Record<string, MessageTiming>;\n};\n\nexport type ExternalMessageConverterCallback<T> = (\n message: T,\n metadata: ExternalMessageConverterMetadata,\n) => ExternalMessageConverterMessage | ExternalMessageConverterMessage[];\n\nexport type ExternalMessageConverterCallbackResult<T> = {\n input: T;\n outputs: ExternalMessageConverterMessage[];\n};\n\nexport type ExternalMessageConverterChunk<T> = {\n inputs: T[];\n outputs: ExternalMessageConverterMessage[];\n};\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\nconst stringifyForError = (value: unknown) => {\n let text;\n try {\n text = value instanceof Error ? String(value) : JSON.stringify(value);\n } catch {\n /* circular */\n }\n text ??= String(value);\n return text.length > 200 ? `${text.slice(0, 200)}…` : text;\n};\n\nconst toCallbackOutputs = (\n output: ExternalMessageConverterMessage | ExternalMessageConverterMessage[],\n input: unknown,\n): ExternalMessageConverterMessage[] => {\n const outputs = Array.isArray(output) ? output : [output];\n for (const o of outputs) {\n const valid =\n typeof o === \"object\" &&\n o !== null &&\n (o.role === \"tool\" ||\n ((o.role === \"assistant\" || o.role === \"user\" || o.role === \"system\") &&\n (typeof o.content === \"string\" || Array.isArray(o.content))));\n if (!valid)\n throw new Error(\n `External message converter: the converter callback returned an invalid message (${stringifyForError(o)}) for input ${stringifyForError(input)}. Return an empty array to skip a message.`,\n );\n }\n // Providers can emit tool results without a usable id (react-langchain maps\n // a missing tool_call_id to \"\"); converters must not throw on those, so the\n // result is dropped like any other orphaned tool output.\n return outputs.filter((o) => {\n if (o.role !== \"tool\") return true;\n if (typeof o.toolCallId === \"string\" && o.toolCallId.length > 0)\n return true;\n if (!warnedDroppedToolResults.has(o)) {\n warnedDroppedToolResults.add(o);\n console.warn(\n `External message converter: dropping a tool result without a toolCallId (${stringifyForError(o)}) for input ${stringifyForError(input)}.`,\n );\n }\n return false;\n });\n};\n\nconst warnedDroppedToolResults = new WeakSet<object>();\n\nexport const convertExternalMessageCallback = <T>(\n input: T,\n callback: ExternalMessageConverterCallback<T>,\n metadata: ExternalMessageConverterMetadata,\n): ExternalMessageConverterCallbackResult<T> => ({\n input,\n outputs: toCallbackOutputs(callback(input, metadata), input),\n});\n\nconst mergeInnerMessages = (existing: object, incoming: object) => ({\n [symbolInnerMessage]: [\n ...((existing as any)[symbolInnerMessage] ?? []),\n ...((incoming as any)[symbolInnerMessage] ?? []),\n ],\n});\n\nconst isNaNToolCallId = (toolCallId: unknown) =>\n typeof toolCallId === \"number\" && Number.isNaN(toolCallId);\n\nexport const joinExternalMessages = (\n messages: readonly ExternalMessageConverterMessage[],\n): ThreadMessageLike => {\n const assistantMessage: Mutable<Omit<ThreadMessageLike, \"metadata\">> & {\n content: Exclude<ThreadMessageLike[\"content\"][0], string>[];\n metadata?: Mutable<ThreadMessageLike[\"metadata\"]>;\n } = {\n role: \"assistant\",\n content: [],\n };\n const toolCallIndices = new Map<unknown, number>();\n const reasoningIndices = new Map<string, number>();\n for (const output of messages) {\n if (output.role === \"tool\") {\n const toolCallIdx = !isNaNToolCallId(output.toolCallId)\n ? (toolCallIndices.get(output.toolCallId) ?? -1)\n : -1;\n // Ignore orphaned tool results so one bad tool message does not\n // prevent rendering the rest of the conversation.\n if (toolCallIdx !== -1) {\n const toolCall = assistantMessage.content[\n toolCallIdx\n ]! as ToolCallMessagePart;\n if (output.toolName != null) {\n if (toolCall.toolName !== output.toolName)\n throw new Error(\n `Tool call name ${output.toolCallId} ${output.toolName} does not match existing tool call ${toolCall.toolName}`,\n );\n }\n assistantMessage.content[toolCallIdx] = {\n ...toolCall,\n ...{\n [symbolInnerMessage]: [\n ...((toolCall as any)[symbolInnerMessage] ?? []),\n output,\n ],\n },\n result: output.result,\n artifact: output.artifact,\n isError: output.isError,\n messages: output.messages,\n };\n }\n } else {\n const role = output.role;\n const content = (\n typeof output.content === \"string\"\n ? [{ type: \"text\" as const, text: output.content }]\n : output.content\n ).map((c) => ({\n ...c,\n ...{ [symbolInnerMessage]: [output] },\n }));\n switch (role) {\n case \"system\":\n case \"user\":\n return {\n ...output,\n content,\n };\n case \"assistant\":\n if (assistantMessage.content.length === 0) {\n assistantMessage.id = output.id;\n assistantMessage.createdAt ??= output.createdAt;\n assistantMessage.status ??= output.status;\n\n if (output.attachments) {\n assistantMessage.attachments = [\n ...(assistantMessage.attachments ?? []),\n ...output.attachments,\n ];\n }\n }\n\n if (output.metadata) {\n assistantMessage.metadata ??= {};\n if (output.metadata.unstable_state !== undefined) {\n assistantMessage.metadata.unstable_state =\n output.metadata.unstable_state;\n }\n if (output.metadata.unstable_annotations) {\n assistantMessage.metadata.unstable_annotations = [\n ...(assistantMessage.metadata.unstable_annotations ?? []),\n ...output.metadata.unstable_annotations,\n ];\n }\n if (output.metadata.unstable_data) {\n assistantMessage.metadata.unstable_data = [\n ...(assistantMessage.metadata.unstable_data ?? []),\n ...output.metadata.unstable_data,\n ];\n }\n if (output.metadata.steps) {\n assistantMessage.metadata.steps = [\n ...(assistantMessage.metadata.steps ?? []),\n ...output.metadata.steps,\n ];\n }\n if (output.metadata.custom) {\n assistantMessage.metadata.custom = {\n ...(assistantMessage.metadata.custom ?? {}),\n ...output.metadata.custom,\n };\n }\n\n if (output.metadata.timing) {\n assistantMessage.metadata.timing = output.metadata.timing;\n }\n\n if (output.metadata.modality) {\n assistantMessage.metadata.modality = output.metadata.modality;\n }\n\n if (output.metadata.submittedFeedback) {\n assistantMessage.metadata.submittedFeedback =\n output.metadata.submittedFeedback;\n }\n\n if (output.metadata.isOptimistic) {\n assistantMessage.metadata.isOptimistic = true;\n }\n // TODO keep this in sync with ThreadMessageLike[\"metadata\"] / fromThreadMessageLike\n }\n\n // Add content parts, merging reasoning parts with same parentId\n for (const part of content) {\n if (part.type === \"tool-call\" && part.toolCallId) {\n const existingIdx = toolCallIndices.get(part.toolCallId);\n if (existingIdx !== undefined) {\n const existing = assistantMessage.content[\n existingIdx\n ] as typeof part;\n assistantMessage.content[existingIdx] = {\n ...existing,\n ...part,\n ...mergeInnerMessages(existing, part),\n };\n continue;\n }\n }\n\n if (\n part.type === \"reasoning\" &&\n \"parentId\" in part &&\n part.parentId\n ) {\n const existingIdx = reasoningIndices.get(part.parentId);\n if (existingIdx !== undefined) {\n const existing = assistantMessage.content[\n existingIdx\n ] as typeof part;\n assistantMessage.content[existingIdx] = {\n ...existing,\n text: `${existing.text}\\n\\n${part.text}`,\n ...mergeInnerMessages(existing, part),\n };\n continue;\n }\n }\n const partIdx = assistantMessage.content.length;\n assistantMessage.content.push(part);\n if (\n part.type === \"tool-call\" &&\n !isNaNToolCallId(part.toolCallId) &&\n !toolCallIndices.has(part.toolCallId)\n ) {\n toolCallIndices.set(part.toolCallId, partIdx);\n } else if (\n part.type === \"reasoning\" &&\n \"parentId\" in part &&\n part.parentId\n ) {\n reasoningIndices.set(part.parentId, partIdx);\n }\n }\n break;\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n }\n }\n return assistantMessage;\n};\n\nexport const chunkExternalMessages = <T>(\n callbackResults: ExternalMessageConverterCallbackResult<T>[],\n joinStrategy?: JoinStrategy,\n) => {\n const results: ExternalMessageConverterChunk<T>[] = [];\n let isAssistant = false;\n let pendingNone = false; // true if the previous assistant message had joinStrategy \"none\"\n let inputs: T[] = [];\n let outputs: ExternalMessageConverterMessage[] = [];\n\n const flush = () => {\n if (outputs.length) {\n results.push({\n inputs,\n outputs,\n });\n }\n inputs = [];\n outputs = [];\n isAssistant = false;\n pendingNone = false;\n };\n\n for (const callbackResult of callbackResults) {\n for (const output of callbackResult.outputs) {\n if (\n (pendingNone && output.role !== \"tool\") ||\n !isAssistant ||\n output.role === \"user\" ||\n output.role === \"system\"\n ) {\n flush();\n }\n isAssistant = output.role === \"assistant\" || output.role === \"tool\";\n\n if (inputs.at(-1) !== callbackResult.input) {\n inputs.push(callbackResult.input);\n }\n outputs.push(output);\n\n if (\n output.role === \"assistant\" &&\n (output.convertConfig?.joinStrategy === \"none\" ||\n joinStrategy === \"none\")\n ) {\n pendingNone = true;\n }\n }\n }\n flush();\n return results;\n};\n\nexport const shallowArrayEqual = (\n a: readonly unknown[],\n b: readonly unknown[],\n) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\ntype ExternalMessageChunkConversionCache = {\n message: ThreadMessage | undefined;\n generatedFallbackMessages: WeakSet<object>;\n};\n\ntype ExternalMessageConversionCallbackCacheEntry<T> =\n ExternalMessageConverterCallbackResult<T> & {\n metadata: ExternalMessageConverterMetadata;\n callback: ExternalMessageConverterCallback<T>;\n };\n\nexport type InternalExternalMessageConversionCache<\n T extends WeakKey = WeakKey,\n> = {\n callbackCache: WeakMap<T, ExternalMessageConversionCallbackCacheEntry<T>>;\n chunkCache: WeakMap<\n ExternalMessageConverterMessage,\n ExternalMessageConverterChunk<T>\n >;\n converterCache: ThreadMessageConverter;\n // Generatedness is tracked by identity, not by id shape: a caller-supplied id that happens to match the generated pattern must never be rewritten.\n generatedFallbackMessages: WeakSet<object>;\n};\n\nexport const createExternalMessageConversionCache = <\n T extends WeakKey = WeakKey,\n>(): InternalExternalMessageConversionCache<T> => ({\n callbackCache: new WeakMap(),\n chunkCache: new WeakMap(),\n converterCache: new ThreadMessageConverter(),\n generatedFallbackMessages: new WeakSet(),\n});\n\nexport const convertExternalMessageChunk = <T>(\n message: ExternalMessageConverterChunk<T>,\n idx: number,\n chunkCount: number,\n isRunning: boolean,\n error: ReadonlyJSONValue | undefined,\n cache?: ExternalMessageChunkConversionCache,\n cancelledMessageIds?: ReadonlySet<string>,\n) => {\n const isLast = idx === chunkCount - 1;\n const joined = joinExternalMessages(message.outputs);\n const isCancelled =\n cancelledMessageIds !== undefined &&\n message.outputs.some(\n (output) =>\n output.role !== \"tool\" &&\n output.id != null &&\n cancelledMessageIds.has(output.id),\n );\n const hasInterruptedToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isInterruptedToolCall);\n const hasPendingToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isPendingToolCall);\n const hasBackgroundToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isBackgroundToolCall);\n const autoStatus = getAutoStatus(\n isLast,\n isRunning,\n hasInterruptedToolCalls,\n hasPendingToolCalls,\n isLast ? error : undefined,\n isCancelled,\n hasBackgroundToolCalls,\n );\n const fallbackId = `${FALLBACK_ID_PREFIX}${idx}`;\n\n const cachedMessage = cache?.message;\n if (\n cachedMessage &&\n (cachedMessage.role !== \"assistant\" ||\n !isAutoStatus(cachedMessage.status) ||\n cachedMessage.status === autoStatus ||\n (cachedMessage.status.type === \"incomplete\" &&\n cachedMessage.status.reason === \"error\" &&\n cachedMessage.status.error !== undefined &&\n autoStatus.type === \"incomplete\" &&\n autoStatus.reason === \"error\" &&\n autoStatus.error !== undefined &&\n (cachedMessage.status.error === autoStatus.error ||\n isJSONValueEqual(cachedMessage.status.error, autoStatus.error))))\n ) {\n const inputs = getExternalStoreMessages<T>(cachedMessage);\n if (shallowArrayEqual(inputs, message.inputs)) {\n // A positional fallback id goes stale when messages are prepended\n // or reordered; serving it unchanged makes two messages collide on\n // one id and the dedup downstream drops one of them.\n if (\n cache.generatedFallbackMessages.has(cachedMessage) &&\n cachedMessage.id !== fallbackId\n ) {\n const updated = { ...cachedMessage, id: fallbackId };\n cache.generatedFallbackMessages.add(updated);\n bindExternalStoreMessage(updated, message.inputs);\n return updated;\n }\n return cachedMessage;\n }\n }\n\n const newMessage = fromThreadMessageLike(joined, fallbackId, autoStatus);\n if (cache && joined.id == null) {\n cache.generatedFallbackMessages.add(newMessage);\n }\n bindExternalStoreMessage(newMessage, message.inputs);\n return newMessage;\n};\n\nfunction createErrorAssistantMessage(\n error: ReadonlyJSONValue,\n): ThreadAssistantMessage {\n const msg: ThreadAssistantMessage = {\n id: generateErrorMessageId(),\n role: \"assistant\",\n content: [],\n status: { type: \"incomplete\", reason: \"error\", error },\n createdAt: new Date(),\n metadata: {\n unstable_state: null,\n unstable_annotations: [],\n unstable_data: [],\n custom: {},\n steps: [],\n },\n };\n bindExternalStoreMessage(msg, []);\n return msg;\n}\n\nexport const completeExternalMessageConversion = (\n messages: ThreadMessage[],\n error: ReadonlyJSONValue | undefined,\n) => {\n if (error) {\n const lastMessage = messages.at(-1);\n if (!lastMessage || lastMessage.role !== \"assistant\") {\n messages.push(createErrorAssistantMessage(error));\n }\n }\n return messages;\n};\n\nexport const convertExternalMessages = <T extends WeakKey>(\n messages: T[],\n callback: ExternalMessageConverterCallback<T>,\n isRunning: boolean,\n metadata: ExternalMessageConverterMetadata,\n joinStrategy?: JoinStrategy,\n cache?: InternalExternalMessageConversionCache<T>,\n) => {\n const callbackResults = messages.map((message) => {\n let result = cache?.callbackCache.get(message);\n if (\n !result ||\n result.metadata !== metadata ||\n result.callback !== callback\n ) {\n result = {\n ...convertExternalMessageCallback(message, callback, metadata),\n metadata,\n callback,\n };\n cache?.callbackCache.set(message, result);\n }\n return result;\n });\n const chunks = chunkExternalMessages(callbackResults, joinStrategy).map(\n (message) => {\n const key = message.outputs[0];\n if (!key || !cache) return message;\n\n const cached = cache.chunkCache.get(key);\n if (cached && shallowArrayEqual(cached.outputs, message.outputs)) {\n return cached;\n }\n cache.chunkCache.set(key, message);\n return message;\n },\n );\n const result = cache\n ? cache.converterCache.convertMessages(chunks, (cached, message, idx) =>\n convertExternalMessageChunk(\n message,\n idx,\n chunks.length,\n isRunning,\n metadata.error,\n {\n message: cached,\n generatedFallbackMessages: cache.generatedFallbackMessages,\n },\n metadata.cancelledMessageIds,\n ),\n )\n : chunks.map((message, idx) =>\n convertExternalMessageChunk(\n message,\n idx,\n chunks.length,\n isRunning,\n metadata.error,\n undefined,\n metadata.cancelledMessageIds,\n ),\n );\n return completeExternalMessageConversion(result, metadata.error);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-message-conversion.js","names":["ReadonlyJSONValue","ToolExecutionStatus","ThreadMessageConverter","ThreadAssistantMessage","ThreadMessage","ToolCallMessagePart","MessageTiming","generateErrorMessageId","isJSONValueEqual","getAutoStatus","isAutoStatus","isBackgroundToolCall","isInterruptedToolCall","isPendingToolCall","bindExternalStoreMessage","FALLBACK_ID_PREFIX","getExternalStoreMessages","symbolInnerMessage","fromThreadMessageLike","ThreadMessageLike","JoinStrategy","ExternalMessageConverterMessage","convertConfig","joinStrategy","role","toolCallId","toolName","result","artifact","isError","messages","ExternalMessageConverterMetadata","toolStatuses","Record","error","cancelledMessageIds","ReadonlySet","messageTiming","ExternalMessageConverterCallback","message","T","metadata","ExternalMessageConverterCallbackResult","input","outputs","ExternalMessageConverterChunk","inputs","Mutable","P","stringifyForError","value","text","Error","String","JSON","stringify","length","slice","toCallbackOutputs","output","Array","isArray","o","valid","content","filter","warnedDroppedToolResults","has","add","console","warn","WeakSet","convertExternalMessageCallback","callback","mergeInnerMessages","existing","incoming","isNaNToolCallId","Number","isNaN","joinExternalMessages","assistantMessage","Omit","Exclude","toolCallIndices","Map","reasoningIndices","toolCallIdx","get","isPreliminary","_isPreliminary","toolCall","type","const","map","c","id","createdAt","status","attachments","unstable_state","undefined","unstable_annotations","unstable_data","steps","custom","timing","modality","submittedFeedback","isOptimistic","part","existingIdx","parentId","partIdx","push","set","unsupportedRole","chunkExternalMessages","callbackResults","results","isAssistant","pendingNone","flush","callbackResult","isVoice","at","shallowArrayEqual","a","b","i","ExternalMessageChunkConversionCache","generatedFallbackMessages","ExternalMessageConversionCallbackCacheEntry","InternalExternalMessageConversionCache","WeakKey","callbackCache","WeakMap","chunkCache","converterCache","createExternalMessageConversionCache","convertExternalMessageChunk","idx","chunkCount","isRunning","cache","isLast","joined","isCancelled","some","hasInterruptedToolCalls","hasPendingToolCalls","hasBackgroundToolCalls","autoStatus","fallbackId","cachedMessage","reason","updated","newMessage","createErrorAssistantMessage","msg","Date","completeExternalMessageConversion","lastMessage","convertExternalMessages","chunks","key","cached","convertMessages"],"sources":["../../../src/runtime/utils/external-message-conversion.ts"],"sourcesContent":["import type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { ToolExecutionStatus } from \"../../runtimes/tool-invocations/ToolInvocationTracker\";\nimport { ThreadMessageConverter } from \"../../runtimes/external-store/thread-message-converter\";\nimport type {\n ThreadAssistantMessage,\n ThreadMessage,\n ToolCallMessagePart,\n} from \"../../types/message\";\nimport type { MessageTiming } from \"../../types/message\";\nimport { generateErrorMessageId } from \"../../utils/id\";\nimport { isJSONValueEqual } from \"../../utils/json/is-json-equal\";\nimport {\n getAutoStatus,\n isAutoStatus,\n isBackgroundToolCall,\n isInterruptedToolCall,\n isPendingToolCall,\n} from \"./auto-status\";\nimport {\n bindExternalStoreMessage,\n FALLBACK_ID_PREFIX,\n getExternalStoreMessages,\n symbolInnerMessage,\n} from \"./external-store-message\";\nimport {\n fromThreadMessageLike,\n type ThreadMessageLike,\n} from \"./thread-message-like\";\n\nexport type JoinStrategy = \"concat-content\" | \"none\";\n\nexport type ExternalMessageConverterMessage =\n | (ThreadMessageLike & {\n readonly convertConfig?: {\n readonly joinStrategy?: JoinStrategy;\n };\n })\n | {\n role: \"tool\";\n toolCallId: string;\n toolName?: string | undefined;\n result: any;\n artifact?: any;\n isError?: boolean;\n messages?: readonly ThreadMessage[];\n };\n\nexport type ExternalMessageConverterMetadata = {\n readonly toolStatuses?: Record<string, ToolExecutionStatus>;\n readonly error?: ReadonlyJSONValue;\n readonly cancelledMessageIds?: ReadonlySet<string>;\n readonly messageTiming?: Record<string, MessageTiming>;\n};\n\nexport type ExternalMessageConverterCallback<T> = (\n message: T,\n metadata: ExternalMessageConverterMetadata,\n) => ExternalMessageConverterMessage | ExternalMessageConverterMessage[];\n\nexport type ExternalMessageConverterCallbackResult<T> = {\n input: T;\n outputs: ExternalMessageConverterMessage[];\n};\n\nexport type ExternalMessageConverterChunk<T> = {\n inputs: T[];\n outputs: ExternalMessageConverterMessage[];\n};\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\nconst stringifyForError = (value: unknown) => {\n let text;\n try {\n text = value instanceof Error ? String(value) : JSON.stringify(value);\n } catch {\n /* circular */\n }\n text ??= String(value);\n return text.length > 200 ? `${text.slice(0, 200)}…` : text;\n};\n\nconst toCallbackOutputs = (\n output: ExternalMessageConverterMessage | ExternalMessageConverterMessage[],\n input: unknown,\n): ExternalMessageConverterMessage[] => {\n const outputs = Array.isArray(output) ? output : [output];\n for (const o of outputs) {\n const valid =\n typeof o === \"object\" &&\n o !== null &&\n (o.role === \"tool\" ||\n ((o.role === \"assistant\" || o.role === \"user\" || o.role === \"system\") &&\n (typeof o.content === \"string\" || Array.isArray(o.content))));\n if (!valid)\n throw new Error(\n `External message converter: the converter callback returned an invalid message (${stringifyForError(o)}) for input ${stringifyForError(input)}. Return an empty array to skip a message.`,\n );\n }\n // Providers can emit tool results without a usable id (react-langchain maps\n // a missing tool_call_id to \"\"); converters must not throw on those, so the\n // result is dropped like any other orphaned tool output.\n return outputs.filter((o) => {\n if (o.role !== \"tool\") return true;\n if (typeof o.toolCallId === \"string\" && o.toolCallId.length > 0)\n return true;\n if (!warnedDroppedToolResults.has(o)) {\n warnedDroppedToolResults.add(o);\n console.warn(\n `External message converter: dropping a tool result without a toolCallId (${stringifyForError(o)}) for input ${stringifyForError(input)}.`,\n );\n }\n return false;\n });\n};\n\nconst warnedDroppedToolResults = new WeakSet<object>();\n\nexport const convertExternalMessageCallback = <T>(\n input: T,\n callback: ExternalMessageConverterCallback<T>,\n metadata: ExternalMessageConverterMetadata,\n): ExternalMessageConverterCallbackResult<T> => ({\n input,\n outputs: toCallbackOutputs(callback(input, metadata), input),\n});\n\nconst mergeInnerMessages = (existing: object, incoming: object) => ({\n [symbolInnerMessage]: [\n ...((existing as any)[symbolInnerMessage] ?? []),\n ...((incoming as any)[symbolInnerMessage] ?? []),\n ],\n});\n\nconst isNaNToolCallId = (toolCallId: unknown) =>\n typeof toolCallId === \"number\" && Number.isNaN(toolCallId);\n\nexport const joinExternalMessages = (\n messages: readonly ExternalMessageConverterMessage[],\n): ThreadMessageLike => {\n const assistantMessage: Mutable<Omit<ThreadMessageLike, \"metadata\">> & {\n content: Exclude<ThreadMessageLike[\"content\"][0], string>[];\n metadata?: Mutable<ThreadMessageLike[\"metadata\"]>;\n } = {\n role: \"assistant\",\n content: [],\n };\n const toolCallIndices = new Map<unknown, number>();\n const reasoningIndices = new Map<string, number>();\n for (const output of messages) {\n if (output.role === \"tool\") {\n const toolCallIdx = !isNaNToolCallId(output.toolCallId)\n ? (toolCallIndices.get(output.toolCallId) ?? -1)\n : -1;\n // Ignore orphaned tool results so one bad tool message does not\n // prevent rendering the rest of the conversation.\n if (toolCallIdx !== -1) {\n const { isPreliminary: _isPreliminary, ...toolCall } = assistantMessage\n .content[toolCallIdx]! as ToolCallMessagePart;\n if (output.toolName != null) {\n if (toolCall.toolName !== output.toolName)\n throw new Error(\n `Tool call name ${output.toolCallId} ${output.toolName} does not match existing tool call ${toolCall.toolName}`,\n );\n }\n assistantMessage.content[toolCallIdx] = {\n ...toolCall,\n ...{\n [symbolInnerMessage]: [\n ...((toolCall as any)[symbolInnerMessage] ?? []),\n output,\n ],\n },\n result: output.result,\n artifact: output.artifact,\n isError: output.isError,\n messages: output.messages,\n };\n }\n } else {\n const role = output.role;\n const content = (\n typeof output.content === \"string\"\n ? [{ type: \"text\" as const, text: output.content }]\n : output.content\n ).map((c) => ({\n ...c,\n ...{ [symbolInnerMessage]: [output] },\n }));\n switch (role) {\n case \"system\":\n case \"user\":\n return {\n ...output,\n content,\n };\n case \"assistant\":\n if (assistantMessage.content.length === 0) {\n assistantMessage.id = output.id;\n assistantMessage.createdAt ??= output.createdAt;\n assistantMessage.status ??= output.status;\n\n if (output.attachments) {\n assistantMessage.attachments = [\n ...(assistantMessage.attachments ?? []),\n ...output.attachments,\n ];\n }\n }\n\n if (output.metadata) {\n assistantMessage.metadata ??= {};\n if (output.metadata.unstable_state !== undefined) {\n assistantMessage.metadata.unstable_state =\n output.metadata.unstable_state;\n }\n if (output.metadata.unstable_annotations) {\n assistantMessage.metadata.unstable_annotations = [\n ...(assistantMessage.metadata.unstable_annotations ?? []),\n ...output.metadata.unstable_annotations,\n ];\n }\n if (output.metadata.unstable_data) {\n assistantMessage.metadata.unstable_data = [\n ...(assistantMessage.metadata.unstable_data ?? []),\n ...output.metadata.unstable_data,\n ];\n }\n if (output.metadata.steps) {\n assistantMessage.metadata.steps = [\n ...(assistantMessage.metadata.steps ?? []),\n ...output.metadata.steps,\n ];\n }\n if (output.metadata.custom) {\n assistantMessage.metadata.custom = {\n ...(assistantMessage.metadata.custom ?? {}),\n ...output.metadata.custom,\n };\n }\n\n if (output.metadata.timing) {\n assistantMessage.metadata.timing = output.metadata.timing;\n }\n\n if (output.metadata.modality) {\n assistantMessage.metadata.modality = output.metadata.modality;\n }\n\n if (output.metadata.submittedFeedback) {\n assistantMessage.metadata.submittedFeedback =\n output.metadata.submittedFeedback;\n }\n\n if (output.metadata.isOptimistic) {\n assistantMessage.metadata.isOptimistic = true;\n }\n // TODO keep this in sync with ThreadMessageLike[\"metadata\"] / fromThreadMessageLike\n }\n\n // Add content parts, merging reasoning parts with same parentId\n for (const part of content) {\n if (part.type === \"tool-call\" && part.toolCallId) {\n const existingIdx = toolCallIndices.get(part.toolCallId);\n if (existingIdx !== undefined) {\n const existing = assistantMessage.content[\n existingIdx\n ] as typeof part;\n assistantMessage.content[existingIdx] = {\n ...existing,\n ...part,\n ...mergeInnerMessages(existing, part),\n };\n continue;\n }\n }\n\n if (\n part.type === \"reasoning\" &&\n \"parentId\" in part &&\n part.parentId\n ) {\n const existingIdx = reasoningIndices.get(part.parentId);\n if (existingIdx !== undefined) {\n const existing = assistantMessage.content[\n existingIdx\n ] as typeof part;\n assistantMessage.content[existingIdx] = {\n ...existing,\n text: `${existing.text}\\n\\n${part.text}`,\n ...mergeInnerMessages(existing, part),\n };\n continue;\n }\n }\n const partIdx = assistantMessage.content.length;\n assistantMessage.content.push(part);\n if (\n part.type === \"tool-call\" &&\n !isNaNToolCallId(part.toolCallId) &&\n !toolCallIndices.has(part.toolCallId)\n ) {\n toolCallIndices.set(part.toolCallId, partIdx);\n } else if (\n part.type === \"reasoning\" &&\n \"parentId\" in part &&\n part.parentId\n ) {\n reasoningIndices.set(part.parentId, partIdx);\n }\n }\n break;\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n }\n }\n return assistantMessage;\n};\n\nexport const chunkExternalMessages = <T>(\n callbackResults: ExternalMessageConverterCallbackResult<T>[],\n joinStrategy?: JoinStrategy,\n) => {\n const results: ExternalMessageConverterChunk<T>[] = [];\n let isAssistant = false;\n let pendingNone = false; // true if the previous assistant message had joinStrategy \"none\"\n let inputs: T[] = [];\n let outputs: ExternalMessageConverterMessage[] = [];\n\n const flush = () => {\n if (outputs.length) {\n results.push({\n inputs,\n outputs,\n });\n }\n inputs = [];\n outputs = [];\n isAssistant = false;\n pendingNone = false;\n };\n\n for (const callbackResult of callbackResults) {\n for (const output of callbackResult.outputs) {\n const isVoice =\n output.role === \"assistant\" && output.metadata?.modality === \"voice\";\n if (\n (pendingNone && output.role !== \"tool\") ||\n !isAssistant ||\n output.role === \"user\" ||\n output.role === \"system\" ||\n isVoice\n ) {\n flush();\n }\n isAssistant = output.role === \"assistant\" || output.role === \"tool\";\n\n if (inputs.at(-1) !== callbackResult.input) {\n inputs.push(callbackResult.input);\n }\n outputs.push(output);\n\n if (\n output.role === \"assistant\" &&\n (isVoice ||\n output.convertConfig?.joinStrategy === \"none\" ||\n joinStrategy === \"none\")\n ) {\n pendingNone = true;\n }\n }\n }\n flush();\n return results;\n};\n\nexport const shallowArrayEqual = (\n a: readonly unknown[],\n b: readonly unknown[],\n) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\ntype ExternalMessageChunkConversionCache = {\n message: ThreadMessage | undefined;\n generatedFallbackMessages: WeakSet<object>;\n};\n\ntype ExternalMessageConversionCallbackCacheEntry<T> =\n ExternalMessageConverterCallbackResult<T> & {\n metadata: ExternalMessageConverterMetadata;\n callback: ExternalMessageConverterCallback<T>;\n };\n\nexport type InternalExternalMessageConversionCache<\n T extends WeakKey = WeakKey,\n> = {\n callbackCache: WeakMap<T, ExternalMessageConversionCallbackCacheEntry<T>>;\n chunkCache: WeakMap<\n ExternalMessageConverterMessage,\n ExternalMessageConverterChunk<T>\n >;\n converterCache: ThreadMessageConverter;\n // Generatedness is tracked by identity, not by id shape: a caller-supplied id that happens to match the generated pattern must never be rewritten.\n generatedFallbackMessages: WeakSet<object>;\n};\n\nexport const createExternalMessageConversionCache = <\n T extends WeakKey = WeakKey,\n>(): InternalExternalMessageConversionCache<T> => ({\n callbackCache: new WeakMap(),\n chunkCache: new WeakMap(),\n converterCache: new ThreadMessageConverter(),\n generatedFallbackMessages: new WeakSet(),\n});\n\nexport const convertExternalMessageChunk = <T>(\n message: ExternalMessageConverterChunk<T>,\n idx: number,\n chunkCount: number,\n isRunning: boolean,\n error: ReadonlyJSONValue | undefined,\n cache?: ExternalMessageChunkConversionCache,\n cancelledMessageIds?: ReadonlySet<string>,\n) => {\n const isLast = idx === chunkCount - 1;\n const joined = joinExternalMessages(message.outputs);\n const isCancelled =\n cancelledMessageIds !== undefined &&\n message.outputs.some(\n (output) =>\n output.role !== \"tool\" &&\n output.id != null &&\n cancelledMessageIds.has(output.id),\n );\n const hasInterruptedToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isInterruptedToolCall);\n const hasPendingToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isPendingToolCall);\n const hasBackgroundToolCalls =\n typeof joined.content === \"object\" &&\n joined.content.some(isBackgroundToolCall);\n const autoStatus = getAutoStatus(\n isLast,\n isRunning,\n hasInterruptedToolCalls,\n hasPendingToolCalls,\n isLast ? error : undefined,\n isCancelled,\n hasBackgroundToolCalls,\n );\n const fallbackId = `${FALLBACK_ID_PREFIX}${idx}`;\n\n const cachedMessage = cache?.message;\n if (\n cachedMessage &&\n (cachedMessage.role !== \"assistant\" ||\n !isAutoStatus(cachedMessage.status) ||\n cachedMessage.status === autoStatus ||\n (cachedMessage.status.type === \"incomplete\" &&\n cachedMessage.status.reason === \"error\" &&\n cachedMessage.status.error !== undefined &&\n autoStatus.type === \"incomplete\" &&\n autoStatus.reason === \"error\" &&\n autoStatus.error !== undefined &&\n (cachedMessage.status.error === autoStatus.error ||\n isJSONValueEqual(cachedMessage.status.error, autoStatus.error))))\n ) {\n const inputs = getExternalStoreMessages<T>(cachedMessage);\n if (shallowArrayEqual(inputs, message.inputs)) {\n // A positional fallback id goes stale when messages are prepended\n // or reordered; serving it unchanged makes two messages collide on\n // one id and the dedup downstream drops one of them.\n if (\n cache.generatedFallbackMessages.has(cachedMessage) &&\n cachedMessage.id !== fallbackId\n ) {\n const updated = { ...cachedMessage, id: fallbackId };\n cache.generatedFallbackMessages.add(updated);\n bindExternalStoreMessage(updated, message.inputs);\n return updated;\n }\n return cachedMessage;\n }\n }\n\n const newMessage = fromThreadMessageLike(joined, fallbackId, autoStatus);\n if (cache && joined.id == null) {\n cache.generatedFallbackMessages.add(newMessage);\n }\n bindExternalStoreMessage(newMessage, message.inputs);\n return newMessage;\n};\n\nfunction createErrorAssistantMessage(\n error: ReadonlyJSONValue,\n): ThreadAssistantMessage {\n const msg: ThreadAssistantMessage = {\n id: generateErrorMessageId(),\n role: \"assistant\",\n content: [],\n status: { type: \"incomplete\", reason: \"error\", error },\n createdAt: new Date(),\n metadata: {\n unstable_state: null,\n unstable_annotations: [],\n unstable_data: [],\n custom: {},\n steps: [],\n },\n };\n bindExternalStoreMessage(msg, []);\n return msg;\n}\n\nexport const completeExternalMessageConversion = (\n messages: ThreadMessage[],\n error: ReadonlyJSONValue | undefined,\n) => {\n if (error !== undefined && error !== null) {\n const lastMessage = messages.at(-1);\n if (!lastMessage || lastMessage.role !== \"assistant\") {\n messages.push(createErrorAssistantMessage(error));\n }\n }\n return messages;\n};\n\nexport const convertExternalMessages = <T extends WeakKey>(\n messages: T[],\n callback: ExternalMessageConverterCallback<T>,\n isRunning: boolean,\n metadata: ExternalMessageConverterMetadata,\n joinStrategy?: JoinStrategy,\n cache?: InternalExternalMessageConversionCache<T>,\n) => {\n const callbackResults = messages.map((message) => {\n let result = cache?.callbackCache.get(message);\n if (\n !result ||\n result.metadata !== metadata ||\n result.callback !== callback\n ) {\n result = {\n ...convertExternalMessageCallback(message, callback, metadata),\n metadata,\n callback,\n };\n cache?.callbackCache.set(message, result);\n }\n return result;\n });\n const chunks = chunkExternalMessages(callbackResults, joinStrategy).map(\n (message) => {\n const key = message.outputs[0];\n if (!key || !cache) return message;\n\n const cached = cache.chunkCache.get(key);\n if (cached && shallowArrayEqual(cached.outputs, message.outputs)) {\n return cached;\n }\n cache.chunkCache.set(key, message);\n return message;\n },\n );\n const result = cache\n ? cache.converterCache.convertMessages(chunks, (cached, message, idx) =>\n convertExternalMessageChunk(\n message,\n idx,\n chunks.length,\n isRunning,\n metadata.error,\n {\n message: cached,\n generatedFallbackMessages: cache.generatedFallbackMessages,\n },\n metadata.cancelledMessageIds,\n ),\n )\n : chunks.map((message, idx) =>\n convertExternalMessageChunk(\n message,\n idx,\n chunks.length,\n isRunning,\n metadata.error,\n undefined,\n metadata.cancelledMessageIds,\n ),\n );\n return completeExternalMessageConversion(result, metadata.error);\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ThreadMessage } from "../../types/message.js";
|
|
2
|
-
|
|
3
|
-
declare const symbolInnerMessage: unique symbol;
|
|
1
|
+
import type { ThreadMessage } from "../../types/message.js";
|
|
2
|
+
export declare const symbolInnerMessage: unique symbol;
|
|
4
3
|
/**
|
|
5
4
|
* Attach the original external store message(s) to a ThreadMessage or message part.
|
|
6
5
|
* This is a no-op if the target already has a bound message.
|
|
@@ -8,11 +7,9 @@ declare const symbolInnerMessage: unique symbol;
|
|
|
8
7
|
*
|
|
9
8
|
* @deprecated This API is experimental and may change without notice.
|
|
10
9
|
*/
|
|
11
|
-
declare const bindExternalStoreMessage: <T>(target: object, message: T | T[]) => void;
|
|
12
|
-
declare const getExternalStoreMessages: <T>(input: {
|
|
13
|
-
|
|
10
|
+
export declare const bindExternalStoreMessage: <T>(target: object, message: T | T[]) => void;
|
|
11
|
+
export declare const getExternalStoreMessages: <T>(input: {
|
|
12
|
+
messages: readonly ThreadMessage[];
|
|
14
13
|
} | ThreadMessage | ThreadMessage["content"][number]) => T[];
|
|
15
|
-
declare const FALLBACK_ID_PREFIX = "__external_store_fallback_";
|
|
16
|
-
//#endregion
|
|
17
|
-
export { FALLBACK_ID_PREFIX, bindExternalStoreMessage, getExternalStoreMessages, symbolInnerMessage };
|
|
14
|
+
export declare const FALLBACK_ID_PREFIX = "__external_store_fallback_";
|
|
18
15
|
//# sourceMappingURL=external-store-message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-message.d.ts","
|
|
1
|
+
{"version":3,"file":"external-store-message.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/external-store-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA4B;AAEzD,eAAO,MAAM,kBAAkB,eAAyB,CAAC;AAUzD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,QAAQ,MAAM,EACd,SAAS,CAAC,GAAG,CAAC,EAAE,KACf,IAGF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,OACI;IAAE,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GACtC,aAAa,GACb,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAYrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAA+B,CAAC"}
|