@assistant-ui/core 0.3.20 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/attachment.d.ts +42 -34
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +51 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +1 -3
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +6 -7
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +57 -58
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +14 -16
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +54 -51
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +7 -9
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +46 -40
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +0 -2
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +19 -21
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +27 -28
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +19 -21
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +42 -29
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +6 -8
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +14 -16
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +13 -14
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +10 -11
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +32 -34
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +6 -8
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -25
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +2 -5
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +24 -18
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +58 -25
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -4
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +5 -7
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +1 -3
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +6 -8
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +2 -4
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +32 -34
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +9 -11
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -10
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +1 -3
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -8
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +33 -36
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +6 -8
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +6 -7
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -13
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +11 -13
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +12 -4
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +0 -2
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +0 -2
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +23 -25
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +4 -6
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +4 -6
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +4 -6
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +3 -4
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +0 -2
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +37 -24
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +2 -5
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +5 -7
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +2 -5
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +8 -11
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +11 -13
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +2 -3
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +2 -4
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +37 -36
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -8
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +3 -5
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +5 -6
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +6 -8
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +4 -6
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +2 -4
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +2 -4
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +2 -4
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +3 -5
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +2 -4
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +2 -4
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +3 -5
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -3
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +2 -4
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +4 -6
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +0 -2
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +2 -4
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +6 -8
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +0 -2
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +0 -2
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +2 -4
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +0 -2
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -3
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +5 -7
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +25 -26
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +22 -23
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +10 -9
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +11 -14
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +26 -28
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +16 -6
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +26 -23
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +120 -117
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +199 -185
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +6 -8
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -4
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +13 -15
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +54 -56
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +20 -21
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +22 -23
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +4 -6
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +3 -5
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +3 -5
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +2 -4
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +2 -4
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +2 -4
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +2 -4
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -4
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +5 -7
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +2 -4
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +3 -5
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +3 -5
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +3 -6
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +209 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +53 -39
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +185 -196
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +14 -19
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +8 -9
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +9 -11
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +4 -5
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +7 -9
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +106 -100
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +3 -5
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +2 -4
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -3
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +5 -7
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +410 -213
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +14 -16
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +136 -123
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +60 -9
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +9 -10
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +4 -5
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +1 -3
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +2 -4
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +8 -9
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +14 -17
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +11 -13
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +14 -18
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +2 -4
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +1 -3
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +26 -37
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +2 -4
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +1 -3
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +3 -5
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +46 -43
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +8 -11
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +50 -49
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +17 -19
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +5 -6
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +28 -29
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +1 -3
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +2 -4
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +26 -28
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +46 -43
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +31 -30
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +207 -193
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +28 -26
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +22 -0
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -84
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +1 -1
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +48 -50
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +64 -66
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +73 -76
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +299 -300
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +8 -10
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +149 -99
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +120 -108
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +109 -41
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +29 -29
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +10 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +27 -29
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +21 -6
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +14 -16
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +7 -9
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +88 -72
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +63 -65
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +210 -197
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +35 -37
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +29 -31
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +1 -1
- package/dist/runtime/queue/queue-item.d.ts +5 -7
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +7 -8
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +13 -11
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +4 -5
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +26 -27
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +32 -32
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +3 -3
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +2 -4
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +21 -23
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +50 -51
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +10 -11
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -8
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +4 -6
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +5 -5
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.js +22 -2
- package/dist/runtime/utils/stored-message-parts.js.map +1 -1
- package/dist/runtime/utils/streaming-timing.d.ts +19 -21
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +36 -32
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +4 -5
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +6 -8
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +0 -2
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +215 -198
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +5 -6
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +1 -3
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +38 -40
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +117 -124
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +44 -14
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +3 -5
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +94 -95
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +6 -8
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +40 -42
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +40 -42
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +93 -97
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +178 -31
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +1 -3
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +76 -53
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +11 -13
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +2 -4
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +1 -3
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +33 -29
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +44 -46
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +25 -26
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +3 -5
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +111 -112
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +144 -145
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +7 -9
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +53 -54
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1256 -731
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +1 -3
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +2 -4
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +1 -3
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +3 -4
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +5 -7
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +10 -9
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +0 -2
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +4 -6
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +0 -2
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +3 -4
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +9 -4
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +3 -5
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +10 -12
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +0 -2
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +0 -2
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +1 -3
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +3 -5
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +9 -9
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +4 -6
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +5 -7
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +3 -5
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +2 -4
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +15 -17
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +28 -29
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +141 -128
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +114 -107
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +7 -9
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +49 -45
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +18 -20
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +10 -12
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +13 -15
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +23 -25
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +63 -65
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +192 -194
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +45 -47
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +58 -53
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +26 -27
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +4 -4
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +11 -13
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +7 -8
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +322 -284
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +2 -4
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +8 -10
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +0 -2
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +0 -2
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +8 -11
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +10 -12
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +17 -18
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +0 -2
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +0 -2
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +0 -2
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +0 -2
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +1 -3
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +1 -3
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +2 -3
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +1 -2
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +0 -2
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +0 -2
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +1 -3
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +0 -2
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +70 -20
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +61 -0
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +594 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +98 -35
- package/src/react/client/Interactables.test.ts +853 -1
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +212 -1
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +124 -8
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +35 -15
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +151 -7
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +160 -3
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +38 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +73 -53
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +42 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +361 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +571 -216
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +25 -0
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +158 -9
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +352 -1
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +76 -1
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +40 -0
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +10 -5
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +744 -9
- package/src/runtime/base/base-thread-runtime-core.ts +154 -27
- package/src/runtime/base/default-edit-composer-runtime-core.ts +13 -1
- package/src/runtime/base/default-thread-composer-runtime-core.ts +29 -10
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +22 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +48 -0
- package/src/runtime/utils/external-message-conversion.ts +3 -4
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +43 -1
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +72 -46
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +22 -1
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +76 -29
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1649 -108
- package/src/runtimes/local/local-thread-runtime-core.ts +301 -47
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +635 -131
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +103 -0
- package/src/store/primitive-predicates.ts +15 -3
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +138 -5
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +8 -0
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +198 -1
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/auiV0Encode.test.ts +408 -1
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +196 -0
- package/src/tests/composer-can-send.test.ts +98 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +102 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +581 -1
- package/src/tests/external-store-thread-runtime-core.test.ts +186 -0
- package/src/tests/external-thread-attachments.test.tsx +741 -3
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/types/message.ts +49 -2
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -15
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-composer-runtime-core.js","names":["isAttachmentComplete","isCreateAttachment","Attachment","CompleteAttachment","CreateAttachment","PendingAttachment","MessageRole","AppendMessage","isMessageNotSentError","QuoteInfo","Unsubscribe","RunConfig","BaseSubscribable","AttachmentAdapter","fileMatchesAccept","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","SendOptions","DictationAdapter","QueuePlacement","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","notifyEventListeners","AttachmentAddOperations","drainAttachmentAdd","BaseComposerRuntimeCore","isEditing","getAttachmentAdapter","getDictationAdapter","enrichWithComposerMetadata","metadata","custom","Record","message","T","composerMetadata","attachmentAccept","accept","_attachments","attachments","setAttachments","value","_notifySubscribers","canCancel","canSend","isEmpty","text","trim","length","_text","_role","role","_runConfig","runConfig","_quote","undefined","quote","setQuote","setText","_rebaseDictation","_dictation","_dictationBaseText","_currentInterimText","status","inputDisabled","setRole","setRunConfig","_isSending","_removedDuringSend","Set","_sendGeneration","_attachmentAddOperations","_cancelAttachmentAdd","attachmentId","cancel","_cancelAllAttachmentAdds","cancelAll","_emptyTextAndAttachments","_onClearAttachments","adapter","pending","filter","a","Promise","all","map","remove","reset","clear","Object","keys","task","clearAttachments","attachment","add","id","send","options","_dictationSession","error","console","_cleanupDictation","attachmentTasks","Error","result","originalAttachments","generation","resolvedAttachments","e","allSettled","then","sentIds","has","finalAttachments","Omit","createdAt","Date","content","type","draft","sendTask","handleSend","_restoreUnsentDraft","catch","_notifyEventSubscribers","chars","restoreDraft","retractDraft","attachmentsUntouched","handleCancel","queue","moveQueueItem","_queueItemId","_placement","removeQueueItem","addAttachment","fileOrAttachment","File","name","contentType","err","_safeEmitAttachmentAddError","operation","start","upsertAttachment","idx","findIndex","slice","lastAttachment","file","isCancelled","reason","String","finish","subscriberError","removeAttachment","index","candidate","Session","_dictationUnsubscribes","_dictationSessionIdCounter","_activeDictationSessionId","_isCleaningDictation","dictation","_isActiveSession","sessionId","session","startDictation","isReplacing","oldSession","notify","_stopDictationSession","disableInputDuringDictation","listen","notifyError","unsubSpeech","onSpeech","isFinal","needsSeparator","endsWith","transcript","separator","_","rest","push","unsubStart","onSpeechStart","unsubEnd","onSpeechEnd","statusInterval","setInterval","clearInterval","stopDictation","cleanup","onSettled","stop","isStaleSession","runCleanup","unsubscribes","unsubscribe","_eventSubscribers","Map","payload","event","E","subscribers","get","unstable_on","callback","wrapped","set","delete"],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"sourcesContent":["import {\n isAttachmentComplete,\n isCreateAttachment,\n type Attachment,\n type CompleteAttachment,\n type CreateAttachment,\n type PendingAttachment,\n} from \"../../types/attachment\";\nimport type { MessageRole, AppendMessage } from \"../../types/message\";\nimport { isMessageNotSentError } from \"../../types/error\";\nimport type { QuoteInfo } from \"../../types/quote\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { RunConfig } from \"../../types/message\";\nimport { BaseSubscribable } from \"../../subscribable/subscribable\";\nimport {\n type AttachmentAdapter,\n fileMatchesAccept,\n} from \"../../adapters/attachment\";\nimport type {\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n SendOptions,\n} from \"../interfaces/composer-runtime-core\";\nimport type { DictationAdapter } from \"../../adapters/speech\";\nimport type { QueuePlacement } from \"../queue/external-thread-queue-adapter\";\nimport { EMPTY_QUEUE_ITEMS, type QueueItemState } from \"../queue/queue-item\";\nimport { generateId } from \"../../utils/id\";\nimport { notifyEventListeners } from \"../../utils/notify-event-listeners\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../utils/attachment-add-operations\";\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n protected abstract getDictationAdapter(): DictationAdapter | undefined;\n\n protected enrichWithComposerMetadata<\n T extends { metadata?: { custom?: Record<string, unknown> } },\n >(message: T, composerMetadata: Record<string, unknown> | undefined): T {\n if (!composerMetadata) return message;\n return {\n ...message,\n metadata: {\n ...message.metadata,\n custom: { ...message.metadata?.custom, ...composerMetadata },\n },\n } as T;\n }\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n public abstract get canSend(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n private _quote: QuoteInfo | undefined = undefined;\n\n get quote() {\n return this._quote;\n }\n\n public setQuote(quote: QuoteInfo | undefined) {\n if (this._quote === quote) return;\n\n this._quote = quote;\n this._notifySubscribers();\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n this._rebaseDictation(value);\n this._notifySubscribers();\n }\n\n // A live dictation session appends to the text it last saw, so any write\n // that bypasses `setText` has to move that baseline or the next transcript\n // overwrites what was just written.\n private _rebaseDictation(value: string) {\n if (!this._dictation) return;\n\n this._dictationBaseText = value;\n this._currentInterimText = \"\";\n const { status, inputDisabled } = this._dictation;\n this._dictation = inputDisabled ? { status, inputDisabled } : { status };\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n protected _isSending = false;\n private _removedDuringSend = new Set<string>();\n private _sendGeneration = 0;\n private _attachmentAddOperations = new AttachmentAddOperations();\n\n private _cancelAttachmentAdd(attachmentId: string) {\n this._attachmentAddOperations.cancel(attachmentId);\n }\n\n private _cancelAllAttachmentAdds() {\n this._attachmentAddOperations.cancelAll();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._rebaseDictation(\"\");\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n const pending = this._attachments.filter((a) => !isAttachmentComplete(a));\n await Promise.all(pending.map(async (a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n this._cancelAllAttachmentAdds();\n\n // A send whose adapter never settles must not brick the composer; reset is\n // the escape hatch that releases the in-flight lock. Bumping the generation\n // invalidates that send entirely so a late-settling upload can neither\n // append the discarded draft nor touch a newer send's lock.\n this._sendGeneration++;\n this._isSending = false;\n this._removedDuringSend.clear();\n\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0 &&\n this._quote === undefined\n ) {\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n this._quote = undefined;\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await task;\n }\n\n public async clearAttachments() {\n this._cancelAllAttachmentAdds();\n if (this._isSending) {\n for (const attachment of this._attachments)\n this._removedDuringSend.add(attachment.id);\n }\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send(options?: SendOptions) {\n if (!this.canSend || this._isSending) return;\n\n if (this._dictationSession) {\n try {\n this._dictationSession.cancel();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation session cancel threw\", error);\n } finally {\n this._cleanupDictation();\n }\n }\n\n const adapter = this.getAttachmentAdapter();\n const attachmentTasks = this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n if (!adapter) throw new Error(\"Attachments are not supported\");\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n });\n\n const originalAttachments = this.attachments;\n const text = this.text;\n const quote = this._quote;\n const role = this.role;\n const runConfig = this.runConfig;\n this._quote = undefined;\n this._text = \"\";\n this._isSending = true;\n const generation = ++this._sendGeneration;\n this._notifySubscribers();\n\n let resolvedAttachments: CompleteAttachment[];\n try {\n resolvedAttachments = await Promise.all(attachmentTasks);\n } catch (e) {\n if (generation === this._sendGeneration) {\n if (!this.text.trim() && this._quote === undefined) {\n this._text = text;\n this._rebaseDictation(text);\n this._quote = quote;\n this._notifySubscribers();\n }\n // Promise.all rejects on the first failure, but sibling uploads from\n // this batch keep running; the send rejects immediately while the\n // retry lock is held until they settle, or a retry could re-send\n // attachments that are still in flight.\n void Promise.allSettled(attachmentTasks).then(() => {\n if (generation !== this._sendGeneration) return;\n this._removedDuringSend.clear();\n this._isSending = false;\n this._notifySubscribers();\n });\n }\n throw e;\n }\n\n // A reset during the upload discarded this send's draft; the settled\n // uploads must not append it or touch the lock a newer send may own.\n if (generation !== this._sendGeneration) return;\n\n // Drop by id, not wholesale: the user may have added or removed chips while\n // the upload was in flight.\n const sentIds = new Set(originalAttachments.map((a) => a.id));\n this._attachments = this._attachments.filter((a) => !sentIds.has(a.id));\n this._isSending = false;\n this._notifySubscribers();\n\n // An attachment removed mid-upload can't be cancelled, but it can still be\n // dropped from the outgoing message instead of silently being sent anyway.\n const finalAttachments = resolvedAttachments.filter(\n (a) => !this._removedDuringSend.has(a.id),\n );\n this._removedDuringSend.clear();\n\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role,\n content: text ? [{ type: \"text\", text }] : [],\n attachments: finalAttachments,\n runConfig,\n metadata: { custom: { ...(quote ? { quote } : {}) } },\n };\n\n const draft = { text, quote, attachments: finalAttachments };\n let sendTask: void | Promise<void>;\n try {\n sendTask = this.handleSend(message, options);\n } catch (error) {\n this._restoreUnsentDraft(error, generation, draft);\n throw error;\n }\n if (sendTask)\n void sendTask.catch((error) => {\n this._restoreUnsentDraft(error, generation, draft);\n });\n this._notifyEventSubscribers(\"send\", {\n chars: text.length,\n attachments: finalAttachments.length,\n });\n }\n\n /**\n * Take a message back into the composer when it has nowhere else to live:\n * a send the runtime never dispatched, or a message a cancelled run is\n * removing from the thread. Reports whether the composer accepted it, so a\n * caller that is also removing the message can keep it instead of dropping\n * it. Refused, and left untouched, while the composer holds anything of its\n * own.\n */\n public restoreDraft(draft: {\n text: string;\n quote?: QuoteInfo | undefined;\n attachments?: readonly Attachment[] | undefined;\n }): boolean {\n if (\n this._text.trim() ||\n this._quote !== undefined ||\n this._attachments.length > 0\n )\n return false;\n\n this._text = draft.text;\n this._rebaseDictation(draft.text);\n this._quote = draft.quote;\n this._attachments = draft.attachments ?? [];\n this._notifySubscribers();\n return true;\n }\n\n /**\n * Inverse of `restoreDraft`: clears the composer while it still holds\n * exactly the given draft. A draft the user has edited since is left\n * untouched.\n */\n public retractDraft(draft: {\n text: string;\n quote?: QuoteInfo | undefined;\n attachments?: readonly Attachment[] | undefined;\n }): void {\n const attachmentsUntouched =\n draft.attachments !== undefined\n ? this._attachments === draft.attachments\n : this._attachments.length === 0;\n if (\n this._text !== draft.text ||\n this._quote !== draft.quote ||\n !attachmentsUntouched\n )\n return;\n\n this._text = \"\";\n this._rebaseDictation(\"\");\n this._quote = undefined;\n this._attachments = [];\n this._notifySubscribers();\n }\n\n // The generation check is what a reset and a later send use to invalidate a\n // draft, so of several queued drafts only the most recent one is still\n // restorable.\n private _restoreUnsentDraft(\n error: unknown,\n generation: number,\n draft: {\n text: string;\n quote: QuoteInfo | undefined;\n attachments: readonly CompleteAttachment[];\n },\n ) {\n if (!isMessageNotSentError(error)) return;\n if (generation !== this._sendGeneration) return;\n this.restoreDraft(draft);\n }\n\n public cancel() {\n this.handleCancel();\n }\n\n public get queue(): readonly QueueItemState[] {\n return EMPTY_QUEUE_ITEMS;\n }\n\n public moveQueueItem(\n _queueItemId: string,\n _placement: QueuePlacement,\n ): void {}\n public removeQueueItem(_queueItemId: string): void {}\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n options?: SendOptions,\n ): void | Promise<void>;\n protected abstract handleCancel(): void;\n\n async addAttachment(fileOrAttachment: File | CreateAttachment) {\n if (isCreateAttachment(fileOrAttachment)) {\n const adapter = this.getAttachmentAdapter();\n if (\n adapter &&\n !fileMatchesAccept(\n {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.contentType || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n fileOrAttachment.contentType,\n );\n throw err;\n }\n\n const a: CompleteAttachment = {\n id: fileOrAttachment.id ?? generateId(),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n this._attachments = [...this._attachments, a];\n this._notifySubscribers();\n this._notifyEventSubscribers(\"attachmentAdd\", {\n ...(a.contentType ? { contentType: a.contentType } : undefined),\n });\n return;\n }\n\n const adapter = this.getAttachmentAdapter();\n if (!adapter) {\n const message = \"Attachments are not supported\";\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"no-adapter\",\n message,\n undefined,\n err,\n fileOrAttachment.type,\n );\n throw err;\n }\n\n if (\n !fileMatchesAccept(\n { name: fileOrAttachment.name, type: fileOrAttachment.type },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.type || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n fileOrAttachment.type,\n );\n throw err;\n }\n\n const operation = this._attachmentAddOperations.start();\n const upsertAttachment = (a: PendingAttachment) => {\n if (!this._attachmentAddOperations.accept(operation, a.id)) return false;\n\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else {\n this._attachments = [...this._attachments, a];\n }\n\n this._notifySubscribers();\n return true;\n };\n let lastAttachment: PendingAttachment | undefined;\n try {\n await drainAttachmentAdd(\n adapter.add({ file: fileOrAttachment }),\n (attachment) => {\n lastAttachment = attachment;\n return upsertAttachment(attachment);\n },\n );\n } catch (e) {\n if (this._attachmentAddOperations.isCancelled(operation)) return;\n if (lastAttachment) {\n upsertAttachment({\n ...lastAttachment,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message: e instanceof Error ? e.message : String(e),\n },\n });\n }\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n e instanceof Error ? e.message : String(e),\n lastAttachment?.id,\n e instanceof Error ? e : undefined,\n lastAttachment?.contentType || fileOrAttachment.type,\n );\n throw e;\n } finally {\n this._attachmentAddOperations.finish(operation);\n }\n\n if (this._attachmentAddOperations.isCancelled(operation)) return;\n if (\n lastAttachment?.status.type === \"incomplete\" &&\n lastAttachment.status.reason === \"error\"\n ) {\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n lastAttachment.status.message ??\n \"Attachment upload did not complete successfully.\",\n lastAttachment.id,\n undefined,\n lastAttachment.contentType || fileOrAttachment.type,\n );\n } else {\n this._notifyEventSubscribers(\"attachmentAdd\", {\n ...(lastAttachment?.contentType\n ? { contentType: lastAttachment.contentType }\n : fileOrAttachment.type\n ? { contentType: fileOrAttachment.type }\n : undefined),\n });\n }\n }\n\n private _safeEmitAttachmentAddError(\n reason: AttachmentAddErrorReason,\n message: string,\n attachmentId?: string,\n error?: Error,\n contentType?: string,\n ) {\n try {\n this._notifyEventSubscribers(\"attachmentAddError\", {\n reason,\n message,\n ...(attachmentId !== undefined && { attachmentId }),\n ...(error !== undefined && { error }),\n ...(contentType ? { contentType } : undefined),\n });\n } catch (subscriberError) {\n console.error(\n \"[assistant-ui] attachmentAddError subscriber threw:\",\n subscriberError,\n );\n }\n }\n\n async removeAttachment(attachmentId: string) {\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n this._cancelAttachmentAdd(attachmentId);\n\n // A send in flight may already be uploading this attachment; the upload\n // can't be cancelled, so mark it to be dropped from the outgoing message\n // before any await gives the upload a chance to settle first.\n if (this._isSending) this._removedDuringSend.add(attachmentId);\n\n if (!isAttachmentComplete(attachment)) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n try {\n await adapter.remove(attachment);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n this._attachments = this._attachments.map((candidate) =>\n candidate.id === attachmentId && !isAttachmentComplete(candidate)\n ? {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n }\n : candidate,\n );\n this._notifySubscribers();\n throw error;\n }\n }\n this._attachments = this._attachments.filter((a) => a.id !== attachmentId);\n this._notifySubscribers();\n }\n\n private _dictation: DictationState | undefined;\n private _dictationSession: DictationAdapter.Session | undefined;\n private _dictationUnsubscribes: Unsubscribe[] = [];\n private _dictationBaseText = \"\";\n private _currentInterimText = \"\";\n private _dictationSessionIdCounter = 0;\n private _activeDictationSessionId: number | undefined;\n private _isCleaningDictation = false;\n\n public get dictation(): DictationState | undefined {\n return this._dictation;\n }\n\n private _isActiveSession(\n sessionId: number,\n session: DictationAdapter.Session,\n ): boolean {\n return (\n this._activeDictationSessionId === sessionId &&\n this._dictationSession === session\n );\n }\n\n public startDictation(): void {\n const adapter = this.getDictationAdapter();\n if (!adapter) {\n throw new Error(\"Dictation adapter not configured\");\n }\n\n const isReplacing = this._dictationSession !== undefined;\n if (this._dictationSession) {\n const oldSession = this._dictationSession;\n this._cleanupDictation({ notify: false });\n this._stopDictationSession(oldSession);\n }\n\n const inputDisabled = adapter.disableInputDuringDictation ?? false;\n\n this._dictationBaseText = this._text;\n this._currentInterimText = \"\";\n\n let session: DictationAdapter.Session;\n try {\n session = adapter.listen();\n } catch (error) {\n if (isReplacing) {\n try {\n this._notifySubscribers();\n } catch (notifyError) {\n console.error(\n \"[assistant-ui] Dictation replacement rollback notification threw\",\n notifyError,\n );\n }\n }\n throw error;\n }\n this._dictationSession = session;\n const sessionId = ++this._dictationSessionIdCounter;\n this._activeDictationSessionId = sessionId;\n this._dictation = { status: session.status, inputDisabled };\n this._notifySubscribers();\n\n const unsubSpeech = session.onSpeech((result) => {\n if (!this._isActiveSession(sessionId, session)) return;\n const isFinal = result.isFinal !== false;\n\n const needsSeparator =\n this._dictationBaseText &&\n !this._dictationBaseText.endsWith(\" \") &&\n result.transcript;\n const separator = needsSeparator ? \" \" : \"\";\n\n if (isFinal) {\n this._dictationBaseText =\n this._dictationBaseText + separator + result.transcript;\n this._currentInterimText = \"\";\n this._text = this._dictationBaseText;\n\n if (this._dictation) {\n const { transcript: _, ...rest } = this._dictation;\n this._dictation = rest;\n }\n this._notifySubscribers();\n } else {\n this._currentInterimText = separator + result.transcript;\n this._text = this._dictationBaseText + this._currentInterimText;\n\n if (this._dictation) {\n this._dictation = {\n ...this._dictation,\n transcript: result.transcript,\n };\n }\n this._notifySubscribers();\n }\n });\n this._dictationUnsubscribes.push(unsubSpeech);\n\n const unsubStart = session.onSpeechStart(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n this._dictation = {\n status: { type: \"running\" },\n inputDisabled,\n ...(this._dictation?.transcript && {\n transcript: this._dictation.transcript,\n }),\n };\n this._notifySubscribers();\n });\n this._dictationUnsubscribes.push(unsubStart);\n\n const unsubEnd = session.onSpeechEnd(() => {\n this._cleanupDictation({ sessionId });\n });\n this._dictationUnsubscribes.push(unsubEnd);\n\n const statusInterval = setInterval(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n if (session.status.type === \"ended\") {\n this._cleanupDictation({ sessionId });\n }\n }, 100);\n this._dictationUnsubscribes.push(() => clearInterval(statusInterval));\n }\n\n public stopDictation(): void {\n if (!this._dictationSession) return;\n\n const session = this._dictationSession;\n const sessionId = this._activeDictationSessionId;\n const cleanup = () => this._cleanupDictation({ sessionId });\n this._stopDictationSession(session, cleanup);\n }\n\n private _stopDictationSession(\n session: DictationAdapter.Session,\n onSettled: () => void = () => {},\n ): void {\n let task: Promise<void>;\n try {\n task = session.stop();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation session stop threw\", error);\n onSettled();\n return;\n }\n\n void task.then(onSettled, (error) => {\n console.error(\"[assistant-ui] Dictation session stop rejected\", error);\n onSettled();\n });\n }\n\n private _cleanupDictation(options?: {\n sessionId?: number | undefined;\n notify?: boolean | undefined;\n }): void {\n const isStaleSession =\n options?.sessionId !== undefined &&\n options.sessionId !== this._activeDictationSessionId;\n if (isStaleSession || this._isCleaningDictation) return;\n\n this._isCleaningDictation = true;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation cleanup threw\", error);\n }\n };\n\n try {\n const unsubscribes = this._dictationUnsubscribes;\n this._dictationUnsubscribes = [];\n this._dictationSession = undefined;\n this._activeDictationSessionId = undefined;\n this._dictation = undefined;\n this._dictationBaseText = \"\";\n this._currentInterimText = \"\";\n\n for (const unsubscribe of unsubscribes) runCleanup(unsubscribe);\n if (options?.notify !== false) {\n runCleanup(() => this._notifySubscribers());\n }\n } finally {\n this._isCleaningDictation = false;\n }\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<(payload?: unknown) => void>\n >();\n\n protected _notifyEventSubscribers<E extends ComposerRuntimeEventType>(\n event: E,\n payload: ComposerRuntimeEventPayload[E],\n ) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n notifyEventListeners(subscribers, payload, `Composer runtime \"${event}\"`);\n }\n\n public unstable_on<E extends ComposerRuntimeEventType>(\n event: E,\n callback: ComposerRuntimeEventCallback<E>,\n ) {\n const wrapped = callback as (payload?: unknown) => void;\n let subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n subscribers = new Set();\n this._eventSubscribers.set(event, subscribers);\n }\n subscribers.add(wrapped);\n\n return () => {\n this._eventSubscribers.get(event)?.delete(wrapped);\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-composer-runtime-core.js","names":["isAttachmentComplete","isCreateAttachment","Attachment","CompleteAttachment","CreateAttachment","PendingAttachment","MessageRole","AppendMessage","isMessageNotSentError","QuoteInfo","Unsubscribe","RunConfig","BaseSubscribable","AttachmentAdapter","fileMatchesAccept","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerSubmission","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","SendOptions","DictationAdapter","QueuePlacement","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","notifyEventListeners","AttachmentAddOperations","drainAttachmentAdd","AttachmentSendOperations","InTransit","submission","known","ReadonlySet","BaseComposerRuntimeCore","isEditing","getAttachmentAdapter","getDictationAdapter","enrichWithComposerMetadata","metadata","custom","Record","message","T","composerMetadata","attachmentAccept","accept","_attachments","attachments","setAttachments","value","_notifySubscribers","canCancel","canSend","isEmpty","text","trim","length","_text","_role","role","_runConfig","runConfig","_quote","undefined","quote","setQuote","setText","_rebaseDictation","_dictation","_dictationBaseText","_currentInterimText","status","inputDisabled","setRole","setRunConfig","_submission","_submissionSend","options","controller","AbortController","_inTransit","_inTransitSubmissions","_sendGeneration","_attachmentAddOperations","_attachmentSends","inTransit","isSubmitting","detachesDraftOnSend","threadMessageIds","settleInTransit","claimed","Set","pending","filter","shown","find","id","has","add","_setInTransit","map","entry","entries","_leaveTransit","remaining","_cancelAttachmentAdd","attachmentId","cancel","_cancelAllAttachmentAdds","cancelAll","_emptyTextAndAttachments","_onClearAttachments","adapter","a","Promise","all","remove","reset","discarded","_discardSubmission","Object","keys","task","clearAttachments","attachment","markRemoved","send","_dictationSession","sessionId","_activeDictationSessionId","error","console","_cleanupDictation","isRemoved","draft","context","complete","ready","detached","generation","_dispatch","_prepareSubmission","uploads","flatMap","upload","whenSendable","_refreshSubmissionAttachments","sent","settled","allSettled","signal","rejection","result","_returnSubmissionToDraft","reason","finalAttachments","index","isSubmission","Omit","createdAt","Date","content","type","queued","queue","delivered","Map","get","sendTask","handleSend","_returnToDraft","catch","wasInTransit","_notifyEventSubscribers","chars","PromiseSettledResult","failures","forEach","set","failure","transfer","Error","String","_endSubmission","cancelSubmission","abort","kept","Boolean","join","returned","drafted","restoreDraft","retractDraft","attachmentsUntouched","handleCancel","moveQueueItem","_queueItemId","_placement","removeQueueItem","addAttachment","fileOrAttachment","File","name","contentType","err","_safeEmitAttachmentAddError","operation","start","upsertAttachment","submitted","some","idx","findIndex","slice","lastAttachment","file","e","isCancelled","finish","subscriberError","removeAttachment","_removeSubmittedAttachment","candidate","_failSubmittedRemoval","failed","Session","_dictationUnsubscribes","_dictationSessionIdCounter","_isCleaningDictation","dictation","_isActiveSession","session","startDictation","isReplacing","oldSession","notify","_stopDictationSession","disableInputDuringDictation","listen","notifyError","setupUnsubscribes","releaseSetup","unsubscribe","splice","cleanupError","keepUnsubscribe","push","unsubSpeech","onSpeech","isFinal","needsSeparator","endsWith","transcript","separator","_","rest","unsubStart","onSpeechStart","unsubEnd","onSpeechEnd","statusInterval","setInterval","clearInterval","cancelError","stopDictation","cleanup","onSettled","stop","then","isStaleSession","runCleanup","unsubscribes","_eventSubscribers","payload","event","E","subscribers","unstable_on","callback","wrapped","delete"],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"sourcesContent":["import {\n isAttachmentComplete,\n isCreateAttachment,\n type Attachment,\n type CompleteAttachment,\n type CreateAttachment,\n type PendingAttachment,\n} from \"../../types/attachment\";\nimport type { MessageRole, AppendMessage } from \"../../types/message\";\nimport { isMessageNotSentError } from \"../../types/error\";\nimport type { QuoteInfo } from \"../../types/quote\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { RunConfig } from \"../../types/message\";\nimport { BaseSubscribable } from \"../../subscribable/subscribable\";\nimport {\n type AttachmentAdapter,\n fileMatchesAccept,\n} from \"../../adapters/attachment\";\nimport type {\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerSubmission,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n SendOptions,\n} from \"../interfaces/composer-runtime-core\";\nimport type { DictationAdapter } from \"../../adapters/speech\";\nimport type { QueuePlacement } from \"../queue/external-thread-queue-adapter\";\nimport { EMPTY_QUEUE_ITEMS, type QueueItemState } from \"../queue/queue-item\";\nimport { generateId } from \"../../utils/id\";\nimport { notifyEventListeners } from \"../../utils/notify-event-listeners\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../utils/attachment-add-operations\";\nimport { AttachmentSendOperations } from \"../utils/attachment-send-operations\";\n\ntype InTransit = {\n readonly submission: ComposerSubmission;\n readonly known: ReadonlySet<string>;\n};\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n protected abstract getDictationAdapter(): DictationAdapter | undefined;\n\n protected enrichWithComposerMetadata<\n T extends { metadata?: { custom?: Record<string, unknown> } },\n >(message: T, composerMetadata: Record<string, unknown> | undefined): T {\n if (!composerMetadata) return message;\n return {\n ...message,\n metadata: {\n ...message.metadata,\n custom: { ...message.metadata?.custom, ...composerMetadata },\n },\n } as T;\n }\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n public abstract get canSend(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n private _quote: QuoteInfo | undefined = undefined;\n\n get quote() {\n return this._quote;\n }\n\n public setQuote(quote: QuoteInfo | undefined) {\n if (this._quote === quote) return;\n\n this._quote = quote;\n this._notifySubscribers();\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n this._rebaseDictation(value);\n this._notifySubscribers();\n }\n\n // A live dictation session appends to the text it last saw, so any write\n // that bypasses `setText` has to move that baseline or the next transcript\n // overwrites what was just written.\n private _rebaseDictation(value: string) {\n if (!this._dictation) return;\n\n this._dictationBaseText = value;\n this._currentInterimText = \"\";\n const { status, inputDisabled } = this._dictation;\n this._dictation = inputDisabled ? { status, inputDisabled } : { status };\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n private _submission: ComposerSubmission | undefined;\n private _submissionSend:\n | {\n readonly options: SendOptions | undefined;\n readonly runConfig: RunConfig;\n readonly controller: AbortController;\n }\n | undefined;\n private _inTransit: readonly InTransit[] = [];\n private _inTransitSubmissions: readonly ComposerSubmission[] = [];\n private _sendGeneration = 0;\n private _attachmentAddOperations = new AttachmentAddOperations();\n private _attachmentSends = new AttachmentSendOperations();\n\n public get submission() {\n return this._submission;\n }\n\n public get inTransit() {\n return this._inTransitSubmissions;\n }\n\n /** Whether a send is still being prepared, which holds the composer. */\n protected get isSubmitting() {\n return this._submission !== undefined;\n }\n\n /** Whether a send takes the draft with it, leaving the composer free. */\n protected get detachesDraftOnSend(): boolean {\n return true;\n }\n\n /**\n * The ids of the thread's messages of a role, or undefined when this\n * composer's sends do not render in the thread. A dispatched submission\n * stays in transit until a message of its role that was not there at\n * dispatch shows up.\n */\n protected threadMessageIds(\n _role: MessageRole,\n ): readonly string[] | undefined {\n return undefined;\n }\n\n /**\n * Releases the messages in transit that the thread now shows. Each new\n * message stands in for the oldest send still waiting for one, and only\n * once, so sends made in quick succession hand over in order.\n */\n protected settleInTransit() {\n if (this._inTransit.length === 0) return;\n const claimed = new Set<string>();\n const pending = this._inTransit.filter(({ submission, known }) => {\n const shown = this.threadMessageIds(submission.role)?.find(\n (id) => !known.has(id) && !claimed.has(id),\n );\n if (shown === undefined) return true;\n claimed.add(shown);\n return false;\n });\n if (pending.length === this._inTransit.length) return;\n this._setInTransit(\n pending.map((entry) => ({\n ...entry,\n known: new Set([...entry.known, ...claimed]),\n })),\n );\n this._notifySubscribers();\n }\n\n private _setInTransit(entries: readonly InTransit[]) {\n this._inTransit = entries;\n this._inTransitSubmissions = entries.map((entry) => entry.submission);\n }\n\n private _leaveTransit(submission: ComposerSubmission) {\n const remaining = this._inTransit.filter(\n (entry) => entry.submission !== submission,\n );\n if (remaining.length === this._inTransit.length) return false;\n this._setInTransit(remaining);\n return true;\n }\n\n private _cancelAttachmentAdd(attachmentId: string) {\n this._attachmentAddOperations.cancel(attachmentId);\n }\n\n private _cancelAllAttachmentAdds() {\n this._attachmentAddOperations.cancelAll();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._rebaseDictation(\"\");\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n const pending = this._attachments.filter((a) => !isAttachmentComplete(a));\n await Promise.all(pending.map(async (a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n this._cancelAllAttachmentAdds();\n\n // A send whose adapter never settles must not brick the composer; reset is\n // the escape hatch that releases the in-flight lock. Bumping the generation\n // invalidates that send entirely so a late-settling upload can neither\n // append the discarded draft nor touch a newer send's lock.\n this._sendGeneration++;\n const discarded = this._discardSubmission();\n\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0 &&\n this._quote === undefined\n ) {\n await discarded;\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n this._quote = undefined;\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await Promise.all([task, discarded]);\n }\n\n public async clearAttachments() {\n this._cancelAllAttachmentAdds();\n if (this.isSubmitting) {\n for (const attachment of this._attachments)\n this._attachmentSends.markRemoved(attachment);\n }\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send(options?: SendOptions) {\n if (!this.canSend || this.isSubmitting) return;\n\n if (this._dictationSession) {\n const sessionId = this._activeDictationSessionId;\n try {\n this._dictationSession.cancel();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation session cancel threw\", error);\n } finally {\n this._cleanupDictation({ sessionId });\n }\n }\n\n // An attachment whose removal is still awaiting the adapter is excluded\n // up front, or a send started mid-removal would upload and dispatch it.\n const attachments = this.attachments.filter(\n (attachment) => !this._attachmentSends.isRemoved(attachment),\n );\n // canSend counted an attachment whose removal is still in flight, so the\n // draft can be empty by the time the filter above has run.\n if (!this.text.trim() && attachments.length === 0) return;\n\n const draft: ComposerSubmission = {\n id: generateId(),\n role: this.role,\n text: this.text,\n quote: this._quote,\n attachments,\n };\n const context = { options, runConfig: this.runConfig };\n // Only a send whose attachments still need the adapter becomes a\n // submission; one with nothing left to prepare goes out right away, as it\n // always has, and never shows up as a row of its own.\n const complete = attachments.filter(isAttachmentComplete);\n const ready = complete.length === attachments.length;\n if (!ready) {\n this._submission = draft;\n this._submissionSend = { ...context, controller: new AbortController() };\n }\n if (this.detachesDraftOnSend) {\n const detached = new Set(attachments);\n this._attachments = this._attachments.filter((a) => !detached.has(a));\n this._text = \"\";\n this._rebaseDictation(\"\");\n this._quote = undefined;\n }\n const generation = ++this._sendGeneration;\n this._notifySubscribers();\n\n if (ready) {\n this._dispatch(generation, draft, complete, context, false);\n return;\n }\n await this._prepareSubmission(generation);\n }\n\n private async _prepareSubmission(generation: number) {\n const adapter = this.getAttachmentAdapter();\n const uploads = (this._submission?.attachments ?? []).flatMap(\n (attachment) => {\n const upload = this._attachmentAddOperations.whenSendable(\n attachment.id,\n );\n return upload ? [upload] : [];\n },\n );\n if (uploads.length > 0) {\n // An attachment still uploading in `add()` cannot be finalized yet, so\n // the submission waits for its latest state.\n await Promise.all(uploads);\n if (generation !== this._sendGeneration) return;\n this._refreshSubmissionAttachments();\n }\n\n const submission = this._submission;\n const context = this._submissionSend;\n if (!submission || !context) return;\n\n const sent = submission.attachments.filter(\n (attachment) => !this._attachmentSends.isRemoved(attachment),\n );\n for (const attachment of sent) this._cancelAttachmentAdd(attachment.id);\n\n const settled = await Promise.allSettled(\n sent.map((attachment) =>\n this._attachmentSends.send(\n attachment,\n adapter,\n context.controller.signal,\n ),\n ),\n );\n if (generation !== this._sendGeneration) return;\n\n const rejection = settled.find((result) => result.status === \"rejected\");\n if (rejection) {\n this._returnSubmissionToDraft(sent, settled, rejection.reason);\n return;\n }\n\n // An attachment removed mid-upload can't be cancelled, but it can still be\n // dropped from the outgoing message instead of silently being sent anyway.\n const finalAttachments = settled.flatMap((result, index) =>\n this._attachmentSends.isRemoved(sent[index]!) ||\n result.status === \"rejected\"\n ? []\n : [result.value],\n );\n this._dispatch(generation, submission, finalAttachments, context, true);\n }\n\n private _dispatch(\n generation: number,\n draft: ComposerSubmission,\n attachments: readonly CompleteAttachment[],\n context: { options: SendOptions | undefined; runConfig: RunConfig },\n isSubmission: boolean,\n ) {\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role: draft.role,\n content: draft.text ? [{ type: \"text\", text: draft.text }] : [],\n attachments,\n runConfig: context.runConfig,\n metadata: {\n custom: { ...(draft.quote ? { quote: draft.quote } : {}) },\n },\n };\n\n const sent: ComposerSubmission = { ...draft, attachments };\n const queued = this.queue.length;\n if (isSubmission) {\n // The runtime owns the message from here, so neither a reset nor the\n // next send can reach it, and the thread shows it until the runtime does.\n this._submission = undefined;\n this._submissionSend = undefined;\n // A composer that kept its draft holds the same attachments, which are\n // the delivered ones now, so clearing that draft (an edit ending) must\n // not remove their uploads.\n if (!this.detachesDraftOnSend) {\n const delivered = new Map(\n attachments.map((attachment) => [attachment.id, attachment]),\n );\n this._attachments = this._attachments.map(\n (attachment) => delivered.get(attachment.id) ?? attachment,\n );\n }\n const known = this.threadMessageIds(draft.role);\n if (known)\n this._setInTransit([\n ...this._inTransit,\n { submission: sent, known: new Set(known) },\n ]);\n }\n\n let sendTask: void | Promise<void>;\n try {\n sendTask = this.handleSend(message, context.options);\n } catch (error) {\n console.error(\"[assistant-ui] Failed to send the message\", error);\n this._leaveTransit(sent);\n if (generation === this._sendGeneration) this._returnToDraft(sent);\n else this._notifySubscribers();\n return;\n }\n if (sendTask)\n void sendTask.catch((error) => {\n const wasInTransit = this._leaveTransit(sent);\n if (generation === this._sendGeneration && isMessageNotSentError(error))\n this._returnToDraft(sent);\n else if (wasInTransit) this._notifySubscribers();\n });\n\n this._notifyEventSubscribers(\"send\", {\n chars: draft.text.length,\n attachments: attachments.length,\n });\n\n if (!isSubmission) return;\n // A queued message has its own place in the UI.\n if (this.queue.length > queued) this._leaveTransit(sent);\n this._notifySubscribers();\n this.settleInTransit();\n }\n\n private _refreshSubmissionAttachments() {\n const submission = this._submission;\n if (!submission) return;\n const attachments = submission.attachments.filter(\n (attachment) => !this._attachmentSends.isRemoved(attachment),\n );\n if (attachments.length === submission.attachments.length) return;\n this._submission = { ...submission, attachments };\n }\n\n private _returnSubmissionToDraft(\n sent: readonly Attachment[],\n settled: readonly PromiseSettledResult<CompleteAttachment>[],\n reason: unknown,\n ) {\n const submission = this._submission;\n if (!submission) return;\n\n const failures = new Map<string, unknown>();\n settled.forEach((result, index) => {\n if (result.status === \"rejected\")\n failures.set(sent[index]!.id, result.reason);\n });\n // Each attachment that could not be prepared carries its own reason, so\n // the draft it returns to shows which file needs another try.\n const attachments = submission.attachments.map((attachment) => {\n if (!failures.has(attachment.id) || isAttachmentComplete(attachment))\n return attachment;\n const failure = failures.get(attachment.id);\n return this._attachmentSends.transfer(attachment, {\n ...attachment,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message: failure instanceof Error ? failure.message : String(failure),\n },\n });\n });\n this._endSubmission();\n this._returnToDraft({ ...submission, attachments });\n console.error(\"[assistant-ui] Failed to send attachments\", reason);\n }\n\n /** Ends the send being prepared, so nothing it started can dispatch it. */\n private _endSubmission() {\n this._sendGeneration++;\n this._submission = undefined;\n this._submissionSend = undefined;\n }\n\n /**\n * Stops the submission and takes its content back into the draft, merging it\n * ahead of anything written since, so a send is never dropped.\n */\n protected cancelSubmission() {\n const submission = this._submission;\n if (!submission) return;\n this._submissionSend?.controller.abort();\n this._endSubmission();\n this._returnToDraft(submission);\n }\n\n /**\n * Takes a send's content back into the draft, ahead of anything written\n * since. A composer that kept its draft only takes back the state the\n * attachments came back in, such as the reason one failed.\n */\n private _returnToDraft(submission: ComposerSubmission) {\n if (this.detachesDraftOnSend) {\n const kept = submission.attachments.filter(\n (attachment) => !this._attachmentSends.isRemoved(attachment),\n );\n this._attachments = [...kept, ...this._attachments];\n const text = [submission.text, this._text].filter(Boolean).join(\"\\n\");\n this._text = text;\n this._rebaseDictation(text);\n this._quote = this._quote ?? submission.quote;\n } else {\n const returned = new Map(\n submission.attachments.map((attachment) => [attachment.id, attachment]),\n );\n this._attachments = this._attachments.map(\n (attachment) => returned.get(attachment.id) ?? attachment,\n );\n }\n this._notifySubscribers();\n }\n\n private async _discardSubmission() {\n const submission = this._submission;\n if (!submission) return;\n\n this._submissionSend?.controller.abort();\n this._endSubmission();\n this._notifySubscribers();\n\n const adapter = this.getAttachmentAdapter();\n if (!adapter) return;\n // An attachment the draft still holds is removed along with the draft.\n const drafted = new Set(\n this._attachments.map((attachment) => attachment.id),\n );\n await Promise.all(\n submission.attachments\n .filter(\n (attachment) =>\n !isAttachmentComplete(attachment) && !drafted.has(attachment.id),\n )\n .map(async (attachment) => adapter.remove(attachment)),\n );\n }\n\n /**\n * Take a message back into the composer when it has nowhere else to live:\n * a send the runtime never dispatched, or a message a cancelled run is\n * removing from the thread. Reports whether the composer accepted it, so a\n * caller that is also removing the message can keep it instead of dropping\n * it. Refused, and left untouched, while the composer holds anything of its\n * own.\n */\n public restoreDraft(draft: {\n text: string;\n quote?: QuoteInfo | undefined;\n attachments?: readonly Attachment[] | undefined;\n }): boolean {\n if (\n this._text.trim() ||\n this._quote !== undefined ||\n this._attachments.length > 0\n )\n return false;\n\n this._text = draft.text;\n this._rebaseDictation(draft.text);\n this._quote = draft.quote;\n this._attachments = draft.attachments ?? [];\n this._notifySubscribers();\n return true;\n }\n\n /**\n * Inverse of `restoreDraft`: clears the composer while it still holds\n * exactly the given draft. A draft the user has edited since is left\n * untouched.\n */\n public retractDraft(draft: {\n text: string;\n quote?: QuoteInfo | undefined;\n attachments?: readonly Attachment[] | undefined;\n }): void {\n const attachmentsUntouched =\n draft.attachments !== undefined\n ? this._attachments === draft.attachments\n : this._attachments.length === 0;\n if (\n this._text !== draft.text ||\n this._quote !== draft.quote ||\n !attachmentsUntouched\n )\n return;\n\n this._text = \"\";\n this._rebaseDictation(\"\");\n this._quote = undefined;\n this._attachments = [];\n this._notifySubscribers();\n }\n\n public cancel() {\n // A composer that keeps its draft while sending (an edit session) ends\n // that session here, so its submission must not dispatch afterwards.\n if (this.isSubmitting && !this.detachesDraftOnSend) {\n this._submissionSend?.controller.abort();\n this._endSubmission();\n this._notifySubscribers();\n }\n this.handleCancel();\n }\n\n public get queue(): readonly QueueItemState[] {\n return EMPTY_QUEUE_ITEMS;\n }\n\n public moveQueueItem(\n _queueItemId: string,\n _placement: QueuePlacement,\n ): void {}\n public removeQueueItem(_queueItemId: string): void {}\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n options?: SendOptions,\n ): void | Promise<void>;\n protected abstract handleCancel(): void;\n\n async addAttachment(fileOrAttachment: File | CreateAttachment) {\n if (isCreateAttachment(fileOrAttachment)) {\n const adapter = this.getAttachmentAdapter();\n if (\n adapter &&\n !fileMatchesAccept(\n {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.contentType || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n fileOrAttachment.contentType,\n );\n throw err;\n }\n\n const a: CompleteAttachment = {\n id: fileOrAttachment.id ?? generateId(),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n this._attachments = [...this._attachments, a];\n this._notifySubscribers();\n this._notifyEventSubscribers(\"attachmentAdd\", {\n ...(a.contentType ? { contentType: a.contentType } : undefined),\n });\n return;\n }\n\n const adapter = this.getAttachmentAdapter();\n if (!adapter) {\n const message = \"Attachments are not supported\";\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"no-adapter\",\n message,\n undefined,\n err,\n fileOrAttachment.type,\n );\n throw err;\n }\n\n if (\n !fileMatchesAccept(\n { name: fileOrAttachment.name, type: fileOrAttachment.type },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.type || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n fileOrAttachment.type,\n );\n throw err;\n }\n\n const operation = this._attachmentAddOperations.start();\n const upsertAttachment = (a: PendingAttachment) => {\n if (!this._attachmentAddOperations.accept(operation, a)) return false;\n\n // An attachment the composer sent lives on the submission, so its\n // remaining upload updates follow it there instead of coming back as a\n // new draft entry.\n const submission = this._submission;\n const submitted =\n submission?.attachments.some((attachment) => attachment.id === a.id) ??\n false;\n if (submission && submitted) {\n this._submission = {\n ...submission,\n attachments: submission.attachments.map((attachment) =>\n attachment.id === a.id\n ? this._attachmentSends.transfer(attachment, a)\n : attachment,\n ),\n };\n }\n\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else if (!submitted) {\n this._attachments = [...this._attachments, a];\n }\n\n this._notifySubscribers();\n return true;\n };\n let lastAttachment: PendingAttachment | undefined;\n try {\n await drainAttachmentAdd(\n adapter.add({ file: fileOrAttachment }),\n (attachment) => {\n lastAttachment = attachment;\n return upsertAttachment(attachment);\n },\n );\n } catch (e) {\n if (this._attachmentAddOperations.isCancelled(operation)) return;\n if (lastAttachment) {\n upsertAttachment({\n ...lastAttachment,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message: e instanceof Error ? e.message : String(e),\n },\n });\n }\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n e instanceof Error ? e.message : String(e),\n lastAttachment?.id,\n e instanceof Error ? e : undefined,\n lastAttachment?.contentType || fileOrAttachment.type,\n );\n throw e;\n } finally {\n this._attachmentAddOperations.finish(operation);\n }\n\n if (this._attachmentAddOperations.isCancelled(operation)) return;\n if (\n lastAttachment?.status.type === \"incomplete\" &&\n lastAttachment.status.reason === \"error\"\n ) {\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n lastAttachment.status.message ??\n \"Attachment upload did not complete successfully.\",\n lastAttachment.id,\n undefined,\n lastAttachment.contentType || fileOrAttachment.type,\n );\n } else {\n this._notifyEventSubscribers(\"attachmentAdd\", {\n ...(lastAttachment?.contentType\n ? { contentType: lastAttachment.contentType }\n : fileOrAttachment.type\n ? { contentType: fileOrAttachment.type }\n : undefined),\n });\n }\n }\n\n private _safeEmitAttachmentAddError(\n reason: AttachmentAddErrorReason,\n message: string,\n attachmentId?: string,\n error?: Error,\n contentType?: string,\n ) {\n try {\n this._notifyEventSubscribers(\"attachmentAddError\", {\n reason,\n message,\n ...(attachmentId !== undefined && { attachmentId }),\n ...(error !== undefined && { error }),\n ...(contentType ? { contentType } : undefined),\n });\n } catch (subscriberError) {\n console.error(\n \"[assistant-ui] attachmentAddError subscriber threw:\",\n subscriberError,\n );\n }\n }\n\n async removeAttachment(attachmentId: string) {\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) {\n await this._removeSubmittedAttachment(attachmentId);\n return;\n }\n const attachment = this._attachments[index]!;\n\n this._cancelAttachmentAdd(attachmentId);\n\n // The mark must precede any await: an in-flight send drops the attachment\n // from its outgoing message, and a send that starts while the adapter\n // removal is still pending excludes it from the batch entirely.\n this._attachmentSends.markRemoved(attachment);\n\n if (!isAttachmentComplete(attachment)) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n try {\n await adapter.remove(attachment);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n this._attachments = this._attachments.map((candidate) =>\n candidate.id === attachmentId && !isAttachmentComplete(candidate)\n ? this._attachmentSends.transfer(candidate, {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n })\n : candidate,\n );\n this._notifySubscribers();\n throw error;\n }\n }\n this._attachments = this._attachments.filter((a) => a.id !== attachmentId);\n this._notifySubscribers();\n }\n\n /**\n * A submission is not delivered yet, so an attachment can still be taken out\n * of it, which the draft no longer holds once the send detached it.\n */\n private async _removeSubmittedAttachment(attachmentId: string) {\n const submitted = this._submission?.attachments.find(\n (a) => a.id === attachmentId,\n );\n if (!submitted) throw new Error(\"Attachment not found\");\n\n this._cancelAttachmentAdd(attachmentId);\n this._attachmentSends.markRemoved(submitted);\n if (!isAttachmentComplete(submitted)) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n try {\n await adapter.remove(submitted);\n } catch (error) {\n this._failSubmittedRemoval(attachmentId, error);\n throw error;\n }\n }\n const submission = this._submission;\n if (!submission) return;\n this._submission = {\n ...submission,\n attachments: submission.attachments.filter((a) => a.id !== attachmentId),\n };\n this._notifySubscribers();\n }\n\n /**\n * An attachment whose removal failed stays out of the message it was taken\n * from and shows why, so the removal can be tried again.\n */\n private _failSubmittedRemoval(attachmentId: string, error: unknown) {\n const submission = this._submission;\n if (!submission) return;\n const message = error instanceof Error ? error.message : String(error);\n this._submission = {\n ...submission,\n attachments: submission.attachments.map((attachment) => {\n if (attachment.id !== attachmentId || isAttachmentComplete(attachment))\n return attachment;\n const failed = this._attachmentSends.transfer(attachment, {\n ...attachment,\n status: { type: \"incomplete\", reason: \"error\", message },\n });\n this._attachmentSends.markRemoved(failed);\n return failed;\n }),\n };\n this._notifySubscribers();\n }\n\n private _dictation: DictationState | undefined;\n private _dictationSession: DictationAdapter.Session | undefined;\n private _dictationUnsubscribes: Unsubscribe[] = [];\n private _dictationBaseText = \"\";\n private _currentInterimText = \"\";\n private _dictationSessionIdCounter = 0;\n private _activeDictationSessionId: number | undefined;\n private _isCleaningDictation = false;\n\n public get dictation(): DictationState | undefined {\n return this._dictation;\n }\n\n private _isActiveSession(\n sessionId: number,\n session: DictationAdapter.Session,\n ): boolean {\n return (\n this._activeDictationSessionId === sessionId &&\n this._dictationSession === session\n );\n }\n\n public startDictation(): void {\n const adapter = this.getDictationAdapter();\n if (!adapter) {\n throw new Error(\"Dictation adapter not configured\");\n }\n\n const isReplacing = this._dictationSession !== undefined;\n if (this._dictationSession) {\n const oldSession = this._dictationSession;\n this._cleanupDictation({ notify: false });\n this._stopDictationSession(oldSession);\n }\n\n const inputDisabled = adapter.disableInputDuringDictation ?? false;\n\n this._dictationBaseText = this._text;\n this._currentInterimText = \"\";\n\n let session: DictationAdapter.Session;\n try {\n session = adapter.listen();\n } catch (error) {\n if (isReplacing) {\n try {\n this._notifySubscribers();\n } catch (notifyError) {\n console.error(\n \"[assistant-ui] Dictation replacement rollback notification threw\",\n notifyError,\n );\n }\n }\n throw error;\n }\n this._dictationSession = session;\n const sessionId = ++this._dictationSessionIdCounter;\n this._activeDictationSessionId = sessionId;\n this._dictation = { status: session.status, inputDisabled };\n try {\n this._notifySubscribers();\n } catch (notifyError) {\n console.error(\n \"[assistant-ui] Dictation start notification threw\",\n notifyError,\n );\n }\n\n if (!this._isActiveSession(sessionId, session)) return;\n\n // Handles stay local because cleanup can run synchronously during setup\n // and would drain the shared list before the remaining handles exist.\n const setupUnsubscribes: Unsubscribe[] = [];\n const releaseSetup = () => {\n for (const unsubscribe of setupUnsubscribes.splice(0)) {\n try {\n unsubscribe();\n } catch (cleanupError) {\n console.error(\"[assistant-ui] Dictation cleanup threw\", cleanupError);\n }\n }\n };\n const keepUnsubscribe = (unsubscribe: Unsubscribe) => {\n setupUnsubscribes.push(unsubscribe);\n if (this._isActiveSession(sessionId, session)) return true;\n releaseSetup();\n return false;\n };\n\n try {\n const unsubSpeech = session.onSpeech((result) => {\n if (!this._isActiveSession(sessionId, session)) return;\n const isFinal = result.isFinal !== false;\n\n const needsSeparator =\n this._dictationBaseText &&\n !this._dictationBaseText.endsWith(\" \") &&\n result.transcript;\n const separator = needsSeparator ? \" \" : \"\";\n\n if (isFinal) {\n this._dictationBaseText =\n this._dictationBaseText + separator + result.transcript;\n this._currentInterimText = \"\";\n this._text = this._dictationBaseText;\n\n if (this._dictation) {\n const { transcript: _, ...rest } = this._dictation;\n this._dictation = rest;\n }\n this._notifySubscribers();\n } else {\n this._currentInterimText = separator + result.transcript;\n this._text = this._dictationBaseText + this._currentInterimText;\n\n if (this._dictation) {\n this._dictation = {\n ...this._dictation,\n transcript: result.transcript,\n };\n }\n this._notifySubscribers();\n }\n });\n if (!keepUnsubscribe(unsubSpeech)) return;\n\n const unsubStart = session.onSpeechStart(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n this._dictation = {\n status: { type: \"running\" },\n inputDisabled,\n ...(this._dictation?.transcript && {\n transcript: this._dictation.transcript,\n }),\n };\n this._notifySubscribers();\n });\n if (!keepUnsubscribe(unsubStart)) return;\n\n const unsubEnd = session.onSpeechEnd(() => {\n this._cleanupDictation({ sessionId });\n });\n if (!keepUnsubscribe(unsubEnd)) return;\n\n const statusInterval = setInterval(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n if (session.status.type === \"ended\") {\n this._cleanupDictation({ sessionId });\n }\n }, 100);\n if (!keepUnsubscribe(() => clearInterval(statusInterval))) return;\n\n this._dictationUnsubscribes.push(...setupUnsubscribes.splice(0));\n } catch (error) {\n releaseSetup();\n if (this._isActiveSession(sessionId, session)) {\n try {\n session.cancel();\n } catch (cancelError) {\n console.error(\n \"[assistant-ui] Dictation session cancel threw\",\n cancelError,\n );\n } finally {\n this._cleanupDictation({ sessionId });\n }\n }\n throw error;\n }\n }\n\n public stopDictation(): void {\n if (!this._dictationSession) return;\n\n const session = this._dictationSession;\n const sessionId = this._activeDictationSessionId;\n const cleanup = () => this._cleanupDictation({ sessionId });\n this._stopDictationSession(session, cleanup);\n }\n\n private _stopDictationSession(\n session: DictationAdapter.Session,\n onSettled: () => void = () => {},\n ): void {\n let task: Promise<void>;\n try {\n task = session.stop();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation session stop threw\", error);\n onSettled();\n return;\n }\n\n void task.then(onSettled, (error) => {\n console.error(\"[assistant-ui] Dictation session stop rejected\", error);\n onSettled();\n });\n }\n\n private _cleanupDictation(options?: {\n sessionId?: number | undefined;\n notify?: boolean | undefined;\n }): void {\n const isStaleSession =\n options?.sessionId !== undefined &&\n options.sessionId !== this._activeDictationSessionId;\n if (isStaleSession || this._isCleaningDictation) return;\n\n this._isCleaningDictation = true;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n console.error(\"[assistant-ui] Dictation cleanup threw\", error);\n }\n };\n\n try {\n const unsubscribes = this._dictationUnsubscribes;\n this._dictationUnsubscribes = [];\n this._dictationSession = undefined;\n this._activeDictationSessionId = undefined;\n this._dictation = undefined;\n this._dictationBaseText = \"\";\n this._currentInterimText = \"\";\n\n for (const unsubscribe of unsubscribes) runCleanup(unsubscribe);\n if (options?.notify !== false) {\n runCleanup(() => this._notifySubscribers());\n }\n } finally {\n this._isCleaningDictation = false;\n }\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<(payload?: unknown) => void>\n >();\n\n protected _notifyEventSubscribers<E extends ComposerRuntimeEventType>(\n event: E,\n payload: ComposerRuntimeEventPayload[E],\n ) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n notifyEventListeners(subscribers, payload, `Composer runtime \"${event}\"`);\n }\n\n public unstable_on<E extends ComposerRuntimeEventType>(\n event: E,\n callback: ComposerRuntimeEventCallback<E>,\n ) {\n const wrapped = callback as (payload?: unknown) => void;\n let subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n subscribers = new Set();\n this._eventSubscribers.set(event, subscribers);\n }\n subscribers.add(wrapped);\n\n return () => {\n this._eventSubscribers.get(event)?.delete(wrapped);\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,116 +1,128 @@
|
|
|
1
|
-
import { AppendMessage, ThreadMessage } from "../../types/message.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Unsubscribe } from "../../types/unsubscribe.js";
|
|
5
|
-
import { SpeechSynthesisAdapter } from "../../adapters/speech.js";
|
|
6
|
-
import { RealtimeVoiceAdapter } from "../../adapters/voice.js";
|
|
7
|
-
import { ModelContext, ModelContextProvider } from "../../model-context/types.js";
|
|
8
|
-
import { ThreadMessageLike } from "../utils/thread-message-like.js";
|
|
1
|
+
import type { AppendMessage, ThreadAssistantMessage, ThreadMessage } from "../../types/message.js";
|
|
2
|
+
import type { Unsubscribe } from "../../types/unsubscribe.js";
|
|
3
|
+
import type { ModelContextProvider } from "../../model-context/types.js";
|
|
9
4
|
import { ExportedMessageRepository, MessageRepository } from "../utils/message-repository.js";
|
|
10
|
-
import { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, ResumeToolCallOptions, RuntimeCapabilities, SpeechState, StartRunConfig, SubmitFeedbackOptions, ThreadRuntimeCore, ThreadRuntimeEventCallback, ThreadRuntimeEventPayload, ThreadRuntimeEventType, ThreadSuggestion, VoiceSessionState } from "../interfaces/thread-runtime-core.js";
|
|
11
|
-
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
12
5
|
import { DefaultThreadComposerRuntimeCore } from "./default-thread-composer-runtime-core.js";
|
|
6
|
+
import type { AddToolResultOptions, ResumeToolCallOptions, RespondToToolApprovalOptions, ThreadSuggestion, SubmitFeedbackOptions, ThreadRuntimeCore, SpeechState, VoiceSessionState, RuntimeCapabilities, ThreadRuntimeEventCallback, ThreadRuntimeEventPayload, ThreadRuntimeEventType, StartRunConfig, ResumeRunConfig } from "../interfaces/thread-runtime-core.js";
|
|
13
7
|
import { DefaultEditComposerRuntimeCore } from "./default-edit-composer-runtime-core.js";
|
|
14
|
-
import "../../
|
|
15
|
-
|
|
8
|
+
import type { SpeechSynthesisAdapter } from "../../adapters/speech.js";
|
|
9
|
+
import type { FeedbackAdapter } from "../../adapters/feedback.js";
|
|
10
|
+
import type { AttachmentAdapter } from "../../adapters/attachment.js";
|
|
11
|
+
import type { RealtimeVoiceAdapter } from "../../adapters/voice.js";
|
|
12
|
+
import type { ThreadMessageLike } from "../utils/thread-message-like.js";
|
|
13
|
+
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
16
14
|
type BaseThreadAdapters = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
speech?: SpeechSynthesisAdapter | undefined;
|
|
16
|
+
feedback?: FeedbackAdapter | undefined;
|
|
17
|
+
attachments?: AttachmentAdapter | undefined;
|
|
18
|
+
voice?: RealtimeVoiceAdapter | undefined;
|
|
21
19
|
};
|
|
22
20
|
export declare abstract class BaseThreadRuntimeCore extends BaseSubscribable implements ThreadRuntimeCore {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
21
|
+
private _isInitialized;
|
|
22
|
+
protected repository: MessageRepository;
|
|
23
|
+
abstract get adapters(): BaseThreadAdapters | undefined;
|
|
24
|
+
abstract get isDisabled(): boolean;
|
|
25
|
+
abstract get isSendDisabled(): boolean;
|
|
26
|
+
abstract get isLoading(): boolean;
|
|
27
|
+
abstract get suggestions(): readonly ThreadSuggestion[];
|
|
28
|
+
abstract get extras(): unknown;
|
|
29
|
+
abstract get capabilities(): RuntimeCapabilities;
|
|
30
|
+
abstract append(message: AppendMessage): void;
|
|
31
|
+
abstract deleteMessage(messageId: string): void | Promise<void>;
|
|
32
|
+
abstract startRun(config: StartRunConfig): void;
|
|
33
|
+
abstract resumeRun(config: ResumeRunConfig): void;
|
|
34
|
+
abstract addToolResult(options: AddToolResultOptions): void;
|
|
35
|
+
abstract resumeToolCall(options: ResumeToolCallOptions): void;
|
|
36
|
+
abstract respondToToolApproval(options: RespondToToolApprovalOptions): Promise<void>;
|
|
37
|
+
abstract cancelRun(): void;
|
|
38
|
+
abstract exportExternalState(): any;
|
|
39
|
+
abstract importExternalState(state: any): void;
|
|
40
|
+
abstract unstable_notifySessionReset(): void;
|
|
41
|
+
protected _voiceMessages: ThreadMessage[];
|
|
42
|
+
protected _voiceGeneration: number;
|
|
43
|
+
private _cachedMergedMessages;
|
|
44
|
+
private _cachedVoiceGeneration;
|
|
45
|
+
private _cachedMergedBase;
|
|
46
|
+
protected _markVoiceMessagesDirty(): void;
|
|
47
|
+
protected _getBaseMessages(): readonly ThreadMessage[];
|
|
48
|
+
protected _commitVoiceMessage(_message: ThreadMessage): void | Promise<void>;
|
|
49
|
+
protected _onMessageMetadataChanged(_previousMessage: ThreadAssistantMessage, _message: ThreadAssistantMessage): void;
|
|
50
|
+
protected _dropVoiceMessage(messageId: string, notify: boolean): void;
|
|
51
|
+
get messages(): readonly ThreadMessage[];
|
|
52
|
+
get state(): string | number | boolean | import("assistant-stream/utils").ReadonlyJSONObject | import("assistant-stream/utils").ReadonlyJSONArray | null;
|
|
53
|
+
readonly composer: DefaultThreadComposerRuntimeCore;
|
|
54
|
+
private readonly _contextProvider;
|
|
55
|
+
constructor(_contextProvider: ModelContextProvider);
|
|
56
|
+
getModelContext(): import("../../index.js").ModelContext;
|
|
57
|
+
/**
|
|
58
|
+
* Stamps provider-contributed composer metadata onto an outgoing message.
|
|
59
|
+
* Called at dispatch rather than in the composer, so programmatic sends are
|
|
60
|
+
* covered too, and exactly once per message: a queued send is stamped when
|
|
61
|
+
* it leaves the lane, never when it enters.
|
|
62
|
+
*
|
|
63
|
+
* Only user messages are stamped, matching the readers: both the version
|
|
64
|
+
* fold and the model injection skip every other role.
|
|
65
|
+
*
|
|
66
|
+
* @param anchorId Message the gated branch prefix ends at. A queued send
|
|
67
|
+
* passes the current tail, having waited through a run that grew the prefix
|
|
68
|
+
* past the parent it was created with.
|
|
69
|
+
*/
|
|
70
|
+
protected enrichAppendMetadata(message: AppendMessage, anchorId?: string | null): AppendMessage;
|
|
71
|
+
private _editComposers;
|
|
72
|
+
getEditComposer(messageId: string): DefaultEditComposerRuntimeCore | undefined;
|
|
73
|
+
protected _isVoiceMessage(messageId: string | null): boolean;
|
|
74
|
+
protected _resolveAppendParent(parentId: string | null): string | null;
|
|
75
|
+
beginEdit(messageId: string): void;
|
|
76
|
+
getMessageById(messageId: string): {
|
|
77
|
+
parentId: string | null;
|
|
78
|
+
message: ThreadMessage;
|
|
79
|
+
index: number;
|
|
80
|
+
} | undefined;
|
|
81
|
+
getBranches(messageId: string): string[];
|
|
82
|
+
switchToBranch(branchId: string): void;
|
|
83
|
+
_notifyEventSubscribers<E extends ThreadRuntimeEventType>(event: E, payload: ThreadRuntimeEventPayload[E]): void;
|
|
84
|
+
protected _notifyToolApprovalAnswered(messageId: string, toolCallId: string, toolName: string, approved: boolean): void;
|
|
85
|
+
submitFeedback({ messageId, type, comment }: SubmitFeedbackOptions): void;
|
|
86
|
+
private _stopSpeaking;
|
|
87
|
+
speech: SpeechState | undefined;
|
|
88
|
+
speak(messageId: string): void;
|
|
89
|
+
stopSpeaking(): void;
|
|
90
|
+
private _voiceSession;
|
|
91
|
+
private _voiceUnsubs;
|
|
92
|
+
voice: VoiceSessionState | undefined;
|
|
93
|
+
private _voiceVolume;
|
|
94
|
+
private _voiceVolumeSubscribers;
|
|
95
|
+
getVoiceVolume: () => number;
|
|
96
|
+
subscribeVoiceVolume: (callback: () => void) => Unsubscribe;
|
|
97
|
+
protected _onVoiceConnected(): void;
|
|
98
|
+
protected _onVoiceDisconnected(): void;
|
|
99
|
+
private _toVoiceSessionState;
|
|
100
|
+
protected _isRunActive(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Waits for a pending history import before a voice message is committed.
|
|
103
|
+
* The import may begin before or after the voice session connects, so the
|
|
104
|
+
* loading state must be rechecked when the commit is ready to run. The wait
|
|
105
|
+
* also ends when the runtime is invalidated, since a superseded runtime may
|
|
106
|
+
* never learn that loading ended.
|
|
107
|
+
*/
|
|
108
|
+
protected _getVoiceCommitBarrier(): Promise<void> | undefined;
|
|
109
|
+
connectVoice(): void;
|
|
110
|
+
private _currentAssistantMsg;
|
|
111
|
+
private _observeVoiceCommit;
|
|
112
|
+
private _handleVoiceTranscript;
|
|
113
|
+
private _commitVoiceUserMessage;
|
|
114
|
+
protected _appendToVoiceSession(message: AppendMessage): Promise<void>;
|
|
115
|
+
private _finishVoiceAssistantMessage;
|
|
116
|
+
disconnectVoice(): void;
|
|
117
|
+
private _disconnectVoice;
|
|
118
|
+
muteVoice(): void;
|
|
119
|
+
unmuteVoice(): void;
|
|
120
|
+
protected ensureInitialized(): void;
|
|
121
|
+
export(): ExportedMessageRepository;
|
|
122
|
+
import(data: ExportedMessageRepository): void;
|
|
123
|
+
reset(initialMessages?: readonly ThreadMessageLike[]): void;
|
|
124
|
+
private _eventSubscribers;
|
|
125
|
+
unstable_on<E extends ThreadRuntimeEventType>(event: E, callback: ThreadRuntimeEventCallback<E>): Unsubscribe;
|
|
114
126
|
}
|
|
115
|
-
|
|
127
|
+
export {};
|
|
116
128
|
//# sourceMappingURL=base-thread-runtime-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-thread-runtime-core.d.ts","
|
|
1
|
+
{"version":3,"file":"base-thread-runtime-core.d.ts","sourceRoot":"","sources":["../../../src/runtime/base/base-thread-runtime-core.ts"],"names":[],"mappings":"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"}
|