@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 ToolCallCompleteText<TArgs extends Record<string, unknown>, TResult, TValue
|
|
|
6
6
|
args: TArgs;
|
|
7
7
|
result: TResult | undefined;
|
|
8
8
|
}) => TValue | undefined | null);
|
|
9
|
-
type ToolCallText<TArgs extends Record<string, unknown>, TResult, TValue = string> = {
|
|
9
|
+
export type ToolCallText<TArgs extends Record<string, unknown>, TResult, TValue = string> = {
|
|
10
10
|
running: ToolCallRunningText<TArgs, TValue>;
|
|
11
11
|
complete?: ToolCallCompleteText<TArgs, TResult, TValue> | undefined;
|
|
12
12
|
} | {
|
|
@@ -20,7 +20,6 @@ type ToolCallTextPart<TArgs extends Record<string, unknown>, TResult> = {
|
|
|
20
20
|
readonly type?: string | undefined;
|
|
21
21
|
} | undefined;
|
|
22
22
|
};
|
|
23
|
-
declare const resolveToolCallText: <TArgs extends Record<string, unknown>, TResult, TValue>(text: ToolCallText<TArgs, TResult, TValue>, part: ToolCallTextPart<TArgs, TResult>) => TValue | undefined | null;
|
|
23
|
+
export declare const resolveToolCallText: <TArgs extends Record<string, unknown>, TResult, TValue>(text: ToolCallText<TArgs, TResult, TValue>, part: ToolCallTextPart<TArgs, TResult>) => TValue | undefined | null;
|
|
24
24
|
//#endregion
|
|
25
|
-
export { ToolCallText, resolveToolCallText };
|
|
26
25
|
//# sourceMappingURL=tool-call-text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-text.d.ts","names":[],"sources":["../../src/model-context/tool-call-text.ts"],"mappings":";KAAK,oBAAoB,cAAc,yBAAyB,UAC5D,8BAGE;EAAW,MAAM;MAAY;KAE9B,qBACH,cAAc,yBACd,SACA,UAEE,8BAGE;EACA,MAAM;EACN,QAAQ;MACJ;
|
|
1
|
+
{"version":3,"file":"tool-call-text.d.ts","names":[],"sources":["../../src/model-context/tool-call-text.ts"],"mappings":";KAAK,oBAAoB,cAAc,yBAAyB,UAC5D,8BAGE;EAAW,MAAM;MAAY;KAE9B,qBACH,cAAc,yBACd,SACA,UAEE,8BAGE;EACA,MAAM;EACN,QAAQ;MACJ;YAEE,aACV,cAAc,yBACd,SACA;EAGI,SAAS,oBAAoB,OAAO;EACpC,WAAW,qBAAqB,OAAO,SAAS;;EAGhD,UAAU,oBAAoB,OAAO;EACrC,UAAU,qBAAqB,OAAO,SAAS;;KAGhD,iBAAiB,cAAc,yBAAyB;WAClD,MAAM;WACN,SAAS;WACT;aAAoB;;;qBAGlB,sBACX,cAAc,yBACd,SACA,QAEA,MAAM,aAAa,OAAO,SAAS,SACnC,MAAM,iBAAiB,OAAO,aAC7B"}
|
|
@@ -37,10 +37,9 @@ type StandardSchemaParameters = Extract<NonNullable<Extract<Tool<any>, {
|
|
|
37
37
|
* });
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
declare function tool<const TSchema extends StandardSchemaParameters, TResult = any>(tool: Tool<StandardSchemaInput<TSchema>, TResult> & {
|
|
40
|
+
export declare function tool<const TSchema extends StandardSchemaParameters, TResult = any>(tool: Tool<StandardSchemaInput<TSchema>, TResult> & {
|
|
41
41
|
parameters: TSchema;
|
|
42
42
|
}): Tool<StandardSchemaInput<TSchema>, TResult>;
|
|
43
|
-
declare function tool<TArgs extends Record<string, unknown>, TResult = any>(tool: Tool<TArgs, TResult>): Tool<TArgs, TResult>;
|
|
43
|
+
export declare function tool<TArgs extends Record<string, unknown>, TResult = any>(tool: Tool<TArgs, TResult>): Tool<TArgs, TResult>;
|
|
44
44
|
//#endregion
|
|
45
|
-
export { tool };
|
|
46
45
|
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","names":[],"sources":["../../src/model-context/tool.ts"],"mappings":";;KAEK,oBAAoB,WAAW;WACzB;aACE;eAAmB,aAAa;;;IAGzC,eAAe,0BACb,SACA,0BACF;KAEC,2BAA2B,QAC9B,YAAY,QAAQ;EAAa;;WACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","names":[],"sources":["../../src/model-context/tool.ts"],"mappings":";;KAEK,oBAAoB,WAAW;WACzB;aACE;eAAmB,aAAa;;;IAGzC,eAAe,0BACb,SACA,0BACF;KAEC,2BAA2B,QAC9B,YAAY,QAAQ;EAAa;;WACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4BG,WACR,gBAAgB,0BACtB,eAEA,MAAM,KAAK,oBAAoB,UAAU;EAAa,YAAY;IACjE,KAAK,oBAAoB,UAAU;wBACtB,KAAK,cAAc,yBAAyB,eAC1D,MAAM,KAAK,OAAO,WACjB,KAAK,OAAO"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Unsubscribe } from "../types/unsubscribe.js";
|
|
2
2
|
import { Tool } from "assistant-stream";
|
|
3
3
|
//#region src/model-context/types.d.ts
|
|
4
|
-
type LanguageModelV1CallSettings = {
|
|
4
|
+
export type LanguageModelV1CallSettings = {
|
|
5
5
|
maxTokens?: number;
|
|
6
6
|
temperature?: number;
|
|
7
7
|
topP?: number;
|
|
@@ -10,13 +10,13 @@ type LanguageModelV1CallSettings = {
|
|
|
10
10
|
seed?: number;
|
|
11
11
|
headers?: Record<string, string | undefined>;
|
|
12
12
|
};
|
|
13
|
-
type LanguageModelConfig = {
|
|
13
|
+
export type LanguageModelConfig = {
|
|
14
14
|
apiKey?: string;
|
|
15
15
|
baseUrl?: string;
|
|
16
16
|
modelName?: string;
|
|
17
17
|
reasoningEffort?: string;
|
|
18
18
|
};
|
|
19
|
-
type ModelContext = {
|
|
19
|
+
export type ModelContext = {
|
|
20
20
|
priority?: number | undefined;
|
|
21
21
|
system?: string | undefined;
|
|
22
22
|
tools?: Record<string, Tool<any, any>> | undefined;
|
|
@@ -29,23 +29,22 @@ type ModelContext = {
|
|
|
29
29
|
*/
|
|
30
30
|
unstable_composerMetadata?: Record<string, unknown> | undefined;
|
|
31
31
|
};
|
|
32
|
-
type ModelContextProvider = {
|
|
32
|
+
export type ModelContextProvider = {
|
|
33
33
|
getModelContext: () => ModelContext;
|
|
34
34
|
subscribe?: (callback: () => void) => Unsubscribe;
|
|
35
35
|
};
|
|
36
|
-
type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Tool<TArgs, TResult> & {
|
|
36
|
+
export type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Tool<TArgs, TResult> & {
|
|
37
37
|
toolName: string;
|
|
38
38
|
render?: unknown;
|
|
39
39
|
};
|
|
40
|
-
type AssistantInstructionsConfig = {
|
|
40
|
+
export type AssistantInstructionsConfig = {
|
|
41
41
|
disabled?: boolean | undefined;
|
|
42
42
|
instruction: string;
|
|
43
43
|
};
|
|
44
|
-
type AssistantContextConfig = {
|
|
44
|
+
export type AssistantContextConfig = {
|
|
45
45
|
getContext: () => string;
|
|
46
46
|
disabled?: boolean | undefined;
|
|
47
47
|
};
|
|
48
|
-
declare const mergeModelContexts: (configSet: Set<ModelContextProvider>) => ModelContext;
|
|
48
|
+
export declare const mergeModelContexts: (configSet: Set<ModelContextProvider>) => ModelContext;
|
|
49
49
|
//#endregion
|
|
50
|
-
export { AssistantContextConfig, AssistantInstructionsConfig, AssistantToolProps, LanguageModelConfig, LanguageModelV1CallSettings, ModelContext, ModelContextProvider, mergeModelContexts };
|
|
51
50
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;YAIY;EACV;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;YAGA;EACV;EACA;EACA;EACA;;YAGU;EACV;EACA;EACA,QAAQ,eAAe;EACvB,eAAe;EACf,SAAS;;;;;;EAMT,4BAA4B;;YAGlB;EACV,uBAAuB;EACvB,aAAa,yBAAyB;;YAG5B,mBACV,cAAc,yBACd,WACE,KAAK,OAAO;EACd;EACA;;YAGU;EACV;EACA;;YAGU;EACV;EACA;;qBASW,qBACX,WAAW,IAAI,0BACd"}
|
|
@@ -2,13 +2,12 @@ import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
|
|
|
2
2
|
import { ComponentType, FC, PropsWithChildren } from "react";
|
|
3
3
|
import { AssistantClient, AuiConfig } from "@assistant-ui/store";
|
|
4
4
|
//#region src/react/AssistantProvider.d.ts
|
|
5
|
-
declare const getRenderComponent: (runtime: AssistantRuntime) => ComponentType | undefined;
|
|
6
|
-
type AssistantProviderBaseProps = PropsWithChildren<{
|
|
5
|
+
export declare const getRenderComponent: (runtime: AssistantRuntime) => ComponentType | undefined;
|
|
6
|
+
export type AssistantProviderBaseProps = PropsWithChildren<{
|
|
7
7
|
runtime: AssistantRuntime;
|
|
8
8
|
aui?: AssistantClient | null | undefined;
|
|
9
9
|
config?: AuiConfig | undefined;
|
|
10
10
|
}>;
|
|
11
|
-
declare const AssistantProviderBase: FC<AssistantProviderBaseProps>;
|
|
11
|
+
export declare const AssistantProviderBase: FC<AssistantProviderBaseProps>;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { AssistantProviderBase, AssistantProviderBaseProps, getRenderComponent };
|
|
14
13
|
//# sourceMappingURL=AssistantProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantProvider.d.ts","names":[],"sources":["../../src/react/AssistantProvider.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"AssistantProvider.d.ts","names":[],"sources":["../../src/react/AssistantProvider.tsx"],"mappings":";;;;qBAea,qBAAsB,SAAS,qBAEnB;YAGb,6BAA6B;EACvC,SAAS;EACT,MAAM;EACN,SAAS;;qBA2BE,uBAAuB,GAAG"}
|
|
@@ -24,7 +24,7 @@ import { AssistantClient, AuiConfig } from "@assistant-ui/store";
|
|
|
24
24
|
* }
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
-
declare const AssistantRuntimeProvider: import("react").MemoExoticComponent<({ runtime, aui, config, children }: {
|
|
27
|
+
export declare const AssistantRuntimeProvider: import("react").MemoExoticComponent<({ runtime, aui, config, children }: {
|
|
28
28
|
/**
|
|
29
29
|
* The assistant runtime to expose to descendants. Build one with
|
|
30
30
|
* `useLocalRuntime`, `useExternalStoreRuntime`, or
|
|
@@ -46,5 +46,4 @@ declare const AssistantRuntimeProvider: import("react").MemoExoticComponent<({ r
|
|
|
46
46
|
children: ReactNode;
|
|
47
47
|
}) => import("react").JSX.Element>;
|
|
48
48
|
//#endregion
|
|
49
|
-
export { AssistantRuntimeProvider };
|
|
50
49
|
//# sourceMappingURL=AssistantRuntimeProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantRuntimeProvider.d.ts","names":[],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AssistantRuntimeProvider.d.ts","names":[],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;qBA2Ba,0CAAwB,uBAAA,SAAA,KAAA,QAAA;;;;;;EAYjC,SAAS;;;;;;;EAOT,MAAM;;;;;EAKN,SAAS;EACT,UAAU;sBACX,IAAA"}
|
|
@@ -2,13 +2,12 @@ import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
|
|
|
2
2
|
import "../index.js";
|
|
3
3
|
import { AssistantClient, ScopesConfig } from "@assistant-ui/store";
|
|
4
4
|
//#region src/react/RuntimeAdapter.d.ts
|
|
5
|
-
declare const RuntimeAdapter: import("@assistant-ui/tap").Resource<import("@assistant-ui/store").ClientOutput<"threads">, [runtime: AssistantRuntime]>;
|
|
5
|
+
export declare const RuntimeAdapter: import("@assistant-ui/tap").Resource<import("@assistant-ui/store").ClientOutput<"threads">, [runtime: AssistantRuntime]>;
|
|
6
6
|
/**
|
|
7
7
|
* The scope defaults `RuntimeAdapter` installs when it is used as the `threads`
|
|
8
8
|
* config entry. Adapter packages that wrap a runtime in their own config entry
|
|
9
9
|
* attach this to the wrapping resource for scope parity with `RuntimeAdapter`.
|
|
10
10
|
*/
|
|
11
|
-
declare const runtimeAdapterTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
11
|
+
export declare const runtimeAdapterTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { RuntimeAdapter, runtimeAdapterTransformScopes };
|
|
14
13
|
//# sourceMappingURL=RuntimeAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;;;qBAiCa,4CAAc,uCAAA,0BAAA,SAAA;;;;;;qBAOd,gCACX,QAAQ,cACR,QAAQ"}
|
|
@@ -4,7 +4,7 @@ import "../../internal.js";
|
|
|
4
4
|
import "../../index.js";
|
|
5
5
|
import { TitleGenerationAdapter } from "./TitleGenerationAdapter.js";
|
|
6
6
|
//#region src/react/adapters/LocalStorageThreadListAdapter.d.ts
|
|
7
|
-
type AsyncStorageLike = {
|
|
7
|
+
export type AsyncStorageLike = {
|
|
8
8
|
getItem(key: string): Promise<string | null>;
|
|
9
9
|
setItem(key: string, value: string): Promise<void>;
|
|
10
10
|
removeItem(key: string): Promise<void>;
|
|
@@ -21,9 +21,8 @@ type StoredThreadMetadata = {
|
|
|
21
21
|
title?: string;
|
|
22
22
|
custom?: Record<string, unknown> | undefined;
|
|
23
23
|
};
|
|
24
|
-
declare const parseStoredThreadMetadata: (raw: string | null) => StoredThreadMetadata[];
|
|
25
|
-
declare const parseStoredMessageRepository: (raw: string | null) => ExportedMessageRepository;
|
|
26
|
-
declare const createLocalStorageAdapter: (options: LocalStorageAdapterOptions) => RemoteThreadListAdapter;
|
|
24
|
+
export declare const parseStoredThreadMetadata: (raw: string | null) => StoredThreadMetadata[];
|
|
25
|
+
export declare const parseStoredMessageRepository: (raw: string | null) => ExportedMessageRepository;
|
|
26
|
+
export declare const createLocalStorageAdapter: (options: LocalStorageAdapterOptions) => RemoteThreadListAdapter;
|
|
27
27
|
//#endregion
|
|
28
|
-
export { AsyncStorageLike, createLocalStorageAdapter, parseStoredMessageRepository, parseStoredThreadMetadata };
|
|
29
28
|
//# sourceMappingURL=LocalStorageThreadListAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;;;YAsCY;EACV,QAAQ,cAAc;EACtB,QAAQ,aAAa,gBAAgB;EACrC,WAAW,cAAc;;KAkCtB;EACH,SAAS;EACT;EACA,iBAAiB;;KAGd;EACH;EACA;EACA;EACA;EACA,SAAS;;qBA+KE,4BACX,uBACC;qBAoCU,+BACX,uBACC;qBAqIU,4BACX,SAAS,+BACR"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isRecord } from "../../utils/json/is-json.js";
|
|
2
2
|
import { RuntimeAdapterProvider } from "../runtimes/RuntimeAdapterProvider.js";
|
|
3
|
+
import { isStoredMessagePart, isStoredMessageRole, parseStoredAttachment, parseStoredDate } from "../../runtime/utils/stored-message-parts.js";
|
|
3
4
|
import { createAssistantStream } from "assistant-stream";
|
|
4
5
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
6
|
import { useEffect, useMemo, useRef, useState } from "@assistant-ui/tap/react-shim";
|
|
@@ -48,26 +49,8 @@ const parseStoredThread = (value) => {
|
|
|
48
49
|
...isRecord(value.custom) ? { custom: value.custom } : void 0
|
|
49
50
|
};
|
|
50
51
|
};
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
if (typeof value !== "string" && typeof value !== "number") return null;
|
|
54
|
-
const date = new Date(value);
|
|
55
|
-
return Number.isNaN(date.getTime()) ? null : date;
|
|
56
|
-
};
|
|
57
|
-
const isMessageRole = (value) => value === "system" || value === "user" || value === "assistant";
|
|
58
|
-
const MAX_STORED_MESSAGE_DEPTH = 100;
|
|
59
|
-
const storedPartGuards = {
|
|
60
|
-
text: (part) => typeof part.text === "string",
|
|
61
|
-
reasoning: (part) => typeof part.text === "string" || typeof part.unstable_summary === "string",
|
|
62
|
-
image: (part) => typeof part.image === "string",
|
|
63
|
-
file: (part) => typeof part.data === "string" && typeof part.mimeType === "string",
|
|
64
|
-
audio: (part) => isRecord(part.audio) && typeof part.audio.data === "string" && typeof part.audio.format === "string",
|
|
65
|
-
data: (part) => typeof part.name === "string",
|
|
66
|
-
source: (part) => typeof part.id === "string" && (part.sourceType === "url" ? typeof part.url === "string" : part.sourceType === "document" && typeof part.title === "string" && typeof part.mediaType === "string"),
|
|
67
|
-
"generative-ui": (part) => isRecord(part.spec),
|
|
68
|
-
"tool-call": (part) => typeof part.toolCallId === "string" && typeof part.toolName === "string" && isRecord(part.args) && typeof part.argsText === "string"
|
|
69
|
-
};
|
|
70
|
-
const isStoredMessagePart = (value) => isRecord(value) && typeof value.type === "string" && (!Object.hasOwn(storedPartGuards, value.type) || storedPartGuards[value.type](value));
|
|
52
|
+
const messageModalities = { voice: true };
|
|
53
|
+
const isMessageModality = (value) => typeof value === "string" && Object.hasOwn(messageModalities, value);
|
|
71
54
|
const parseStoredMessageParts = (content, depth) => content.flatMap((part) => {
|
|
72
55
|
if (!isStoredMessagePart(part)) return [];
|
|
73
56
|
if (part.type !== "tool-call" || part.messages === void 0) return [part];
|
|
@@ -81,26 +64,22 @@ const parseStoredMessageParts = (content, depth) => content.flatMap((part) => {
|
|
|
81
64
|
})
|
|
82
65
|
}];
|
|
83
66
|
});
|
|
84
|
-
const parseStoredAttachment = (value) => {
|
|
85
|
-
if (!isRecord(value) || typeof value.id !== "string" || typeof value.type !== "string" || typeof value.name !== "string" || !isRecord(value.status) || value.status.type !== "complete" || !Array.isArray(value.content)) return null;
|
|
86
|
-
return {
|
|
87
|
-
...value,
|
|
88
|
-
content: value.content.filter(isStoredMessagePart)
|
|
89
|
-
};
|
|
90
|
-
};
|
|
91
67
|
const parseStoredThreadMessage = (value, depth) => {
|
|
92
|
-
if (depth >
|
|
68
|
+
if (depth > 100) return null;
|
|
93
69
|
if (!isRecord(value) || typeof value.id !== "string") return null;
|
|
94
|
-
if (!
|
|
70
|
+
if (!isStoredMessageRole(value.role)) return null;
|
|
95
71
|
if (!Array.isArray(value.content)) return null;
|
|
96
|
-
const createdAt =
|
|
72
|
+
const createdAt = parseStoredDate(value.createdAt);
|
|
97
73
|
if (!createdAt) return null;
|
|
98
74
|
const metadata = value.metadata;
|
|
99
75
|
if (!isRecord(metadata) || !isRecord(metadata.custom)) return null;
|
|
76
|
+
const modality = isMessageModality(metadata.modality) ? metadata.modality : void 0;
|
|
100
77
|
if (value.role === "assistant") {
|
|
101
78
|
const status = value.status;
|
|
102
79
|
if (!isRecord(status) || typeof status.type !== "string") return null;
|
|
103
|
-
const
|
|
80
|
+
const submittedFeedback = isRecord(metadata.submittedFeedback) ? metadata.submittedFeedback : void 0;
|
|
81
|
+
const submittedFeedbackType = submittedFeedback?.type;
|
|
82
|
+
const submittedFeedbackComment = submittedFeedback?.comment;
|
|
104
83
|
return {
|
|
105
84
|
id: value.id,
|
|
106
85
|
role: "assistant",
|
|
@@ -112,9 +91,13 @@ const parseStoredThreadMessage = (value, depth) => {
|
|
|
112
91
|
unstable_annotations: Array.isArray(metadata.unstable_annotations) ? metadata.unstable_annotations : [],
|
|
113
92
|
unstable_data: Array.isArray(metadata.unstable_data) ? metadata.unstable_data : [],
|
|
114
93
|
steps: Array.isArray(metadata.steps) ? metadata.steps : [],
|
|
115
|
-
...submittedFeedbackType === "positive" || submittedFeedbackType === "negative" ? { submittedFeedback: {
|
|
94
|
+
...submittedFeedbackType === "positive" || submittedFeedbackType === "negative" ? { submittedFeedback: {
|
|
95
|
+
type: submittedFeedbackType,
|
|
96
|
+
...typeof submittedFeedbackComment === "string" && submittedFeedbackComment !== "" ? { comment: submittedFeedbackComment } : void 0
|
|
97
|
+
} } : void 0,
|
|
116
98
|
...metadata.timing !== void 0 ? { timing: metadata.timing } : void 0,
|
|
117
99
|
...metadata.isOptimistic === true ? { isOptimistic: true } : void 0,
|
|
100
|
+
...modality !== void 0 ? { modality } : void 0,
|
|
118
101
|
custom: metadata.custom
|
|
119
102
|
}
|
|
120
103
|
};
|
|
@@ -124,11 +107,14 @@ const parseStoredThreadMessage = (value, depth) => {
|
|
|
124
107
|
role: "user",
|
|
125
108
|
content: parseStoredMessageParts(value.content, depth),
|
|
126
109
|
attachments: Array.isArray(value.attachments) ? value.attachments.flatMap((item) => {
|
|
127
|
-
const attachment = parseStoredAttachment(item);
|
|
110
|
+
const attachment = parseStoredAttachment(item, isStoredMessagePart);
|
|
128
111
|
return attachment ? [attachment] : [];
|
|
129
112
|
}) : [],
|
|
130
113
|
createdAt,
|
|
131
|
-
metadata: {
|
|
114
|
+
metadata: {
|
|
115
|
+
...modality !== void 0 ? { modality } : void 0,
|
|
116
|
+
custom: metadata.custom
|
|
117
|
+
}
|
|
132
118
|
};
|
|
133
119
|
const content = parseStoredMessageParts(value.content, depth);
|
|
134
120
|
if (content.length !== 1) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalStorageThreadListAdapter.js","names":["AssistantStream","createAssistantStream","FC","PropsWithChildren","useEffect","useMemo","useRef","useState","useAui","CompleteAttachment","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","ThreadAssistantMessagePart","ThreadHistoryAdapter","ThreadMessage","ThreadUserMessagePart","RunConfig","ExportedMessageRepository","ExportedMessageRepositoryItem","isRecord","RuntimeAdapterProvider","RuntimeAdapters","TitleGenerationAdapter","AsyncStorageLike","getItem","key","Promise","setItem","value","removeItem","KeyedMutationQueue","tails","Map","run","mutation","T","previous","get","result","then","tail","undefined","set","delete","mutationQueues","WeakMap","getMutationQueue","storage","queue","LocalStorageAdapterOptions","prefix","titleGenerator","StoredThreadMetadata","remoteId","externalId","status","title","custom","Record","StoredSystemMessage","Extract","role","StoredUserMessage","StoredAssistantMessage","parseJSON","raw","JSON","parse","parseStoredThread","parseDate","Date","Number","isNaN","getTime","date","isMessageRole","MAX_STORED_MESSAGE_DEPTH","storedPartGuards","text","part","reasoning","unstable_summary","image","file","data","mimeType","audio","format","name","source","id","sourceType","url","mediaType","spec","toolCallId","toolName","args","argsText","isStoredMessagePart","type","Object","hasOwn","parseStoredMessageParts","content","depth","flatMap","messages","toolCall","Array","isArray","item","message","parseStoredThreadMessage","parseStoredAttachment","filter","createdAt","metadata","submittedFeedback","submittedFeedbackType","unstable_state","unstable_annotations","unstable_data","steps","timing","NonNullable","isOptimistic","attachments","attachment","length","parseStoredThreadMetadata","parsed","thread","parseStoredMessageRepositoryItem","parentId","runConfig","parseStoredMessageRepository","candidateMessages","parsedItem","acceptedIds","Set","has","add","headId","some","AsyncStorageHistoryAdapter","getAui","ReturnType","mutationQueue","constructor","aui","_messagesKey","load","threadListItem","getState","append","initialize","repo","idx","findIndex","m","push","stringify","useLocalStorageThreadAdapters","auiRef","current","history","createHistoryProvider","Provider","t0","$","_c","children","adapters","t1","createLocalStorageAdapter","options","threadsKey","messagesKey","threadId","loadThreadMetadata","saveThreadMetadata","threads","updateThreadMetadata","update","find","adapter","unstable_Provider","unstable_useAdapters","useLocalStorageAdapters","list","map","t","unshift","rename","newTitle","updateCustom","archive","unarchive","filtered","fetch","Error","generateTitle","controller","appendText"],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"sourcesContent":["import { type AssistantStream, createAssistantStream } from \"assistant-stream\";\nimport {\n type FC,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n CompleteAttachment,\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n ThreadAssistantMessagePart,\n ThreadHistoryAdapter,\n ThreadMessage,\n ThreadUserMessagePart,\n RunConfig,\n} from \"../../index\";\nimport type {\n ExportedMessageRepository,\n ExportedMessageRepositoryItem,\n} from \"../../internal\";\nimport { isRecord } from \"../../utils/json/is-json\";\nimport {\n RuntimeAdapterProvider,\n type RuntimeAdapters,\n} from \"../runtimes/RuntimeAdapterProvider\";\nimport type { TitleGenerationAdapter } from \"./TitleGenerationAdapter\";\n\nexport type AsyncStorageLike = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n};\n\nclass KeyedMutationQueue {\n private readonly tails = new Map<string, Promise<void>>();\n\n run<T>(key: string, mutation: () => Promise<T>): Promise<T> {\n const previous = this.tails.get(key);\n const result = previous ? previous.then(mutation) : mutation();\n const tail = result.then(\n () => undefined,\n () => undefined,\n );\n\n this.tails.set(key, tail);\n void tail.then(() => {\n if (this.tails.get(key) === tail) this.tails.delete(key);\n });\n\n return result;\n }\n}\n\nconst mutationQueues = new WeakMap<AsyncStorageLike, KeyedMutationQueue>();\n\nconst getMutationQueue = (storage: AsyncStorageLike): KeyedMutationQueue => {\n let queue = mutationQueues.get(storage);\n if (!queue) {\n queue = new KeyedMutationQueue();\n mutationQueues.set(storage, queue);\n }\n return queue;\n};\n\ntype LocalStorageAdapterOptions = {\n storage: AsyncStorageLike;\n prefix?: string | undefined;\n titleGenerator?: TitleGenerationAdapter | undefined;\n};\n\ntype StoredThreadMetadata = {\n remoteId: string;\n externalId?: string;\n status: \"regular\" | \"archived\";\n title?: string;\n custom?: Record<string, unknown> | undefined;\n};\n\ntype StoredSystemMessage = Extract<ThreadMessage, { role: \"system\" }>;\ntype StoredUserMessage = Extract<ThreadMessage, { role: \"user\" }>;\ntype StoredAssistantMessage = Extract<ThreadMessage, { role: \"assistant\" }>;\n\nconst parseJSON = (raw: string | null): unknown => {\n if (!raw) return undefined;\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return undefined;\n }\n};\n\nconst parseStoredThread = (value: unknown): StoredThreadMetadata | null => {\n if (!isRecord(value) || typeof value.remoteId !== \"string\") return null;\n\n const status = value.status ?? \"regular\";\n if (status !== \"regular\" && status !== \"archived\") return null;\n\n return {\n remoteId: value.remoteId,\n status,\n ...(typeof value.externalId === \"string\"\n ? { externalId: value.externalId }\n : undefined),\n ...(typeof value.title === \"string\" ? { title: value.title } : undefined),\n ...(isRecord(value.custom) ? { custom: value.custom } : undefined),\n };\n};\n\nconst parseDate = (value: unknown): Date | null => {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nconst isMessageRole = (value: unknown): value is ThreadMessage[\"role\"] =>\n value === \"system\" || value === \"user\" || value === \"assistant\";\n\nconst MAX_STORED_MESSAGE_DEPTH = 100;\n\nconst storedPartGuards = {\n text: (part) => typeof part.text === \"string\",\n reasoning: (part) =>\n typeof part.text === \"string\" || typeof part.unstable_summary === \"string\",\n image: (part) => typeof part.image === \"string\",\n file: (part) =>\n typeof part.data === \"string\" && typeof part.mimeType === \"string\",\n audio: (part) =>\n isRecord(part.audio) &&\n typeof part.audio.data === \"string\" &&\n typeof part.audio.format === \"string\",\n data: (part) => typeof part.name === \"string\",\n source: (part) =>\n typeof part.id === \"string\" &&\n (part.sourceType === \"url\"\n ? typeof part.url === \"string\"\n : part.sourceType === \"document\" &&\n typeof part.title === \"string\" &&\n typeof part.mediaType === \"string\"),\n \"generative-ui\": (part) => isRecord(part.spec),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n isRecord(part.args) &&\n typeof part.argsText === \"string\",\n} satisfies Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n (part: Record<string, unknown>) => boolean\n>;\n\nconst isStoredMessagePart = (\n value: unknown,\n): value is Record<string, unknown> & { type: string } =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (!Object.hasOwn(storedPartGuards, value.type) ||\n storedPartGuards[value.type as keyof typeof storedPartGuards](value));\n\nconst parseStoredMessageParts = (\n content: unknown[],\n depth: number,\n): unknown[] =>\n content.flatMap((part) => {\n if (!isStoredMessagePart(part)) return [];\n if (part.type !== \"tool-call\" || part.messages === undefined) return [part];\n\n const { messages, ...toolCall } = part;\n if (!Array.isArray(messages)) return [toolCall];\n return [\n {\n ...toolCall,\n messages: messages.flatMap((item) => {\n const message = parseStoredThreadMessage(item, depth + 1);\n return message ? [message] : [];\n }),\n },\n ];\n });\n\nconst parseStoredAttachment = (value: unknown): CompleteAttachment | null => {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n typeof value.type !== \"string\" ||\n typeof value.name !== \"string\" ||\n !isRecord(value.status) ||\n value.status.type !== \"complete\" ||\n !Array.isArray(value.content)\n ) {\n return null;\n }\n\n return {\n ...value,\n content: value.content.filter(isStoredMessagePart),\n } as CompleteAttachment;\n};\n\nconst parseStoredThreadMessage = (\n value: unknown,\n depth: number,\n): ThreadMessage | null => {\n if (depth > MAX_STORED_MESSAGE_DEPTH) return null;\n if (!isRecord(value) || typeof value.id !== \"string\") return null;\n if (!isMessageRole(value.role)) return null;\n if (!Array.isArray(value.content)) return null;\n\n const createdAt = parseDate(value.createdAt);\n if (!createdAt) return null;\n\n const metadata = value.metadata;\n if (!isRecord(metadata) || !isRecord(metadata.custom)) return null;\n\n if (value.role === \"assistant\") {\n const status = value.status;\n if (!isRecord(status) || typeof status.type !== \"string\") return null;\n\n const submittedFeedback = isRecord(metadata.submittedFeedback)\n ? metadata.submittedFeedback\n : undefined;\n const submittedFeedbackType = submittedFeedback?.type;\n\n return {\n id: value.id,\n role: \"assistant\",\n content: parseStoredMessageParts(\n value.content,\n depth,\n ) as StoredAssistantMessage[\"content\"],\n status: status as StoredAssistantMessage[\"status\"],\n createdAt,\n metadata: {\n unstable_state: (metadata.unstable_state ??\n null) as StoredAssistantMessage[\"metadata\"][\"unstable_state\"],\n unstable_annotations: Array.isArray(metadata.unstable_annotations)\n ? (metadata.unstable_annotations as StoredAssistantMessage[\"metadata\"][\"unstable_annotations\"])\n : [],\n unstable_data: Array.isArray(metadata.unstable_data)\n ? (metadata.unstable_data as StoredAssistantMessage[\"metadata\"][\"unstable_data\"])\n : [],\n steps: Array.isArray(metadata.steps)\n ? (metadata.steps as StoredAssistantMessage[\"metadata\"][\"steps\"])\n : [],\n ...(submittedFeedbackType === \"positive\" ||\n submittedFeedbackType === \"negative\"\n ? {\n submittedFeedback: {\n type: submittedFeedbackType,\n },\n }\n : undefined),\n ...(metadata.timing !== undefined\n ? {\n timing: metadata.timing as NonNullable<\n StoredAssistantMessage[\"metadata\"][\"timing\"]\n >,\n }\n : undefined),\n ...(metadata.isOptimistic === true\n ? { isOptimistic: true }\n : undefined),\n custom: metadata.custom,\n },\n };\n }\n\n if (value.role === \"user\") {\n return {\n id: value.id,\n role: \"user\",\n content: parseStoredMessageParts(\n value.content,\n depth,\n ) as StoredUserMessage[\"content\"],\n attachments: Array.isArray(value.attachments)\n ? value.attachments.flatMap((item) => {\n const attachment = parseStoredAttachment(item);\n return attachment ? [attachment] : [];\n })\n : [],\n createdAt,\n metadata: {\n custom: metadata.custom,\n },\n };\n }\n\n const content = parseStoredMessageParts(value.content, depth);\n if (content.length !== 1) return null;\n\n return {\n id: value.id,\n role: \"system\",\n content: [content[0] as StoredSystemMessage[\"content\"][0]],\n createdAt,\n metadata: {\n custom: metadata.custom,\n },\n };\n};\n\nexport const parseStoredThreadMetadata = (\n raw: string | null,\n): StoredThreadMetadata[] => {\n const parsed = parseJSON(raw);\n if (!Array.isArray(parsed)) return [];\n\n return parsed.flatMap((item) => {\n const thread = parseStoredThread(item);\n return thread ? [thread] : [];\n });\n};\n\nconst parseStoredMessageRepositoryItem = (\n value: unknown,\n): ExportedMessageRepositoryItem | null => {\n if (!isRecord(value)) return null;\n\n const message = parseStoredThreadMessage(value.message, 0);\n if (!message) return null;\n\n const parentId = value.parentId;\n if (\n parentId !== undefined &&\n parentId !== null &&\n typeof parentId !== \"string\"\n ) {\n return null;\n }\n\n return {\n message,\n parentId: parentId ?? null,\n ...(isRecord(value.runConfig)\n ? { runConfig: value.runConfig as RunConfig }\n : undefined),\n };\n};\n\nexport const parseStoredMessageRepository = (\n raw: string | null,\n): ExportedMessageRepository => {\n const parsed = parseJSON(raw);\n if (!isRecord(parsed) || !Array.isArray(parsed.messages)) {\n return { messages: [] };\n }\n\n const candidateMessages = parsed.messages.flatMap((item) => {\n const parsedItem = parseStoredMessageRepositoryItem(item);\n return parsedItem ? [parsedItem] : [];\n });\n\n const acceptedIds = new Set<string>();\n const messages = candidateMessages.flatMap((item) => {\n if (acceptedIds.has(item.message.id)) return [];\n if (item.parentId !== null && !acceptedIds.has(item.parentId)) return [];\n\n acceptedIds.add(item.message.id);\n return [item];\n });\n\n const headId =\n parsed.headId === null ||\n (typeof parsed.headId === \"string\" &&\n messages.some((item) => item.message.id === parsed.headId))\n ? parsed.headId\n : undefined;\n\n return {\n ...(headId !== undefined ? { headId } : undefined),\n messages,\n };\n};\n\nclass AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {\n private storage: AsyncStorageLike;\n private getAui: () => ReturnType<typeof useAui>;\n private prefix: string;\n private mutationQueue: KeyedMutationQueue;\n\n constructor(\n storage: AsyncStorageLike,\n getAui: () => ReturnType<typeof useAui>,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n ) {\n this.storage = storage;\n this.getAui = getAui;\n this.prefix = prefix;\n this.mutationQueue = mutationQueue;\n }\n\n private get aui(): ReturnType<typeof useAui> {\n return this.getAui();\n }\n\n private _messagesKey(remoteId: string) {\n return `${this.prefix}messages:${remoteId}`;\n }\n\n async load(): Promise<ExportedMessageRepository> {\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return { messages: [] };\n\n const raw = await this.storage.getItem(this._messagesKey(remoteId));\n return parseStoredMessageRepository(raw);\n }\n\n async append(item: ExportedMessageRepositoryItem): Promise<void> {\n const { remoteId } = await this.aui.threadListItem.initialize();\n\n const key = this._messagesKey(remoteId);\n await this.mutationQueue.run(key, async () => {\n const raw = await this.storage.getItem(key);\n const repo = parseStoredMessageRepository(raw);\n\n const idx = repo.messages.findIndex(\n (m) => m.message.id === item.message.id,\n );\n if (idx >= 0) {\n repo.messages[idx] = item;\n } else {\n repo.messages.push(item);\n }\n repo.headId = item.message.id;\n\n await this.storage.setItem(key, JSON.stringify(repo));\n });\n }\n}\n\nconst useLocalStorageThreadAdapters = (\n storage: AsyncStorageLike,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n): RuntimeAdapters => {\n const aui = useAui();\n // Not useEffectEvent: history adapter methods run during render (SSR load).\n const auiRef = useRef(aui);\n useEffect(() => {\n auiRef.current = aui;\n });\n const [history] = useState(\n () =>\n new AsyncStorageHistoryAdapter(\n storage,\n () => auiRef.current,\n prefix,\n mutationQueue,\n ),\n );\n return useMemo(() => ({ history }), [history]);\n};\n\nconst createHistoryProvider = (\n storage: AsyncStorageLike,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n): FC<PropsWithChildren> => {\n const Provider: FC<PropsWithChildren> = ({ children }) => {\n const adapters = useLocalStorageThreadAdapters(\n storage,\n prefix,\n mutationQueue,\n );\n return (\n <RuntimeAdapterProvider adapters={adapters}>\n {children}\n </RuntimeAdapterProvider>\n );\n };\n return Provider;\n};\n\nexport const createLocalStorageAdapter = (\n options: LocalStorageAdapterOptions,\n): RemoteThreadListAdapter => {\n const { storage, prefix = \"@assistant-ui:\", titleGenerator } = options;\n\n const threadsKey = `${prefix}threads`;\n const messagesKey = (threadId: string) => `${prefix}messages:${threadId}`;\n const mutationQueue = getMutationQueue(storage);\n\n const loadThreadMetadata = async (): Promise<StoredThreadMetadata[]> => {\n const raw = await storage.getItem(threadsKey);\n return parseStoredThreadMetadata(raw);\n };\n\n const saveThreadMetadata = async (\n threads: StoredThreadMetadata[],\n ): Promise<void> => {\n await storage.setItem(threadsKey, JSON.stringify(threads));\n };\n\n const updateThreadMetadata = async (\n remoteId: string,\n update: (thread: StoredThreadMetadata) => void,\n ): Promise<void> => {\n await mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n const thread = threads.find((item) => item.remoteId === remoteId);\n if (thread) {\n update(thread);\n await saveThreadMetadata(threads);\n }\n });\n };\n\n const adapter: RemoteThreadListAdapter = {\n unstable_Provider: createHistoryProvider(storage, prefix, mutationQueue),\n unstable_useAdapters: function useLocalStorageAdapters() {\n return useLocalStorageThreadAdapters(storage, prefix, mutationQueue);\n },\n\n async list(): Promise<RemoteThreadListResponse> {\n const threads = await loadThreadMetadata();\n return {\n threads: threads.map((t) => ({\n remoteId: t.remoteId,\n externalId: t.externalId,\n status: t.status,\n title: t.title,\n custom: t.custom,\n })),\n };\n },\n\n async initialize(\n threadId: string,\n ): Promise<RemoteThreadInitializeResponse> {\n const remoteId = threadId;\n return mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n\n // Only add if not already present\n if (!threads.some((t) => t.remoteId === remoteId)) {\n threads.unshift({\n remoteId,\n status: \"regular\",\n });\n await saveThreadMetadata(threads);\n }\n\n return { remoteId, externalId: undefined };\n });\n },\n\n async rename(remoteId: string, newTitle: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.title = newTitle;\n });\n },\n\n async updateCustom(\n remoteId: string,\n custom: Record<string, unknown> | undefined,\n ): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.custom = custom;\n });\n },\n\n async archive(remoteId: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.status = \"archived\";\n });\n },\n\n async unarchive(remoteId: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.status = \"regular\";\n });\n },\n\n async delete(remoteId: string): Promise<void> {\n await mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n const filtered = threads.filter((t) => t.remoteId !== remoteId);\n await saveThreadMetadata(filtered);\n });\n const key = messagesKey(remoteId);\n await mutationQueue.run(key, () => storage.removeItem(key));\n },\n\n async fetch(threadId: string): Promise<RemoteThreadMetadata> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === threadId);\n if (!thread)\n throw new Error(\n `Stored thread \"${threadId}\" not found while fetching thread metadata.`,\n );\n return {\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n status: thread.status,\n title: thread.title,\n custom: thread.custom,\n };\n },\n\n async generateTitle(\n remoteId: string,\n messages: readonly ThreadMessage[],\n ): Promise<AssistantStream> {\n if (titleGenerator) {\n const title = await titleGenerator.generateTitle(messages);\n\n // Update the stored title\n await updateThreadMetadata(remoteId, (thread) => {\n thread.title = title;\n });\n\n // Return a stream with a single text part\n return createAssistantStream((controller) => {\n controller.appendText(title);\n });\n }\n\n // No title generator — return empty stream\n return createAssistantStream(() => {});\n },\n };\n\n return adapter;\n};\n"],"mappings":";;;;;;;;AAuCA,IAAMgC,qBAAN,MAAyB;CACvB,wBAAyB,IAAIE,IAA2B;CAExDC,IAAOR,KAAaS,UAAwC;EAC1D,MAAME,WAAW,KAAKL,MAAMM,IAAIZ,GAAG;EACnC,MAAMa,SAASF,WAAWA,SAASG,KAAKL,QAAQ,IAAIA,SAAS;EAC7D,MAAMM,OAAOF,OAAOC,WACZE,KAAAA,SACAA,KAAAA,CACR;EAEA,KAAKV,MAAMW,IAAIjB,KAAKe,IAAI;EACxB,KAAUD,WAAW;GACnB,IAAI,KAAKR,MAAMM,IAAIZ,GAAG,MAAMe,MAAM,KAAKT,MAAMY,OAAOlB,GAAG;EACzD,CAAC;EAED,OAAOa;CACT;AACF;AAEA,MAAMM,iCAAiB,IAAIC,QAA8C;AAEzE,MAAMC,oBAAoBC,YAAkD;CAC1E,IAAIC,QAAQJ,eAAeP,IAAIU,OAAO;CACtC,IAAI,CAACC,OAAO;EACVA,QAAQ,IAAIlB,mBAAmB;EAC/Bc,eAAeF,IAAIK,SAASC,KAAK;CACnC;CACA,OAAOA;AACT;AAoBA,MAAMgB,aAAaC,QAAgC;CACjD,IAAI,CAACA,KAAK,OAAOxB,KAAAA;CACjB,IAAI;EACF,OAAOyB,KAAKC,MAAMF,GAAG;CACvB,QAAQ;EACN;CACF;AACF;AAEA,MAAMG,qBAAqBxC,UAAgD;CACzE,IAAI,CAACT,SAASS,KAAK,KAAK,OAAOA,MAAMyB,aAAa,UAAU,OAAO;CAEnE,MAAME,SAAS3B,MAAM2B,UAAU;CAC/B,IAAIA,WAAW,aAAaA,WAAW,YAAY,OAAO;CAE1D,OAAO;EACLF,UAAUzB,MAAMyB;EAChBE;EACA,GAAI,OAAO3B,MAAM0B,eAAe,WAC5B,EAAEA,YAAY1B,MAAM0B,WAAW,IAC/Bb,KAAAA;EACJ,GAAI,OAAOb,MAAM4B,UAAU,WAAW,EAAEA,OAAO5B,MAAM4B,MAAM,IAAIf,KAAAA;EAC/D,GAAItB,SAASS,MAAM6B,MAAM,IAAI,EAAEA,QAAQ7B,MAAM6B,OAAO,IAAIhB,KAAAA;CAC1D;AACF;AAEA,MAAM4B,aAAazC,UAAgC;CACjD,IAAIA,iBAAiB0C,QAAQ,CAACC,OAAOC,MAAM5C,MAAM6C,QAAQ,CAAC,GAAG,OAAO7C;CACpE,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU,OAAO;CAEnE,MAAM8C,OAAO,IAAIJ,KAAK1C,KAAK;CAC3B,OAAO2C,OAAOC,MAAME,KAAKD,QAAQ,CAAC,IAAI,OAAOC;AAC/C;AAEA,MAAMC,iBAAiB/C,UACrBA,UAAU,YAAYA,UAAU,UAAUA,UAAU;AAEtD,MAAMgD,2BAA2B;AAEjC,MAAMC,mBAAmB;CACvBC,OAAOC,SAAS,OAAOA,KAAKD,SAAS;CACrCE,YAAYD,SACV,OAAOA,KAAKD,SAAS,YAAY,OAAOC,KAAKE,qBAAqB;CACpEC,QAAQH,SAAS,OAAOA,KAAKG,UAAU;CACvCC,OAAOJ,SACL,OAAOA,KAAKK,SAAS,YAAY,OAAOL,KAAKM,aAAa;CAC5DC,QAAQP,SACN5D,SAAS4D,KAAKO,KAAK,KACnB,OAAOP,KAAKO,MAAMF,SAAS,YAC3B,OAAOL,KAAKO,MAAMC,WAAW;CAC/BH,OAAOL,SAAS,OAAOA,KAAKS,SAAS;CACrCC,SAASV,SACP,OAAOA,KAAKW,OAAO,aAClBX,KAAKY,eAAe,QACjB,OAAOZ,KAAKa,QAAQ,WACpBb,KAAKY,eAAe,cACpB,OAAOZ,KAAKvB,UAAU,YACtB,OAAOuB,KAAKc,cAAc;CAChC,kBAAkBd,SAAS5D,SAAS4D,KAAKe,IAAI;CAC7C,cAAcf,SACZ,OAAOA,KAAKgB,eAAe,YAC3B,OAAOhB,KAAKiB,aAAa,YACzB7E,SAAS4D,KAAKkB,IAAI,KAClB,OAAOlB,KAAKmB,aAAa;AAC7B;AAKA,MAAMC,uBACJvE,UAEAT,SAASS,KAAK,KACd,OAAOA,MAAMwE,SAAS,aACrB,CAACC,OAAOC,OAAOzB,kBAAkBjD,MAAMwE,IAAI,KAC1CvB,iBAAiBjD,MAAMwE,KAAsC,CAACxE,KAAK;AAEvE,MAAM2E,2BACJC,SACAC,UAEAD,QAAQE,SAAS3B,SAAS;CACxB,IAAI,CAACoB,oBAAoBpB,IAAI,GAAG,OAAO,CAAA;CACvC,IAAIA,KAAKqB,SAAS,eAAerB,KAAK4B,aAAalE,KAAAA,GAAW,OAAO,CAACsC,IAAI;CAE1E,MAAM,EAAE4B,UAAU,GAAGC,aAAa7B;CAClC,IAAI,CAAC8B,MAAMC,QAAQH,QAAQ,GAAG,OAAO,CAACC,QAAQ;CAC9C,OAAO,CACL;EACE,GAAGA;EACHD,UAAUA,SAASD,SAASK,SAAS;GACnC,MAAMC,UAAUC,yBAAyBF,MAAMN,QAAQ,CAAC;GACxD,OAAOO,UAAU,CAACA,OAAO,IAAI,CAAA;EAC/B,CAAC;CACH,CAAC;AAEL,CAAC;AAEH,MAAME,yBAAyBtF,UAA8C;CAC3E,IACE,CAACT,SAASS,KAAK,KACf,OAAOA,MAAM8D,OAAO,YACpB,OAAO9D,MAAMwE,SAAS,YACtB,OAAOxE,MAAM4D,SAAS,YACtB,CAACrE,SAASS,MAAM2B,MAAM,KACtB3B,MAAM2B,OAAO6C,SAAS,cACtB,CAACS,MAAMC,QAAQlF,MAAM4E,OAAO,GAE5B,OAAO;CAGT,OAAO;EACL,GAAG5E;EACH4E,SAAS5E,MAAM4E,QAAQW,OAAOhB,mBAAmB;CACnD;AACF;AAEA,MAAMc,4BACJrF,OACA6E,UACyB;CACzB,IAAIA,QAAQ7B,0BAA0B,OAAO;CAC7C,IAAI,CAACzD,SAASS,KAAK,KAAK,OAAOA,MAAM8D,OAAO,UAAU,OAAO;CAC7D,IAAI,CAACf,cAAc/C,MAAMiC,IAAI,GAAG,OAAO;CACvC,IAAI,CAACgD,MAAMC,QAAQlF,MAAM4E,OAAO,GAAG,OAAO;CAE1C,MAAMY,YAAY/C,UAAUzC,MAAMwF,SAAS;CAC3C,IAAI,CAACA,WAAW,OAAO;CAEvB,MAAMC,WAAWzF,MAAMyF;CACvB,IAAI,CAAClG,SAASkG,QAAQ,KAAK,CAAClG,SAASkG,SAAS5D,MAAM,GAAG,OAAO;CAE9D,IAAI7B,MAAMiC,SAAS,aAAa;EAC9B,MAAMN,SAAS3B,MAAM2B;EACrB,IAAI,CAACpC,SAASoC,MAAM,KAAK,OAAOA,OAAO6C,SAAS,UAAU,OAAO;EAKjE,MAAMmB,yBAHoBpG,SAASkG,SAASC,iBAAiB,IACzDD,SAASC,oBACT7E,KAAAA,EAAAA,EAC6C2D;EAEjD,OAAO;GACLV,IAAI9D,MAAM8D;GACV7B,MAAM;GACN2C,SAASD,wBACP3E,MAAM4E,SACNC,KACF;GACQlD;GACR6D;GACAC,UAAU;IACRG,gBAAiBH,SAASG,kBACxB;IACFC,sBAAsBZ,MAAMC,QAAQO,SAASI,oBAAoB,IAC5DJ,SAASI,uBACV,CAAA;IACJC,eAAeb,MAAMC,QAAQO,SAASK,aAAa,IAC9CL,SAASK,gBACV,CAAA;IACJC,OAAOd,MAAMC,QAAQO,SAASM,KAAK,IAC9BN,SAASM,QACV,CAAA;IACJ,GAAIJ,0BAA0B,cAC9BA,0BAA0B,aACtB,EACED,mBAAmB,EACjBlB,MAAMmB,sBACR,EACF,IACA9E,KAAAA;IACJ,GAAI4E,SAASO,WAAWnF,KAAAA,IACpB,EACEmF,QAAQP,SAASO,OAGnB,IACAnF,KAAAA;IACJ,GAAI4E,SAASS,iBAAiB,OAC1B,EAAEA,cAAc,KAAK,IACrBrF,KAAAA;IACJgB,QAAQ4D,SAAS5D;GACnB;EACF;CACF;CAEA,IAAI7B,MAAMiC,SAAS,QACjB,OAAO;EACL6B,IAAI9D,MAAM8D;EACV7B,MAAM;EACN2C,SAASD,wBACP3E,MAAM4E,SACNC,KACF;EACAsB,aAAalB,MAAMC,QAAQlF,MAAMmG,WAAW,IACxCnG,MAAMmG,YAAYrB,SAASK,SAAS;GAClC,MAAMiB,aAAad,sBAAsBH,IAAI;GAC7C,OAAOiB,aAAa,CAACA,UAAU,IAAI,CAAA;EACrC,CAAC,IACD,CAAA;EACJZ;EACAC,UAAU,EACR5D,QAAQ4D,SAAS5D,OACnB;CACF;CAGF,MAAM+C,UAAUD,wBAAwB3E,MAAM4E,SAASC,KAAK;CAC5D,IAAID,QAAQyB,WAAW,GAAG,OAAO;CAEjC,OAAO;EACLvC,IAAI9D,MAAM8D;EACV7B,MAAM;EACN2C,SAAS,CAACA,QAAQ,EAAuC;EACzDY;EACAC,UAAU,EACR5D,QAAQ4D,SAAS5D,OACnB;CACF;AACF;AAEA,MAAayE,6BACXjE,QAC2B;CAC3B,MAAMkE,SAASnE,UAAUC,GAAG;CAC5B,IAAI,CAAC4C,MAAMC,QAAQqB,MAAM,GAAG,OAAO,CAAA;CAEnC,OAAOA,OAAOzB,SAASK,SAAS;EAC9B,MAAMqB,SAAShE,kBAAkB2C,IAAI;EACrC,OAAOqB,SAAS,CAACA,MAAM,IAAI,CAAA;CAC7B,CAAC;AACH;AAEA,MAAMC,oCACJzG,UACyC;CACzC,IAAI,CAACT,SAASS,KAAK,GAAG,OAAO;CAE7B,MAAMoF,UAAUC,yBAAyBrF,MAAMoF,SAAS,CAAC;CACzD,IAAI,CAACA,SAAS,OAAO;CAErB,MAAMsB,WAAW1G,MAAM0G;CACvB,IACEA,aAAa7F,KAAAA,KACb6F,aAAa,QACb,OAAOA,aAAa,UAEpB,OAAO;CAGT,OAAO;EACLtB;EACAsB,UAAUA,YAAY;EACtB,GAAInH,SAASS,MAAM2G,SAAS,IACxB,EAAEA,WAAW3G,MAAM2G,UAAuB,IAC1C9F,KAAAA;CACN;AACF;AAEA,MAAa+F,gCACXvE,QAC8B;CAC9B,MAAMkE,SAASnE,UAAUC,GAAG;CAC5B,IAAI,CAAC9C,SAASgH,MAAM,KAAK,CAACtB,MAAMC,QAAQqB,OAAOxB,QAAQ,GACrD,OAAO,EAAEA,UAAU,CAAA,EAAG;CAGxB,MAAM8B,oBAAoBN,OAAOxB,SAASD,SAASK,SAAS;EAC1D,MAAM2B,aAAaL,iCAAiCtB,IAAI;EACxD,OAAO2B,aAAa,CAACA,UAAU,IAAI,CAAA;CACrC,CAAC;CAED,MAAMC,8BAAc,IAAIC,IAAY;CACpC,MAAMjC,WAAW8B,kBAAkB/B,SAASK,SAAS;EACnD,IAAI4B,YAAYE,IAAI9B,KAAKC,QAAQtB,EAAE,GAAG,OAAO,CAAA;EAC7C,IAAIqB,KAAKuB,aAAa,QAAQ,CAACK,YAAYE,IAAI9B,KAAKuB,QAAQ,GAAG,OAAO,CAAA;EAEtEK,YAAYG,IAAI/B,KAAKC,QAAQtB,EAAE;EAC/B,OAAO,CAACqB,IAAI;CACd,CAAC;CAED,MAAMgC,SACJZ,OAAOY,WAAW,QACjB,OAAOZ,OAAOY,WAAW,YACxBpC,SAASqC,MAAMjC,SAASA,KAAKC,QAAQtB,OAAOyC,OAAOY,MAAM,IACvDZ,OAAOY,SACPtG,KAAAA;CAEN,OAAO;EACL,GAAIsG,WAAWtG,KAAAA,IAAY,EAAEsG,OAAO,IAAItG,KAAAA;EACxCkE;CACF;AACF;AAEA,IAAMsC,6BAAN,MAAiE;CAC/D;CACA;CACA;CACA;CAEAI,YACEtG,SACAmG,QACAhG,QACAkG,eACA;EACA,KAAKrG,UAAUA;EACf,KAAKmG,SAASA;EACd,KAAKhG,SAASA;EACd,KAAKkG,gBAAgBA;CACvB;CAEA,IAAYE,MAAiC;EAC3C,OAAO,KAAKJ,OAAO;CACrB;CAEA,aAAqB7F,UAAkB;EACrC,OAAO,GAAG,KAAKH,OAAM,WAAYG;CACnC;CAEA,MAAMmG,OAA2C;EAC/C,MAAMnG,WAAW,KAAKiG,IAAIG,eAAeC,SAAS,CAAC,CAACrG;EACpD,IAAI,CAACA,UAAU,OAAO,EAAEsD,UAAU,CAAA,EAAG;EAErC,MAAM1C,MAAM,MAAM,KAAKlB,QAAQvB,QAAQ,KAAK+H,aAAalG,QAAQ,CAAC;EAClE,OAAOmF,6BAA6BvE,GAAG;CACzC;CAEA,MAAM0F,OAAO5C,MAAoD;EAC/D,MAAM,EAAE1D,aAAa,MAAM,KAAKiG,IAAIG,eAAeG,WAAW;EAE9D,MAAMnI,MAAM,KAAK8H,aAAalG,QAAQ;EACtC,MAAM,KAAK+F,cAAcnH,IAAIR,KAAK,YAAY;GAC5C,MAAMwC,MAAM,MAAM,KAAKlB,QAAQvB,QAAQC,GAAG;GAC1C,MAAMoI,OAAOrB,6BAA6BvE,GAAG;GAE7C,MAAM6F,MAAMD,KAAKlD,SAASoD,WACvBC,MAAMA,EAAEhD,QAAQtB,OAAOqB,KAAKC,QAAQtB,EACvC;GACA,IAAIoE,OAAO,GACTD,KAAKlD,SAASmD,OAAO/C;QAErB8C,KAAKlD,SAASsD,KAAKlD,IAAI;GAEzB8C,KAAKd,SAAShC,KAAKC,QAAQtB;GAE3B,MAAM,KAAK3C,QAAQpB,QAAQF,KAAKyC,KAAKgG,UAAUL,IAAI,CAAC;EACtD,CAAC;CACH;AACF;AAEA,MAAMM,iCACJpH,SACAG,QACAkG,kBACoB;CACpB,MAAME,MAAMhJ,OAAO;CAEnB,MAAM8J,SAAShK,OAAOkJ,GAAG;CACzBpJ,gBAAgB;EACdkK,OAAOC,UAAUf;CACnB,CAAC;CACD,MAAM,CAACgB,WAAWjK,eAEd,IAAI4I,2BACFlG,eACMqH,OAAOC,SACbnH,QACAkG,aACF,CACJ;CACA,OAAOjJ,eAAe,EAAEmK,QAAQ,IAAI,CAACA,OAAO,CAAC;AAC/C;AAEA,MAAMC,yBACJxH,SACAG,QACAkG,kBAC0B;CAC1B,MAAMoB,YAAkCC,OAAA;EAAA,MAAAC,IAAAC,EAAA,CAAA;EAAC,MAAA,EAAAC,aAAAH;EACvC,MAAAI,WAAiBV,8BACfpH,SACAG,QACAkG,aACF;EAAE,IAAA0B;EAAA,IAAAJ,EAAA,OAAAG,YAAAH,EAAA,OAAAE,UAAA;GAEAE,KAAA,oBAAC,wBAAD;IAAkCD;IAC/BD;GADoB,CAAA;GAEEF,EAAA,KAAAG;GAAAH,EAAA,KAAAE;GAAAF,EAAA,KAAAI;EAAA,OAAAA,KAAAJ,EAAA;EAAA,OAFzBI;CAEyB;CAG7B,OAAON;AACT;AAEA,MAAaO,6BACXC,YAC4B;CAC5B,MAAM,EAAEjI,SAASG,SAAS,kBAAkBC,mBAAmB6H;CAE/D,MAAMC,aAAa,GAAG/H,OAAM;CAC5B,MAAMgI,eAAeC,aAAqB,GAAGjI,OAAM,WAAYiI;CAC/D,MAAM/B,gBAAgBtG,iBAAiBC,OAAO;CAE9C,MAAMqI,qBAAqB,YAA6C;EACtE,MAAMnH,MAAM,MAAMlB,QAAQvB,QAAQyJ,UAAU;EAC5C,OAAO/C,0BAA0BjE,GAAG;CACtC;CAEA,MAAMoH,qBAAqB,OACzBC,YACkB;EAClB,MAAMvI,QAAQpB,QAAQsJ,YAAY/G,KAAKgG,UAAUoB,OAAO,CAAC;CAC3D;CAEA,MAAMC,uBAAuB,OAC3BlI,UACAmI,WACkB;EAClB,MAAMpC,cAAcnH,IAAIgJ,YAAY,YAAY;GAC9C,MAAMK,UAAU,MAAMF,mBAAmB;GACzC,MAAMhD,SAASkD,QAAQG,MAAM1E,SAASA,KAAK1D,aAAaA,QAAQ;GAChE,IAAI+E,QAAQ;IACVoD,OAAOpD,MAAM;IACb,MAAMiD,mBAAmBC,OAAO;GAClC;EACF,CAAC;CACH;CAqHA,OAAOI;EAlHLC,mBAAmBpB,sBAAsBxH,SAASG,QAAQkG,aAAa;EACvEwC,sBAAsB,SAASC,0BAA0B;GACvD,OAAO1B,8BAA8BpH,SAASG,QAAQkG,aAAa;EACrE;EAEA,MAAM0C,OAA0C;GAE9C,OAAO,EACLR,UAASA,MAFWF,mBAAmB,EAAA,CAEtBW,KAAKC,OAAO;IAC3B3I,UAAU2I,EAAE3I;IACZC,YAAY0I,EAAE1I;IACdC,QAAQyI,EAAEzI;IACVC,OAAOwI,EAAExI;IACTC,QAAQuI,EAAEvI;GACZ,EAAE,EACJ;EACF;EAEA,MAAMmG,WACJuB,UACyC;GACzC,MAAM9H,WAAW8H;GACjB,OAAO/B,cAAcnH,IAAIgJ,YAAY,YAAY;IAC/C,MAAMK,UAAU,MAAMF,mBAAmB;IAGzC,IAAI,CAACE,QAAQtC,MAAMgD,MAAMA,EAAE3I,aAAaA,QAAQ,GAAG;KACjDiI,QAAQW,QAAQ;MACd5I;MACAE,QAAQ;KACV,CAAC;KACD,MAAM8H,mBAAmBC,OAAO;IAClC;IAEA,OAAO;KAAEjI;KAAUC,YAAYb,KAAAA;IAAU;GAC3C,CAAC;EACH;EAEA,MAAMyJ,OAAO7I,UAAkB8I,UAAiC;GAC9D,MAAMZ,qBAAqBlI,WAAW+E,WAAW;IAC/CA,OAAO5E,QAAQ2I;GACjB,CAAC;EACH;EAEA,MAAMC,aACJ/I,UACAI,QACe;GACf,MAAM8H,qBAAqBlI,WAAW+E,WAAW;IAC/CA,OAAO3E,SAASA;GAClB,CAAC;EACH;EAEA,MAAM4I,QAAQhJ,UAAiC;GAC7C,MAAMkI,qBAAqBlI,WAAW+E,WAAW;IAC/CA,OAAO7E,SAAS;GAClB,CAAC;EACH;EAEA,MAAM+I,UAAUjJ,UAAiC;GAC/C,MAAMkI,qBAAqBlI,WAAW+E,WAAW;IAC/CA,OAAO7E,SAAS;GAClB,CAAC;EACH;EAEA,MAAMZ,OAAOU,UAAiC;GAC5C,MAAM+F,cAAcnH,IAAIgJ,YAAY,YAAY;IAE9C,MAAMsB,YAAWjB,MADKF,mBAAmB,EAAA,CAChBjE,QAAQ6E,MAAMA,EAAE3I,aAAaA,QAAQ;IAC9D,MAAMgI,mBAAmBkB,QAAQ;GACnC,CAAC;GACD,MAAM9K,MAAMyJ,YAAY7H,QAAQ;GAChC,MAAM+F,cAAcnH,IAAIR,WAAWsB,QAAQlB,WAAWJ,GAAG,CAAC;EAC5D;EAEA,MAAM+K,MAAMrB,UAAiD;GAE3D,MAAM/C,UAASkD,MADOF,mBAAmB,EAAA,CAClBK,MAAMO,MAAMA,EAAE3I,aAAa8H,QAAQ;GAC1D,IAAI,CAAC/C,QACH,MAAM,IAAIqE,MACR,kBAAkBtB,SAAQ,4CAC5B;GACF,OAAO;IACL9H,UAAU+E,OAAO/E;IACjBC,YAAY8E,OAAO9E;IACnBC,QAAQ6E,OAAO7E;IACfC,OAAO4E,OAAO5E;IACdC,QAAQ2E,OAAO3E;GACjB;EACF;EAEA,MAAMiJ,cACJrJ,UACAsD,UAC0B;GAC1B,IAAIxD,gBAAgB;IAClB,MAAMK,QAAQ,MAAML,eAAeuJ,cAAc/F,QAAQ;IAGzD,MAAM4E,qBAAqBlI,WAAW+E,WAAW;KAC/CA,OAAO5E,QAAQA;IACjB,CAAC;IAGD,OAAOzD,uBAAuB4M,eAAe;KAC3CA,WAAWC,WAAWpJ,KAAK;IAC7B,CAAC;GACH;GAGA,OAAOzD,4BAA4B,CAAC,CAAC;EACvC;CAGK2L;AACT"}
|
|
1
|
+
{"version":3,"file":"LocalStorageThreadListAdapter.js","names":["AssistantStream","createAssistantStream","FC","PropsWithChildren","useEffect","useMemo","useRef","useState","useAui","MessageModality","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","ThreadHistoryAdapter","ThreadMessage","RunConfig","ExportedMessageRepository","ExportedMessageRepositoryItem","isRecord","MAX_STORED_MESSAGE_DEPTH","isStoredMessagePart","isStoredMessageRole","parseStoredAttachment","parseStoredDate","RuntimeAdapterProvider","RuntimeAdapters","TitleGenerationAdapter","AsyncStorageLike","getItem","key","Promise","setItem","value","removeItem","KeyedMutationQueue","tails","Map","run","mutation","T","previous","get","result","then","tail","undefined","set","delete","mutationQueues","WeakMap","getMutationQueue","storage","queue","LocalStorageAdapterOptions","prefix","titleGenerator","StoredThreadMetadata","remoteId","externalId","status","title","custom","Record","StoredSystemMessage","Extract","role","StoredUserMessage","StoredAssistantMessage","parseJSON","raw","JSON","parse","parseStoredThread","messageModalities","voice","isMessageModality","Object","hasOwn","parseStoredMessageParts","content","depth","flatMap","part","type","messages","toolCall","Array","isArray","item","message","parseStoredThreadMessage","id","createdAt","metadata","modality","submittedFeedback","submittedFeedbackType","submittedFeedbackComment","comment","unstable_state","unstable_annotations","unstable_data","steps","timing","NonNullable","isOptimistic","attachments","attachment","length","parseStoredThreadMetadata","parsed","thread","parseStoredMessageRepositoryItem","parentId","runConfig","parseStoredMessageRepository","candidateMessages","parsedItem","acceptedIds","Set","has","add","headId","some","AsyncStorageHistoryAdapter","getAui","ReturnType","mutationQueue","constructor","aui","_messagesKey","load","threadListItem","getState","append","initialize","repo","idx","findIndex","m","push","stringify","useLocalStorageThreadAdapters","auiRef","current","history","createHistoryProvider","Provider","t0","$","_c","children","adapters","t1","createLocalStorageAdapter","options","threadsKey","messagesKey","threadId","loadThreadMetadata","saveThreadMetadata","threads","updateThreadMetadata","update","find","adapter","unstable_Provider","unstable_useAdapters","useLocalStorageAdapters","list","map","t","unshift","rename","newTitle","updateCustom","archive","unarchive","filtered","filter","fetch","Error","generateTitle","controller","appendText"],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"sourcesContent":["import { type AssistantStream, createAssistantStream } from \"assistant-stream\";\nimport {\n type FC,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n MessageModality,\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n ThreadHistoryAdapter,\n ThreadMessage,\n RunConfig,\n} from \"../../index\";\nimport type {\n ExportedMessageRepository,\n ExportedMessageRepositoryItem,\n} from \"../../internal\";\nimport { isRecord } from \"../../utils/json/is-json\";\nimport {\n MAX_STORED_MESSAGE_DEPTH,\n isStoredMessagePart,\n isStoredMessageRole,\n parseStoredAttachment,\n parseStoredDate,\n} from \"../../runtime/utils/stored-message-parts\";\nimport {\n RuntimeAdapterProvider,\n type RuntimeAdapters,\n} from \"../runtimes/RuntimeAdapterProvider\";\nimport type { TitleGenerationAdapter } from \"./TitleGenerationAdapter\";\n\nexport type AsyncStorageLike = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n};\n\nclass KeyedMutationQueue {\n private readonly tails = new Map<string, Promise<void>>();\n\n run<T>(key: string, mutation: () => Promise<T>): Promise<T> {\n const previous = this.tails.get(key);\n const result = previous ? previous.then(mutation) : mutation();\n const tail = result.then(\n () => undefined,\n () => undefined,\n );\n\n this.tails.set(key, tail);\n void tail.then(() => {\n if (this.tails.get(key) === tail) this.tails.delete(key);\n });\n\n return result;\n }\n}\n\nconst mutationQueues = new WeakMap<AsyncStorageLike, KeyedMutationQueue>();\n\nconst getMutationQueue = (storage: AsyncStorageLike): KeyedMutationQueue => {\n let queue = mutationQueues.get(storage);\n if (!queue) {\n queue = new KeyedMutationQueue();\n mutationQueues.set(storage, queue);\n }\n return queue;\n};\n\ntype LocalStorageAdapterOptions = {\n storage: AsyncStorageLike;\n prefix?: string | undefined;\n titleGenerator?: TitleGenerationAdapter | undefined;\n};\n\ntype StoredThreadMetadata = {\n remoteId: string;\n externalId?: string;\n status: \"regular\" | \"archived\";\n title?: string;\n custom?: Record<string, unknown> | undefined;\n};\n\ntype StoredSystemMessage = Extract<ThreadMessage, { role: \"system\" }>;\ntype StoredUserMessage = Extract<ThreadMessage, { role: \"user\" }>;\ntype StoredAssistantMessage = Extract<ThreadMessage, { role: \"assistant\" }>;\n\nconst parseJSON = (raw: string | null): unknown => {\n if (!raw) return undefined;\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return undefined;\n }\n};\n\nconst parseStoredThread = (value: unknown): StoredThreadMetadata | null => {\n if (!isRecord(value) || typeof value.remoteId !== \"string\") return null;\n\n const status = value.status ?? \"regular\";\n if (status !== \"regular\" && status !== \"archived\") return null;\n\n return {\n remoteId: value.remoteId,\n status,\n ...(typeof value.externalId === \"string\"\n ? { externalId: value.externalId }\n : undefined),\n ...(typeof value.title === \"string\" ? { title: value.title } : undefined),\n ...(isRecord(value.custom) ? { custom: value.custom } : undefined),\n };\n};\n\nconst messageModalities = {\n voice: true,\n} satisfies Record<MessageModality, true>;\n\nconst isMessageModality = (value: unknown): value is MessageModality =>\n typeof value === \"string\" && Object.hasOwn(messageModalities, value);\n\nconst parseStoredMessageParts = (\n content: unknown[],\n depth: number,\n): unknown[] =>\n content.flatMap((part) => {\n if (!isStoredMessagePart(part)) return [];\n if (part.type !== \"tool-call\" || part.messages === undefined) return [part];\n\n const { messages, ...toolCall } = part;\n if (!Array.isArray(messages)) return [toolCall];\n return [\n {\n ...toolCall,\n messages: messages.flatMap((item) => {\n const message = parseStoredThreadMessage(item, depth + 1);\n return message ? [message] : [];\n }),\n },\n ];\n });\n\nconst parseStoredThreadMessage = (\n value: unknown,\n depth: number,\n): ThreadMessage | null => {\n if (depth > MAX_STORED_MESSAGE_DEPTH) return null;\n if (!isRecord(value) || typeof value.id !== \"string\") return null;\n if (!isStoredMessageRole(value.role)) return null;\n if (!Array.isArray(value.content)) return null;\n\n const createdAt = parseStoredDate(value.createdAt);\n if (!createdAt) return null;\n\n const metadata = value.metadata;\n if (!isRecord(metadata) || !isRecord(metadata.custom)) return null;\n\n const modality = isMessageModality(metadata.modality)\n ? metadata.modality\n : undefined;\n\n if (value.role === \"assistant\") {\n const status = value.status;\n if (!isRecord(status) || typeof status.type !== \"string\") return null;\n\n const submittedFeedback = isRecord(metadata.submittedFeedback)\n ? metadata.submittedFeedback\n : undefined;\n const submittedFeedbackType = submittedFeedback?.type;\n const submittedFeedbackComment = submittedFeedback?.comment;\n\n return {\n id: value.id,\n role: \"assistant\",\n content: parseStoredMessageParts(\n value.content,\n depth,\n ) as StoredAssistantMessage[\"content\"],\n status: status as StoredAssistantMessage[\"status\"],\n createdAt,\n metadata: {\n unstable_state: (metadata.unstable_state ??\n null) as StoredAssistantMessage[\"metadata\"][\"unstable_state\"],\n unstable_annotations: Array.isArray(metadata.unstable_annotations)\n ? (metadata.unstable_annotations as StoredAssistantMessage[\"metadata\"][\"unstable_annotations\"])\n : [],\n unstable_data: Array.isArray(metadata.unstable_data)\n ? (metadata.unstable_data as StoredAssistantMessage[\"metadata\"][\"unstable_data\"])\n : [],\n steps: Array.isArray(metadata.steps)\n ? (metadata.steps as StoredAssistantMessage[\"metadata\"][\"steps\"])\n : [],\n ...(submittedFeedbackType === \"positive\" ||\n submittedFeedbackType === \"negative\"\n ? {\n submittedFeedback: {\n type: submittedFeedbackType,\n ...(typeof submittedFeedbackComment === \"string\" &&\n submittedFeedbackComment !== \"\"\n ? { comment: submittedFeedbackComment }\n : undefined),\n },\n }\n : undefined),\n ...(metadata.timing !== undefined\n ? {\n timing: metadata.timing as NonNullable<\n StoredAssistantMessage[\"metadata\"][\"timing\"]\n >,\n }\n : undefined),\n ...(metadata.isOptimistic === true\n ? { isOptimistic: true }\n : undefined),\n ...(modality !== undefined ? { modality } : undefined),\n custom: metadata.custom,\n },\n };\n }\n\n if (value.role === \"user\") {\n return {\n id: value.id,\n role: \"user\",\n content: parseStoredMessageParts(\n value.content,\n depth,\n ) as StoredUserMessage[\"content\"],\n attachments: Array.isArray(value.attachments)\n ? value.attachments.flatMap((item) => {\n const attachment = parseStoredAttachment(item, isStoredMessagePart);\n return attachment ? [attachment] : [];\n })\n : [],\n createdAt,\n metadata: {\n ...(modality !== undefined ? { modality } : undefined),\n custom: metadata.custom,\n },\n };\n }\n\n const content = parseStoredMessageParts(value.content, depth);\n if (content.length !== 1) return null;\n\n return {\n id: value.id,\n role: \"system\",\n content: [content[0] as StoredSystemMessage[\"content\"][0]],\n createdAt,\n metadata: {\n custom: metadata.custom,\n },\n };\n};\n\nexport const parseStoredThreadMetadata = (\n raw: string | null,\n): StoredThreadMetadata[] => {\n const parsed = parseJSON(raw);\n if (!Array.isArray(parsed)) return [];\n\n return parsed.flatMap((item) => {\n const thread = parseStoredThread(item);\n return thread ? [thread] : [];\n });\n};\n\nconst parseStoredMessageRepositoryItem = (\n value: unknown,\n): ExportedMessageRepositoryItem | null => {\n if (!isRecord(value)) return null;\n\n const message = parseStoredThreadMessage(value.message, 0);\n if (!message) return null;\n\n const parentId = value.parentId;\n if (\n parentId !== undefined &&\n parentId !== null &&\n typeof parentId !== \"string\"\n ) {\n return null;\n }\n\n return {\n message,\n parentId: parentId ?? null,\n ...(isRecord(value.runConfig)\n ? { runConfig: value.runConfig as RunConfig }\n : undefined),\n };\n};\n\nexport const parseStoredMessageRepository = (\n raw: string | null,\n): ExportedMessageRepository => {\n const parsed = parseJSON(raw);\n if (!isRecord(parsed) || !Array.isArray(parsed.messages)) {\n return { messages: [] };\n }\n\n const candidateMessages = parsed.messages.flatMap((item) => {\n const parsedItem = parseStoredMessageRepositoryItem(item);\n return parsedItem ? [parsedItem] : [];\n });\n\n const acceptedIds = new Set<string>();\n const messages = candidateMessages.flatMap((item) => {\n if (acceptedIds.has(item.message.id)) return [];\n if (item.parentId !== null && !acceptedIds.has(item.parentId)) return [];\n\n acceptedIds.add(item.message.id);\n return [item];\n });\n\n const headId =\n parsed.headId === null ||\n (typeof parsed.headId === \"string\" &&\n messages.some((item) => item.message.id === parsed.headId))\n ? parsed.headId\n : undefined;\n\n return {\n ...(headId !== undefined ? { headId } : undefined),\n messages,\n };\n};\n\nclass AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {\n private storage: AsyncStorageLike;\n private getAui: () => ReturnType<typeof useAui>;\n private prefix: string;\n private mutationQueue: KeyedMutationQueue;\n\n constructor(\n storage: AsyncStorageLike,\n getAui: () => ReturnType<typeof useAui>,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n ) {\n this.storage = storage;\n this.getAui = getAui;\n this.prefix = prefix;\n this.mutationQueue = mutationQueue;\n }\n\n private get aui(): ReturnType<typeof useAui> {\n return this.getAui();\n }\n\n private _messagesKey(remoteId: string) {\n return `${this.prefix}messages:${remoteId}`;\n }\n\n async load(): Promise<ExportedMessageRepository> {\n const remoteId = this.aui.threadListItem.getState().remoteId;\n if (!remoteId) return { messages: [] };\n\n const raw = await this.storage.getItem(this._messagesKey(remoteId));\n return parseStoredMessageRepository(raw);\n }\n\n async append(item: ExportedMessageRepositoryItem): Promise<void> {\n const { remoteId } = await this.aui.threadListItem.initialize();\n\n const key = this._messagesKey(remoteId);\n await this.mutationQueue.run(key, async () => {\n const raw = await this.storage.getItem(key);\n const repo = parseStoredMessageRepository(raw);\n\n const idx = repo.messages.findIndex(\n (m) => m.message.id === item.message.id,\n );\n if (idx >= 0) {\n repo.messages[idx] = item;\n } else {\n repo.messages.push(item);\n }\n repo.headId = item.message.id;\n\n await this.storage.setItem(key, JSON.stringify(repo));\n });\n }\n}\n\nconst useLocalStorageThreadAdapters = (\n storage: AsyncStorageLike,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n): RuntimeAdapters => {\n const aui = useAui();\n // Not useEffectEvent: history adapter methods run during render (SSR load).\n const auiRef = useRef(aui);\n useEffect(() => {\n auiRef.current = aui;\n });\n const [history] = useState(\n () =>\n new AsyncStorageHistoryAdapter(\n storage,\n () => auiRef.current,\n prefix,\n mutationQueue,\n ),\n );\n return useMemo(() => ({ history }), [history]);\n};\n\nconst createHistoryProvider = (\n storage: AsyncStorageLike,\n prefix: string,\n mutationQueue: KeyedMutationQueue,\n): FC<PropsWithChildren> => {\n const Provider: FC<PropsWithChildren> = ({ children }) => {\n const adapters = useLocalStorageThreadAdapters(\n storage,\n prefix,\n mutationQueue,\n );\n return (\n <RuntimeAdapterProvider adapters={adapters}>\n {children}\n </RuntimeAdapterProvider>\n );\n };\n return Provider;\n};\n\nexport const createLocalStorageAdapter = (\n options: LocalStorageAdapterOptions,\n): RemoteThreadListAdapter => {\n const { storage, prefix = \"@assistant-ui:\", titleGenerator } = options;\n\n const threadsKey = `${prefix}threads`;\n const messagesKey = (threadId: string) => `${prefix}messages:${threadId}`;\n const mutationQueue = getMutationQueue(storage);\n\n const loadThreadMetadata = async (): Promise<StoredThreadMetadata[]> => {\n const raw = await storage.getItem(threadsKey);\n return parseStoredThreadMetadata(raw);\n };\n\n const saveThreadMetadata = async (\n threads: StoredThreadMetadata[],\n ): Promise<void> => {\n await storage.setItem(threadsKey, JSON.stringify(threads));\n };\n\n const updateThreadMetadata = async (\n remoteId: string,\n update: (thread: StoredThreadMetadata) => void,\n ): Promise<void> => {\n await mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n const thread = threads.find((item) => item.remoteId === remoteId);\n if (thread) {\n update(thread);\n await saveThreadMetadata(threads);\n }\n });\n };\n\n const adapter: RemoteThreadListAdapter = {\n unstable_Provider: createHistoryProvider(storage, prefix, mutationQueue),\n unstable_useAdapters: function useLocalStorageAdapters() {\n return useLocalStorageThreadAdapters(storage, prefix, mutationQueue);\n },\n\n async list(): Promise<RemoteThreadListResponse> {\n const threads = await loadThreadMetadata();\n return {\n threads: threads.map((t) => ({\n remoteId: t.remoteId,\n externalId: t.externalId,\n status: t.status,\n title: t.title,\n custom: t.custom,\n })),\n };\n },\n\n async initialize(\n threadId: string,\n ): Promise<RemoteThreadInitializeResponse> {\n const remoteId = threadId;\n return mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n\n // Only add if not already present\n if (!threads.some((t) => t.remoteId === remoteId)) {\n threads.unshift({\n remoteId,\n status: \"regular\",\n });\n await saveThreadMetadata(threads);\n }\n\n return { remoteId, externalId: undefined };\n });\n },\n\n async rename(remoteId: string, newTitle: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.title = newTitle;\n });\n },\n\n async updateCustom(\n remoteId: string,\n custom: Record<string, unknown> | undefined,\n ): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.custom = custom;\n });\n },\n\n async archive(remoteId: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.status = \"archived\";\n });\n },\n\n async unarchive(remoteId: string): Promise<void> {\n await updateThreadMetadata(remoteId, (thread) => {\n thread.status = \"regular\";\n });\n },\n\n async delete(remoteId: string): Promise<void> {\n await mutationQueue.run(threadsKey, async () => {\n const threads = await loadThreadMetadata();\n const filtered = threads.filter((t) => t.remoteId !== remoteId);\n await saveThreadMetadata(filtered);\n });\n const key = messagesKey(remoteId);\n await mutationQueue.run(key, () => storage.removeItem(key));\n },\n\n async fetch(threadId: string): Promise<RemoteThreadMetadata> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === threadId);\n if (!thread)\n throw new Error(\n `Stored thread \"${threadId}\" not found while fetching thread metadata.`,\n );\n return {\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n status: thread.status,\n title: thread.title,\n custom: thread.custom,\n };\n },\n\n async generateTitle(\n remoteId: string,\n messages: readonly ThreadMessage[],\n ): Promise<AssistantStream> {\n if (titleGenerator) {\n const title = await titleGenerator.generateTitle(messages);\n\n // Update the stored title\n await updateThreadMetadata(remoteId, (thread) => {\n thread.title = title;\n });\n\n // Return a stream with a single text part\n return createAssistantStream((controller) => {\n controller.appendText(title);\n });\n }\n\n // No title generator — return empty stream\n return createAssistantStream(() => {});\n },\n };\n\n return adapter;\n};\n"],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { ThreadMessage } from "../../types/message.js";
|
|
2
2
|
//#region src/react/adapters/TitleGenerationAdapter.d.ts
|
|
3
|
-
type TitleGenerationAdapter = {
|
|
3
|
+
export type TitleGenerationAdapter = {
|
|
4
4
|
generateTitle(messages: readonly ThreadMessage[]): Promise<string>;
|
|
5
5
|
};
|
|
6
|
-
declare const createSimpleTitleAdapter: () => TitleGenerationAdapter;
|
|
6
|
+
export declare const createSimpleTitleAdapter: () => TitleGenerationAdapter;
|
|
7
7
|
//#endregion
|
|
8
|
-
export { TitleGenerationAdapter, createSimpleTitleAdapter };
|
|
9
8
|
//# sourceMappingURL=TitleGenerationAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleGenerationAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/TitleGenerationAdapter.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"TitleGenerationAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/TitleGenerationAdapter.ts"],"mappings":";;YAEY;EACV,cAAc,mBAAmB,kBAAkB;;qBAGxC,gCAA+B"}
|
|
@@ -2,10 +2,9 @@ import { RuntimeAdapters } from "../../runtimes/remote-thread-list/types.js";
|
|
|
2
2
|
import { ClientOutput } from "@assistant-ui/store";
|
|
3
3
|
import { ResourceElement } from "@assistant-ui/tap";
|
|
4
4
|
//#region src/react/client/AdaptedRemoteThread.d.ts
|
|
5
|
-
declare const AdaptedRemoteThread: import("@assistant-ui/tap").Resource<ClientOutput<"thread">, [{
|
|
5
|
+
export declare const AdaptedRemoteThread: import("@assistant-ui/tap").Resource<ClientOutput<"thread">, [{
|
|
6
6
|
useAdapters: () => RuntimeAdapters | null | undefined;
|
|
7
7
|
thread: ResourceElement<ClientOutput<"thread">>;
|
|
8
8
|
}]>;
|
|
9
9
|
//#endregion
|
|
10
|
-
export { AdaptedRemoteThread };
|
|
11
10
|
//# sourceMappingURL=AdaptedRemoteThread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptedRemoteThread.d.ts","names":[],"sources":["../../../src/react/client/AdaptedRemoteThread.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"AdaptedRemoteThread.d.ts","names":[],"sources":["../../../src/react/client/AdaptedRemoteThread.ts"],"mappings":";;;;qBAwCa,iDAAmB,SAAA;EAxBjB,mBAAM;EACX,QAAA,gBAAgB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ClientOutput } from "@assistant-ui/store";
|
|
2
2
|
//#region src/react/client/DataRenderers.d.ts
|
|
3
|
-
declare const DataRenderers: import("@assistant-ui/tap").Resource<ClientOutput<"dataRenderers">, []>;
|
|
3
|
+
export declare const DataRenderers: import("@assistant-ui/tap").Resource<ClientOutput<"dataRenderers">, []>;
|
|
4
4
|
//#endregion
|
|
5
|
-
export { DataRenderers };
|
|
6
5
|
//# sourceMappingURL=DataRenderers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRenderers.d.ts","names":[],"sources":["../../../src/react/client/DataRenderers.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"DataRenderers.d.ts","names":[],"sources":["../../../src/react/client/DataRenderers.ts"],"mappings":";;qBAuEa,2CAAa,SAAA"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { AssistantClient, ClientOutput, ScopesConfig } from "@assistant-ui/store";
|
|
2
2
|
import { ResourceElement } from "@assistant-ui/tap";
|
|
3
3
|
//#region src/react/client/InMemoryThreadList.d.ts
|
|
4
|
-
type InMemoryThreadListProps = {
|
|
4
|
+
export type InMemoryThreadListProps = {
|
|
5
5
|
thread: (threadId: string) => ResourceElement<ClientOutput<"thread">>;
|
|
6
6
|
onSwitchToThread?: (threadId: string) => void;
|
|
7
7
|
onSwitchToNewThread?: () => void;
|
|
8
8
|
onDelete?: (threadId: string) => void;
|
|
9
9
|
};
|
|
10
|
-
declare const InMemoryThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: InMemoryThreadListProps]>;
|
|
10
|
+
export declare const InMemoryThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: InMemoryThreadListProps]>;
|
|
11
11
|
/**
|
|
12
12
|
* The scope defaults `InMemoryThreadList` installs when it is used as the
|
|
13
13
|
* `threads` config entry. Adapter packages that wrap it in their own config
|
|
14
14
|
* entry attach this to the wrapping resource for scope parity.
|
|
15
15
|
*/
|
|
16
|
-
declare const inMemoryThreadListTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
16
|
+
export declare const inMemoryThreadListTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
17
17
|
//#endregion
|
|
18
|
-
export { InMemoryThreadList, InMemoryThreadListProps, inMemoryThreadListTransformScopes };
|
|
19
18
|
//# sourceMappingURL=InMemoryThreadList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../../src/react/client/InMemoryThreadList.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../../src/react/client/InMemoryThreadList.ts"],"mappings":";;;YAqBY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;EACA,YAAY;;qBAkOD,gDAAkB,SAAA,0BAAA,OAAA;;;;;;qBAOlB,oCACX,QAAQ,cACR,QAAQ"}
|
|
@@ -6,7 +6,6 @@ import { ClientOutput } from "@assistant-ui/store";
|
|
|
6
6
|
*
|
|
7
7
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
8
8
|
*/
|
|
9
|
-
declare const unstable_Interactables: import("@assistant-ui/tap").Resource<ClientOutput<"unstable_interactables">, [(Unstable_InteractablesConfig | undefined)?]>;
|
|
9
|
+
export declare const unstable_Interactables: import("@assistant-ui/tap").Resource<ClientOutput<"unstable_interactables">, [(Unstable_InteractablesConfig | undefined)?]>;
|
|
10
10
|
//#endregion
|
|
11
|
-
export { unstable_Interactables };
|
|
12
11
|
//# sourceMappingURL=Interactables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/client/Interactables.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/client/Interactables.ts"],"mappings":";;;;;;;;qBA2hBa,oDAAsB,SAAA,0CAAA"}
|
|
@@ -2,7 +2,7 @@ import { InMemoryThreadListProps } from "./InMemoryThreadList.js";
|
|
|
2
2
|
import { RemoteThreadListAdapter } from "../../runtimes/remote-thread-list/types.js";
|
|
3
3
|
import { ClientOutput } from "@assistant-ui/store";
|
|
4
4
|
//#region src/react/client/RemoteThreadList.d.ts
|
|
5
|
-
type RemoteThreadListProps = {
|
|
5
|
+
export type RemoteThreadListProps = {
|
|
6
6
|
/**
|
|
7
7
|
* Swapping this to a different backing store does not reload the list. Call `reload()` after a genuine swap. A recreated object for the same store is a no-op. `reload()` after a different adapter instance resets selection and cached records before loading.
|
|
8
8
|
*/
|
|
@@ -44,7 +44,6 @@ type RemoteThreadListProps = {
|
|
|
44
44
|
* across switches, per-item `isRunning` is live, and freshly initialized
|
|
45
45
|
* threads title themselves.
|
|
46
46
|
*/
|
|
47
|
-
declare const RemoteThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: RemoteThreadListProps]>;
|
|
47
|
+
export declare const RemoteThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: RemoteThreadListProps]>;
|
|
48
48
|
//#endregion
|
|
49
|
-
export { RemoteThreadList, RemoteThreadListProps };
|
|
50
49
|
//# sourceMappingURL=RemoteThreadList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteThreadList.d.ts","names":[],"sources":["../../../src/react/client/RemoteThreadList.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"RemoteThreadList.d.ts","names":[],"sources":["../../../src/react/client/RemoteThreadList.ts"],"mappings":";;;;YAiEY;;;;EAIV,SAAS;;;;;;;EAOT,QAAQ;EACR;EACA,qBAAqB;EACrB,qBAAqB;EACrB;;EAEA,aAAa;;;;;;;;;;;;EAYb;;;;;;;;;;;;;qBAswCW,8CAAgB,SAAA,0BAAA,OAAA"}
|
|
@@ -3,12 +3,12 @@ import { McpAppResourceOutput } from "../types/scopes/tools.js";
|
|
|
3
3
|
import { ClientOutput } from "@assistant-ui/store";
|
|
4
4
|
import { ResourceElement } from "@assistant-ui/tap";
|
|
5
5
|
//#region src/react/client/Tools.d.ts
|
|
6
|
-
declare const Tools: import("@assistant-ui/tap").Resource<ClientOutput<"tools">, [{
|
|
6
|
+
export declare const Tools: import("@assistant-ui/tap").Resource<ClientOutput<"tools">, [{
|
|
7
7
|
/** Tools to expose to the model and optional renderers to install. */
|
|
8
8
|
toolkit?: Toolkit;
|
|
9
9
|
/** Optional MCP app resource whose tools should be merged into context. */
|
|
10
10
|
mcpApp?: ResourceElement<McpAppResourceOutput> | undefined;
|
|
11
11
|
}]>;
|
|
12
12
|
//#endregion
|
|
13
|
-
export {
|
|
13
|
+
export type { McpAppResourceOutput };
|
|
14
14
|
//# sourceMappingURL=Tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tools.d.ts","names":[],"sources":["../../../src/react/client/Tools.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Tools.d.ts","names":[],"sources":["../../../src/react/client/Tools.ts"],"mappings":";;;;;qBA8Ka,mCAAK,SAAA;;EAtIN,UAAA;;EAED,SAAA,gBAAgB"}
|