@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
|
@@ -64,7 +64,15 @@ The tracker does **not** restart the stream and does **not** invoke
|
|
|
64
64
|
`streamCall` a second time. Logs the divergence in non-prod. The host's
|
|
65
65
|
existing `streamCall` keeps its original args view.
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
The tracked `argsText` advances to the new value, so a snapshot that
|
|
68
|
+
re-observes the same change logs once rather than on every rebuild. This
|
|
69
|
+
is safe only because the stream is already closed; A.2 must keep the
|
|
70
|
+
pre-regression value, since it still drives delta calculation. It also
|
|
71
|
+
means a demoted entry (F.4) carries the changed text, so a pipeline
|
|
72
|
+
restart no longer promotes it and re-fires `streamCall` for a change the
|
|
73
|
+
host's original args view already excluded.
|
|
74
|
+
|
|
75
|
+
### A.5. First resolution (a final `result` becomes defined)
|
|
68
76
|
The tracker calls `setResponse` on the active controller and closes it.
|
|
69
77
|
The backend result is emitted before the args stream closes, so a stale
|
|
70
78
|
args parse failure cannot replace it. `reader.response.get()` resolves.
|
|
@@ -172,7 +180,7 @@ while its `onDelete` path never aborts at all. `reset()` is unaffected
|
|
|
172
180
|
either way: it clears `_entries` and the recorded ids before aborting,
|
|
173
181
|
because it opens a new execution boundary.
|
|
174
182
|
|
|
175
|
-
An id is forgotten once a live snapshot observes the call with a result,
|
|
183
|
+
An id is forgotten once a live snapshot observes the call with a final result,
|
|
176
184
|
which bounds the set to the open calls of a discarded turn. That is all
|
|
177
185
|
it does: an id re-emitted inside the same execution boundary keeps its
|
|
178
186
|
existing entry, so A.4 and A.7 govern it rather than this set, and a new
|
|
@@ -188,6 +196,11 @@ each snapshot and provider ownership is recomputed, while a rebuilt entry
|
|
|
188
196
|
would otherwise come back clean. That is what lets F.4 drop a waiting entry
|
|
189
197
|
without a special case.
|
|
190
198
|
|
|
199
|
+
### A.12. An interim result (`isPreliminary`)
|
|
200
|
+
A result flagged `isPreliminary` marks the entry `skipExecute` like any backend result and reaches the active controller as a preliminary response, which keeps the part open. `entry.hasResult` stays false, so each later snapshot hands the controller its current interim value, while the skip marker keeps the frontend `execute` from running and drops the echo of each value at the result-chunk handler, so `onResult` never fires for it. `reader.response.get()` resolves only when the final result lands, which is A.5 for that call.
|
|
201
|
+
|
|
202
|
+
A restored or demoted (F.4) entry holding an interim result counts as unresolved, so C.3 promotes it only when its final result lands or its `argsText` changes.
|
|
203
|
+
|
|
191
204
|
## B. Tool call disappears from snapshot
|
|
192
205
|
|
|
193
206
|
### B.1. Tool call removed entirely (rollback, branch switch)
|
|
@@ -211,7 +224,7 @@ Silently kept as restored. Recursion into `content.messages` still
|
|
|
211
224
|
happens so any nested live tool calls are processed.
|
|
212
225
|
|
|
213
226
|
### C.3. Restored entry observed in a live snapshot, signature changed
|
|
214
|
-
A restored entry with a result remains historical regardless of later `argsText` or result changes. An unresolved restored entry is promoted only when a result lands or its `argsText` changes. Complete `argsText` values that parse to equivalent JSON are unchanged. Promotion deletes the restored entry and starts a new active entry via `_startActiveEntry`. `streamCall` fires once, its first and only fire for this `toolCallId`.
|
|
227
|
+
A restored entry with a final result remains historical regardless of later `argsText` or result changes. An unresolved restored entry, with no result or only an interim one (A.12), is promoted only when a final result lands or its `argsText` changes. Complete `argsText` values that parse to equivalent JSON are unchanged. Promotion deletes the restored entry and starts a new active entry via `_startActiveEntry`. `streamCall` fires once, its first and only fire for this `toolCallId`.
|
|
215
228
|
|
|
216
229
|
### C.4. `isLoading` transitions `true → false` while messages are stable
|
|
217
230
|
The next `setState` call sees `isLoading === false` and processes
|
|
@@ -291,7 +304,9 @@ and a call waiting on the run to settle (A.10) already holds its final
|
|
|
291
304
|
args, so demoting it would strand it unexecuted.
|
|
292
305
|
|
|
293
306
|
Starting it over re-fires `streamCall`, which the restart path already
|
|
294
|
-
does for any demoted entry whose signature later changes.
|
|
307
|
+
does for any demoted entry whose signature later changes. A change that
|
|
308
|
+
already happened after completion (A.4) is not such a change: the demoted
|
|
309
|
+
entry carries the changed text, so the restart does not promote it. The rebuilt
|
|
295
310
|
pipeline holds no part for the call, so nothing can reach the executor
|
|
296
311
|
without adding one; a restart is an execution boundary in the same sense
|
|
297
312
|
`reset()` is. Repeated failures
|
|
@@ -44,6 +44,7 @@ const createAssistantMessage = (
|
|
|
44
44
|
options?: {
|
|
45
45
|
result?: ReadonlyJSONValue;
|
|
46
46
|
isError?: boolean;
|
|
47
|
+
isPreliminary?: boolean;
|
|
47
48
|
toolCallId?: string;
|
|
48
49
|
toolName?: string;
|
|
49
50
|
nestedMessages?: ThreadAssistantMessage[];
|
|
@@ -70,6 +71,9 @@ const createAssistantMessage = (
|
|
|
70
71
|
argsText,
|
|
71
72
|
...(options?.result !== undefined && { result: options.result }),
|
|
72
73
|
...(options?.isError !== undefined && { isError: options.isError }),
|
|
74
|
+
...(options?.isPreliminary !== undefined && {
|
|
75
|
+
isPreliminary: options.isPreliminary,
|
|
76
|
+
}),
|
|
73
77
|
...(options?.nestedMessages && { messages: options.nestedMessages }),
|
|
74
78
|
...(options?.approval && { approval: options.approval }),
|
|
75
79
|
},
|
|
@@ -292,51 +296,203 @@ describe("ToolInvocationTracker", () => {
|
|
|
292
296
|
expect(statuses).toEqual({});
|
|
293
297
|
});
|
|
294
298
|
|
|
295
|
-
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
)
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
299
|
+
describe("human-input requests from streamCall", () => {
|
|
300
|
+
const trackStreamCallHuman = () => {
|
|
301
|
+
let statuses: Record<string, ToolExecutionStatus> = {};
|
|
302
|
+
const tracker = new ToolInvocationTracker(
|
|
303
|
+
() => ({
|
|
304
|
+
weatherSearch: {
|
|
305
|
+
parameters: { type: "object", properties: {} },
|
|
306
|
+
streamCall: async (_reader, { human }) => {
|
|
307
|
+
await human({ request: "approve" }).catch(() => {});
|
|
308
|
+
},
|
|
309
|
+
} satisfies Tool,
|
|
310
|
+
}),
|
|
311
|
+
{
|
|
312
|
+
onResult: vi.fn(),
|
|
313
|
+
onStatusesChange: (s: ReadonlyMap<string, ToolExecutionStatus>) => {
|
|
314
|
+
statuses = Object.fromEntries(s);
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
);
|
|
318
|
+
tracker.setState(createState([], false));
|
|
319
|
+
tracker.setState(
|
|
320
|
+
createState(
|
|
321
|
+
[createAssistantMessage('{"query":"London"}', { query: "London" })],
|
|
322
|
+
false,
|
|
323
|
+
),
|
|
324
|
+
);
|
|
325
|
+
return { tracker, statuses: () => statuses };
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
it("clears the call's status once the request is resumed", async () => {
|
|
329
|
+
const { tracker, statuses } = trackStreamCallHuman();
|
|
330
|
+
await waitFor(() => {
|
|
331
|
+
expect(statuses()["tool-1"]?.type).toBe("interrupt");
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
expect(tracker.resume("tool-1", true)).toBe(true);
|
|
335
|
+
|
|
336
|
+
expect(statuses()).toEqual({});
|
|
324
337
|
});
|
|
325
338
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
[
|
|
330
|
-
|
|
331
|
-
),
|
|
332
|
-
);
|
|
339
|
+
it("clears the call's interrupt when the tracker aborts", async () => {
|
|
340
|
+
const { tracker, statuses } = trackStreamCallHuman();
|
|
341
|
+
await waitFor(() => {
|
|
342
|
+
expect(statuses()["tool-1"]?.type).toBe("interrupt");
|
|
343
|
+
});
|
|
333
344
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
expect(statuses
|
|
345
|
+
await tracker.abort();
|
|
346
|
+
|
|
347
|
+
expect(statuses()).toEqual({});
|
|
337
348
|
});
|
|
338
349
|
});
|
|
339
350
|
|
|
351
|
+
it.each(["resume", "abort"] as const)(
|
|
352
|
+
"marks an execute still running after %s executing until it settles",
|
|
353
|
+
async (end) => {
|
|
354
|
+
let finish!: () => void;
|
|
355
|
+
const execute = vi.fn(async (_args, { human }) => {
|
|
356
|
+
await human({ request: "approve" }).catch(() => undefined);
|
|
357
|
+
await new Promise<void>((resolve) => (finish = resolve));
|
|
358
|
+
return { approved: true };
|
|
359
|
+
});
|
|
360
|
+
let statuses: Record<string, ToolExecutionStatus> = {};
|
|
361
|
+
const tracker = new ToolInvocationTracker(
|
|
362
|
+
() => ({
|
|
363
|
+
weatherSearch: {
|
|
364
|
+
parameters: { type: "object", properties: {} },
|
|
365
|
+
execute,
|
|
366
|
+
} satisfies Tool,
|
|
367
|
+
}),
|
|
368
|
+
{
|
|
369
|
+
onResult: vi.fn(),
|
|
370
|
+
onStatusesChange: (s: ReadonlyMap<string, ToolExecutionStatus>) => {
|
|
371
|
+
statuses = Object.fromEntries(s);
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
);
|
|
375
|
+
tracker.setState(createState([], false));
|
|
376
|
+
tracker.setState(
|
|
377
|
+
createState(
|
|
378
|
+
[createAssistantMessage('{"query":"London"}', { query: "London" })],
|
|
379
|
+
false,
|
|
380
|
+
),
|
|
381
|
+
);
|
|
382
|
+
await waitFor(() => {
|
|
383
|
+
expect(statuses["tool-1"]?.type).toBe("interrupt");
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
if (end === "resume") tracker.resume("tool-1", true);
|
|
387
|
+
else void tracker.abort();
|
|
388
|
+
expect(statuses["tool-1"]?.type).toBe("executing");
|
|
389
|
+
|
|
390
|
+
await waitFor(() => expect(finish).toBeDefined());
|
|
391
|
+
finish();
|
|
392
|
+
await waitFor(() => expect(statuses).toEqual({}));
|
|
393
|
+
},
|
|
394
|
+
);
|
|
395
|
+
|
|
396
|
+
it.each(["resume", "abort"] as const)(
|
|
397
|
+
"marks a fresh execution as executing when an earlier one left a human-input request behind, and keeps it after %s() ends that request",
|
|
398
|
+
async (ending) => {
|
|
399
|
+
const execute = vi
|
|
400
|
+
.fn()
|
|
401
|
+
.mockImplementationOnce((_args, { human }) =>
|
|
402
|
+
human({ request: "approve" }),
|
|
403
|
+
)
|
|
404
|
+
.mockImplementationOnce(() => new Promise(() => {}));
|
|
405
|
+
const getTools = () => ({
|
|
406
|
+
weatherSearch: {
|
|
407
|
+
parameters: { type: "object", properties: {} },
|
|
408
|
+
execute,
|
|
409
|
+
} satisfies Tool,
|
|
410
|
+
});
|
|
411
|
+
let statuses: Record<string, ToolExecutionStatus> = {};
|
|
412
|
+
const tracker = new ToolInvocationTracker(getTools, {
|
|
413
|
+
onResult: vi.fn(),
|
|
414
|
+
onStatusesChange: (s: ReadonlyMap<string, ToolExecutionStatus>) => {
|
|
415
|
+
statuses = Object.fromEntries(s);
|
|
416
|
+
},
|
|
417
|
+
});
|
|
418
|
+
tracker.setState(createState([], false));
|
|
419
|
+
tracker.setState(
|
|
420
|
+
createState(
|
|
421
|
+
[createAssistantMessage('{"query":"London"}', { query: "London" })],
|
|
422
|
+
false,
|
|
423
|
+
),
|
|
424
|
+
);
|
|
425
|
+
await waitFor(() => {
|
|
426
|
+
expect(statuses["tool-1"]?.type).toBe("interrupt");
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
killPipeline(tracker);
|
|
430
|
+
tracker.setState(
|
|
431
|
+
createState(
|
|
432
|
+
[createAssistantMessage('{"query":"Paris"}', { query: "Paris" })],
|
|
433
|
+
false,
|
|
434
|
+
),
|
|
435
|
+
);
|
|
436
|
+
|
|
437
|
+
await waitFor(() => {
|
|
438
|
+
expect(execute).toHaveBeenCalledTimes(2);
|
|
439
|
+
expect(statuses["tool-1"]?.type).toBe("executing");
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
if (ending === "resume") tracker.resume("tool-1", true);
|
|
443
|
+
else void tracker.abort();
|
|
444
|
+
expect(statuses["tool-1"]?.type).toBe("executing");
|
|
445
|
+
},
|
|
446
|
+
);
|
|
447
|
+
|
|
448
|
+
it.each(["resume", "abort"] as const)(
|
|
449
|
+
"clears the status when %s() ends a request no execution owns after a pipeline restart",
|
|
450
|
+
async (ending) => {
|
|
451
|
+
const execute = vi.fn((_args, { human }) =>
|
|
452
|
+
human({ request: "approve" }),
|
|
453
|
+
);
|
|
454
|
+
let statuses: Record<string, ToolExecutionStatus> = {};
|
|
455
|
+
const tracker = new ToolInvocationTracker(
|
|
456
|
+
() => ({
|
|
457
|
+
weatherSearch: {
|
|
458
|
+
parameters: { type: "object", properties: {} },
|
|
459
|
+
execute,
|
|
460
|
+
} satisfies Tool,
|
|
461
|
+
}),
|
|
462
|
+
{
|
|
463
|
+
onResult: vi.fn(),
|
|
464
|
+
onStatusesChange: (s: ReadonlyMap<string, ToolExecutionStatus>) => {
|
|
465
|
+
statuses = Object.fromEntries(s);
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
);
|
|
469
|
+
tracker.setState(createState([], false));
|
|
470
|
+
tracker.setState(
|
|
471
|
+
createState(
|
|
472
|
+
[createAssistantMessage('{"query":"London"}', { query: "London" })],
|
|
473
|
+
false,
|
|
474
|
+
),
|
|
475
|
+
);
|
|
476
|
+
await waitFor(() => {
|
|
477
|
+
expect(statuses["tool-1"]?.type).toBe("interrupt");
|
|
478
|
+
});
|
|
479
|
+
|
|
480
|
+
killPipeline(tracker);
|
|
481
|
+
tracker.setState(
|
|
482
|
+
createState(
|
|
483
|
+
[createAssistantMessage('{"query":"London"}', { query: "London" })],
|
|
484
|
+
false,
|
|
485
|
+
),
|
|
486
|
+
);
|
|
487
|
+
expect(execute).toHaveBeenCalledTimes(1);
|
|
488
|
+
|
|
489
|
+
if (ending === "resume")
|
|
490
|
+
expect(tracker.resume("tool-1", true)).toBe(true);
|
|
491
|
+
else await tracker.abort();
|
|
492
|
+
expect(statuses).toEqual({});
|
|
493
|
+
},
|
|
494
|
+
);
|
|
495
|
+
|
|
340
496
|
it("does not auto-submit a parse-error result for a non-executable tool whose divergent argsText closes", async () => {
|
|
341
497
|
// Same close-gating mismatch as the executable case, but for a tool with
|
|
342
498
|
// no frontend execute. Closing on the divergent complete snapshot would
|
|
@@ -913,6 +1069,38 @@ describe("ToolInvocationTracker", () => {
|
|
|
913
1069
|
await waitFor(() => expect(onResult).toHaveBeenCalledTimes(1));
|
|
914
1070
|
});
|
|
915
1071
|
|
|
1072
|
+
it("does not re-fire streamCall for a call holding a preliminary result when the pipeline restarts", async () => {
|
|
1073
|
+
const streamCall = vi.fn();
|
|
1074
|
+
const tracker = new ToolInvocationTracker(
|
|
1075
|
+
() => ({
|
|
1076
|
+
weatherSearch: {
|
|
1077
|
+
parameters: { type: "object", properties: {} },
|
|
1078
|
+
streamCall,
|
|
1079
|
+
} satisfies Tool,
|
|
1080
|
+
}),
|
|
1081
|
+
{ onResult: vi.fn(), onStatusesChange: () => {} },
|
|
1082
|
+
);
|
|
1083
|
+
const interim = () =>
|
|
1084
|
+
createState([
|
|
1085
|
+
createAssistantMessage(
|
|
1086
|
+
'{"city":"London"}',
|
|
1087
|
+
{ city: "London" },
|
|
1088
|
+
{ result: { forecast: "interim" }, isPreliminary: true },
|
|
1089
|
+
),
|
|
1090
|
+
]);
|
|
1091
|
+
tracker.setState(createState([]));
|
|
1092
|
+
tracker.setState(interim());
|
|
1093
|
+
await waitFor(() => {
|
|
1094
|
+
expect(streamCall).toHaveBeenCalledOnce();
|
|
1095
|
+
});
|
|
1096
|
+
|
|
1097
|
+
killPipeline(tracker);
|
|
1098
|
+
tracker.setState(interim());
|
|
1099
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
1100
|
+
|
|
1101
|
+
expect(streamCall).toHaveBeenCalledOnce();
|
|
1102
|
+
});
|
|
1103
|
+
|
|
916
1104
|
it("never executes a registered tool the provider gates before its run ends", async () => {
|
|
917
1105
|
const execute = vi.fn(async () => ({ deleted: true }));
|
|
918
1106
|
const getTools = () => ({
|
|
@@ -1598,6 +1786,52 @@ describe("ToolInvocationTracker", () => {
|
|
|
1598
1786
|
expect(equivalentStreamCall).not.toHaveBeenCalled();
|
|
1599
1787
|
});
|
|
1600
1788
|
|
|
1789
|
+
it("keeps a tool call restored with a preliminary result historical until its final result lands", async () => {
|
|
1790
|
+
const streamCall = vi.fn();
|
|
1791
|
+
const onResult = vi.fn();
|
|
1792
|
+
const tracker = new ToolInvocationTracker(
|
|
1793
|
+
() => ({
|
|
1794
|
+
weatherSearch: {
|
|
1795
|
+
parameters: { type: "object", properties: {} },
|
|
1796
|
+
streamCall,
|
|
1797
|
+
} satisfies Tool,
|
|
1798
|
+
}),
|
|
1799
|
+
{ onResult, onStatusesChange: () => {} },
|
|
1800
|
+
);
|
|
1801
|
+
const interim = () =>
|
|
1802
|
+
createState([
|
|
1803
|
+
createAssistantMessage(
|
|
1804
|
+
'{"city":"London"}',
|
|
1805
|
+
{ city: "London" },
|
|
1806
|
+
{ result: { forecast: "interim" }, isPreliminary: true },
|
|
1807
|
+
),
|
|
1808
|
+
]);
|
|
1809
|
+
|
|
1810
|
+
tracker.setState(interim());
|
|
1811
|
+
tracker.setState(interim());
|
|
1812
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
1813
|
+
expect(streamCall).not.toHaveBeenCalled();
|
|
1814
|
+
|
|
1815
|
+
tracker.setState(
|
|
1816
|
+
createState([
|
|
1817
|
+
createAssistantMessage(
|
|
1818
|
+
'{"city":"London"}',
|
|
1819
|
+
{ city: "London" },
|
|
1820
|
+
{ result: { forecast: "final" } },
|
|
1821
|
+
),
|
|
1822
|
+
]),
|
|
1823
|
+
);
|
|
1824
|
+
|
|
1825
|
+
await waitFor(() => {
|
|
1826
|
+
expect(streamCall).toHaveBeenCalledOnce();
|
|
1827
|
+
});
|
|
1828
|
+
const [reader] = streamCall.mock.calls[0]!;
|
|
1829
|
+
await expect(reader.response.get()).resolves.toMatchObject({
|
|
1830
|
+
result: { forecast: "final" },
|
|
1831
|
+
});
|
|
1832
|
+
expect(onResult).not.toHaveBeenCalled();
|
|
1833
|
+
});
|
|
1834
|
+
|
|
1601
1835
|
it("promotes an in-progress tool call from the initial snapshot when it changes", async () => {
|
|
1602
1836
|
const execute = vi.fn(async () => ({ forecast: "ok" }));
|
|
1603
1837
|
const streamCall = vi.fn();
|
|
@@ -2042,6 +2276,78 @@ describe("ToolInvocationTracker", () => {
|
|
|
2042
2276
|
warnSpy.mockRestore();
|
|
2043
2277
|
}
|
|
2044
2278
|
});
|
|
2279
|
+
|
|
2280
|
+
it("keeps a preliminary backend result open until the final result", async () => {
|
|
2281
|
+
const execute = vi.fn(async () => ({ forecast: "client" }));
|
|
2282
|
+
const streamCall = vi.fn();
|
|
2283
|
+
const onResult = vi.fn();
|
|
2284
|
+
const tracker = new ToolInvocationTracker(
|
|
2285
|
+
() => ({
|
|
2286
|
+
weatherSearch: {
|
|
2287
|
+
parameters: { type: "object", properties: {} },
|
|
2288
|
+
execute,
|
|
2289
|
+
streamCall,
|
|
2290
|
+
} satisfies Tool,
|
|
2291
|
+
}),
|
|
2292
|
+
{ onResult, onStatusesChange: () => {} },
|
|
2293
|
+
);
|
|
2294
|
+
tracker.setState(createState([]));
|
|
2295
|
+
tracker.setState(
|
|
2296
|
+
createState([
|
|
2297
|
+
createAssistantMessage('{"city":"London"}', { city: "London" }),
|
|
2298
|
+
]),
|
|
2299
|
+
);
|
|
2300
|
+
|
|
2301
|
+
await waitFor(() => {
|
|
2302
|
+
expect(streamCall).toHaveBeenCalledOnce();
|
|
2303
|
+
});
|
|
2304
|
+
const [reader] = streamCall.mock.calls[0]!;
|
|
2305
|
+
let resolved = false;
|
|
2306
|
+
void reader.response.get().then(() => {
|
|
2307
|
+
resolved = true;
|
|
2308
|
+
});
|
|
2309
|
+
|
|
2310
|
+
tracker.setState(
|
|
2311
|
+
createState([
|
|
2312
|
+
createAssistantMessage(
|
|
2313
|
+
'{"city":"London"}',
|
|
2314
|
+
{ city: "London" },
|
|
2315
|
+
{ result: { forecast: "interim" }, isPreliminary: true },
|
|
2316
|
+
),
|
|
2317
|
+
]),
|
|
2318
|
+
);
|
|
2319
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
2320
|
+
expect(resolved).toBe(false);
|
|
2321
|
+
|
|
2322
|
+
tracker.setState(
|
|
2323
|
+
createState([
|
|
2324
|
+
createAssistantMessage(
|
|
2325
|
+
'{"city":"London"}',
|
|
2326
|
+
{ city: "London" },
|
|
2327
|
+
{ result: { forecast: "interim 2" }, isPreliminary: true },
|
|
2328
|
+
),
|
|
2329
|
+
]),
|
|
2330
|
+
);
|
|
2331
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
2332
|
+
expect(resolved).toBe(false);
|
|
2333
|
+
|
|
2334
|
+
tracker.setState(
|
|
2335
|
+
createState([
|
|
2336
|
+
createAssistantMessage(
|
|
2337
|
+
'{"city":"London"}',
|
|
2338
|
+
{ city: "London" },
|
|
2339
|
+
{ result: { forecast: "final" } },
|
|
2340
|
+
),
|
|
2341
|
+
]),
|
|
2342
|
+
);
|
|
2343
|
+
|
|
2344
|
+
await expect(reader.response.get()).resolves.toMatchObject({
|
|
2345
|
+
result: { forecast: "final" },
|
|
2346
|
+
});
|
|
2347
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
2348
|
+
expect(execute).not.toHaveBeenCalled();
|
|
2349
|
+
expect(onResult).not.toHaveBeenCalled();
|
|
2350
|
+
});
|
|
2045
2351
|
});
|
|
2046
2352
|
|
|
2047
2353
|
describe("ToolInvocationTracker reset", () => {
|
|
@@ -2301,4 +2607,51 @@ describe("ToolInvocationTracker reset", () => {
|
|
|
2301
2607
|
|
|
2302
2608
|
tracker.reset();
|
|
2303
2609
|
});
|
|
2610
|
+
|
|
2611
|
+
it("warns exactly once when a settled tool call's args change is re-observed across renders", async () => {
|
|
2612
|
+
// External-store / AI-SDK runtimes rebuild the messages array on update, so
|
|
2613
|
+
// a settled tool part is re-diffed each snapshot. A post-completion
|
|
2614
|
+
// non-equivalent args change must be recorded so the same change is diffed
|
|
2615
|
+
// once; otherwise it re-warns on every re-observation while retaining both
|
|
2616
|
+
// copies of the payload, which can grow unbounded on large args.
|
|
2617
|
+
const getTools = () => ({
|
|
2618
|
+
weatherSearch: {
|
|
2619
|
+
parameters: { type: "object", properties: {} },
|
|
2620
|
+
} satisfies Tool,
|
|
2621
|
+
});
|
|
2622
|
+
const onResult = vi.fn();
|
|
2623
|
+
const onStatusesChange = () => {};
|
|
2624
|
+
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
2625
|
+
|
|
2626
|
+
try {
|
|
2627
|
+
const tracker = new ToolInvocationTracker(getTools, {
|
|
2628
|
+
onResult,
|
|
2629
|
+
onStatusesChange,
|
|
2630
|
+
});
|
|
2631
|
+
tracker.setState(createState([], false));
|
|
2632
|
+
|
|
2633
|
+
// Settle the call with complete args (not running → args stream closes).
|
|
2634
|
+
tracker.setState(
|
|
2635
|
+
createState([createAssistantMessage('{"a":1}', { a: 1 })], false),
|
|
2636
|
+
);
|
|
2637
|
+
|
|
2638
|
+
const afterFirstCompletion = () =>
|
|
2639
|
+
warnSpy.mock.calls.filter((call) =>
|
|
2640
|
+
String(call[0]).includes("changed after first completion"),
|
|
2641
|
+
).length;
|
|
2642
|
+
|
|
2643
|
+
// A non-equivalent args change after completion, re-observed across three
|
|
2644
|
+
// renders with a fresh messages array each time (identity differs, so the
|
|
2645
|
+
// fast-path skip does not fire).
|
|
2646
|
+
for (let i = 0; i < 3; i++) {
|
|
2647
|
+
tracker.setState(
|
|
2648
|
+
createState([createAssistantMessage('{"a":2}', { a: 2 })], false),
|
|
2649
|
+
);
|
|
2650
|
+
}
|
|
2651
|
+
|
|
2652
|
+
expect(afterFirstCompletion()).toBe(1);
|
|
2653
|
+
} finally {
|
|
2654
|
+
warnSpy.mockRestore();
|
|
2655
|
+
}
|
|
2656
|
+
});
|
|
2304
2657
|
});
|
|
@@ -88,6 +88,9 @@ const isEquivalentCompleteArgsText = (previous: string, next: string) => {
|
|
|
88
88
|
return isJSONValueEqual(previousValue, nextValue);
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
+
const hasFinalResult = (part: ToolCallMessagePart) =>
|
|
92
|
+
part.result !== undefined && part.isPreliminary !== true;
|
|
93
|
+
|
|
91
94
|
const getToolExecutionId = (value: object): symbol | undefined =>
|
|
92
95
|
(value as Record<PropertyKey, unknown>)[TOOL_EXECUTION_ID] as
|
|
93
96
|
| symbol
|
|
@@ -335,13 +338,14 @@ export class ToolInvocationTracker {
|
|
|
335
338
|
*/
|
|
336
339
|
public abort(options?: { discardPending?: boolean }): Promise<void> {
|
|
337
340
|
try {
|
|
338
|
-
this._humanInput.forEach(({ reject }) => {
|
|
341
|
+
this._humanInput.forEach(({ executionId, reject }, toolCallId) => {
|
|
339
342
|
try {
|
|
340
343
|
reject(new Error("Tool execution aborted"));
|
|
341
344
|
} catch {
|
|
342
345
|
// host rejection handler threw — already in the abort path,
|
|
343
346
|
// swallow so we continue cleaning up.
|
|
344
347
|
}
|
|
348
|
+
this._endHumanRequest(toolCallId, executionId);
|
|
345
349
|
});
|
|
346
350
|
this._humanInput.clear();
|
|
347
351
|
|
|
@@ -370,6 +374,19 @@ export class ToolInvocationTracker {
|
|
|
370
374
|
}
|
|
371
375
|
}
|
|
372
376
|
|
|
377
|
+
// A request from streamCall has no execution whose end would clear the
|
|
378
|
+
// status, so the call is only marked executing while one runs, and a request
|
|
379
|
+
// left behind by an earlier execution leaves a newer execution's status alone.
|
|
380
|
+
private _endHumanRequest(toolCallId: string, executionId: symbol) {
|
|
381
|
+
if (this._executing.has(executionId)) {
|
|
382
|
+
this._setStatus(toolCallId, { type: "executing" });
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
const owner = this._entries.get(toolCallId)?.executionId;
|
|
386
|
+
if (owner === undefined || owner === executionId)
|
|
387
|
+
this._deleteStatus(toolCallId);
|
|
388
|
+
}
|
|
389
|
+
|
|
373
390
|
/**
|
|
374
391
|
* Resolve a pending human-input request for the given tool call. Returns
|
|
375
392
|
* `true` if a pending request was resumed, `false` if the tracker has no
|
|
@@ -381,7 +398,7 @@ export class ToolInvocationTracker {
|
|
|
381
398
|
const handlers = this._humanInput.get(toolCallId);
|
|
382
399
|
if (!handlers) return false;
|
|
383
400
|
this._humanInput.delete(toolCallId);
|
|
384
|
-
this.
|
|
401
|
+
this._endHumanRequest(toolCallId, handlers.executionId);
|
|
385
402
|
handlers.resolve(payload);
|
|
386
403
|
return true;
|
|
387
404
|
} catch (err) {
|
|
@@ -727,6 +744,7 @@ export class ToolInvocationTracker {
|
|
|
727
744
|
},
|
|
728
745
|
);
|
|
729
746
|
}
|
|
747
|
+
entry.argsText = content.argsText;
|
|
730
748
|
shouldWriteArgsText = false;
|
|
731
749
|
}
|
|
732
750
|
} else if (!content.argsText.startsWith(entry.argsText)) {
|
|
@@ -810,7 +828,7 @@ export class ToolInvocationTracker {
|
|
|
810
828
|
this._entries.set(content.toolCallId, {
|
|
811
829
|
toolName: content.toolName,
|
|
812
830
|
argsText: content.argsText,
|
|
813
|
-
hasResult: content
|
|
831
|
+
hasResult: hasFinalResult(content),
|
|
814
832
|
});
|
|
815
833
|
}
|
|
816
834
|
continue;
|
|
@@ -821,11 +839,11 @@ export class ToolInvocationTracker {
|
|
|
821
839
|
|
|
822
840
|
// A discarded id is remembered only until the call is answered, which
|
|
823
841
|
// bounds the set to the open calls of a discarded turn.
|
|
824
|
-
if (content
|
|
842
|
+
if (hasFinalResult(content))
|
|
825
843
|
this._discardedToolCallIds.delete(content.toolCallId);
|
|
826
844
|
|
|
827
845
|
if (entry && !entry.controller) {
|
|
828
|
-
// A restored entry with a result remains historical.
|
|
846
|
+
// A restored entry with a final result remains historical.
|
|
829
847
|
if (entry.hasResult) continue;
|
|
830
848
|
const argsChanged =
|
|
831
849
|
content.argsText !== entry.argsText &&
|
|
@@ -834,7 +852,7 @@ export class ToolInvocationTracker {
|
|
|
834
852
|
isArgsTextComplete(content.argsText) &&
|
|
835
853
|
isEquivalentCompleteArgsText(entry.argsText, content.argsText)
|
|
836
854
|
);
|
|
837
|
-
if (!argsChanged && content
|
|
855
|
+
if (!argsChanged && !hasFinalResult(content)) continue;
|
|
838
856
|
this._entries.delete(content.toolCallId);
|
|
839
857
|
entry = undefined;
|
|
840
858
|
}
|
|
@@ -855,6 +873,8 @@ export class ToolInvocationTracker {
|
|
|
855
873
|
);
|
|
856
874
|
}
|
|
857
875
|
|
|
876
|
+
if (content.result !== undefined) entry.skipExecute = true;
|
|
877
|
+
|
|
858
878
|
if (content.approval !== undefined) entry.skipExecute = true;
|
|
859
879
|
|
|
860
880
|
this._processArgsText(entry, content);
|
|
@@ -865,19 +885,22 @@ export class ToolInvocationTracker {
|
|
|
865
885
|
// controller. Narrow once instead of asserting at every use.
|
|
866
886
|
const { controller: activeController } = entry;
|
|
867
887
|
if (!activeController) continue;
|
|
868
|
-
entry.hasResult = true;
|
|
869
888
|
entry.argsComplete = true;
|
|
870
889
|
activeController.setResponse(
|
|
871
890
|
new ToolResponse({
|
|
872
891
|
result: content.result as ReadonlyJSONValue,
|
|
873
892
|
artifact: content.artifact as ReadonlyJSONValue | undefined,
|
|
874
893
|
isError: content.isError,
|
|
894
|
+
isPreliminary: content.isPreliminary,
|
|
875
895
|
...(content.modelContent !== undefined
|
|
876
896
|
? { modelContent: content.modelContent }
|
|
877
897
|
: {}),
|
|
878
898
|
}),
|
|
879
899
|
);
|
|
880
|
-
|
|
900
|
+
if (hasFinalResult(content)) {
|
|
901
|
+
entry.hasResult = true;
|
|
902
|
+
activeController.close();
|
|
903
|
+
}
|
|
881
904
|
}
|
|
882
905
|
}
|
|
883
906
|
}
|