@assistant-ui/core 0.3.20 → 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 +42 -34
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +51 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +1 -3
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +6 -7
- 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 +57 -58
- 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 +14 -16
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +54 -51
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +7 -9
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +46 -40
- 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 +0 -2
- 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 +19 -21
- 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 +27 -28
- 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 +19 -21
- 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 +42 -29
- 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 +6 -8
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +14 -16
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +13 -14
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +10 -11
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +32 -34
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +6 -8
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -25
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +2 -5
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +24 -18
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +58 -25
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -4
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +5 -7
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +1 -3
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +6 -8
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +2 -4
- 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 +32 -34
- 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 +9 -11
- 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 -10
- 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 +1 -3
- 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 -8
- 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 +33 -36
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +6 -8
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +6 -7
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -13
- 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 +11 -13
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +12 -4
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +0 -2
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +0 -2
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +23 -25
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +4 -6
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +4 -6
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +4 -6
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +3 -4
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +0 -2
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +37 -24
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +2 -5
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +5 -7
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +2 -5
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +8 -11
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +11 -13
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +2 -3
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +2 -4
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +37 -36
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -8
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +3 -5
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +5 -6
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +6 -8
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +4 -6
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +2 -4
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +2 -4
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +3 -5
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +2 -4
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +2 -4
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +3 -5
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -3
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +2 -4
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +4 -6
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +0 -2
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +2 -4
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +6 -8
- 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 +0 -2
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +0 -2
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +2 -4
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +0 -2
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +5 -7
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +25 -26
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +22 -23
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +10 -9
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +11 -14
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +26 -28
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +16 -6
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +26 -23
- 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 +120 -117
- 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 +199 -185
- 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 +6 -8
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -4
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +13 -15
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +54 -56
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +20 -21
- 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 +22 -23
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +4 -6
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +3 -5
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +3 -5
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +2 -4
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +2 -4
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +2 -4
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +2 -4
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -4
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +5 -7
- 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 +2 -4
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +3 -5
- 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 +3 -5
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +3 -6
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +209 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +53 -39
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +185 -196
- 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 +14 -19
- 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 +8 -9
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +9 -11
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +4 -5
- 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 +7 -9
- 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 +106 -100
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +3 -5
- 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 +2 -4
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -3
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +5 -7
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +410 -213
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +14 -16
- 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 +136 -123
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +60 -9
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +9 -10
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +4 -5
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +1 -3
- 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 +2 -4
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +8 -9
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +14 -17
- 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 +11 -13
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +14 -18
- 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 +2 -4
- 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 +1 -3
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +26 -37
- 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 +2 -4
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +1 -3
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +3 -5
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +46 -43
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +8 -11
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +50 -49
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +17 -19
- 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 +5 -6
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +28 -29
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +1 -3
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +2 -4
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +26 -28
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +46 -43
- 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 +31 -30
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +207 -193
- 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 +28 -26
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +22 -0
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -84
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +1 -1
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +48 -50
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +64 -66
- 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 +73 -76
- 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 +299 -300
- 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 +8 -10
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +149 -99
- 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 +120 -108
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +109 -41
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +29 -29
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +10 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +27 -29
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +21 -6
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +14 -16
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +7 -9
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +88 -72
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +63 -65
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +210 -197
- 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 +35 -37
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +29 -31
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +1 -1
- package/dist/runtime/queue/queue-item.d.ts +5 -7
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +7 -8
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +13 -11
- 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 +4 -5
- 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 +26 -27
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +32 -32
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +3 -3
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +2 -4
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +21 -23
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +50 -51
- 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 +10 -11
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -8
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +4 -6
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +5 -5
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.js +22 -2
- package/dist/runtime/utils/stored-message-parts.js.map +1 -1
- package/dist/runtime/utils/streaming-timing.d.ts +19 -21
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +36 -32
- 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 +4 -5
- 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 +6 -8
- 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 +0 -2
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +215 -198
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +5 -6
- 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 +1 -3
- 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 +38 -40
- 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 +117 -124
- 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 +44 -14
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +3 -5
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +94 -95
- 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 +6 -8
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +40 -42
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +40 -42
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +93 -97
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +178 -31
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +1 -3
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +76 -53
- 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 +11 -13
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +2 -4
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +1 -3
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +33 -29
- 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 +44 -46
- 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 +25 -26
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +3 -5
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +111 -112
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +144 -145
- 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 +7 -9
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +53 -54
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1256 -731
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +1 -3
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +2 -4
- 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 +1 -3
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +3 -4
- 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 +5 -7
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +10 -9
- 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 +0 -2
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +4 -6
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +0 -2
- 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 +3 -4
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +9 -4
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +3 -5
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +10 -12
- 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 +0 -2
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +0 -2
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +1 -3
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +3 -5
- 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 +9 -9
- 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 +4 -6
- 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 +5 -7
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +3 -5
- 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 +2 -4
- 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 +15 -17
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +28 -29
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +141 -128
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +114 -107
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +7 -9
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +49 -45
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +18 -20
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +10 -12
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +13 -15
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +23 -25
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +63 -65
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +192 -194
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +45 -47
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +58 -53
- 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 +26 -27
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +4 -4
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +11 -13
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +7 -8
- 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 +322 -284
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +2 -4
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +8 -10
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +0 -2
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +0 -2
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +8 -11
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +10 -12
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +17 -18
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +0 -2
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +0 -2
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +0 -2
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +0 -2
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +1 -3
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +1 -3
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +2 -3
- 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 +1 -2
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +0 -2
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +0 -2
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +1 -3
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +0 -2
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +70 -20
- 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 +61 -0
- 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/adapters/LocalStorageThreadListAdapter.test.ts +594 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +98 -35
- package/src/react/client/Interactables.test.ts +853 -1
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- 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 +212 -1
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- 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 +124 -8
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +35 -15
- 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 +151 -7
- 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/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.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +160 -3
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +38 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +73 -53
- 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-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 +42 -0
- 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 +361 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +571 -216
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +25 -0
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +158 -9
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +352 -1
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +76 -1
- 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/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 +40 -0
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +10 -5
- 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 +744 -9
- package/src/runtime/base/base-thread-runtime-core.ts +154 -27
- package/src/runtime/base/default-edit-composer-runtime-core.ts +13 -1
- package/src/runtime/base/default-thread-composer-runtime-core.ts +29 -10
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +22 -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 +48 -0
- package/src/runtime/utils/external-message-conversion.ts +3 -4
- 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 +43 -1
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +72 -46
- 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 +22 -1
- 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 +76 -29
- 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 +1649 -108
- package/src/runtimes/local/local-thread-runtime-core.ts +301 -47
- 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 +635 -131
- 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 +103 -0
- package/src/store/primitive-predicates.ts +15 -3
- 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 +138 -5
- 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 +8 -0
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +198 -1
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/auiV0Encode.test.ts +408 -1
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +196 -0
- package/src/tests/composer-can-send.test.ts +98 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +102 -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 +581 -1
- package/src/tests/external-store-thread-runtime-core.test.ts +186 -0
- package/src/tests/external-thread-attachments.test.tsx +741 -3
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/types/message.ts +49 -2
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -15
- 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
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { ToolApprovalDisplay, ToolApprovalOption, ToolApprovalResponse } from "../../types/message.js";
|
|
2
|
-
import { RespondToToolApprovalOptions } from "../interfaces/thread-runtime-core.js";
|
|
3
|
-
//#region src/runtime/utils/resolveToolApprovalResponse.d.ts
|
|
1
|
+
import { type ToolApprovalDisplay, type ToolApprovalOption, type ToolApprovalResponse } from "../../types/message.js";
|
|
2
|
+
import type { RespondToToolApprovalOptions } from "../interfaces/thread-runtime-core.js";
|
|
4
3
|
/**
|
|
5
4
|
* Resolves a renderer-facing approval response (boolean, optionId, or
|
|
6
5
|
* free-form answer) against the approval's request shape into the
|
|
7
6
|
* runtime-facing decision shape.
|
|
8
7
|
*/
|
|
9
8
|
export declare const resolveToolApprovalResponse: (approval: {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly display?: ToolApprovalDisplay;
|
|
11
|
+
readonly allowFreeform?: boolean;
|
|
12
|
+
readonly options?: readonly ToolApprovalOption[];
|
|
14
13
|
}, response: ToolApprovalResponse) => RespondToToolApprovalOptions;
|
|
15
|
-
//#endregion
|
|
16
14
|
//# sourceMappingURL=resolveToolApprovalResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveToolApprovalResponse.d.ts","
|
|
1
|
+
{"version":3,"file":"resolveToolApprovalResponse.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/resolveToolApprovalResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,+BAA4B;AAC7B,OAAO,KAAK,EAAE,4BAA4B,EAAE,6CAA0C;AAStF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,UAAU;IACR,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD,EACD,UAAU,oBAAoB,KAC7B,4BA+CF,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
//#region src/runtime/utils/runtime-extras-brand.d.ts
|
|
2
1
|
/** @deprecated Internal API for external-store adapter authors. Not part of the public API; may change or be removed without notice. */
|
|
3
2
|
export type RuntimeExtrasBrand<T extends object> = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
provide: (value: T) => T;
|
|
4
|
+
is: (extras: unknown) => extras is T;
|
|
5
|
+
tryGet: (extras: unknown) => T | undefined;
|
|
6
|
+
assert: (extras: unknown) => T;
|
|
8
7
|
};
|
|
9
8
|
/**
|
|
10
9
|
* Creates the framework-neutral half of a runtime extras channel: the brand
|
|
@@ -16,5 +15,4 @@ export type RuntimeExtrasBrand<T extends object> = {
|
|
|
16
15
|
* @deprecated Internal API for external-store adapter authors. Not part of the public API; may change or be removed without notice.
|
|
17
16
|
*/
|
|
18
17
|
export declare const createRuntimeExtrasBrand: <T extends object>(runtimeName: string) => RuntimeExtrasBrand<T>;
|
|
19
|
-
//#endregion
|
|
20
18
|
//# sourceMappingURL=runtime-extras-brand.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-extras-brand.d.ts","
|
|
1
|
+
{"version":3,"file":"runtime-extras-brand.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/runtime-extras-brand.ts"],"names":[],"mappings":"AAAA,wIAAwI;AACxI,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IACjD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACzB,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,MAAM,EACvD,aAAa,MAAM,KAClB,kBAAkB,CAAC,CAAC,CA2BtB,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
//#region src/runtime/utils/stored-message-parts.d.ts
|
|
1
|
+
import type { CompleteAttachment } from "../../types/attachment.js";
|
|
2
|
+
import type { MessageStatus, ThreadMessage, ThreadStep } from "../../types/message.js";
|
|
4
3
|
export declare const MAX_STORED_MESSAGE_DEPTH = 100;
|
|
5
4
|
export type StoredMessagePart = Record<string, unknown> & {
|
|
6
|
-
|
|
5
|
+
type: string;
|
|
7
6
|
};
|
|
8
7
|
export declare const parseStoredDate: (value: unknown) => Date | null;
|
|
9
8
|
export declare const isStoredMessageRole: (value: unknown) => value is ThreadMessage["role"];
|
|
9
|
+
export declare const isStoredMessageStatus: (value: unknown) => value is MessageStatus;
|
|
10
|
+
export declare const parseStoredThreadSteps: (value: unknown) => ThreadStep[];
|
|
10
11
|
export declare const isStoredMessagePart: (value: unknown) => value is StoredMessagePart;
|
|
11
12
|
/**
|
|
12
13
|
* `fromThreadMessageLike` converts each part through its role's branch and
|
|
@@ -17,5 +18,4 @@ export declare const isStoredMessagePart: (value: unknown) => value is StoredMes
|
|
|
17
18
|
*/
|
|
18
19
|
export declare const isStoredAuiV0RolePart: (role: ThreadMessage["role"], value: unknown) => value is StoredMessagePart;
|
|
19
20
|
export declare const parseStoredAttachment: (value: unknown, isPart: (value: unknown) => value is StoredMessagePart) => CompleteAttachment | null;
|
|
20
|
-
//#endregion
|
|
21
21
|
//# sourceMappingURL=stored-message-parts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-message-parts.d.ts","
|
|
1
|
+
{"version":3,"file":"stored-message-parts.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/stored-message-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kCAA+B;AACjE,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,UAAU,EAEX,+BAA4B;AAG7B,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAI5C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,IAAI,GAAG,IAMvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,OAAO,KACb,KAAK,IAAI,aAAa,CAAC,MAAM,CACiC,CAAC;AAgBlE,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAIF,CAAC;AAe/D,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,UAAU,EAK1D,CAAC;AAgET,eAAO,MAAM,mBAAmB,UARf,OAAO,KAAG,KAAK,IAAI,iBAQsC,CAAC;AA6C3E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,OAAO,KACb,KAAK,IAAI,iBAOC,CAAC;AAEd,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,EACd,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,iBAAiB,KACrD,kBAAkB,GAAG,IAiBvB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isRecord } from "../../utils/json/is-json.js";
|
|
1
|
+
import { isJSONValue, isRecord } from "../../utils/json/is-json.js";
|
|
2
2
|
//#region src/runtime/utils/stored-message-parts.ts
|
|
3
3
|
const MAX_STORED_MESSAGE_DEPTH = 100;
|
|
4
4
|
const parseStoredDate = (value) => {
|
|
@@ -8,6 +8,26 @@ const parseStoredDate = (value) => {
|
|
|
8
8
|
return Number.isNaN(date.getTime()) ? null : date;
|
|
9
9
|
};
|
|
10
10
|
const isStoredMessageRole = (value) => value === "system" || value === "user" || value === "assistant";
|
|
11
|
+
const storedMessageStatusGuardsByType = {
|
|
12
|
+
running: () => true,
|
|
13
|
+
"requires-action": (status) => typeof status.reason === "string",
|
|
14
|
+
complete: (status) => typeof status.reason === "string",
|
|
15
|
+
incomplete: (status) => (status.reason === void 0 || typeof status.reason === "string") && (status.error === void 0 || isJSONValue(status.error))
|
|
16
|
+
};
|
|
17
|
+
const isStoredMessageStatus = (value) => isRecord(value) && typeof value.type === "string" && Object.hasOwn(storedMessageStatusGuardsByType, value.type) && storedMessageStatusGuardsByType[value.type](value) === true;
|
|
18
|
+
const parseStoredThreadStep = (value) => {
|
|
19
|
+
if (!isRecord(value)) return void 0;
|
|
20
|
+
if (value.messageId !== void 0 && typeof value.messageId !== "string") {
|
|
21
|
+
const { messageId: _, ...step } = value;
|
|
22
|
+
return parseStoredThreadStep(step);
|
|
23
|
+
}
|
|
24
|
+
if (value.usage !== void 0 && !isRecord(value.usage)) {
|
|
25
|
+
const { usage: _, ...step } = value;
|
|
26
|
+
return step;
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
};
|
|
30
|
+
const parseStoredThreadSteps = (value) => Array.isArray(value) ? value.map(parseStoredThreadStep).filter((step) => step !== void 0) : [];
|
|
11
31
|
/**
|
|
12
32
|
* Builds the readability predicate for a persistence boundary. A stored part is
|
|
13
33
|
* readable when it passes the guard for its known type, or when its type is
|
|
@@ -78,6 +98,6 @@ const parseStoredAttachment = (value, isPart) => {
|
|
|
78
98
|
};
|
|
79
99
|
};
|
|
80
100
|
//#endregion
|
|
81
|
-
export { MAX_STORED_MESSAGE_DEPTH, isStoredAuiV0RolePart, isStoredMessagePart, isStoredMessageRole, parseStoredAttachment, parseStoredDate };
|
|
101
|
+
export { MAX_STORED_MESSAGE_DEPTH, isStoredAuiV0RolePart, isStoredMessagePart, isStoredMessageRole, isStoredMessageStatus, parseStoredAttachment, parseStoredDate, parseStoredThreadSteps };
|
|
82
102
|
|
|
83
103
|
//# sourceMappingURL=stored-message-parts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-message-parts.js","names":["CompleteAttachment","ThreadAssistantMessagePart","ThreadMessage","ThreadUserMessagePart","isRecord","MAX_STORED_MESSAGE_DEPTH","StoredPartGuard","part","Record","StoredMessagePart","type","parseStoredDate","value","Date","Number","isNaN","getTime","date","isStoredMessageRole","makeIsStoredMessagePart","overrides","Partial","isReadableUnknownType","storedPartGuards","text","reasoning","unstable_summary","image","file","data","mimeType","audio","format","name","source","id","sourceType","url","title","mediaType","spec","toolCallId","toolName","args","argsText","guards","Object","hasOwn","isStoredMessagePart","isStoredAuiV0Part","undefined","startsWith","rolePartTypes","user","assistant","isStoredAuiV0RolePart","role","parseStoredAttachment","isPart","status","Array","isArray","content","filter"],"sources":["../../../src/runtime/utils/stored-message-parts.ts"],"sourcesContent":["import type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n ThreadAssistantMessagePart,\n ThreadMessage,\n ThreadUserMessagePart,\n} from \"../../types/message\";\nimport { isRecord } from \"../../utils/json/is-json\";\n\nexport const MAX_STORED_MESSAGE_DEPTH = 100;\n\ntype StoredPartGuard = (part: Record<string, unknown>) => boolean;\n\nexport type StoredMessagePart = Record<string, unknown> & { type: string };\n\nexport const parseStoredDate = (value: unknown): Date | null => {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nexport const isStoredMessageRole = (\n value: unknown,\n): value is ThreadMessage[\"role\"] =>\n value === \"system\" || value === \"user\" || value === \"assistant\";\n\n/**\n * Builds the readability predicate for a persistence boundary. A stored part is\n * readable when it passes the guard for its known type, or when its type is\n * unknown and the boundary can still read it.\n *\n * Unknown types are where the boundaries part: local storage hands its rows to\n * the runtime untouched, so a type written by a newer release still loads,\n * while the aui/v0 decoder converts a `data-` prefix and throws on anything\n * else unknown. Per-type differences ride in `overrides`.\n */\nconst makeIsStoredMessagePart = (\n overrides: Partial<\n Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >\n >,\n isReadableUnknownType: (type: string) => boolean,\n) => {\n const storedPartGuards = {\n text: (part) => typeof part.text === \"string\",\n reasoning: (part) =>\n typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\",\n image: (part) => typeof part.image === \"string\",\n file: (part) =>\n typeof part.data === \"string\" && typeof part.mimeType === \"string\",\n audio: (part) =>\n isRecord(part.audio) &&\n typeof part.audio.data === \"string\" &&\n typeof part.audio.format === \"string\",\n data: (part) => typeof part.name === \"string\",\n source: (part) =>\n typeof part.id === \"string\" &&\n (part.sourceType === \"url\"\n ? typeof part.url === \"string\"\n : part.sourceType === \"document\" &&\n typeof part.title === \"string\" &&\n typeof part.mediaType === \"string\"),\n \"generative-ui\": (part) => isRecord(part.spec),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n isRecord(part.args) &&\n typeof part.argsText === \"string\",\n } satisfies Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >;\n const guards: Record<string, StoredPartGuard> = {\n ...storedPartGuards,\n ...overrides,\n };\n\n return (value: unknown): value is StoredMessagePart =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (Object.hasOwn(guards, value.type)\n ? guards[value.type]!(value)\n : isReadableUnknownType(value.type));\n};\n\nexport const isStoredMessagePart = makeIsStoredMessagePart({}, () => true);\n\n/**\n * The aui/v0 decoder dereferences each present field rather than reading only\n * the one it needs, so this boundary checks every field it will touch, while\n * local storage stays no stricter than what the runtime itself writes.\n */\nconst isStoredAuiV0Part = makeIsStoredMessagePart(\n {\n reasoning: (part) =>\n (part.text === undefined || typeof part.text === \"string\") &&\n (part.unstable_summary === undefined ||\n typeof part.unstable_summary === \"string\") &&\n (typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\"),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n (part.args === undefined || isRecord(part.args)) &&\n (part.argsText === undefined || typeof part.argsText === \"string\") &&\n (part.args !== undefined || part.argsText !== undefined),\n },\n (type) => type.startsWith(\"data-\"),\n);\n\nconst rolePartTypes = {\n user: {\n text: true,\n image: true,\n file: true,\n data: true,\n audio: true,\n } satisfies Record<ThreadUserMessagePart[\"type\"], true>,\n assistant: {\n text: true,\n reasoning: true,\n \"tool-call\": true,\n source: true,\n file: true,\n image: true,\n data: true,\n \"generative-ui\": true,\n } satisfies Record<ThreadAssistantMessagePart[\"type\"], true>,\n};\n\n/**\n * `fromThreadMessageLike` converts each part through its role's branch and\n * throws on a part that branch does not carry, which would cost the whole\n * stored row. The aui/v0 boundary decodes through that converter, so it filters\n * by role as well as by shape. A part type unknown to this table is left to the\n * boundary predicate, which keeps the `data-` prefixes the converter handles.\n */\nexport const isStoredAuiV0RolePart = (\n role: ThreadMessage[\"role\"],\n value: unknown,\n): value is StoredMessagePart =>\n isStoredAuiV0Part(value) &&\n (role === \"system\"\n ? value.type === \"text\"\n : Object.hasOwn(rolePartTypes.assistant, value.type) ||\n Object.hasOwn(rolePartTypes.user, value.type)\n ? Object.hasOwn(rolePartTypes[role], value.type)\n : true);\n\nexport const parseStoredAttachment = (\n value: unknown,\n isPart: (value: unknown) => value is StoredMessagePart,\n): CompleteAttachment | null => {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n typeof value.type !== \"string\" ||\n typeof value.name !== \"string\" ||\n !isRecord(value.status) ||\n value.status.type !== \"complete\" ||\n !Array.isArray(value.content)\n ) {\n return null;\n }\n\n return {\n ...value,\n content: value.content.filter(isPart),\n } as CompleteAttachment;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stored-message-parts.js","names":["CompleteAttachment","MessageStatus","ThreadAssistantMessagePart","ThreadMessage","ThreadStep","ThreadUserMessagePart","isJSONValue","isRecord","MAX_STORED_MESSAGE_DEPTH","StoredPartGuard","part","Record","StoredMessagePart","type","parseStoredDate","value","Date","Number","isNaN","getTime","date","isStoredMessageRole","StoredStatusGuard","status","storedMessageStatusGuards","running","reason","complete","incomplete","undefined","error","storedMessageStatusGuardsByType","isStoredMessageStatus","Object","hasOwn","parseStoredThreadStep","messageId","_","step","usage","parseStoredThreadSteps","Array","isArray","map","filter","makeIsStoredMessagePart","overrides","Partial","isReadableUnknownType","storedPartGuards","text","reasoning","unstable_summary","image","file","data","mimeType","audio","format","name","source","id","sourceType","url","title","mediaType","spec","toolCallId","toolName","args","argsText","guards","isStoredMessagePart","isStoredAuiV0Part","startsWith","rolePartTypes","user","assistant","isStoredAuiV0RolePart","role","parseStoredAttachment","isPart","content"],"sources":["../../../src/runtime/utils/stored-message-parts.ts"],"sourcesContent":["import type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageStatus,\n ThreadAssistantMessagePart,\n ThreadMessage,\n ThreadStep,\n ThreadUserMessagePart,\n} from \"../../types/message\";\nimport { isJSONValue, isRecord } from \"../../utils/json/is-json\";\n\nexport const MAX_STORED_MESSAGE_DEPTH = 100;\n\ntype StoredPartGuard = (part: Record<string, unknown>) => boolean;\n\nexport type StoredMessagePart = Record<string, unknown> & { type: string };\n\nexport const parseStoredDate = (value: unknown): Date | null => {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nexport const isStoredMessageRole = (\n value: unknown,\n): value is ThreadMessage[\"role\"] =>\n value === \"system\" || value === \"user\" || value === \"assistant\";\n\ntype StoredStatusGuard = (status: Record<string, unknown>) => boolean;\n\nconst storedMessageStatusGuards = {\n running: () => true,\n \"requires-action\": (status) => typeof status.reason === \"string\",\n complete: (status) => typeof status.reason === \"string\",\n incomplete: (status) =>\n (status.reason === undefined || typeof status.reason === \"string\") &&\n (status.error === undefined || isJSONValue(status.error)),\n} satisfies Record<MessageStatus[\"type\"], StoredStatusGuard>;\n\nconst storedMessageStatusGuardsByType: Record<string, StoredStatusGuard> =\n storedMessageStatusGuards;\n\nexport const isStoredMessageStatus = (value: unknown): value is MessageStatus =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n Object.hasOwn(storedMessageStatusGuardsByType, value.type) &&\n storedMessageStatusGuardsByType[value.type]!(value) === true;\n\nconst parseStoredThreadStep = (value: unknown): ThreadStep | undefined => {\n if (!isRecord(value)) return undefined;\n if (value.messageId !== undefined && typeof value.messageId !== \"string\") {\n const { messageId: _, ...step } = value;\n return parseStoredThreadStep(step);\n }\n if (value.usage !== undefined && !isRecord(value.usage)) {\n const { usage: _, ...step } = value;\n return step as ThreadStep;\n }\n return value as ThreadStep;\n};\n\nexport const parseStoredThreadSteps = (value: unknown): ThreadStep[] =>\n Array.isArray(value)\n ? value\n .map(parseStoredThreadStep)\n .filter((step): step is ThreadStep => step !== undefined)\n : [];\n\n/**\n * Builds the readability predicate for a persistence boundary. A stored part is\n * readable when it passes the guard for its known type, or when its type is\n * unknown and the boundary can still read it.\n *\n * Unknown types are where the boundaries part: local storage hands its rows to\n * the runtime untouched, so a type written by a newer release still loads,\n * while the aui/v0 decoder converts a `data-` prefix and throws on anything\n * else unknown. Per-type differences ride in `overrides`.\n */\nconst makeIsStoredMessagePart = (\n overrides: Partial<\n Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >\n >,\n isReadableUnknownType: (type: string) => boolean,\n) => {\n const storedPartGuards = {\n text: (part) => typeof part.text === \"string\",\n reasoning: (part) =>\n typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\",\n image: (part) => typeof part.image === \"string\",\n file: (part) =>\n typeof part.data === \"string\" && typeof part.mimeType === \"string\",\n audio: (part) =>\n isRecord(part.audio) &&\n typeof part.audio.data === \"string\" &&\n typeof part.audio.format === \"string\",\n data: (part) => typeof part.name === \"string\",\n source: (part) =>\n typeof part.id === \"string\" &&\n (part.sourceType === \"url\"\n ? typeof part.url === \"string\"\n : part.sourceType === \"document\" &&\n typeof part.title === \"string\" &&\n typeof part.mediaType === \"string\"),\n \"generative-ui\": (part) => isRecord(part.spec),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n isRecord(part.args) &&\n typeof part.argsText === \"string\",\n } satisfies Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >;\n const guards: Record<string, StoredPartGuard> = {\n ...storedPartGuards,\n ...overrides,\n };\n\n return (value: unknown): value is StoredMessagePart =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (Object.hasOwn(guards, value.type)\n ? guards[value.type]!(value)\n : isReadableUnknownType(value.type));\n};\n\nexport const isStoredMessagePart = makeIsStoredMessagePart({}, () => true);\n\n/**\n * The aui/v0 decoder dereferences each present field rather than reading only\n * the one it needs, so this boundary checks every field it will touch, while\n * local storage stays no stricter than what the runtime itself writes.\n */\nconst isStoredAuiV0Part = makeIsStoredMessagePart(\n {\n reasoning: (part) =>\n (part.text === undefined || typeof part.text === \"string\") &&\n (part.unstable_summary === undefined ||\n typeof part.unstable_summary === \"string\") &&\n (typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\"),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n (part.args === undefined || isRecord(part.args)) &&\n (part.argsText === undefined || typeof part.argsText === \"string\") &&\n (part.args !== undefined || part.argsText !== undefined),\n },\n (type) => type.startsWith(\"data-\"),\n);\n\nconst rolePartTypes = {\n user: {\n text: true,\n image: true,\n file: true,\n data: true,\n audio: true,\n } satisfies Record<ThreadUserMessagePart[\"type\"], true>,\n assistant: {\n text: true,\n reasoning: true,\n \"tool-call\": true,\n source: true,\n file: true,\n image: true,\n data: true,\n \"generative-ui\": true,\n } satisfies Record<ThreadAssistantMessagePart[\"type\"], true>,\n};\n\n/**\n * `fromThreadMessageLike` converts each part through its role's branch and\n * throws on a part that branch does not carry, which would cost the whole\n * stored row. The aui/v0 boundary decodes through that converter, so it filters\n * by role as well as by shape. A part type unknown to this table is left to the\n * boundary predicate, which keeps the `data-` prefixes the converter handles.\n */\nexport const isStoredAuiV0RolePart = (\n role: ThreadMessage[\"role\"],\n value: unknown,\n): value is StoredMessagePart =>\n isStoredAuiV0Part(value) &&\n (role === \"system\"\n ? value.type === \"text\"\n : Object.hasOwn(rolePartTypes.assistant, value.type) ||\n Object.hasOwn(rolePartTypes.user, value.type)\n ? Object.hasOwn(rolePartTypes[role], value.type)\n : true);\n\nexport const parseStoredAttachment = (\n value: unknown,\n isPart: (value: unknown) => value is StoredMessagePart,\n): CompleteAttachment | null => {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n typeof value.type !== \"string\" ||\n typeof value.name !== \"string\" ||\n !isRecord(value.status) ||\n value.status.type !== \"complete\" ||\n !Array.isArray(value.content)\n ) {\n return null;\n }\n\n return {\n ...value,\n content: value.content.filter(isPart),\n } as CompleteAttachment;\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { MessageTiming } from "../../types/message.js";
|
|
2
|
-
//#region src/runtime/utils/streaming-timing.d.ts
|
|
1
|
+
import type { MessageTiming } from "../../types/message.js";
|
|
3
2
|
/**
|
|
4
3
|
* Shape-specific accessors that adapt {@link stepStreamingTiming} /
|
|
5
4
|
* {@link useStreamingTiming} to a runtime's message list. Each adapter
|
|
@@ -7,19 +6,19 @@ import { MessageTiming } from "../../types/message.js";
|
|
|
7
6
|
* machine itself lives once in core.
|
|
8
7
|
*/
|
|
9
8
|
export type StreamingTimingAccessors<TMessage> = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
/** Resolve the id of the last assistant message, or `undefined` if none. */
|
|
10
|
+
readonly getAssistantMessageId: (messages: readonly TMessage[]) => string | undefined;
|
|
11
|
+
/** Total text length (incl. reasoning/thinking) of the assistant message. */
|
|
12
|
+
readonly getTextLength: (messages: readonly TMessage[], messageId: string) => number;
|
|
13
|
+
/** Number of tool calls recorded on the assistant message. */
|
|
14
|
+
readonly getToolCallCount: (messages: readonly TMessage[], messageId: string) => number;
|
|
16
15
|
};
|
|
17
16
|
export type StreamingTimingOptions = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Estimate token count from a text length. Defaults to `Math.ceil(n / 4)`.
|
|
19
|
+
* Adapters with real usage data can override this.
|
|
20
|
+
*/
|
|
21
|
+
readonly estimateTokens?: (textLength: number) => number;
|
|
23
22
|
};
|
|
24
23
|
/**
|
|
25
24
|
* Mutable tracking state for a single in-flight assistant message. Kept
|
|
@@ -32,11 +31,11 @@ export type StreamingTimingOptions = {
|
|
|
32
31
|
* estimate (derived from final length) count the same content.
|
|
33
32
|
*/
|
|
34
33
|
export type StreamingTimingState = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
readonly messageId: string;
|
|
35
|
+
readonly startTime: number;
|
|
36
|
+
readonly firstTokenTime?: number;
|
|
37
|
+
readonly lastContentLength: number;
|
|
38
|
+
readonly totalChunks: number;
|
|
40
39
|
};
|
|
41
40
|
/**
|
|
42
41
|
* Advance the client-side streaming timing tracker by one update.
|
|
@@ -53,8 +52,7 @@ export type StreamingTimingState = {
|
|
|
53
52
|
* reuse a stale growth delta and miss that last chunk).
|
|
54
53
|
*/
|
|
55
54
|
export declare const stepStreamingTiming: <TMessage>(state: StreamingTimingState | null, messages: readonly TMessage[], isRunning: boolean, accessors: StreamingTimingAccessors<TMessage>, options: StreamingTimingOptions | undefined, now?: () => number) => {
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
readonly state: StreamingTimingState | null;
|
|
56
|
+
readonly timings: Record<string, MessageTiming>;
|
|
58
57
|
};
|
|
59
|
-
//#endregion
|
|
60
58
|
//# sourceMappingURL=streaming-timing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-timing.d.ts","
|
|
1
|
+
{"version":3,"file":"streaming-timing.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/streaming-timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA4B;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,CAAC,QAAQ,IAAI;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,QAAQ,EAAE,SAAS,QAAQ,EAAE,KAC1B,MAAM,GAAG,SAAS,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,CACtB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,CACzB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1D,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAwBF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,EAC1C,OAAO,oBAAoB,GAAG,IAAI,EAClC,UAAU,SAAS,QAAQ,EAAE,EAC7B,WAAW,OAAO,EAClB,WAAW,wBAAwB,CAAC,QAAQ,CAAC,EAC7C,SAAS,sBAAsB,GAAG,SAAS,EAC3C,MAAK,MAAM,MAAiB,KAC3B;IACD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAgEjD,CAAC"}
|
|
@@ -1,57 +1,61 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CompleteAttachment } from "../../types/attachment.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import type { ThreadStep, MessageStatus, ThreadMessage, ThreadAssistantMessagePart, ThreadUserMessagePart } from "../../types/message.js";
|
|
2
|
+
import type { CompleteAttachment } from "../../types/attachment.js";
|
|
3
|
+
import type { MessageModality, MessageTiming, PartProviderMetadata, ToolCallTiming, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolModelContentPart, Unstable_ToolInteractionLog } from "../../types/message.js";
|
|
4
|
+
import type { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
|
|
5
5
|
type DataPrefixedPart = {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
readonly type: `data-${string}`;
|
|
7
|
+
readonly data: any;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
readonly role: "assistant" | "user" | "system";
|
|
11
|
-
readonly content: string | readonly (TextMessagePart | ReasoningMessagePart | SourceMessagePart | ImageMessagePart | FileMessagePart | DataMessagePart | GenerativeUIMessagePart | Unstable_AudioMessagePart | DataPrefixedPart | {
|
|
9
|
+
type ThreadMessageLikePart = ThreadUserMessagePart | ThreadAssistantMessagePart | DataPrefixedPart | {
|
|
12
10
|
readonly type: "tool-call";
|
|
13
11
|
readonly toolCallId?: string;
|
|
14
12
|
readonly toolName: string;
|
|
15
13
|
readonly args?: ReadonlyJSONObject;
|
|
16
14
|
readonly argsText?: string;
|
|
17
15
|
readonly artifact?: any;
|
|
16
|
+
readonly modelContent?: readonly ToolModelContentPart[] | undefined;
|
|
18
17
|
readonly result?: any | undefined;
|
|
19
18
|
readonly isError?: boolean | undefined;
|
|
19
|
+
readonly isPreliminary?: boolean | undefined;
|
|
20
20
|
readonly parentId?: string | undefined;
|
|
21
21
|
readonly messages?: readonly ThreadMessage[] | undefined;
|
|
22
22
|
readonly interrupt?: {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
type: "human";
|
|
24
|
+
payload: unknown;
|
|
25
25
|
};
|
|
26
26
|
readonly timing?: ToolCallTiming;
|
|
27
27
|
readonly mcp?: ToolCallMessagePartMcpMetadata;
|
|
28
28
|
readonly providerMetadata?: PartProviderMetadata;
|
|
29
29
|
readonly approval?: NonNullable<ToolCallMessagePart["approval"]>;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
readonly
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
readonly
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
readonly
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
30
|
+
readonly unstable_interactions?: Unstable_ToolInteractionLog;
|
|
31
|
+
};
|
|
32
|
+
export type ThreadMessageLike = {
|
|
33
|
+
readonly role: "assistant" | "user" | "system";
|
|
34
|
+
readonly content: string | readonly ThreadMessageLikePart[];
|
|
35
|
+
readonly id?: string | undefined;
|
|
36
|
+
readonly createdAt?: Date | undefined;
|
|
37
|
+
readonly status?: MessageStatus | undefined;
|
|
38
|
+
readonly attachments?: readonly (Omit<CompleteAttachment, "content"> & {
|
|
39
|
+
readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];
|
|
40
|
+
})[] | undefined;
|
|
41
|
+
readonly metadata?: {
|
|
42
|
+
readonly unstable_state?: ReadonlyJSONValue | undefined;
|
|
43
|
+
readonly unstable_annotations?: readonly ReadonlyJSONValue[] | undefined;
|
|
44
|
+
readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;
|
|
45
|
+
readonly steps?: readonly ThreadStep[] | undefined;
|
|
46
|
+
readonly timing?: MessageTiming | undefined;
|
|
47
|
+
readonly submittedFeedback?: {
|
|
48
|
+
readonly type: "positive" | "negative";
|
|
49
|
+
readonly comment?: string;
|
|
50
|
+
} | undefined;
|
|
51
|
+
readonly isOptimistic?: boolean | undefined;
|
|
52
|
+
readonly modality?: MessageModality | undefined;
|
|
53
|
+
readonly custom?: Record<string, unknown> | undefined;
|
|
46
54
|
} | undefined;
|
|
47
|
-
readonly isOptimistic?: boolean | undefined;
|
|
48
|
-
readonly modality?: MessageModality | undefined;
|
|
49
|
-
readonly custom?: Record<string, unknown> | undefined;
|
|
50
|
-
} | undefined;
|
|
51
55
|
};
|
|
52
56
|
/**
|
|
53
57
|
* @deprecated This API is experimental and may change without notice.
|
|
54
58
|
*/
|
|
55
59
|
export declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
|
|
56
|
-
|
|
60
|
+
export {};
|
|
57
61
|
//# sourceMappingURL=thread-message-like.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-message-like.d.ts","
|
|
1
|
+
{"version":3,"file":"thread-message-like.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/thread-message-like.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EAEb,aAAa,EACb,0BAA0B,EAE1B,qBAAqB,EAItB,+BAA4B;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,kCAA+B;AACjE,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACd,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,2BAA2B,EAC5B,+BAA4B;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAGhC,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,qBAAqB,GACtB,qBAAqB,GACrB,0BAA0B,GAC1B,gBAAgB,GAChB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,2BAA2B,CAAC;CAC9D,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,qBAAqB,EAAE,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;QAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,EAAE,CAAC;KACzE,CAAC,EAAE,GACJ,SAAS,CAAC;IACd,QAAQ,CAAC,QAAQ,CAAC,EACd;QACE,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;QACxD,QAAQ,CAAC,oBAAoB,CAAC,EAC1B,SAAS,iBAAiB,EAAE,GAC5B,SAAS,CAAC;QACd,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;QAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;QACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,iBAAiB,CAAC,EACvB;YACE,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;SAC3B,GACD,SAAS,CAAC;QACd,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;QAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACvD,GACD,SAAS,CAAC;CACf,CAAC;AAUF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,iBAAiB,EACvB,YAAY,MAAM,EAClB,gBAAgB,aAAa,KAC5B,aAoNF,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { generateId } from "../../utils/id.js";
|
|
2
2
|
import { parseDataUrl } from "../../utils/data-url.js";
|
|
3
|
+
import { readToolInteractionLog } from "./tool-interactions.js";
|
|
3
4
|
import { parsePartialJsonObject } from "assistant-stream/utils";
|
|
4
5
|
//#region src/runtime/utils/thread-message-like.ts
|
|
5
6
|
const convertDataPrefixedPart = (type, data) => {
|
|
@@ -58,12 +59,14 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
|
58
59
|
case "data": return part;
|
|
59
60
|
case "generative-ui": return part;
|
|
60
61
|
case "tool-call": {
|
|
61
|
-
const { parentId, messages, ...basePart } = part;
|
|
62
|
+
const { parentId, messages, unstable_interactions, ...basePart } = part;
|
|
63
|
+
const interactions = readToolInteractionLog(unstable_interactions);
|
|
62
64
|
const commonProps = {
|
|
63
65
|
...basePart,
|
|
64
66
|
toolCallId: part.toolCallId || `tool-${generateId()}`,
|
|
65
67
|
...parentId !== void 0 && { parentId },
|
|
66
|
-
...messages !== void 0 && { messages }
|
|
68
|
+
...messages !== void 0 && { messages },
|
|
69
|
+
...interactions !== void 0 && { unstable_interactions: interactions }
|
|
67
70
|
};
|
|
68
71
|
if (part.args) return {
|
|
69
72
|
...commonProps,
|
|
@@ -76,10 +79,12 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
|
76
79
|
argsText: part.argsText ?? ""
|
|
77
80
|
};
|
|
78
81
|
}
|
|
82
|
+
case "audio": throw new Error(`Unsupported assistant message part type: ${type}`);
|
|
79
83
|
default: {
|
|
80
|
-
const
|
|
84
|
+
const dataType = type;
|
|
85
|
+
const converted = convertDataPrefixedPart(dataType, part.data);
|
|
81
86
|
if (converted) return converted;
|
|
82
|
-
throw new Error(`Unsupported assistant message part type: ${
|
|
87
|
+
throw new Error(`Unsupported assistant message part type: ${dataType}`);
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
90
|
}).filter((c) => !!c),
|
|
@@ -107,10 +112,15 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
|
107
112
|
case "audio":
|
|
108
113
|
case "file":
|
|
109
114
|
case "data": return part;
|
|
115
|
+
case "reasoning":
|
|
116
|
+
case "source":
|
|
117
|
+
case "generative-ui":
|
|
118
|
+
case "tool-call": throw new Error(`Unsupported user message part type: ${type}`);
|
|
110
119
|
default: {
|
|
111
|
-
const
|
|
120
|
+
const dataType = type;
|
|
121
|
+
const converted = convertDataPrefixedPart(dataType, part.data);
|
|
112
122
|
if (converted) return converted;
|
|
113
|
-
throw new Error(`Unsupported user message part type: ${
|
|
123
|
+
throw new Error(`Unsupported user message part type: ${dataType}`);
|
|
114
124
|
}
|
|
115
125
|
}
|
|
116
126
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ReasoningMessagePart","SourceMessagePart","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","Unstable_AudioMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ReadonlyJSONObject","ReadonlyJSONValue","DataPrefixedPart","type","data","ThreadMessageLike","role","content","toolCallId","toolName","args","argsText","artifact","result","isError","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","comment","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","commonProps","JSON","stringify","converted","filter","c","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ReasoningMessagePart,\n SourceMessagePart,\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n Unstable_AudioMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content:\n | string\n | readonly (\n | TextMessagePart\n | ReasoningMessagePart\n | SourceMessagePart\n | ImageMessagePart\n | FileMessagePart\n | DataMessagePart\n | GenerativeUIMessagePart\n | Unstable_AudioMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n }\n )[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue | undefined;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const { parentId, messages, ...basePart } = part;\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${type}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(`Unsupported user message part type: ${type}`);\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","DataMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ToolModelContentPart","Unstable_ToolInteractionLog","ReadonlyJSONObject","ReadonlyJSONValue","readToolInteractionLog","DataPrefixedPart","type","data","ThreadMessageLikePart","toolCallId","toolName","args","argsText","artifact","modelContent","result","isError","isPreliminary","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","unstable_interactions","ThreadMessageLike","role","content","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","comment","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","interactions","commonProps","JSON","stringify","userOnlyType","Exclude","dataType","converted","filter","c","assistantOnlyType","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n DataMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n ToolModelContentPart,\n Unstable_ToolInteractionLog,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport { readToolInteractionLog } from \"./tool-interactions\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\ntype ThreadMessageLikePart =\n | ThreadUserMessagePart\n | ThreadAssistantMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly modelContent?: readonly ToolModelContentPart[] | undefined;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly isPreliminary?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n readonly unstable_interactions?: Unstable_ToolInteractionLog;\n };\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content: string | readonly ThreadMessageLikePart[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue | undefined;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const {\n parentId,\n messages,\n unstable_interactions,\n ...basePart\n } = part;\n const interactions = readToolInteractionLog(\n unstable_interactions,\n );\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n ...(interactions !== undefined && {\n unstable_interactions: interactions,\n }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n case \"audio\": {\n const userOnlyType: Exclude<\n typeof type,\n ThreadAssistantMessagePart[\"type\"]\n > = type;\n throw new Error(\n `Unsupported assistant message part type: ${userOnlyType}`,\n );\n }\n\n default: {\n const dataType: `data-${string}` = type;\n const converted = convertDataPrefixedPart(dataType, part.data);\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${dataType}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n case \"reasoning\":\n case \"source\":\n case \"generative-ui\":\n case \"tool-call\": {\n const assistantOnlyType: Exclude<\n typeof type,\n ThreadUserMessagePart[\"type\"]\n > = type;\n throw new Error(\n `Unsupported user message part type: ${assistantOnlyType}`,\n );\n }\n\n default: {\n const dataType: `data-${string}` = type;\n const converted = convertDataPrefixedPart(dataType, part.data);\n if (converted) return converted;\n throw new Error(\n `Unsupported user message part type: ${dataType}`,\n );\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
|
|
2
|
-
|
|
3
|
-
export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => number;
|
|
4
|
-
export declare const isThreadRuntimeGenerationCurrent: (runtime: ThreadRuntimeCore, generation: number) => boolean;
|
|
1
|
+
import type { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
|
|
2
|
+
export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => AbortSignal;
|
|
5
3
|
export declare const invalidateThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
6
|
-
|
|
4
|
+
export declare const supersedeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
5
|
+
export declare const disposeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
7
6
|
//# sourceMappingURL=thread-runtime-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime-lifecycle.d.ts","
|
|
1
|
+
{"version":3,"file":"thread-runtime-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,6CAA0C;AAO3E,eAAO,MAAM,8BAA8B,GACzC,SAAS,iBAAiB,KACzB,WAOF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,iBAAiB,SAKjE,CAAC;AAgBF,eAAO,MAAM,sBAAsB,GAAI,SAAS,iBAAiB,SAGhE,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAI,SAAS,iBAAiB,SAK9D,CAAC"}
|
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
//#region src/runtime/utils/thread-runtime-lifecycle.ts
|
|
2
2
|
const generations = /* @__PURE__ */ new WeakMap();
|
|
3
|
-
const captureThreadRuntimeGeneration = (runtime) =>
|
|
4
|
-
|
|
3
|
+
const captureThreadRuntimeGeneration = (runtime) => {
|
|
4
|
+
let generation = generations.get(runtime);
|
|
5
|
+
if (!generation) {
|
|
6
|
+
generation = new AbortController();
|
|
7
|
+
generations.set(runtime, generation);
|
|
8
|
+
}
|
|
9
|
+
return generation.signal;
|
|
10
|
+
};
|
|
5
11
|
const invalidateThreadRuntime = (runtime) => {
|
|
6
|
-
generations.
|
|
12
|
+
const generation = generations.get(runtime);
|
|
13
|
+
if (generation?.signal.aborted) return;
|
|
14
|
+
generations.delete(runtime);
|
|
15
|
+
generation?.abort();
|
|
16
|
+
};
|
|
17
|
+
const endVoiceSession = (runtime) => {
|
|
18
|
+
if (!runtime.voice) return;
|
|
19
|
+
try {
|
|
20
|
+
runtime.disconnectVoice();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error("[assistant-ui] Voice cleanup threw while discarding a thread runtime", error);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const supersedeThreadRuntime = (runtime) => {
|
|
26
|
+
endVoiceSession(runtime);
|
|
27
|
+
invalidateThreadRuntime(runtime);
|
|
28
|
+
};
|
|
29
|
+
const disposeThreadRuntime = (runtime) => {
|
|
30
|
+
const generation = generations.get(runtime) ?? new AbortController();
|
|
31
|
+
generations.set(runtime, generation);
|
|
32
|
+
generation.abort();
|
|
33
|
+
endVoiceSession(runtime);
|
|
7
34
|
};
|
|
8
35
|
//#endregion
|
|
9
|
-
export { captureThreadRuntimeGeneration, invalidateThreadRuntime,
|
|
36
|
+
export { captureThreadRuntimeGeneration, disposeThreadRuntime, invalidateThreadRuntime, supersedeThreadRuntime };
|
|
10
37
|
|
|
11
38
|
//# sourceMappingURL=thread-runtime-lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime-lifecycle.js","names":["ThreadRuntimeCore","generations","WeakMap","captureThreadRuntimeGeneration","runtime","get","
|
|
1
|
+
{"version":3,"file":"thread-runtime-lifecycle.js","names":["ThreadRuntimeCore","generations","WeakMap","AbortController","captureThreadRuntimeGeneration","runtime","AbortSignal","generation","get","set","signal","invalidateThreadRuntime","aborted","delete","abort","endVoiceSession","voice","disconnectVoice","error","console","supersedeThreadRuntime","disposeThreadRuntime"],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"sourcesContent":["import type { ThreadRuntimeCore } from \"../interfaces/thread-runtime-core\";\n\n// Invalidation must stay re-entrant: StrictMode's simulated unmount runs the\n// effect cleanup while the runtime object survives into the next mount, so a\n// permanent disposed mark would swallow every later append.\nconst generations = new WeakMap<ThreadRuntimeCore, AbortController>();\n\nexport const captureThreadRuntimeGeneration = (\n runtime: ThreadRuntimeCore,\n): AbortSignal => {\n let generation = generations.get(runtime);\n if (!generation) {\n generation = new AbortController();\n generations.set(runtime, generation);\n }\n return generation.signal;\n};\n\nexport const invalidateThreadRuntime = (runtime: ThreadRuntimeCore) => {\n const generation = generations.get(runtime);\n if (generation?.signal.aborted) return;\n generations.delete(runtime);\n generation?.abort();\n};\n\nconst endVoiceSession = (runtime: ThreadRuntimeCore) => {\n if (!runtime.voice) return;\n try {\n runtime.disconnectVoice();\n } catch (error) {\n console.error(\n \"[assistant-ui] Voice cleanup threw while discarding a thread runtime\",\n error,\n );\n }\n};\n\n// A successor keeps the same thread: the call ends as if hung up, in-flight work\n// (a commit waiting on a load included) is fenced, and later sends still land.\nexport const supersedeThreadRuntime = (runtime: ThreadRuntimeCore) => {\n endVoiceSession(runtime);\n invalidateThreadRuntime(runtime);\n};\n\n// Disposal is that permanent mark, so only an owner that drops the runtime for\n// good may call it; tap runs every effect cleanup on a soft unmount as well.\nexport const disposeThreadRuntime = (runtime: ThreadRuntimeCore) => {\n const generation = generations.get(runtime) ?? new AbortController();\n generations.set(runtime, generation);\n generation.abort();\n endVoiceSession(runtime);\n};\n"],"mappings":";AAKA,MAAMC,8BAAc,IAAIC,QAA4C;AAEpE,MAAaE,kCACXC,YACgB;CAChB,IAAIE,aAAaN,YAAYO,IAAIH,OAAO;CACxC,IAAI,CAACE,YAAY;EACfA,aAAa,IAAIJ,gBAAgB;EACjCF,YAAYQ,IAAIJ,SAASE,UAAU;CACrC;CACA,OAAOA,WAAWG;AACpB;AAEA,MAAaC,2BAA2BN,YAA+B;CACrE,MAAME,aAAaN,YAAYO,IAAIH,OAAO;CAC1C,IAAIE,YAAYG,OAAOE,SAAS;CAChCX,YAAYY,OAAOR,OAAO;CAC1BE,YAAYO,MAAM;AACpB;AAEA,MAAMC,mBAAmBV,YAA+B;CACtD,IAAI,CAACA,QAAQW,OAAO;CACpB,IAAI;EACFX,QAAQY,gBAAgB;CAC1B,SAASC,OAAO;EACdC,QAAQD,MACN,wEACAA,KACF;CACF;AACF;AAIA,MAAaE,0BAA0Bf,YAA+B;CACpEU,gBAAgBV,OAAO;CACvBM,wBAAwBN,OAAO;AACjC;AAIA,MAAagB,wBAAwBhB,YAA+B;CAClE,MAAME,aAAaN,YAAYO,IAAIH,OAAO,KAAK,IAAIF,gBAAgB;CACnEF,YAAYQ,IAAIJ,SAASE,UAAU;CACnCA,WAAWO,MAAM;CACjBC,gBAAgBV,OAAO;AACzB"}
|