@assistant-ui/core 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/attachment.d.ts +50 -43
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +52 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +2 -5
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +7 -8
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +63 -65
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +19 -22
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +60 -58
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +8 -11
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +50 -45
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -4
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +20 -23
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +28 -30
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +24 -27
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +9 -12
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +15 -18
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +15 -17
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +12 -14
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +40 -43
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +9 -12
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +4 -8
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +2 -5
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +9 -12
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +3 -6
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -37
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +10 -12
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -11
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +42 -46
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +13 -6
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -4
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -6
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +26 -29
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +5 -7
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -4
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +44 -32
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +3 -6
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +9 -13
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +3 -6
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +40 -40
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -9
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +208 -194
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +16 -19
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +120 -8
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +17 -21
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +60 -60
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +21 -24
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +6 -8
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +35 -37
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -6
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +28 -31
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +51 -49
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +35 -35
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +215 -201
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +31 -30
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +25 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -82
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +4 -3
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +54 -57
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +306 -308
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +174 -62
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +32 -33
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +10 -2
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +7 -10
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +11 -13
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +6 -5
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +6 -9
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +24 -27
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +52 -54
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
- package/dist/runtime/utils/stored-message-parts.js +103 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +23 -26
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +38 -34
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +2 -5
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +56 -58
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1270 -741
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +2 -5
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +3 -6
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +2 -5
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +4 -6
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +8 -11
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +12 -12
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -4
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +7 -10
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -4
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +14 -16
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +10 -5
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +2 -5
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +19 -22
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +33 -35
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +147 -135
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +119 -112
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +10 -13
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +53 -50
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +21 -23
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +14 -17
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +18 -21
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +27 -30
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +68 -71
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +197 -200
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +49 -52
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +73 -69
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +35 -37
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +7 -8
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +13 -16
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -17
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +358 -318
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +3 -6
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +10 -13
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -4
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -5
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +9 -13
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +16 -19
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +19 -21
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -6
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -4
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -4
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -4
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +5 -8
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +6 -8
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -4
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +1 -4
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -5
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -5
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -6
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +15 -13
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +77 -20
- package/src/adapters/feedback.ts +1 -0
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +106 -20
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
- package/src/react/client/Interactables.test.ts +865 -8
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +221 -4
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +275 -6
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +44 -1
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +25 -7
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
- package/src/runtime/base/base-thread-runtime-core.ts +236 -46
- package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +91 -0
- package/src/runtime/utils/external-message-conversion.ts +9 -6
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +216 -0
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +79 -48
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +25 -0
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
- package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +669 -144
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +119 -0
- package/src/store/primitive-predicates.ts +19 -4
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +12 -1
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +205 -3
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +412 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +212 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +120 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
- package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
- package/src/tests/external-thread-attachments.test.tsx +763 -26
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/message-queue.test.ts +45 -10
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/tests/thread-switch-events.test.tsx +11 -7
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
- package/src/types/message.test.ts +19 -0
- package/src/types/message.ts +65 -10
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { fromThreadMessageLike } from "../../runtime/utils/thread-message-like";
|
|
2
|
+
import { appendToolInteraction } from "../../runtime/utils/tool-interactions";
|
|
2
3
|
import { generateId } from "../../utils/id";
|
|
3
4
|
import type {
|
|
4
5
|
ChatModelAdapter,
|
|
@@ -15,6 +16,7 @@ import type {
|
|
|
15
16
|
RespondToToolApprovalOptions,
|
|
16
17
|
ThreadSuggestion,
|
|
17
18
|
ThreadRuntimeCore,
|
|
19
|
+
Unstable_RecordToolInteractionOptions,
|
|
18
20
|
StartRunConfig,
|
|
19
21
|
ResumeRunConfig,
|
|
20
22
|
} from "../../runtime/interfaces/thread-runtime-core";
|
|
@@ -22,6 +24,8 @@ import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-co
|
|
|
22
24
|
import type {
|
|
23
25
|
AppendMessage,
|
|
24
26
|
ThreadAssistantMessage,
|
|
27
|
+
ThreadAssistantMessagePart,
|
|
28
|
+
ToolCallMessagePart,
|
|
25
29
|
} from "../../types/message";
|
|
26
30
|
import type { RunConfig, ThreadMessage } from "../../types/message";
|
|
27
31
|
import { MessageNotSentError, toAssistantError } from "../../types/error";
|
|
@@ -38,7 +42,6 @@ import {
|
|
|
38
42
|
import {
|
|
39
43
|
captureThreadRuntimeGeneration,
|
|
40
44
|
invalidateThreadRuntime,
|
|
41
|
-
isThreadRuntimeGenerationCurrent,
|
|
42
45
|
} from "../../runtime/utils/thread-runtime-lifecycle";
|
|
43
46
|
|
|
44
47
|
class AbortError extends Error {
|
|
@@ -90,6 +93,30 @@ const withLocalPauseReasons = (
|
|
|
90
93
|
})),
|
|
91
94
|
});
|
|
92
95
|
|
|
96
|
+
const withoutToolInteractions = (message: ThreadMessage): ThreadMessage => {
|
|
97
|
+
if (message.role !== "assistant") return message;
|
|
98
|
+
let hasInteractions = false;
|
|
99
|
+
const content = message.content.map((part): ThreadAssistantMessagePart => {
|
|
100
|
+
if (part.type !== "tool-call") return part;
|
|
101
|
+
const nestedMessages = part.messages?.map(withoutToolInteractions);
|
|
102
|
+
const hasNestedInteractions = nestedMessages?.some(
|
|
103
|
+
(nestedMessage, index) => nestedMessage !== part.messages?.[index],
|
|
104
|
+
);
|
|
105
|
+
if (
|
|
106
|
+
part.unstable_interactions === undefined &&
|
|
107
|
+
hasNestedInteractions !== true
|
|
108
|
+
) {
|
|
109
|
+
return part;
|
|
110
|
+
}
|
|
111
|
+
hasInteractions = true;
|
|
112
|
+
const { unstable_interactions: _, ...withoutInteractions } = part;
|
|
113
|
+
return hasNestedInteractions
|
|
114
|
+
? { ...withoutInteractions, messages: nestedMessages! }
|
|
115
|
+
: withoutInteractions;
|
|
116
|
+
});
|
|
117
|
+
return hasInteractions ? { ...message, content } : message;
|
|
118
|
+
};
|
|
119
|
+
|
|
93
120
|
export class LocalThreadRuntimeCore
|
|
94
121
|
extends BaseThreadRuntimeCore
|
|
95
122
|
implements ThreadRuntimeCore
|
|
@@ -114,9 +141,17 @@ export class LocalThreadRuntimeCore
|
|
|
114
141
|
private abortController: AbortController | null = null;
|
|
115
142
|
|
|
116
143
|
private _queue: MessageQueueController | null = null;
|
|
117
|
-
|
|
144
|
+
// Identifies the dispatch in flight, not merely that one is: consecutive
|
|
145
|
+
// queue runs overlap, and the previous dispatch settles after the next one
|
|
146
|
+
// has already started.
|
|
147
|
+
private _queueRunInFlight: object | null = null;
|
|
118
148
|
private _activeRun: { cancelled: boolean } | null = null;
|
|
119
149
|
private _runGeneration = 0;
|
|
150
|
+
// A metadata change such as feedback, and a tool result on a running message, replace a message without superseding the run that is streaming it; any other replacement ends that run, whose later chunks would overwrite it.
|
|
151
|
+
private _messageReplacements = new WeakMap<
|
|
152
|
+
ThreadAssistantMessage,
|
|
153
|
+
{ message: ThreadAssistantMessage; toolCallId?: string }
|
|
154
|
+
>();
|
|
120
155
|
|
|
121
156
|
private _historyWrites = new Map<string, Promise<void>>();
|
|
122
157
|
|
|
@@ -143,15 +178,19 @@ export class LocalThreadRuntimeCore
|
|
|
143
178
|
return next;
|
|
144
179
|
}
|
|
145
180
|
|
|
146
|
-
// A decision recorded
|
|
147
|
-
|
|
148
|
-
private _persistPausedMessage(
|
|
149
|
-
parentId: string | null,
|
|
150
|
-
message: ThreadAssistantMessage,
|
|
151
|
-
) {
|
|
152
|
-
if (message.status?.type !== "requires-action") return;
|
|
181
|
+
// A result or decision recorded after a run wrote its message rewrites the stored entry from the repository's current state, so a rewrite queued after a change a subscriber made in response still carries it; a running message is written by its own run once it settles.
|
|
182
|
+
private _persistMessageUpdate(messageId: string) {
|
|
153
183
|
const history = this._options.adapters.history;
|
|
154
184
|
if (!history?.update) return;
|
|
185
|
+
let entry: { parentId: string | null; message: ThreadMessage };
|
|
186
|
+
try {
|
|
187
|
+
entry = this.repository.getMessage(messageId);
|
|
188
|
+
} catch {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const { parentId, message } = entry;
|
|
192
|
+
if (message.role !== "assistant" || message.status.type === "running")
|
|
193
|
+
return;
|
|
155
194
|
const update = history.update.bind(history);
|
|
156
195
|
const item = { parentId, message, runConfig: this._lastRunConfig };
|
|
157
196
|
this._chainHistoryWrite(message.id, () => update(item)).catch(() => {});
|
|
@@ -255,22 +294,29 @@ export class LocalThreadRuntimeCore
|
|
|
255
294
|
run: (message) => {
|
|
256
295
|
// release the queue when the dispatch settles, even if it rejects
|
|
257
296
|
// before reaching startRun's finally, so a failure can't deadlock it
|
|
258
|
-
|
|
297
|
+
const dispatch = {};
|
|
298
|
+
this._queueRunInFlight = dispatch;
|
|
259
299
|
const generation = this._runGeneration;
|
|
260
300
|
// the tail may have moved since the message was enqueued
|
|
261
301
|
void this._runAppend({
|
|
262
302
|
...message,
|
|
263
|
-
parentId: this.
|
|
303
|
+
parentId: this._resolveAppendParent(
|
|
304
|
+
this.messages.at(-1)?.id ?? null,
|
|
305
|
+
),
|
|
264
306
|
})
|
|
265
307
|
.finally(() => {
|
|
266
|
-
this._queueRunInFlight
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
308
|
+
if (this._queueRunInFlight === dispatch) {
|
|
309
|
+
this._queueRunInFlight = null;
|
|
310
|
+
// A dispatch that failed before starting a run settles here;
|
|
311
|
+
// runs that did start release from _runLoop.
|
|
312
|
+
if (this._runGeneration === generation)
|
|
313
|
+
this._queue?.notifyIdle();
|
|
314
|
+
}
|
|
270
315
|
})
|
|
271
316
|
.catch(() => {});
|
|
272
317
|
},
|
|
273
318
|
});
|
|
319
|
+
if (this.voice) this._queue.hold();
|
|
274
320
|
this._queue.subscribe(() => this._notifySubscribers());
|
|
275
321
|
} else if (!canQueue && this._queue) {
|
|
276
322
|
this._queue = null;
|
|
@@ -308,7 +354,6 @@ export class LocalThreadRuntimeCore
|
|
|
308
354
|
const promise = this.adapters.history.load();
|
|
309
355
|
|
|
310
356
|
this._isLoading = true;
|
|
311
|
-
this._notifySubscribers();
|
|
312
357
|
|
|
313
358
|
this._loadPromise = promise
|
|
314
359
|
.then((repo) => {
|
|
@@ -338,16 +383,35 @@ export class LocalThreadRuntimeCore
|
|
|
338
383
|
this._notifySubscribers();
|
|
339
384
|
});
|
|
340
385
|
|
|
386
|
+
// Notified after the promise is stored so a subscriber that appends
|
|
387
|
+
// re-entrantly finds the barrier it has to wait on.
|
|
388
|
+
this._notifySubscribers();
|
|
389
|
+
|
|
341
390
|
return this._loadPromise;
|
|
342
391
|
}
|
|
343
392
|
|
|
393
|
+
// The import that ends a load replaces the repository contents and resets
|
|
394
|
+
// the head, so a message added while it is in flight would be left on a
|
|
395
|
+
// discarded branch. Awaiting the load promise keeps the wait bounded by the
|
|
396
|
+
// adapter call, unlike polling `isLoading` for a notification that a
|
|
397
|
+
// superseded runtime never sends.
|
|
398
|
+
private _getHistoryLoadBarrier(): Promise<void> | undefined {
|
|
399
|
+
if (!this._isLoading || !this._loadPromise) return undefined;
|
|
400
|
+
return this._loadPromise.catch(() => {});
|
|
401
|
+
}
|
|
402
|
+
|
|
344
403
|
public async append(message: AppendMessage): Promise<void> {
|
|
404
|
+
message = {
|
|
405
|
+
...message,
|
|
406
|
+
parentId: this._resolveAppendParent(message.parentId),
|
|
407
|
+
};
|
|
408
|
+
if (this.voice) return this._appendToVoiceSession(message);
|
|
345
409
|
if (this._isVoiceMessage(message.sourceId))
|
|
346
410
|
throw new Error("Voice transcript messages cannot be edited");
|
|
347
411
|
const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);
|
|
348
412
|
const willRun = message.startRun ?? message.role === "user";
|
|
349
413
|
if (this._queue && willRun && isTail) {
|
|
350
|
-
if (message.steer ?? this._queueRunInFlight)
|
|
414
|
+
if (message.steer ?? this._queueRunInFlight !== null)
|
|
351
415
|
this._queue.adapter.steer(message);
|
|
352
416
|
else this._queue.adapter.enqueue(message);
|
|
353
417
|
return;
|
|
@@ -361,6 +425,42 @@ export class LocalThreadRuntimeCore
|
|
|
361
425
|
return this._runAppend(message);
|
|
362
426
|
}
|
|
363
427
|
|
|
428
|
+
protected override _commitVoiceMessage(
|
|
429
|
+
message: ThreadMessage,
|
|
430
|
+
): void | Promise<void> {
|
|
431
|
+
const generation = captureThreadRuntimeGeneration(this);
|
|
432
|
+
const commit = (notify: boolean) => {
|
|
433
|
+
if (generation.aborted) {
|
|
434
|
+
this._dropVoiceMessage(message.id, notify);
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
const parentId = this.repository.headId;
|
|
438
|
+
this.repository.addOrUpdateMessage(parentId, message);
|
|
439
|
+
this.repository.resetHead(message.id);
|
|
440
|
+
const historyWrite = this._options.adapters.history?.append({
|
|
441
|
+
parentId,
|
|
442
|
+
message,
|
|
443
|
+
});
|
|
444
|
+
void historyWrite?.catch(() => {});
|
|
445
|
+
// The write lands whether or not the session still carries the message,
|
|
446
|
+
// so the notification cannot ride on removing it: hanging up mid load
|
|
447
|
+
// clears the side list before the barrier resolves.
|
|
448
|
+
this._dropVoiceMessage(message.id, false);
|
|
449
|
+
if (notify) this._notifySubscribers();
|
|
450
|
+
return historyWrite;
|
|
451
|
+
};
|
|
452
|
+
const barrier = this._getVoiceCommitBarrier();
|
|
453
|
+
return barrier ? barrier.then(() => commit(true)) : commit(false);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
protected override _onVoiceConnected(): void {
|
|
457
|
+
this._queue?.hold();
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
protected override _onVoiceDisconnected(): void {
|
|
461
|
+
this._queue?.release();
|
|
462
|
+
}
|
|
463
|
+
|
|
364
464
|
public getQueueItems(): readonly QueueItemState[] {
|
|
365
465
|
// Reads can arrive during base-thread construction, before the queue field
|
|
366
466
|
// is assigned, so guard against the unset field.
|
|
@@ -388,10 +488,42 @@ export class LocalThreadRuntimeCore
|
|
|
388
488
|
this._notifySubscribers();
|
|
389
489
|
}
|
|
390
490
|
|
|
491
|
+
private _pendingAppends = 0;
|
|
492
|
+
|
|
493
|
+
protected override _isRunActive(): boolean {
|
|
494
|
+
return this._pendingAppends > 0 || super._isRunActive();
|
|
495
|
+
}
|
|
496
|
+
|
|
391
497
|
private async _runAppend(rawMessage: AppendMessage): Promise<void> {
|
|
498
|
+
this._pendingAppends += 1;
|
|
499
|
+
try {
|
|
500
|
+
await this._runAppendInner(rawMessage);
|
|
501
|
+
} finally {
|
|
502
|
+
this._pendingAppends -= 1;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
private async _runAppendInner(rawMessage: AppendMessage): Promise<void> {
|
|
392
507
|
// Stamped here rather than in `append` so a queued message is gated after
|
|
393
508
|
// the flush re-pointed its parentId at the current tail.
|
|
394
509
|
const generation = captureThreadRuntimeGeneration(this);
|
|
510
|
+
|
|
511
|
+
const loadBarrier = this._getHistoryLoadBarrier();
|
|
512
|
+
if (loadBarrier) {
|
|
513
|
+
const wasAtTail =
|
|
514
|
+
rawMessage.parentId === (this.messages.at(-1)?.id ?? null);
|
|
515
|
+
await loadBarrier;
|
|
516
|
+
if (generation.aborted) return;
|
|
517
|
+
// A message aimed at the tail follows the tail the load established; one
|
|
518
|
+
// aimed at a specific parent keeps it, the way an edit does.
|
|
519
|
+
if (wasAtTail) {
|
|
520
|
+
rawMessage = {
|
|
521
|
+
...rawMessage,
|
|
522
|
+
parentId: this._resolveAppendParent(this.messages.at(-1)?.id ?? null),
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
395
527
|
const message = this.enrichAppendMetadata(rawMessage);
|
|
396
528
|
this.ensureInitialized();
|
|
397
529
|
|
|
@@ -413,12 +545,12 @@ export class LocalThreadRuntimeCore
|
|
|
413
545
|
}
|
|
414
546
|
} catch (error) {
|
|
415
547
|
this._rollbackAppend(newMessage.id);
|
|
416
|
-
if (
|
|
548
|
+
if (generation.aborted) return;
|
|
417
549
|
const notSent = new MessageNotSentError();
|
|
418
550
|
notSent.cause = error;
|
|
419
551
|
throw notSent;
|
|
420
552
|
}
|
|
421
|
-
if (
|
|
553
|
+
if (generation.aborted) {
|
|
422
554
|
this._rollbackAppend(newMessage.id);
|
|
423
555
|
return;
|
|
424
556
|
}
|
|
@@ -494,6 +626,8 @@ export class LocalThreadRuntimeCore
|
|
|
494
626
|
runCallback?: ChatModelAdapter["run"],
|
|
495
627
|
): Promise<void> {
|
|
496
628
|
this.ensureInitialized();
|
|
629
|
+
if (this.voice)
|
|
630
|
+
throw new Error("Cannot start a run while a voice session is connected");
|
|
497
631
|
if (this._isVoiceMessage(sourceId))
|
|
498
632
|
throw new Error("Voice transcript messages cannot be reloaded");
|
|
499
633
|
|
|
@@ -523,6 +657,8 @@ export class LocalThreadRuntimeCore
|
|
|
523
657
|
runConfig: RunConfig | undefined,
|
|
524
658
|
runCallback?: ChatModelAdapter["run"],
|
|
525
659
|
): Promise<void> {
|
|
660
|
+
if (this.voice)
|
|
661
|
+
throw new Error("Cannot start a run while a voice session is connected");
|
|
526
662
|
this._notifyEventSubscribers("runStart", {});
|
|
527
663
|
|
|
528
664
|
// A run entered on a requires-action message resumes a pause an
|
|
@@ -555,6 +691,12 @@ export class LocalThreadRuntimeCore
|
|
|
555
691
|
);
|
|
556
692
|
runCallback = undefined;
|
|
557
693
|
if (this._activeRun !== run) break;
|
|
694
|
+
let replacement = this._messageReplacements.get(message);
|
|
695
|
+
while (replacement) {
|
|
696
|
+
message = replacement.message;
|
|
697
|
+
replacement = this._messageReplacements.get(message);
|
|
698
|
+
}
|
|
699
|
+
if (this.getMessageById(message.id)?.message !== message) break;
|
|
558
700
|
} while (shouldContinue(message, this._options.unstable_humanToolNames));
|
|
559
701
|
} finally {
|
|
560
702
|
this._notifyEventSubscribers("runEnd", {});
|
|
@@ -603,6 +745,7 @@ export class LocalThreadRuntimeCore
|
|
|
603
745
|
runCallback?: ChatModelAdapter["run"],
|
|
604
746
|
) {
|
|
605
747
|
const messages = parentId ? this.repository.getMessages(parentId) : [];
|
|
748
|
+
const modelMessages = messages.map(withoutToolInteractions);
|
|
606
749
|
|
|
607
750
|
// abort existing run
|
|
608
751
|
this.abortController?.abort();
|
|
@@ -614,23 +757,106 @@ export class LocalThreadRuntimeCore
|
|
|
614
757
|
const initialData = message.metadata?.unstable_data;
|
|
615
758
|
const initialSteps = message.metadata?.steps;
|
|
616
759
|
const initialCustom = message.metadata?.custom;
|
|
760
|
+
const externalToolCallIds = new Set<string>();
|
|
617
761
|
let hasStoredMessage = true;
|
|
618
762
|
try {
|
|
619
763
|
this.repository.getMessage(message.id);
|
|
620
764
|
} catch {
|
|
621
765
|
hasStoredMessage = false;
|
|
622
766
|
}
|
|
623
|
-
|
|
624
|
-
const ownsMessage = () => {
|
|
767
|
+
const syncOwnedMessage = () => {
|
|
625
768
|
if (!hasStoredMessage) return this._activeRun === run;
|
|
626
769
|
try {
|
|
627
|
-
|
|
770
|
+
let ownedMessage = message;
|
|
771
|
+
let replacement = this._messageReplacements.get(ownedMessage);
|
|
772
|
+
while (replacement) {
|
|
773
|
+
if (replacement.toolCallId !== undefined) {
|
|
774
|
+
externalToolCallIds.add(replacement.toolCallId);
|
|
775
|
+
}
|
|
776
|
+
ownedMessage = replacement.message;
|
|
777
|
+
replacement = this._messageReplacements.get(ownedMessage);
|
|
778
|
+
}
|
|
779
|
+
if (this.repository.getMessage(message.id).message !== ownedMessage)
|
|
780
|
+
return false;
|
|
781
|
+
message = ownedMessage;
|
|
782
|
+
return true;
|
|
628
783
|
} catch {
|
|
629
784
|
return false;
|
|
630
785
|
}
|
|
631
786
|
};
|
|
787
|
+
const withExternalResults = (parts: ThreadAssistantMessage["content"]) => {
|
|
788
|
+
const interactions = new Map<
|
|
789
|
+
string,
|
|
790
|
+
ToolCallMessagePart["unstable_interactions"]
|
|
791
|
+
>();
|
|
792
|
+
for (const part of message.content) {
|
|
793
|
+
if (
|
|
794
|
+
part.type === "tool-call" &&
|
|
795
|
+
part.unstable_interactions !== undefined
|
|
796
|
+
) {
|
|
797
|
+
interactions.set(part.toolCallId, part.unstable_interactions);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
const withInteractions = parts.map((part) => {
|
|
801
|
+
if (
|
|
802
|
+
part.type !== "tool-call" ||
|
|
803
|
+
part.unstable_interactions !== undefined
|
|
804
|
+
) {
|
|
805
|
+
return part;
|
|
806
|
+
}
|
|
807
|
+
const unstable_interactions = interactions.get(part.toolCallId);
|
|
808
|
+
return unstable_interactions === undefined
|
|
809
|
+
? part
|
|
810
|
+
: { ...part, unstable_interactions };
|
|
811
|
+
});
|
|
812
|
+
|
|
813
|
+
if (externalToolCallIds.size === 0) return withInteractions;
|
|
814
|
+
const previousToolCalls = new Map<string, ToolCallMessagePart[]>();
|
|
815
|
+
for (const part of message.content) {
|
|
816
|
+
if (
|
|
817
|
+
part.type !== "tool-call" ||
|
|
818
|
+
!externalToolCallIds.has(part.toolCallId)
|
|
819
|
+
)
|
|
820
|
+
continue;
|
|
821
|
+
const occurrences = previousToolCalls.get(part.toolCallId) ?? [];
|
|
822
|
+
occurrences.push(part);
|
|
823
|
+
previousToolCalls.set(part.toolCallId, occurrences);
|
|
824
|
+
}
|
|
825
|
+
const incomingOccurrences = new Map<string, number>();
|
|
826
|
+
return withInteractions.map((part) => {
|
|
827
|
+
if (part.type !== "tool-call") return part;
|
|
828
|
+
const occurrence = incomingOccurrences.get(part.toolCallId) ?? 0;
|
|
829
|
+
incomingOccurrences.set(part.toolCallId, occurrence + 1);
|
|
830
|
+
if (part.result !== undefined && part.isPreliminary !== true)
|
|
831
|
+
return part;
|
|
832
|
+
const completed = previousToolCalls.get(part.toolCallId)?.[occurrence];
|
|
833
|
+
if (
|
|
834
|
+
!completed ||
|
|
835
|
+
completed.result === undefined ||
|
|
836
|
+
completed.isPreliminary === true
|
|
837
|
+
)
|
|
838
|
+
return part;
|
|
839
|
+
const {
|
|
840
|
+
isPreliminary: _,
|
|
841
|
+
artifact: _artifact,
|
|
842
|
+
modelContent: _modelContent,
|
|
843
|
+
...settledPart
|
|
844
|
+
} = part;
|
|
845
|
+
return {
|
|
846
|
+
...settledPart,
|
|
847
|
+
result: completed.result,
|
|
848
|
+
isError: completed.isError,
|
|
849
|
+
...(completed.artifact !== undefined && {
|
|
850
|
+
artifact: completed.artifact,
|
|
851
|
+
}),
|
|
852
|
+
...(completed.modelContent !== undefined && {
|
|
853
|
+
modelContent: completed.modelContent,
|
|
854
|
+
}),
|
|
855
|
+
};
|
|
856
|
+
});
|
|
857
|
+
};
|
|
632
858
|
const updateMessage = (m: Partial<ChatModelRunResult>) => {
|
|
633
|
-
if (!
|
|
859
|
+
if (!syncOwnedMessage()) return;
|
|
634
860
|
const newSteps = m.metadata?.steps;
|
|
635
861
|
const steps = newSteps
|
|
636
862
|
? [...(initialSteps ?? []), ...newSteps]
|
|
@@ -643,11 +869,13 @@ export class LocalThreadRuntimeCore
|
|
|
643
869
|
: undefined;
|
|
644
870
|
const data = newData ? [...(initialData ?? []), ...newData] : undefined;
|
|
645
871
|
|
|
872
|
+
const content = m.content
|
|
873
|
+
? withExternalResults([...initialContent, ...m.content])
|
|
874
|
+
: undefined;
|
|
875
|
+
|
|
646
876
|
message = {
|
|
647
877
|
...message,
|
|
648
|
-
...(
|
|
649
|
-
? { content: [...initialContent, ...(m.content ?? [])] }
|
|
650
|
-
: undefined),
|
|
878
|
+
...(content ? { content } : undefined),
|
|
651
879
|
status: m.status ?? message.status,
|
|
652
880
|
...(m.metadata
|
|
653
881
|
? {
|
|
@@ -724,7 +952,7 @@ export class LocalThreadRuntimeCore
|
|
|
724
952
|
shouldContinue(message, this._options.unstable_humanToolNames))));
|
|
725
953
|
const threadId = this._getThreadId?.();
|
|
726
954
|
const promiseOrGenerator = runCallback({
|
|
727
|
-
messages,
|
|
955
|
+
messages: modelMessages,
|
|
728
956
|
runConfig: this._lastRunConfig,
|
|
729
957
|
abortSignal,
|
|
730
958
|
context,
|
|
@@ -732,7 +960,8 @@ export class LocalThreadRuntimeCore
|
|
|
732
960
|
unstable_threadId: threadId,
|
|
733
961
|
unstable_parentId: parentId,
|
|
734
962
|
unstable_getMessage() {
|
|
735
|
-
|
|
963
|
+
syncOwnedMessage();
|
|
964
|
+
return withoutToolInteractions(message);
|
|
736
965
|
},
|
|
737
966
|
});
|
|
738
967
|
|
|
@@ -789,6 +1018,7 @@ export class LocalThreadRuntimeCore
|
|
|
789
1018
|
}
|
|
790
1019
|
|
|
791
1020
|
const history = this._options.adapters.history;
|
|
1021
|
+
const ownsCurrentMessage = syncOwnedMessage();
|
|
792
1022
|
const item = {
|
|
793
1023
|
parentId,
|
|
794
1024
|
message,
|
|
@@ -803,7 +1033,10 @@ export class LocalThreadRuntimeCore
|
|
|
803
1033
|
|
|
804
1034
|
// Pauses are written only for adapters that can rewrite the entry later;
|
|
805
1035
|
// an append-only adapter would strand a half-finished run in history.
|
|
806
|
-
if (
|
|
1036
|
+
if (
|
|
1037
|
+
ownsCurrentMessage &&
|
|
1038
|
+
(isTerminal || (isPausing && history?.update))
|
|
1039
|
+
) {
|
|
807
1040
|
const write =
|
|
808
1041
|
alreadyPersisted && history?.update
|
|
809
1042
|
? history.update.bind(history)
|
|
@@ -843,13 +1076,26 @@ export class LocalThreadRuntimeCore
|
|
|
843
1076
|
this._suggestionsController = null;
|
|
844
1077
|
}
|
|
845
1078
|
|
|
1079
|
+
protected override _onMessageMetadataChanged(
|
|
1080
|
+
previousMessage: ThreadAssistantMessage,
|
|
1081
|
+
message: ThreadAssistantMessage,
|
|
1082
|
+
): void {
|
|
1083
|
+
this._messageReplacements.set(previousMessage, { message });
|
|
1084
|
+
this._persistMessageUpdate(message.id);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
846
1087
|
public addToolResult({
|
|
847
1088
|
messageId,
|
|
848
1089
|
toolCallId,
|
|
849
1090
|
result,
|
|
850
1091
|
isError,
|
|
851
1092
|
artifact,
|
|
1093
|
+
modelContent,
|
|
852
1094
|
}: AddToolResultOptions) {
|
|
1095
|
+
if (this.voice)
|
|
1096
|
+
throw new Error(
|
|
1097
|
+
"Cannot add a tool result while a voice session is connected",
|
|
1098
|
+
);
|
|
853
1099
|
const messageData = this.repository.getMessage(messageId);
|
|
854
1100
|
const { parentId } = messageData;
|
|
855
1101
|
let { message } = messageData;
|
|
@@ -863,34 +1109,50 @@ export class LocalThreadRuntimeCore
|
|
|
863
1109
|
if (c.type !== "tool-call") return c;
|
|
864
1110
|
if (c.toolCallId !== toolCallId) return c;
|
|
865
1111
|
found = true;
|
|
866
|
-
if (c.result === undefined) added = true;
|
|
1112
|
+
if (c.result === undefined || c.isPreliminary === true) added = true;
|
|
1113
|
+
const { isPreliminary: _isPreliminary, ...part } = c;
|
|
1114
|
+
// artifact and modelContent are optional; only override when supplied so
|
|
1115
|
+
// a later result that omits them does not clobber a stored value.
|
|
867
1116
|
return {
|
|
868
|
-
...
|
|
1117
|
+
...part,
|
|
869
1118
|
result,
|
|
870
|
-
artifact,
|
|
871
1119
|
isError,
|
|
1120
|
+
...(artifact !== undefined && { artifact }),
|
|
1121
|
+
...(modelContent !== undefined && { modelContent }),
|
|
872
1122
|
};
|
|
873
1123
|
});
|
|
874
1124
|
|
|
875
1125
|
if (!found)
|
|
876
1126
|
throw new Error("Tried to add tool result to non-existing tool call");
|
|
877
1127
|
|
|
1128
|
+
const previousMessage = message;
|
|
878
1129
|
message = {
|
|
879
1130
|
...message,
|
|
880
1131
|
content: newContent,
|
|
881
1132
|
};
|
|
1133
|
+
if (previousMessage.status.type === "running") {
|
|
1134
|
+
this._messageReplacements.set(previousMessage, {
|
|
1135
|
+
message,
|
|
1136
|
+
toolCallId,
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
882
1139
|
this.repository.addOrUpdateMessage(parentId, message);
|
|
883
1140
|
this._notifySubscribers();
|
|
1141
|
+
if (!added) return;
|
|
884
1142
|
|
|
1143
|
+
// A subscriber may replace the message while it is notified, so the resume starts from the stored entry.
|
|
1144
|
+
const stored = this.getMessageById(messageId);
|
|
885
1145
|
// a result may arrive mid-run or on a non-head message; the resume
|
|
886
1146
|
// intentionally aborts any in-flight run, unlike respondToToolApproval
|
|
887
1147
|
if (
|
|
888
|
-
|
|
889
|
-
shouldContinue(message, this._options.unstable_humanToolNames)
|
|
1148
|
+
stored?.message.role === "assistant" &&
|
|
1149
|
+
shouldContinue(stored.message, this._options.unstable_humanToolNames)
|
|
890
1150
|
) {
|
|
891
|
-
this._runLoop(parentId, message, this._lastRunConfig).catch(
|
|
892
|
-
|
|
893
|
-
|
|
1151
|
+
this._runLoop(stored.parentId, stored.message, this._lastRunConfig).catch(
|
|
1152
|
+
() => {},
|
|
1153
|
+
);
|
|
1154
|
+
} else {
|
|
1155
|
+
this._persistMessageUpdate(messageId);
|
|
894
1156
|
}
|
|
895
1157
|
}
|
|
896
1158
|
|
|
@@ -900,6 +1162,61 @@ export class LocalThreadRuntimeCore
|
|
|
900
1162
|
);
|
|
901
1163
|
}
|
|
902
1164
|
|
|
1165
|
+
public async unstable_recordToolInteraction({
|
|
1166
|
+
messageId,
|
|
1167
|
+
toolCallId,
|
|
1168
|
+
interaction,
|
|
1169
|
+
}: Unstable_RecordToolInteractionOptions): Promise<void> {
|
|
1170
|
+
let messageData: { parentId: string | null; message: ThreadMessage };
|
|
1171
|
+
try {
|
|
1172
|
+
messageData = this.repository.getMessage(messageId);
|
|
1173
|
+
} catch {
|
|
1174
|
+
throw new Error(
|
|
1175
|
+
"Tried to record a tool interaction on a non-existing message",
|
|
1176
|
+
);
|
|
1177
|
+
}
|
|
1178
|
+
const { parentId, message: previousMessage } = messageData;
|
|
1179
|
+
if (previousMessage.role !== "assistant") {
|
|
1180
|
+
throw new Error(
|
|
1181
|
+
"Tried to record a tool interaction on a non-assistant message",
|
|
1182
|
+
);
|
|
1183
|
+
}
|
|
1184
|
+
const toolCallIndex = previousMessage.content.findIndex(
|
|
1185
|
+
(part) => part.type === "tool-call" && part.toolCallId === toolCallId,
|
|
1186
|
+
);
|
|
1187
|
+
if (toolCallIndex === -1) {
|
|
1188
|
+
throw new Error(
|
|
1189
|
+
"Tried to record a tool interaction on a non-existing tool call",
|
|
1190
|
+
);
|
|
1191
|
+
}
|
|
1192
|
+
const target = previousMessage.content[toolCallIndex]!;
|
|
1193
|
+
if (target.type !== "tool-call") {
|
|
1194
|
+
throw new Error(
|
|
1195
|
+
"Tried to record a tool interaction on a non-existing tool call",
|
|
1196
|
+
);
|
|
1197
|
+
}
|
|
1198
|
+
const message: ThreadAssistantMessage = {
|
|
1199
|
+
...previousMessage,
|
|
1200
|
+
content: previousMessage.content.map((part, index) =>
|
|
1201
|
+
index === toolCallIndex
|
|
1202
|
+
? {
|
|
1203
|
+
...part,
|
|
1204
|
+
unstable_interactions: appendToolInteraction(
|
|
1205
|
+
target.unstable_interactions,
|
|
1206
|
+
interaction,
|
|
1207
|
+
),
|
|
1208
|
+
}
|
|
1209
|
+
: part,
|
|
1210
|
+
),
|
|
1211
|
+
};
|
|
1212
|
+
if (previousMessage.status.type === "running") {
|
|
1213
|
+
this._messageReplacements.set(previousMessage, { message });
|
|
1214
|
+
}
|
|
1215
|
+
this.repository.addOrUpdateMessage(parentId, message);
|
|
1216
|
+
this._notifySubscribers();
|
|
1217
|
+
this._persistMessageUpdate(message.id);
|
|
1218
|
+
}
|
|
1219
|
+
|
|
903
1220
|
public respondToToolApproval({
|
|
904
1221
|
approvalId,
|
|
905
1222
|
approved,
|
|
@@ -907,6 +1224,10 @@ export class LocalThreadRuntimeCore
|
|
|
907
1224
|
text,
|
|
908
1225
|
reason,
|
|
909
1226
|
}: RespondToToolApprovalOptions): Promise<void> {
|
|
1227
|
+
if (this.voice)
|
|
1228
|
+
throw new Error(
|
|
1229
|
+
"Cannot respond to a tool approval while a voice session is connected",
|
|
1230
|
+
);
|
|
910
1231
|
let message = this.repository
|
|
911
1232
|
.getMessages()
|
|
912
1233
|
.findLast(
|
|
@@ -972,13 +1293,17 @@ export class LocalThreadRuntimeCore
|
|
|
972
1293
|
approved,
|
|
973
1294
|
);
|
|
974
1295
|
|
|
1296
|
+
const stored = this.getMessageById(message.id);
|
|
975
1297
|
if (
|
|
976
1298
|
this.repository.headId === message.id &&
|
|
977
|
-
|
|
1299
|
+
stored?.message.role === "assistant" &&
|
|
1300
|
+
shouldContinue(stored.message, this._options.unstable_humanToolNames)
|
|
978
1301
|
) {
|
|
979
|
-
this._runLoop(parentId, message, this._lastRunConfig).catch(
|
|
1302
|
+
this._runLoop(stored.parentId, stored.message, this._lastRunConfig).catch(
|
|
1303
|
+
() => {},
|
|
1304
|
+
);
|
|
980
1305
|
} else {
|
|
981
|
-
this.
|
|
1306
|
+
this._persistMessageUpdate(message.id);
|
|
982
1307
|
}
|
|
983
1308
|
|
|
984
1309
|
return Promise.resolve();
|