@assistant-ui/core 0.3.19 → 0.3.20
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 +9 -10
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +2 -1
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +1 -2
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +2 -2
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/speech.d.ts +6 -7
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/suggestion.d.ts +5 -6
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +6 -7
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +1 -2
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +5 -6
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -2
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/model-context/frame/host.d.ts +1 -2
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/provider.d.ts +1 -2
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/types.d.ts +5 -6
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.d.ts +9 -10
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/registry-handles.d.ts +3 -4
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +1 -2
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +2 -3
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +2 -3
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +8 -9
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +3 -4
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +1 -2
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +2 -3
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +4 -5
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +20 -34
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -3
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +1 -2
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +1 -2
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +3 -4
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +1 -2
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +2 -3
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/Tools.d.ts +2 -2
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +2 -3
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.d.ts +1 -2
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +2 -3
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +9 -10
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +2 -3
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +1 -2
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +1 -2
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +4 -5
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +2 -3
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -2
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -4
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +3 -4
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -3
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +2 -3
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -3
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +2 -3
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -2
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +9 -10
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +2 -2
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +2 -3
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +2 -2
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +2 -3
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +2 -3
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +1 -2
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +1 -2
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +4 -5
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +1 -2
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +1 -2
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +2 -3
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +2 -3
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +1 -2
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +2 -3
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +1 -2
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +1 -2
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +1 -2
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +1 -2
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +1 -2
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +1 -2
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +1 -2
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +1 -2
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +1 -2
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -2
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +1 -2
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +1 -2
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -2
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +1 -2
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +2 -3
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -2
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +3 -4
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +2 -3
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -5
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +4 -5
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -3
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +4 -5
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +27 -28
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +4 -5
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +2 -3
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +10 -10
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +2 -3
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -3
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +3 -4
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +7 -8
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +5 -6
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -5
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +2 -3
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +2 -3
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +1 -2
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +1 -2
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +1 -2
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +1 -2
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +1 -2
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -3
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +2 -3
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +2 -3
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +1 -2
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +1 -2
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -2
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +3 -2
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +17 -7
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +1 -2
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +4 -5
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +3 -3
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +2 -3
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +3 -4
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +2 -3
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +17 -18
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +4 -5
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +1 -2
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -2
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +2 -3
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +17 -4
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -2
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +11 -3
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +63 -2
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +4 -5
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +1 -2
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +1 -2
- 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 +1 -2
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +1 -2
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +1 -2
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +3 -4
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +6 -6
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +1 -2
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +1 -2
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +3 -4
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +1 -2
- 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 +4 -4
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +2 -2
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +26 -27
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +3 -4
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +10 -11
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +4 -5
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +1 -2
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +7 -8
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +2 -3
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +1 -2
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +2 -3
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +6 -7
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/bindings.d.ts +5 -6
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +10 -10
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +3 -4
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +3 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +8 -6
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +3 -2
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +6 -7
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +8 -8
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +4 -5
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +10 -11
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +1 -2
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +1 -2
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +8 -3
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +71 -27
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +12 -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 +1 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +7 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +1 -2
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +1 -2
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +10 -11
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +4 -5
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +17 -16
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +2 -3
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +5 -4
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +9 -1
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +2 -3
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +2 -3
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +3 -4
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.d.ts +7 -8
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +5 -6
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +15 -16
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +3 -2
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +4 -5
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +3 -4
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +4 -5
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +2 -3
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +1 -2
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +2 -3
- 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 +83 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +4 -5
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +5 -5
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +3 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +4 -5
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -2
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +9 -6
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +1 -2
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +2 -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 +2 -3
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +4 -3
- 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 +29 -6
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +2 -3
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +2 -3
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-core.d.ts +1 -2
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +1 -2
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +2 -3
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +9 -4
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +53 -9
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +1 -2
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +1 -2
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +1 -2
- 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 -2
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +1 -2
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +16 -17
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +7 -8
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +2 -3
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +8 -9
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +4 -5
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +1 -2
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +3 -4
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +15 -11
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +1 -2
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +1 -2
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +1 -2
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +1 -2
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/suggestions.d.ts +3 -4
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +2 -3
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -2
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +3 -4
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -2
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/primitive-predicates.d.ts +11 -12
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +2 -2
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +1 -2
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -2
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -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 +1 -2
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +1 -2
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +1 -2
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -2
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -2
- 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 +1 -2
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -2
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +1 -2
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +4 -5
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +5 -6
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +6 -7
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +6 -6
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +3 -4
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +4 -5
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +4 -4
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +4 -5
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +5 -6
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +4 -5
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +5 -6
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +5 -6
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +4 -5
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +15 -16
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +5 -6
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
- package/dist/types/attachment.d.ts +9 -10
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +3 -4
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +2 -3
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +8 -9
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/message.d.ts +48 -46
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +1 -2
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +2 -3
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -2
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -3
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +1 -2
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +6 -7
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +2 -3
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -4
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -2
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -2
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -2
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +4 -5
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +2 -3
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +4 -5
- package/dist/utils/normalizePartStatus.d.ts.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 +1 -2
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -3
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +1 -2
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -4
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +14 -13
- package/src/adapters/attachment.ts +8 -1
- package/src/adapters/feedback.ts +1 -0
- package/src/model-context/frame/provider.test.ts +45 -20
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +117 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +27 -74
- package/src/react/client/Interactables.test.ts +12 -7
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/interactables-legacy/Interactables.test.ts +9 -3
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +54 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +13 -18
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +4 -1
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- 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.test.tsx +23 -20
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +24 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +39 -24
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +66 -1
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +102 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +24 -11
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +8 -4
- package/src/react/runtimes/cloud/auiV0.ts +121 -1
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +522 -0
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +8 -2
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/runtime/api/message-part-runtime.ts +4 -1
- package/src/runtime/api/message-runtime.ts +15 -2
- package/src/runtime/base/base-thread-runtime-core.test.ts +761 -18
- package/src/runtime/base/base-thread-runtime-core.ts +89 -26
- package/src/runtime/base/default-edit-composer-runtime-core.ts +12 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +12 -1
- package/src/runtime/interfaces/thread-runtime-core.ts +2 -0
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/external-message-conversion.test.ts +43 -0
- package/src/runtime/utils/external-message-conversion.ts +6 -2
- package/src/runtime/utils/stored-message-parts.ts +174 -0
- package/src/runtime/utils/thread-message-like.ts +7 -2
- package/src/runtimes/external-store/external-store-adapter.ts +4 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +44 -9
- package/src/runtimes/local/local-thread-runtime-core.test.ts +168 -12
- package/src/runtimes/local/local-thread-runtime-core.ts +80 -9
- package/src/store/clients/external-thread.ts +34 -13
- package/src/store/primitive-predicates.test.ts +16 -0
- package/src/store/primitive-predicates.ts +4 -1
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +110 -0
- package/src/store/scopes/message.ts +4 -1
- package/src/subscribable/subscribable.test.ts +7 -2
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +4 -0
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core.test.ts +16 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +22 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +47 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +229 -27
- package/src/tests/external-store-thread-runtime-core.test.ts +31 -0
- package/src/tests/external-thread-attachments.test.tsx +22 -23
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/message-queue.test.ts +45 -10
- 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 +16 -8
|
@@ -6,7 +6,7 @@ type DataPrefixedPart = {
|
|
|
6
6
|
readonly type: `data-${string}`;
|
|
7
7
|
readonly data: any;
|
|
8
8
|
};
|
|
9
|
-
type ThreadMessageLike = {
|
|
9
|
+
export type ThreadMessageLike = {
|
|
10
10
|
readonly role: "assistant" | "user" | "system";
|
|
11
11
|
readonly content: string | readonly (TextMessagePart | ReasoningMessagePart | SourceMessagePart | ImageMessagePart | FileMessagePart | DataMessagePart | GenerativeUIMessagePart | Unstable_AudioMessagePart | DataPrefixedPart | {
|
|
12
12
|
readonly type: "tool-call";
|
|
@@ -35,14 +35,15 @@ type ThreadMessageLike = {
|
|
|
35
35
|
readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];
|
|
36
36
|
})[] | undefined;
|
|
37
37
|
readonly metadata?: {
|
|
38
|
-
readonly unstable_state?: ReadonlyJSONValue;
|
|
38
|
+
readonly unstable_state?: ReadonlyJSONValue | undefined;
|
|
39
39
|
readonly unstable_annotations?: readonly ReadonlyJSONValue[] | undefined;
|
|
40
40
|
readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;
|
|
41
41
|
readonly steps?: readonly ThreadStep[] | undefined;
|
|
42
42
|
readonly timing?: MessageTiming | undefined;
|
|
43
43
|
readonly submittedFeedback?: {
|
|
44
44
|
readonly type: "positive" | "negative";
|
|
45
|
-
|
|
45
|
+
readonly comment?: string;
|
|
46
|
+
} | undefined;
|
|
46
47
|
readonly isOptimistic?: boolean | undefined;
|
|
47
48
|
readonly modality?: MessageModality | undefined;
|
|
48
49
|
readonly custom?: Record<string, unknown> | undefined;
|
|
@@ -51,7 +52,6 @@ type ThreadMessageLike = {
|
|
|
51
52
|
/**
|
|
52
53
|
* @deprecated This API is experimental and may change without notice.
|
|
53
54
|
*/
|
|
54
|
-
declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
|
|
55
|
+
export declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
|
|
55
56
|
//#endregion
|
|
56
|
-
export { ThreadMessageLike, fromThreadMessageLike };
|
|
57
57
|
//# sourceMappingURL=thread-message-like.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-message-like.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"mappings":";;;;KAmCK;WACM;WACA;;
|
|
1
|
+
{"version":3,"file":"thread-message-like.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"mappings":";;;;KAmCK;WACM;WACA;;YAGC;WACD;WACA,4BAGD,kBACA,uBACA,oBACA,mBACA,kBACA,kBACA,0BACA,4BACA;aAEW;aACA;aACA;aACA,OAAO;aACP;aACA;aACA;aACA;aACA;aACA,oBAAoB;aACpB;MAAc;MAAe;;aAC7B,SAAS;aACT,MAAM;aACN,mBAAmB;aACnB,WAAW,YAAY;;WAGjC;WACA,YAAY;WACZ,SAAS;WACT,wBACK,KAAK;aACJ,mBAAmB,wBAAwB;;WAGjD;aAEM,iBAAiB;aACjB,gCACI;aAEJ,yBAAyB;aACzB,iBAAiB;aACjB,SAAS;aACT;eAEM;eACA;;aAGN;aACA,WAAW;aACX,SAAS;;;;;;qBAgBb,wBACX,MAAM,mBACN,oBACA,gBAAgB,kBACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ReasoningMessagePart","SourceMessagePart","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","Unstable_AudioMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ReadonlyJSONObject","ReadonlyJSONValue","DataPrefixedPart","type","data","ThreadMessageLike","role","content","toolCallId","toolName","args","argsText","artifact","result","isError","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","commonProps","JSON","stringify","converted","filter","c","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ReasoningMessagePart,\n SourceMessagePart,\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n Unstable_AudioMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content:\n | string\n | readonly (\n | TextMessagePart\n | ReasoningMessagePart\n | SourceMessagePart\n | ImageMessagePart\n | FileMessagePart\n | DataMessagePart\n | GenerativeUIMessagePart\n | Unstable_AudioMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n }\n )[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?: { readonly type: \"positive\" | \"negative\" };\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const { parentId, messages, ...basePart } = part;\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${type}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(`Unsupported user message part type: ${type}`);\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ReasoningMessagePart","SourceMessagePart","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","Unstable_AudioMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ReadonlyJSONObject","ReadonlyJSONValue","DataPrefixedPart","type","data","ThreadMessageLike","role","content","toolCallId","toolName","args","argsText","artifact","result","isError","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","comment","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","commonProps","JSON","stringify","converted","filter","c","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ReasoningMessagePart,\n SourceMessagePart,\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n Unstable_AudioMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content:\n | string\n | readonly (\n | TextMessagePart\n | ReasoningMessagePart\n | SourceMessagePart\n | ImageMessagePart\n | FileMessagePart\n | DataMessagePart\n | GenerativeUIMessagePart\n | Unstable_AudioMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n }\n )[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue | undefined;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const { parentId, messages, ...basePart } = part;\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${type}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(`Unsupported user message part type: ${type}`);\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
|
|
2
2
|
//#region src/runtime/utils/thread-runtime-lifecycle.d.ts
|
|
3
|
-
declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => number;
|
|
4
|
-
declare const isThreadRuntimeGenerationCurrent: (runtime: ThreadRuntimeCore, generation: number) => boolean;
|
|
5
|
-
declare const invalidateThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
3
|
+
export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => number;
|
|
4
|
+
export declare const isThreadRuntimeGenerationCurrent: (runtime: ThreadRuntimeCore, generation: number) => boolean;
|
|
5
|
+
export declare const invalidateThreadRuntime: (runtime: ThreadRuntimeCore) => void;
|
|
6
6
|
//#endregion
|
|
7
|
-
export { captureThreadRuntimeGeneration, invalidateThreadRuntime, isThreadRuntimeGenerationCurrent };
|
|
8
7
|
//# sourceMappingURL=thread-runtime-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-runtime-lifecycle.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"thread-runtime-lifecycle.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"mappings":";;qBAOa,iCAAkC,SAAS;qBAG3C,mCACX,SAAS,mBACT;qBAGW,0BAA2B,SAAS"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ThreadAssistantMessagePart, ThreadMessage, ToolCallMessagePart } from "../../types/message.js";
|
|
2
2
|
//#region src/runtime/utils/tool-call-tree.d.ts
|
|
3
|
-
type ToolCallTreeEntry = {
|
|
3
|
+
export type ToolCallTreeEntry = {
|
|
4
4
|
readonly part: ToolCallMessagePart;
|
|
5
5
|
/** Id of the message whose content directly holds `part`. */
|
|
6
6
|
readonly messageId: string;
|
|
@@ -18,22 +18,21 @@ type ToolCallTreeEntry = {
|
|
|
18
18
|
* {@link mapToolCallPartsDeep} rewrites under, so a part this reports is always
|
|
19
19
|
* a part that can be written back.
|
|
20
20
|
*/
|
|
21
|
-
declare function walkToolCallTree(messages: readonly ThreadMessage[]): Generator<ToolCallTreeEntry>;
|
|
21
|
+
export declare function walkToolCallTree(messages: readonly ThreadMessage[]): Generator<ToolCallTreeEntry>;
|
|
22
22
|
/**
|
|
23
23
|
* Content-level form of {@link walkToolCallTree}, for a caller that already
|
|
24
24
|
* holds one assistant message's content and does not need the owning id.
|
|
25
25
|
*/
|
|
26
|
-
declare function iterateToolCallParts(content: readonly ThreadAssistantMessagePart[]): Generator<ToolCallMessagePart>;
|
|
26
|
+
export declare function iterateToolCallParts(content: readonly ThreadAssistantMessagePart[]): Generator<ToolCallMessagePart>;
|
|
27
27
|
/**
|
|
28
28
|
* Rebuild `content` with `fn` applied to every tool-call part in the tree.
|
|
29
29
|
* Arrays and nested messages are reused wherever `fn` returned the part it was
|
|
30
30
|
* given, so an unchanged subtree keeps its identity and `changed` reports
|
|
31
31
|
* whether anything moved.
|
|
32
32
|
*/
|
|
33
|
-
declare function mapToolCallPartsDeep(content: readonly ThreadAssistantMessagePart[], fn: (part: ToolCallMessagePart) => ToolCallMessagePart): {
|
|
33
|
+
export declare function mapToolCallPartsDeep(content: readonly ThreadAssistantMessagePart[], fn: (part: ToolCallMessagePart) => ToolCallMessagePart): {
|
|
34
34
|
content: readonly ThreadAssistantMessagePart[];
|
|
35
35
|
changed: boolean;
|
|
36
36
|
};
|
|
37
37
|
//#endregion
|
|
38
|
-
export { ToolCallTreeEntry, iterateToolCallParts, mapToolCallPartsDeep, walkToolCallTree };
|
|
39
38
|
//# sourceMappingURL=tool-call-tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-tree.d.ts","names":[],"sources":["../../../src/runtime/utils/tool-call-tree.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tool-call-tree.d.ts","names":[],"sources":["../../../src/runtime/utils/tool-call-tree.ts"],"mappings":";;YAOY;WACD,MAAM;;WAEN;;;;;;;;;;;;;;;wBAgBM,iBACf,mBAAmB,kBAClB,UAAU;;;;;wBAiBI,qBACf,kBAAkB,+BACjB,UAAU;;;;;;;wBAkBG,qBACd,kBAAkB,8BAClB,KAAK,MAAM,wBAAwB;EAChC,kBAAkB;EAA8B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
//#region src/runtimes/assistant-transport/utils.d.ts
|
|
2
|
-
declare function createRequestHeaders(headersValue: Record<string, string> | Headers | (() => Promise<Record<string, string> | Headers>)): Promise<Headers>;
|
|
2
|
+
export declare function createRequestHeaders(headersValue: Record<string, string> | Headers | (() => Promise<Record<string, string> | Headers>)): Promise<Headers>;
|
|
3
3
|
//#endregion
|
|
4
|
-
export { createRequestHeaders };
|
|
5
4
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/runtimes/assistant-transport/utils.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/runtimes/assistant-transport/utils.ts"],"mappings":";wBAAsB,qBACpB,cACI,yBACA,iBACO,QAAQ,yBAAyB,YAC3C,QAAQ"}
|
|
@@ -10,7 +10,7 @@ import { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, St
|
|
|
10
10
|
import { ToolExecutionStatus } from "../tool-invocations/ToolInvocationTracker.js";
|
|
11
11
|
import { ReadonlyJSONValue } from "assistant-stream/utils";
|
|
12
12
|
//#region src/runtimes/external-store/external-store-adapter.d.ts
|
|
13
|
-
type ExternalStoreThreadData<TState extends "regular" | "archived"> = {
|
|
13
|
+
export type ExternalStoreThreadData<TState extends "regular" | "archived"> = {
|
|
14
14
|
status: TState;
|
|
15
15
|
id: string;
|
|
16
16
|
remoteId?: string | undefined;
|
|
@@ -18,7 +18,7 @@ type ExternalStoreThreadData<TState extends "regular" | "archived"> = {
|
|
|
18
18
|
title?: string | undefined;
|
|
19
19
|
custom?: Record<string, unknown> | undefined;
|
|
20
20
|
};
|
|
21
|
-
type ExternalStoreThreadListAdapter = {
|
|
21
|
+
export type ExternalStoreThreadListAdapter = {
|
|
22
22
|
/**
|
|
23
23
|
* @deprecated This API is still under active development and might change without notice.
|
|
24
24
|
*/
|
|
@@ -40,11 +40,11 @@ type ExternalStoreThreadListAdapter = {
|
|
|
40
40
|
onUnarchive?: ((threadId: string) => Promise<void> | void) | undefined;
|
|
41
41
|
onDelete?: ((threadId: string) => Promise<void> | void) | undefined;
|
|
42
42
|
};
|
|
43
|
-
type ExternalStoreMessageConverter<T> = (message: T, idx: number) => ThreadMessageLike;
|
|
43
|
+
export type ExternalStoreMessageConverter<T> = (message: T, idx: number) => ThreadMessageLike;
|
|
44
44
|
/**
|
|
45
45
|
* @deprecated This API is still under active development and might change without notice.
|
|
46
46
|
*/
|
|
47
|
-
type ExternalStoreBranchChange = {
|
|
47
|
+
export type ExternalStoreBranchChange = {
|
|
48
48
|
headId: string | null;
|
|
49
49
|
visibleMessageIds: readonly string[];
|
|
50
50
|
};
|
|
@@ -100,6 +100,10 @@ type ExternalStoreAdapterBase<T> = {
|
|
|
100
100
|
* back, because the runtime cannot see a removal it did not make.
|
|
101
101
|
*/
|
|
102
102
|
setMessages?: ((messages: readonly T[]) => void) | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Called with each finalized voice transcript message. The host appends it to its own messages under the same id, which is how the runtime knows the host carries it. A host that does not implement this callback keeps transcripts for the session only.
|
|
105
|
+
*/
|
|
106
|
+
onVoiceTranscript?: ((message: ThreadMessage) => void) | undefined;
|
|
103
107
|
/**
|
|
104
108
|
* Fires when the user explicitly switches branches via the runtime's
|
|
105
109
|
* `switchToBranch` action (e.g. a BranchPicker click). It does not fire on
|
|
@@ -208,7 +212,6 @@ type ExternalStoreAdapterBase<T> = {
|
|
|
208
212
|
*/
|
|
209
213
|
setToolStatuses?: ((statuses: Record<string, ToolExecutionStatus>) => void) | undefined;
|
|
210
214
|
};
|
|
211
|
-
type ExternalStoreAdapter<T = ThreadMessage> = ExternalStoreAdapterBase<T> & (T extends ThreadMessage ? object : ExternalStoreMessageConverterAdapter<T>);
|
|
215
|
+
export type ExternalStoreAdapter<T = ThreadMessage> = ExternalStoreAdapterBase<T> & (T extends ThreadMessage ? object : ExternalStoreMessageConverterAdapter<T>);
|
|
212
216
|
//#endregion
|
|
213
|
-
export { ExternalStoreAdapter, ExternalStoreBranchChange, ExternalStoreMessageConverter, ExternalStoreThreadData, ExternalStoreThreadListAdapter };
|
|
214
217
|
//# sourceMappingURL=external-store-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-adapter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-adapter.ts"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"external-store-adapter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-adapter.ts"],"mappings":";;;;;;;;;;;;YA4BY,wBAAwB;EAClC,QAAQ;EACR;EACA;EACA;EACA;EACA,SAAS;;YAGC;;;;EAIV;EACA;EACA,mBAAmB;EACnB,2BAA2B;;;;EAI3B,6BAA6B;;;;EAI7B,qBAAqB,qBAAqB;EAC1C,YACE,kBACA,sBACI;EACN,mBAEM,kBACA,QAAQ,wCACL;EAET,cAAc,qBAAqB;EACnC,gBAAgB,qBAAqB;EACrC,aAAa,qBAAqB;;YAGxB,8BAA8B,MACxC,SAAS,GACT,gBACG;;;;YAKO;EACV;EACA;;KAGG,qCAAqC;EACxC,gBAAgB,8BAA8B;;KAG3C,yBAAyB;;;;;;;EAO5B;;;;;;;;;EASA;;;;;;;;;EASA;EACA;EACA,oBAAoB;EACpB,oBAAoB;;;;;;;;;EASpB,qCAAqC;EACrC,uBAAuB;EACvB,QAAQ;EACR;;;;;;;;EASA,gBAAgB,mBAAmB;;;;EAInC,sBAAsB,SAAS;;;;;;;;;;;;;;;;;;EAkB/B,4BACM,OAAO;EAEb,aAAa,mBAAmB;EAChC;EACA,wBAAwB;EACxB,QAAQ,SAAS,kBAAkB;;EAEnC,QAAQ;EACR,WAAW,SAAS,kBAAkB;EACtC,aAAa,sBAAsB;EACnC,aACM,yBAAyB,QAAQ,mBAAmB;EAE1D,aAAa,QAAQ,oBAAoB;EACzC,kBAAkB;;;;;;;;;EASlB,yBAAyB;EACzB,oBACM,SAAS,yBAAyB;EAExC,qBACM;IAAW;IAAoB;;EAErC,4BACM,SAAS,iCAAiC;EAEhD,iBAAiB,8BAA8B;EAC/C;IAEM,cAAc;IACd,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,WAAW;;;;IAIX,aAAa;;EAGnB;IAEM;;;;;;;;;;;;;;;;;;;;;EAsBN;;;;;;;;;;;;;;;;;;EAkBA,8BACM,UAAU;;;;;;;;;;EAWhB,oBACM,UAAU,eAAe;;YAIrB,qBAAqB,IAAI,iBACnC,yBAAyB,MACtB,UAAU,yBAEP,qCAAqC"}
|
|
@@ -2,11 +2,10 @@ import { BaseAssistantRuntimeCore } from "../../runtime/base/base-assistant-runt
|
|
|
2
2
|
import { ExternalStoreAdapter } from "./external-store-adapter.js";
|
|
3
3
|
import { ExternalStoreThreadListRuntimeCore } from "./external-store-thread-list-runtime-core.js";
|
|
4
4
|
//#region src/runtimes/external-store/external-store-runtime-core.d.ts
|
|
5
|
-
declare class ExternalStoreRuntimeCore extends BaseAssistantRuntimeCore {
|
|
5
|
+
export declare class ExternalStoreRuntimeCore extends BaseAssistantRuntimeCore {
|
|
6
6
|
readonly threads: ExternalStoreThreadListRuntimeCore;
|
|
7
7
|
constructor(adapter: ExternalStoreAdapter<any>);
|
|
8
8
|
setAdapter(adapter: ExternalStoreAdapter<any>): void;
|
|
9
9
|
}
|
|
10
10
|
//#endregion
|
|
11
|
-
export { ExternalStoreRuntimeCore };
|
|
12
11
|
//# sourceMappingURL=external-store-runtime-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-runtime-core.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"external-store-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-runtime-core.ts"],"mappings":";;;;qBASa,iCAAiC;WAC5B,SAAO;EAEX,YAAA,SAAS;EAQd,WAAW,SAAS"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ExternalStoreAdapter } from "./external-store-adapter.js";
|
|
2
2
|
//#region src/runtimes/external-store/external-store-shared-options.d.ts
|
|
3
|
-
type ExternalStoreSharedOptions = Pick<ExternalStoreAdapter, "isDisabled" | "isSendDisabled" | "unstable_capabilities" | "suggestions">;
|
|
4
|
-
declare const pickExternalStoreSharedOptions: (options: ExternalStoreSharedOptions) => ExternalStoreSharedOptions;
|
|
3
|
+
export type ExternalStoreSharedOptions = Pick<ExternalStoreAdapter, "isDisabled" | "isSendDisabled" | "unstable_capabilities" | "suggestions">;
|
|
4
|
+
export declare const pickExternalStoreSharedOptions: (options: ExternalStoreSharedOptions) => ExternalStoreSharedOptions;
|
|
5
5
|
//#endregion
|
|
6
|
-
export { ExternalStoreSharedOptions, pickExternalStoreSharedOptions };
|
|
7
6
|
//# sourceMappingURL=external-store-shared-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-shared-options.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-shared-options.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"external-store-shared-options.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-shared-options.ts"],"mappings":";;YAEY,6BAA6B,KACvC;qBAIW,iCACX,SAAS,+BACR"}
|
|
@@ -3,8 +3,8 @@ import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
|
3
3
|
import { ExternalStoreThreadListAdapter } from "./external-store-adapter.js";
|
|
4
4
|
import { ExternalStoreThreadRuntimeCore } from "./external-store-thread-runtime-core.js";
|
|
5
5
|
//#region src/runtimes/external-store/external-store-thread-list-runtime-core.d.ts
|
|
6
|
-
type ExternalStoreThreadFactory = () => ExternalStoreThreadRuntimeCore;
|
|
7
|
-
declare class ExternalStoreThreadListRuntimeCore extends BaseSubscribable implements ThreadListRuntimeCore {
|
|
6
|
+
export type ExternalStoreThreadFactory = () => ExternalStoreThreadRuntimeCore;
|
|
7
|
+
export declare class ExternalStoreThreadListRuntimeCore extends BaseSubscribable implements ThreadListRuntimeCore {
|
|
8
8
|
private _mainThreadId;
|
|
9
9
|
private _threads;
|
|
10
10
|
private _archivedThreads;
|
|
@@ -42,5 +42,4 @@ declare class ExternalStoreThreadListRuntimeCore extends BaseSubscribable implem
|
|
|
42
42
|
generateTitle(): never;
|
|
43
43
|
}
|
|
44
44
|
//#endregion
|
|
45
|
-
export { ExternalStoreThreadFactory, ExternalStoreThreadListRuntimeCore };
|
|
46
45
|
//# sourceMappingURL=external-store-thread-list-runtime-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-thread-list-runtime-core.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"external-store-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-thread-list-runtime-core.ts"],"mappings":";;;;;YAUY,mCAAmC;qBAkBlC,2CACH,4BACG;UAEH;UACA;UACA;UACA;UAEA;MAEG;MAIA;MAIA;MAIA;MAIA,eAAW,SAAA,eAAA;EAIf,yBAAqB;UAIpB;MAEG;UAIH;EAGN,YAAA,SAAS,4CACT,eAAe;EAOV,4BAAwB;EAIxB;EAIA,YAAY,mBAAgB;EAM5B,sBACL,SAAS,gCACT;EAsFW,oBAAoB;EASpB,eACX,kBACA;IAAa;MACZ;EAUU,qBAAqB;EAUrB,OAAO,kBAAkB,mBAAmB;EAQ5C,aACX,kBACA,QAAQ,sCACP;EAUU,UAAU;EAIV,QAAQ,mBAAmB;EAQ3B,UAAU,mBAAmB;EAQ7B,OAAO,mBAAmB;EAQhC,WACL,mBACC;IAAU;IAAkB;;EAIxB"}
|
|
@@ -14,8 +14,8 @@ import { ExternalStoreAdapter, ExternalStoreThreadListAdapter } from "./external
|
|
|
14
14
|
import "../../store/index.js";
|
|
15
15
|
import "../../index.js";
|
|
16
16
|
//#region src/runtimes/external-store/external-store-thread-runtime-core.d.ts
|
|
17
|
-
declare const hasUpcomingMessage: (isRunning: boolean, messages: readonly ThreadMessage[]) => boolean;
|
|
18
|
-
declare class ExternalStoreThreadRuntimeCore extends BaseThreadRuntimeCore implements ThreadRuntimeCore {
|
|
17
|
+
export declare const hasUpcomingMessage: (isRunning: boolean, messages: readonly ThreadMessage[]) => boolean;
|
|
18
|
+
export declare class ExternalStoreThreadRuntimeCore extends BaseThreadRuntimeCore implements ThreadRuntimeCore {
|
|
19
19
|
private _capabilities;
|
|
20
20
|
get capabilities(): RuntimeCapabilities;
|
|
21
21
|
private _messages;
|
|
@@ -98,8 +98,10 @@ declare class ExternalStoreThreadRuntimeCore extends BaseThreadRuntimeCore imple
|
|
|
98
98
|
*/
|
|
99
99
|
private _notifyBranchChange;
|
|
100
100
|
append(rawMessage: AppendMessage): Promise<void>;
|
|
101
|
+
protected _commitVoiceMessage(message: ThreadMessage): void;
|
|
101
102
|
deleteMessage(messageId: string): Promise<void>;
|
|
102
103
|
private _evictDeletedMessage;
|
|
104
|
+
private _publishRepositoryMessages;
|
|
103
105
|
getQueueItems(): readonly QueueItemState[];
|
|
104
106
|
getSteerQueueItems(): readonly QueueItemState[];
|
|
105
107
|
moveQueueItem(queueItemId: string, placement: QueuePlacement): void;
|
|
@@ -124,5 +126,4 @@ declare class ExternalStoreThreadRuntimeCore extends BaseThreadRuntimeCore imple
|
|
|
124
126
|
private updateMessages;
|
|
125
127
|
}
|
|
126
128
|
//#endregion
|
|
127
|
-
export { ExternalStoreThreadRuntimeCore, hasUpcomingMessage };
|
|
128
129
|
//# sourceMappingURL=external-store-thread-runtime-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-store-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"external-store-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/external-store/external-store-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;;;qBAyEa,qBACX,oBACA,mBAAmB;qBAKR,uCACH,iCACG;UAEH;MAiBG,gBAAY;UAIf;EACD;EACA;MACI;MAIA;YAKQ,6BAA6B;MAI5B,sEAAK,sDAAA;MAId;kBARqC;;;;;;;MAarC,iCAAiC;EAKrC,sBAAsB;EACtB;UAEC;UAUA;UAKA;UAEA;UAEA;EAED,mCACL,kBAAkB;UAKZ;;;;;UAMA;UACA;UACA;UACA;UACA;;;;;;;;UASA;UAaA;UAQA;UASA;EAIQ,UAAU;EAQxB,YAAA,iBAAiB,sBACjB,OAAO;EAMF,sBAAsB,OAAO;UAM5B;;;;;;;UAuQA;;;;;UAoFA;UACA;;;;;;;UAQA;EAWQ,eAAe;;;;;;;;;UA8BvB;EAaK,OAAO,YAAY,gBAAgB;YA+E7B,oBAAoB,SAAS;EAInC,cAAc,oBAAoB;UA0CvC;UAmBA;EAMD,0BAnEwC;EAyExC,+BANa;EAUb,cAAc,qBAAqB,WAAW;EAI9C,gBAAgB;EAIV,SAAS,QAAQ,iBAAiB;EAkBlC,UAAU,QAAQ,kBAAkB;EAW1C;EAOA,oBAAoB;;;;;;EAqBpB;EAKA;UAoFC;EAOD,cAAc,SAAS;EASvB,eAAe,SAAS;EAoBxB,sBACL,SAAS,+BACR;EAkCa,MAAM,2BAA2B;EAMjC,OAAO,MAAM;UAQrB"}
|
|
@@ -278,6 +278,14 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
278
278
|
this.repository.resetHead(optimisticId ?? messages.at(-1)?.id ?? null);
|
|
279
279
|
const messagesSnapshot = this.repository.getMessages();
|
|
280
280
|
if (!this._messages || !shallowArrayEqual(this._messages, messagesSnapshot)) this._messages = messagesSnapshot;
|
|
281
|
+
if (this._voiceMessages.length > 0) {
|
|
282
|
+
const hostIds = new Set(this._messages.map((message) => message.id));
|
|
283
|
+
const remaining = this._voiceMessages.filter((message) => !hostIds.has(message.id));
|
|
284
|
+
if (remaining.length !== this._voiceMessages.length) {
|
|
285
|
+
this._voiceMessages = remaining;
|
|
286
|
+
this._markVoiceMessagesDirty();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
281
289
|
if (repositoryChanged) this._runTrackerUpdate(() => this._toolInvocations?.reset());
|
|
282
290
|
this._runTrackerUpdate(() => this._driveToolInvocations());
|
|
283
291
|
this._notifySubscribers();
|
|
@@ -382,9 +390,14 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
382
390
|
});
|
|
383
391
|
}
|
|
384
392
|
async append(rawMessage) {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
393
|
+
let message = {
|
|
394
|
+
...rawMessage,
|
|
395
|
+
parentId: this._resolveAppendParent(rawMessage.parentId)
|
|
396
|
+
};
|
|
397
|
+
if (this.voice) throw new Error("Cannot send a text message while a voice session is connected");
|
|
398
|
+
if (this._isVoiceMessage(message.sourceId)) throw new Error("Voice transcript messages cannot be edited");
|
|
399
|
+
const isEdit = message.sourceId != null || message.parentId !== (this._getBaseMessages().at(-1)?.id ?? null);
|
|
400
|
+
message = !isEdit && this._store.queue && this._store.queue === this._transformedQueue ? message : this.enrichAppendMetadata(message);
|
|
388
401
|
const generation = captureThreadRuntimeGeneration(this);
|
|
389
402
|
this.ensureInitialized();
|
|
390
403
|
const initPromise = this._getInitializePromise?.();
|
|
@@ -404,6 +417,9 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
404
417
|
await this._store.onEdit(message);
|
|
405
418
|
} else await this._store.onNew(message);
|
|
406
419
|
}
|
|
420
|
+
_commitVoiceMessage(message) {
|
|
421
|
+
this._store.onVoiceTranscript?.(message);
|
|
422
|
+
}
|
|
407
423
|
async deleteMessage(messageId) {
|
|
408
424
|
if (this._store.onDelete) {
|
|
409
425
|
if (this.repository.getMessages().some((m) => m.id === messageId)) this._pendingDeleteEvictions.add(messageId);
|
|
@@ -431,7 +447,11 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
431
447
|
return;
|
|
432
448
|
}
|
|
433
449
|
this.repository.deleteMessage(messageId);
|
|
434
|
-
this.
|
|
450
|
+
this._publishRepositoryMessages();
|
|
451
|
+
}
|
|
452
|
+
_publishRepositoryMessages() {
|
|
453
|
+
const messages = this.repository.getMessages();
|
|
454
|
+
if (!shallowArrayEqual(this._messages, messages)) this._messages = messages;
|
|
435
455
|
this._notifySubscribers();
|
|
436
456
|
}
|
|
437
457
|
getQueueItems() {
|
|
@@ -448,6 +468,7 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
448
468
|
}
|
|
449
469
|
async startRun(config) {
|
|
450
470
|
if (!this._store.onReload) throw new Error("Runtime does not support reloading messages.");
|
|
471
|
+
if (this.voice) throw new Error("Cannot start a run while a voice session is connected");
|
|
451
472
|
if (this._isVoiceMessage(config.sourceId)) throw new Error("Voice transcript messages cannot be reloaded");
|
|
452
473
|
this._pendingDeleteEvictions.clear();
|
|
453
474
|
await this._toolInvocations?.abort({ discardPending: true });
|
|
@@ -455,6 +476,7 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
455
476
|
}
|
|
456
477
|
async resumeRun(config) {
|
|
457
478
|
if (!this._store.onResume) throw new Error("Runtime does not support resuming runs.");
|
|
479
|
+
if (this.voice) throw new Error("Cannot start a run while a voice session is connected");
|
|
458
480
|
if (this._isVoiceMessage(config.sourceId)) throw new Error("Voice transcript messages cannot be reloaded");
|
|
459
481
|
await this._store.onResume(config);
|
|
460
482
|
}
|
|
@@ -501,7 +523,7 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
501
523
|
};
|
|
502
524
|
}
|
|
503
525
|
}
|
|
504
|
-
|
|
526
|
+
this._publishRepositoryMessages();
|
|
505
527
|
setTimeout(() => {
|
|
506
528
|
if (!isThreadRuntimeGenerationCurrent(this, generation)) return;
|
|
507
529
|
this.dropEmptyOptimisticHead();
|
|
@@ -510,7 +532,8 @@ var ExternalStoreThreadRuntimeCore = class extends BaseThreadRuntimeCore {
|
|
|
510
532
|
if (current.at(-1)?.id === movedLeaf.id) this.repository.deleteMessage(movedLeaf.id);
|
|
511
533
|
else if (current.some((m) => m.id === movedLeaf.id)) this.composer.retractDraft(movedLeaf.draft);
|
|
512
534
|
}
|
|
513
|
-
this.
|
|
535
|
+
this._publishRepositoryMessages();
|
|
536
|
+
this.updateMessages(this._messages);
|
|
514
537
|
}, 0);
|
|
515
538
|
}
|
|
516
539
|
dropEmptyOptimisticHead() {
|