@assistant-ui/core 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/attachment.d.ts +50 -43
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +52 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +2 -5
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +7 -8
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +63 -65
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +19 -22
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +60 -58
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +8 -11
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +50 -45
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -4
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +20 -23
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +28 -30
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +24 -27
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +9 -12
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +15 -18
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +15 -17
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +12 -14
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +40 -43
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +9 -12
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +4 -8
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +2 -5
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +9 -12
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +3 -6
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -37
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +10 -12
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -11
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +42 -46
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +13 -6
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -4
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -6
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +26 -29
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +5 -7
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -4
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +44 -32
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +3 -6
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +9 -13
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +3 -6
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +40 -40
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -9
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +208 -194
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +16 -19
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +120 -8
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +17 -21
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +60 -60
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +21 -24
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +6 -8
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +35 -37
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -6
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +28 -31
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +51 -49
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +35 -35
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +215 -201
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +31 -30
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +25 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -82
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +4 -3
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +54 -57
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +306 -308
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +174 -62
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +32 -33
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +10 -2
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +7 -10
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +11 -13
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +6 -5
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +6 -9
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +24 -27
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +52 -54
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
- package/dist/runtime/utils/stored-message-parts.js +103 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +23 -26
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +38 -34
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +2 -5
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +56 -58
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1270 -741
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +2 -5
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +3 -6
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +2 -5
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +4 -6
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +8 -11
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +12 -12
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -4
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +7 -10
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -4
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +14 -16
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +10 -5
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +2 -5
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +19 -22
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +33 -35
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +147 -135
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +119 -112
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +10 -13
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +53 -50
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +21 -23
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +14 -17
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +18 -21
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +27 -30
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +68 -71
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +197 -200
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +49 -52
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +73 -69
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +35 -37
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +7 -8
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +13 -16
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -17
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +358 -318
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +3 -6
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +10 -13
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -4
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -5
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +9 -13
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +16 -19
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +19 -21
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -6
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -4
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -4
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -4
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +5 -8
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +6 -8
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -4
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +1 -4
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -5
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -5
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -6
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +15 -13
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +77 -20
- package/src/adapters/feedback.ts +1 -0
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +106 -20
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
- package/src/react/client/Interactables.test.ts +865 -8
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +221 -4
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +275 -6
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +44 -1
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +25 -7
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
- package/src/runtime/base/base-thread-runtime-core.ts +236 -46
- package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +91 -0
- package/src/runtime/utils/external-message-conversion.ts +9 -6
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +216 -0
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +79 -48
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +25 -0
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
- package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +669 -144
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +119 -0
- package/src/store/primitive-predicates.ts +19 -4
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +12 -1
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +205 -3
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +412 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +212 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +120 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
- package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
- package/src/tests/external-thread-attachments.test.tsx +763 -26
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/message-queue.test.ts +45 -10
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/tests/thread-switch-events.test.tsx +11 -7
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
- package/src/types/message.test.ts +19 -0
- package/src/types/message.ts +65 -10
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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,25 +1,24 @@
|
|
|
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
|
|
6
5
|
* provides three pure functions over its own message type; the timing state
|
|
7
6
|
* machine itself lives once in core.
|
|
8
7
|
*/
|
|
9
|
-
type StreamingTimingAccessors<TMessage> = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
export type StreamingTimingAccessors<TMessage> = {
|
|
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
|
-
type StreamingTimingOptions = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
export type StreamingTimingOptions = {
|
|
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
|
|
@@ -31,12 +30,12 @@ type StreamingTimingOptions = {
|
|
|
31
30
|
* transition is reconciled at finalize, so `totalChunks` and the token
|
|
32
31
|
* estimate (derived from final length) count the same content.
|
|
33
32
|
*/
|
|
34
|
-
type StreamingTimingState = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
export type StreamingTimingState = {
|
|
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.
|
|
@@ -52,10 +51,8 @@ type StreamingTimingState = {
|
|
|
52
51
|
* `totalChunks` count the same content (the per-adapter hooks this replaces
|
|
53
52
|
* reuse a stale growth delta and miss that last chunk).
|
|
54
53
|
*/
|
|
55
|
-
declare const stepStreamingTiming: <TMessage>(state: StreamingTimingState | null, messages: readonly TMessage[], isRunning: boolean, accessors: StreamingTimingAccessors<TMessage>, options: StreamingTimingOptions | undefined, now?: () => number) => {
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
export declare const stepStreamingTiming: <TMessage>(state: StreamingTimingState | null, messages: readonly TMessage[], isRunning: boolean, accessors: StreamingTimingAccessors<TMessage>, options: StreamingTimingOptions | undefined, now?: () => number) => {
|
|
55
|
+
readonly state: StreamingTimingState | null;
|
|
56
|
+
readonly timings: Record<string, MessageTiming>;
|
|
58
57
|
};
|
|
59
|
-
//#endregion
|
|
60
|
-
export { StreamingTimingAccessors, StreamingTimingOptions, StreamingTimingState, stepStreamingTiming };
|
|
61
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
|
-
type
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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;
|
|
54
|
+
} | undefined;
|
|
50
55
|
};
|
|
51
56
|
/**
|
|
52
57
|
* @deprecated This API is experimental and may change without notice.
|
|
53
58
|
*/
|
|
54
|
-
declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
|
|
55
|
-
|
|
56
|
-
export { ThreadMessageLike, fromThreadMessageLike };
|
|
59
|
+
export declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
|
|
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":"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"}
|
|
@@ -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","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;\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?: { readonly type: \"positive\" | \"negative\" };\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,8 +1,6 @@
|
|
|
1
|
-
import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
|
|
2
|
-
|
|
3
|
-
declare const
|
|
4
|
-
declare const
|
|
5
|
-
declare const
|
|
6
|
-
//#endregion
|
|
7
|
-
export { captureThreadRuntimeGeneration, invalidateThreadRuntime, isThreadRuntimeGenerationCurrent };
|
|
1
|
+
import type { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
|
|
2
|
+
export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => AbortSignal;
|
|
3
|
+
export declare const invalidateThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
4
|
+
export declare const supersedeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
5
|
+
export declare const disposeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
8
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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ThreadAssistantMessagePart, ThreadMessage, ToolCallMessagePart } from "../../types/message.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
readonly messageId: string;
|
|
1
|
+
import type { ThreadAssistantMessagePart, ThreadMessage, ToolCallMessagePart } from "../../types/message.js";
|
|
2
|
+
export type ToolCallTreeEntry = {
|
|
3
|
+
readonly part: ToolCallMessagePart;
|
|
4
|
+
/** Id of the message whose content directly holds `part`. */
|
|
5
|
+
readonly messageId: string;
|
|
7
6
|
};
|
|
8
7
|
/**
|
|
9
8
|
* Walk every tool-call part reachable from `messages`. A tool call projects a
|
|
@@ -18,22 +17,20 @@ type ToolCallTreeEntry = {
|
|
|
18
17
|
* {@link mapToolCallPartsDeep} rewrites under, so a part this reports is always
|
|
19
18
|
* a part that can be written back.
|
|
20
19
|
*/
|
|
21
|
-
declare function walkToolCallTree(messages: readonly ThreadMessage[]): Generator<ToolCallTreeEntry>;
|
|
20
|
+
export declare function walkToolCallTree(messages: readonly ThreadMessage[]): Generator<ToolCallTreeEntry>;
|
|
22
21
|
/**
|
|
23
22
|
* Content-level form of {@link walkToolCallTree}, for a caller that already
|
|
24
23
|
* holds one assistant message's content and does not need the owning id.
|
|
25
24
|
*/
|
|
26
|
-
declare function iterateToolCallParts(content: readonly ThreadAssistantMessagePart[]): Generator<ToolCallMessagePart>;
|
|
25
|
+
export declare function iterateToolCallParts(content: readonly ThreadAssistantMessagePart[]): Generator<ToolCallMessagePart>;
|
|
27
26
|
/**
|
|
28
27
|
* Rebuild `content` with `fn` applied to every tool-call part in the tree.
|
|
29
28
|
* Arrays and nested messages are reused wherever `fn` returned the part it was
|
|
30
29
|
* given, so an unchanged subtree keeps its identity and `changed` reports
|
|
31
30
|
* whether anything moved.
|
|
32
31
|
*/
|
|
33
|
-
declare function mapToolCallPartsDeep(content: readonly ThreadAssistantMessagePart[], fn: (part: ToolCallMessagePart) => ToolCallMessagePart): {
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
export declare function mapToolCallPartsDeep(content: readonly ThreadAssistantMessagePart[], fn: (part: ToolCallMessagePart) => ToolCallMessagePart): {
|
|
33
|
+
content: readonly ThreadAssistantMessagePart[];
|
|
34
|
+
changed: boolean;
|
|
36
35
|
};
|
|
37
|
-
//#endregion
|
|
38
|
-
export { ToolCallTreeEntry, iterateToolCallParts, mapToolCallPartsDeep, walkToolCallTree };
|
|
39
36
|
//# sourceMappingURL=tool-call-tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-tree.d.ts","
|
|
1
|
+
{"version":3,"file":"tool-call-tree.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/tool-call-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACpB,+BAA4B;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAiB,gBAAgB,CAC/B,QAAQ,EAAE,SAAS,aAAa,EAAE,GACjC,SAAS,CAAC,iBAAiB,CAAC,CAW9B;AAED;;;GAGG;AACH,wBAAiB,oBAAoB,CACnC,OAAO,EAAE,SAAS,0BAA0B,EAAE,GAC7C,SAAS,CAAC,mBAAmB,CAAC,CAUhC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,EAAE,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,mBAAmB,GACrD;IAAE,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA4BtE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Unstable_ToolInteraction, Unstable_ToolInteractionInput, Unstable_ToolInteractionLog } from "../../types/message.js";
|
|
2
|
+
export declare const TOOL_INTERACTION_LIMITS: {
|
|
3
|
+
readonly entries: 32;
|
|
4
|
+
readonly payloadLength: 16384;
|
|
5
|
+
readonly logLength: 65536;
|
|
6
|
+
};
|
|
7
|
+
export declare function createToolInteraction(input: Unstable_ToolInteractionInput, occurredAt?: number): Unstable_ToolInteraction;
|
|
8
|
+
export declare function appendToolInteraction(log: Unstable_ToolInteractionLog | undefined, interaction: Unstable_ToolInteraction): Unstable_ToolInteractionLog;
|
|
9
|
+
export declare function readToolInteractionLog(value: unknown): Unstable_ToolInteractionLog | undefined;
|
|
10
|
+
//# sourceMappingURL=tool-interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-interactions.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/tool-interactions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC5B,+BAA4B;AAE7B,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AA8CX,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,6BAA6B,EACpC,UAAU,GAAE,MAAmB,GAC9B,wBAAwB,CAkB1B;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,2BAA2B,GAAG,SAAS,EAC5C,WAAW,EAAE,wBAAwB,GACpC,2BAA2B,CAY7B;AAoBD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,2BAA2B,GAAG,SAAS,CA0BzC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region src/runtime/utils/tool-interactions.ts
|
|
2
|
+
const TOOL_INTERACTION_LIMITS = {
|
|
3
|
+
entries: 32,
|
|
4
|
+
payloadLength: 16384,
|
|
5
|
+
logLength: 65536
|
|
6
|
+
};
|
|
7
|
+
const MAX_DEPTH = 64;
|
|
8
|
+
const isPlainObject = (value) => {
|
|
9
|
+
const prototype = Object.getPrototypeOf(value);
|
|
10
|
+
return prototype === Object.prototype || prototype === null;
|
|
11
|
+
};
|
|
12
|
+
const isPlainJSON = (value, ancestors, depth) => {
|
|
13
|
+
if (value === null) return true;
|
|
14
|
+
switch (typeof value) {
|
|
15
|
+
case "string":
|
|
16
|
+
case "boolean": return true;
|
|
17
|
+
case "number": return Number.isFinite(value);
|
|
18
|
+
case "object": break;
|
|
19
|
+
default: return false;
|
|
20
|
+
}
|
|
21
|
+
if (depth > MAX_DEPTH || ancestors.has(value)) return false;
|
|
22
|
+
ancestors.add(value);
|
|
23
|
+
const valid = Array.isArray(value) ? value.every((item) => isPlainJSON(item, ancestors, depth + 1)) : isPlainObject(value) && Object.values(value).every((item) => isPlainJSON(item, ancestors, depth + 1));
|
|
24
|
+
ancestors.delete(value);
|
|
25
|
+
return valid;
|
|
26
|
+
};
|
|
27
|
+
const isJSONObjectValue = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
28
|
+
const isInteractionType = (value) => value === "action" || value === "human-response";
|
|
29
|
+
function createToolInteraction(input, occurredAt = Date.now()) {
|
|
30
|
+
const { type, payload } = input;
|
|
31
|
+
if (!isInteractionType(type)) throw new Error(`Unknown tool interaction type: ${String(type)}`);
|
|
32
|
+
if (!isPlainJSON(payload, /* @__PURE__ */ new Set(), 0)) throw new Error("A tool interaction payload must be plain JSON.");
|
|
33
|
+
if (type === "action" && !isJSONObjectValue(payload)) throw new Error("An action interaction payload must be a JSON object.");
|
|
34
|
+
const serialized = JSON.stringify(payload);
|
|
35
|
+
if (serialized.length > TOOL_INTERACTION_LIMITS.payloadLength) throw new Error(`A tool interaction payload is limited to ${TOOL_INTERACTION_LIMITS.payloadLength} characters of JSON.`);
|
|
36
|
+
return {
|
|
37
|
+
type,
|
|
38
|
+
occurredAt,
|
|
39
|
+
payload: JSON.parse(serialized)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function appendToolInteraction(log, interaction) {
|
|
43
|
+
const entries = [...log?.entries ?? [], interaction];
|
|
44
|
+
let omitted = log?.omitted ?? 0;
|
|
45
|
+
while (entries.length > 1 && (entries.length > TOOL_INTERACTION_LIMITS.entries || JSON.stringify(entries).length > TOOL_INTERACTION_LIMITS.logLength)) {
|
|
46
|
+
entries.shift();
|
|
47
|
+
omitted += 1;
|
|
48
|
+
}
|
|
49
|
+
return omitted > 0 ? {
|
|
50
|
+
entries,
|
|
51
|
+
omitted
|
|
52
|
+
} : { entries };
|
|
53
|
+
}
|
|
54
|
+
const readInteraction = (value) => {
|
|
55
|
+
if (!isJSONObjectValue(value)) return void 0;
|
|
56
|
+
const { type, occurredAt, payload } = value;
|
|
57
|
+
if (!isInteractionType(type)) return void 0;
|
|
58
|
+
if (typeof occurredAt !== "number" || !Number.isFinite(occurredAt)) return;
|
|
59
|
+
if (!isPlainJSON(payload, /* @__PURE__ */ new Set(), 0)) return void 0;
|
|
60
|
+
if (type === "action") return isJSONObjectValue(payload) ? {
|
|
61
|
+
type,
|
|
62
|
+
occurredAt,
|
|
63
|
+
payload
|
|
64
|
+
} : void 0;
|
|
65
|
+
return {
|
|
66
|
+
type,
|
|
67
|
+
occurredAt,
|
|
68
|
+
payload
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
function readToolInteractionLog(value) {
|
|
72
|
+
if (!isJSONObjectValue(value)) return void 0;
|
|
73
|
+
const { entries, omitted } = value;
|
|
74
|
+
const readable = Array.isArray(entries) ? entries.flatMap((entry) => {
|
|
75
|
+
const interaction = readInteraction(entry);
|
|
76
|
+
return interaction ? [interaction] : [];
|
|
77
|
+
}) : [];
|
|
78
|
+
let omittedEntries = typeof omitted === "number" && Number.isInteger(omitted) && omitted > 0 ? omitted : 0;
|
|
79
|
+
while (readable.length > 1 && (readable.length > TOOL_INTERACTION_LIMITS.entries || JSON.stringify(readable).length > TOOL_INTERACTION_LIMITS.logLength)) {
|
|
80
|
+
readable.shift();
|
|
81
|
+
omittedEntries += 1;
|
|
82
|
+
}
|
|
83
|
+
if (readable.length === 0 && omittedEntries === 0) return void 0;
|
|
84
|
+
return omittedEntries > 0 ? {
|
|
85
|
+
entries: readable,
|
|
86
|
+
omitted: omittedEntries
|
|
87
|
+
} : { entries: readable };
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { TOOL_INTERACTION_LIMITS, appendToolInteraction, createToolInteraction, readToolInteractionLog };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=tool-interactions.js.map
|