@assistant-ui/core 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/attachment.d.ts +50 -43
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +52 -21
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/adapters/directive-formatter.d.ts +2 -5
- package/dist/adapters/directive-formatter.d.ts.map +1 -1
- package/dist/adapters/feedback.d.ts +7 -8
- package/dist/adapters/feedback.d.ts.map +1 -1
- package/dist/adapters/index.d.ts +14 -9
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/speech.d.ts +63 -65
- package/dist/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +16 -2
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/suggestion.d.ts +19 -22
- package/dist/adapters/suggestion.d.ts.map +1 -1
- package/dist/adapters/thread-history.d.ts +60 -58
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/trigger.d.ts +8 -11
- package/dist/adapters/trigger.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts +50 -45
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +17 -3
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +70 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.d.ts +1 -4
- package/dist/internal/duplicate-detection.d.ts.map +1 -1
- package/dist/internal.d.ts +27 -58
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +8 -6
- package/dist/model-context/frame/host.d.ts +20 -23
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +3 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +28 -30
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +6 -0
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.d.ts +24 -27
- package/dist/model-context/frame/types.d.ts.map +1 -1
- package/dist/model-context/frame/validate.d.ts +3 -0
- package/dist/model-context/frame/validate.d.ts.map +1 -0
- package/dist/model-context/frame/validate.js +26 -0
- package/dist/model-context/frame/validate.js.map +1 -0
- package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +30 -6
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry-handles.d.ts +9 -12
- package/dist/model-context/registry-handles.d.ts.map +1 -1
- package/dist/model-context/registry.d.ts +15 -18
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +15 -17
- package/dist/model-context/tool-call-text.d.ts.map +1 -1
- package/dist/model-context/tool.d.ts +12 -14
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/types.d.ts +40 -43
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/react/AssistantProvider.d.ts +9 -12
- package/dist/react/AssistantProvider.d.ts.map +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
- package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +4 -8
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
- package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +2 -5
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts +9 -12
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/Interactables.d.ts +3 -6
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +306 -101
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -37
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +2 -1
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts +10 -12
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +4 -8
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -11
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +32 -22
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +160 -122
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +15 -8
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
- package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
- package/dist/react/interactables-legacy/scopes.d.ts +42 -46
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
- package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/define-toolkit.d.ts +13 -6
- package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
- package/dist/react/model-context/external-tool.d.ts +1 -4
- package/dist/react/model-context/external-tool.d.ts.map +1 -1
- package/dist/react/model-context/human-tool.d.ts +3 -6
- package/dist/react/model-context/human-tool.d.ts.map +1 -1
- package/dist/react/model-context/interactableTool.d.ts +26 -29
- package/dist/react/model-context/interactableTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
- package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
- package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/provider-tool.d.ts +5 -7
- package/dist/react/model-context/provider-tool.d.ts.map +1 -1
- package/dist/react/model-context/stub-tool.d.ts +1 -4
- package/dist/react/model-context/stub-tool.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +44 -32
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantContext.d.ts +3 -6
- package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
- package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
- package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +9 -13
- package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
- package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
- package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts +3 -6
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts +40 -40
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.d.ts +10 -9
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
- package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
- package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
- package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
- package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
- package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
- package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
- package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
- package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
- package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +14 -15
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +208 -194
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +124 -82
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
- package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
- package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +16 -19
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
- package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
- package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
- package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
- package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
- package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +5 -1
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
- package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
- package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +3 -1
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +120 -8
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
- package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
- package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts +17 -21
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
- package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
- package/dist/react/runtimes/external-store-history-copy.js +148 -0
- package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
- package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
- package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +142 -34
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
- package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
- package/dist/react/types/scopes/interactables.d.ts +60 -60
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +21 -24
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +10 -11
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.d.ts +6 -8
- package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +35 -37
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -6
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
- package/dist/runtime/api/assistant-runtime.d.ts +28 -31
- package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.d.ts +51 -49
- package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +35 -35
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.d.ts +215 -201
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js +4 -0
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +31 -30
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +25 -2
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +87 -82
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +4 -3
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/paths.d.ts +54 -57
- package/dist/runtime/api/paths.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +306 -308
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -1
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
- package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +400 -122
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +174 -62
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
- package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +25 -20
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
- package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +32 -33
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +10 -2
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/queue/queue-item.d.ts +7 -10
- package/dist/runtime/queue/queue-item.d.ts.map +1 -1
- package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
- package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
- package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
- package/dist/runtime/utils/attachment-add-operations.js +24 -2
- package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
- package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
- package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
- package/dist/runtime/utils/attachment-send-operations.js +34 -0
- package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
- package/dist/runtime/utils/auto-status.d.ts +11 -13
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +3 -5
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
- package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +6 -5
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/external-store-message.d.ts +6 -9
- package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository-session.d.ts +24 -27
- package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +52 -54
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +8 -7
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
- package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
- package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
- package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
- package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
- package/dist/runtime/utils/stored-message-parts.js +103 -0
- package/dist/runtime/utils/stored-message-parts.js.map +1 -0
- package/dist/runtime/utils/streaming-timing.d.ts +23 -26
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +38 -34
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +16 -6
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
- package/dist/runtime/utils/tool-interactions.d.ts +10 -0
- package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
- package/dist/runtime/utils/tool-interactions.js +92 -0
- package/dist/runtime/utils/tool-interactions.js.map +1 -0
- package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
- package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
- package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
- package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
- package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +20 -16
- package/dist/runtimes/internal.d.ts.map +1 -0
- package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
- package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
- package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
- package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.d.ts +2 -5
- package/dist/runtimes/local/should-continue.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
- package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
- package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
- package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts +56 -58
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +1270 -741
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +2 -5
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +3 -6
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +3 -1
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +2 -5
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts +4 -6
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/submission-message.d.ts +8 -0
- package/dist/store/clients/submission-message.d.ts.map +1 -0
- package/dist/store/clients/submission-message.js +22 -0
- package/dist/store/clients/submission-message.js.map +1 -0
- package/dist/store/clients/suggestions.d.ts +8 -11
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +12 -12
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +81 -82
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +1 -4
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +7 -10
- package/dist/store/clients/thread-tasks.d.ts.map +1 -1
- package/dist/store/env.d.ts +1 -4
- package/dist/store/env.d.ts.map +1 -1
- package/dist/store/index.d.ts +33 -36
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -5
- package/dist/store/internal.d.ts +12 -12
- package/dist/store/internal.d.ts.map +1 -0
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +14 -16
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +10 -5
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +2 -5
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +121 -113
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/scope-registration.d.ts +28 -29
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/attachment.d.ts +19 -22
- package/dist/store/scopes/attachment.d.ts.map +1 -1
- package/dist/store/scopes/chain-of-thought.d.ts +33 -35
- package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
- package/dist/store/scopes/composer.d.ts +147 -135
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +119 -112
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/model-context.d.ts +10 -13
- package/dist/store/scopes/model-context.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +53 -50
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.d.ts +21 -23
- package/dist/store/scopes/queue-item.d.ts.map +1 -1
- package/dist/store/scopes/suggestion.d.ts +14 -17
- package/dist/store/scopes/suggestion.d.ts.map +1 -1
- package/dist/store/scopes/suggestions.d.ts +18 -21
- package/dist/store/scopes/suggestions.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +27 -30
- package/dist/store/scopes/task.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +68 -71
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +197 -200
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +49 -52
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +73 -69
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +35 -7
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +35 -37
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/augmentations.d.ts +7 -8
- package/dist/types/augmentations.d.ts.map +1 -1
- package/dist/types/directive.d.ts +13 -16
- package/dist/types/directive.d.ts.map +1 -1
- package/dist/types/error.d.ts +15 -17
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/message.d.ts +358 -318
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/types/quote.d.ts +3 -6
- package/dist/types/quote.d.ts.map +1 -1
- package/dist/types/trigger.d.ts +10 -13
- package/dist/types/trigger.d.ts.map +1 -1
- package/dist/types/unsubscribe.d.ts +1 -4
- package/dist/types/unsubscribe.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +2 -5
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +9 -13
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/data-url.d.ts +16 -19
- package/dist/utils/data-url.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +19 -21
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -6
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/image-media-type.d.ts +1 -4
- package/dist/utils/image-media-type.d.ts.map +1 -1
- package/dist/utils/invoke-user-callback.d.ts +1 -4
- package/dist/utils/invoke-user-callback.d.ts.map +1 -1
- package/dist/utils/json/is-json-equal.d.ts +1 -4
- package/dist/utils/json/is-json-equal.d.ts.map +1 -1
- package/dist/utils/json/is-json.d.ts +5 -8
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
- package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.d.ts +6 -8
- package/dist/utils/normalizePartStatus.d.ts.map +1 -1
- package/dist/utils/normalizePartStatus.js +3 -2
- package/dist/utils/normalizePartStatus.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -4
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/record.d.ts +1 -4
- package/dist/utils/record.d.ts.map +1 -1
- package/dist/utils/silent-runtime-action.d.ts +2 -5
- package/dist/utils/silent-runtime-action.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -5
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/wire-media.d.ts +3 -6
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/package.json +15 -13
- package/src/adapters/attachment.test.ts +98 -1
- package/src/adapters/attachment.ts +77 -20
- package/src/adapters/feedback.ts +1 -0
- package/src/adapters/speech.test.ts +94 -0
- package/src/adapters/speech.ts +16 -2
- package/src/adapters/thread-history.ts +16 -5
- package/src/adapters/voice.test.ts +169 -0
- package/src/adapters/voice.ts +25 -4
- package/src/index.ts +14 -2
- package/src/internal.ts +7 -0
- package/src/model-context/frame/host.test.ts +51 -1
- package/src/model-context/frame/host.ts +3 -1
- package/src/model-context/frame/provider.test.ts +106 -20
- package/src/model-context/frame/provider.ts +8 -1
- package/src/model-context/frame/validate.ts +57 -0
- package/src/model-context/interactable-composer-metadata.test.ts +82 -0
- package/src/model-context/interactable-composer-metadata.ts +45 -2
- package/src/react/RuntimeAdapter.test.ts +4 -1
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
- package/src/react/client/Interactables.test.ts +865 -8
- package/src/react/client/Interactables.ts +325 -45
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
- package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
- package/src/react/client/RemoteThreadList.test.ts +5 -6
- package/src/react/client/RemoteThreadList.ts +6 -0
- package/src/react/client/Tools.ts +2 -3
- package/src/react/client/interactable-model-context.test.ts +56 -13
- package/src/react/client/interactable-model-context.ts +48 -23
- package/src/react/index.ts +2 -2
- package/src/react/interactables-legacy/Interactables.test.ts +221 -4
- package/src/react/interactables-legacy/Interactables.ts +25 -14
- package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
- package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
- package/src/react/model-context/useInteractable.test.tsx +56 -29
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
- package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
- package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
- package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
- package/src/react/primitives/message/MessageAttachments.tsx +14 -8
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
- package/src/react/primitives/message/MessageParts.test.tsx +84 -0
- package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
- package/src/react/primitives/message/MessageParts.tsx +29 -8
- package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
- package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
- package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
- package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
- package/src/react/providers/TextMessagePartProvider.tsx +3 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
- package/src/react/runtimes/RemoteThreadResource.ts +5 -2
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
- package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
- package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
- package/src/react/runtimes/assistant-transport/types.ts +9 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
- package/src/react/runtimes/cloud/auiV0.ts +275 -6
- package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
- package/src/react/runtimes/createMessageConverter.ts +9 -3
- package/src/react/runtimes/external-message-converter.test.ts +7 -3
- package/src/react/runtimes/external-store-history-copy.ts +223 -0
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
- package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
- package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
- package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
- package/src/react/runtimes/useLocalRuntime.ts +8 -5
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
- package/src/react/types/MessagePartComponentTypes.ts +10 -0
- package/src/react/types/scopes/interactables.ts +3 -0
- package/src/runtime/api/attachment-runtime.ts +10 -5
- package/src/runtime/api/bindings.ts +6 -1
- package/src/runtime/api/composer-runtime.ts +29 -6
- package/src/runtime/api/message-part-runtime.test.ts +215 -0
- package/src/runtime/api/message-part-runtime.ts +44 -1
- package/src/runtime/api/message-runtime.test.ts +112 -2
- package/src/runtime/api/message-runtime.ts +25 -7
- package/src/runtime/api/thread-list-item-runtime.ts +5 -5
- package/src/runtime/api/thread-list-runtime.ts +3 -3
- package/src/runtime/api/thread-runtime.test.ts +59 -0
- package/src/runtime/api/thread-runtime.ts +21 -11
- package/src/runtime/base/base-composer-runtime-core.ts +548 -153
- package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
- package/src/runtime/base/base-thread-runtime-core.ts +236 -46
- package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
- package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
- package/src/runtime/queue/message-queue.ts +11 -1
- package/src/runtime/utils/attachment-add-operations.ts +45 -2
- package/src/runtime/utils/attachment-send-operations.ts +54 -0
- package/src/runtime/utils/auto-status.test.ts +54 -0
- package/src/runtime/utils/auto-status.ts +3 -10
- package/src/runtime/utils/external-message-conversion.test.ts +91 -0
- package/src/runtime/utils/external-message-conversion.ts +9 -6
- package/src/runtime/utils/message-repository.test.ts +69 -1
- package/src/runtime/utils/message-repository.ts +14 -7
- package/src/runtime/utils/stored-message-parts.ts +216 -0
- package/src/runtime/utils/thread-message-like.test.ts +58 -0
- package/src/runtime/utils/thread-message-like.ts +79 -48
- package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
- package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
- package/src/runtime/utils/tool-interactions.test.ts +193 -0
- package/src/runtime/utils/tool-interactions.ts +147 -0
- package/src/runtimes/external-store/external-store-adapter.ts +25 -0
- package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
- package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
- package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
- package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
- package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
- package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
- package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
- package/src/store/clients/external-thread.test.ts +145 -0
- package/src/store/clients/external-thread.ts +669 -144
- package/src/store/clients/model-context-client.test.ts +8 -8
- package/src/store/clients/no-op-composer-client.ts +2 -0
- package/src/store/clients/submission-message.ts +27 -0
- package/src/store/clients/thread-message-client.test.ts +39 -0
- package/src/store/clients/thread-message-client.ts +13 -6
- package/src/store/index.ts +2 -2
- package/src/store/internal.ts +1 -0
- package/src/store/primitive-predicates.test.ts +119 -0
- package/src/store/primitive-predicates.ts +19 -4
- package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
- package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
- package/src/store/runtime-clients/message-runtime-client.ts +5 -0
- package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
- package/src/store/scopes/composer.ts +22 -4
- package/src/store/scopes/message.ts +12 -1
- package/src/store/scopes/part.ts +8 -0
- package/src/subscribable/subscribable.test.ts +205 -3
- package/src/subscribable/subscribable.ts +49 -7
- package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
- package/src/tests/attachment-adapters.test.ts +16 -1
- package/src/tests/auiV0Encode.test.ts +412 -1
- package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
- package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
- package/src/tests/base-composer-runtime-core.test.ts +212 -5
- package/src/tests/composer-can-cancel.test.ts +35 -6
- package/src/tests/composer-can-send.test.ts +120 -1
- package/src/tests/composer-submission.test.tsx +796 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
- package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
- package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
- package/src/tests/external-thread-attachments.test.tsx +763 -26
- package/src/tests/external-thread-feedback.test.tsx +20 -7
- package/src/tests/external-thread-isLast.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +1 -1
- package/src/tests/get-thread-state-isRunning.test.ts +2 -2
- package/src/tests/message-queue.test.ts +45 -10
- package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
- package/src/tests/thread-switch-events.test.tsx +11 -7
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
- package/src/types/message.test.ts +19 -0
- package/src/types/message.ts +65 -10
- package/src/utils/normalizePartStatus.ts +14 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
- package/dist/tests/remote-thread-list-test-helpers.js +0 -59
- package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
|
@@ -1,29 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RemoteThreadListAdapter } from "../../
|
|
3
|
-
import "../../internal.js";
|
|
4
|
-
import "
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
setItem(key: string, value: string): Promise<void>;
|
|
10
|
-
removeItem(key: string): Promise<void>;
|
|
1
|
+
import { useAui } from "@assistant-ui/store";
|
|
2
|
+
import type { RemoteThreadListAdapter, ThreadHistoryAdapter } from "../../index.js";
|
|
3
|
+
import type { ExportedMessageRepository } from "../../internal.js";
|
|
4
|
+
import type { TitleGenerationAdapter } from "./TitleGenerationAdapter.js";
|
|
5
|
+
export type AsyncStorageLike = {
|
|
6
|
+
getItem(key: string): Promise<string | null>;
|
|
7
|
+
setItem(key: string, value: string): Promise<void>;
|
|
8
|
+
removeItem(key: string): Promise<void>;
|
|
11
9
|
};
|
|
10
|
+
declare class KeyedMutationQueue {
|
|
11
|
+
private readonly tails;
|
|
12
|
+
private readonly staleKeys;
|
|
13
|
+
markStale(key: string): void;
|
|
14
|
+
removeStale(key: string, storage: AsyncStorageLike): Promise<void>;
|
|
15
|
+
run<T>(key: string, mutation: () => Promise<T>): Promise<T>;
|
|
16
|
+
}
|
|
12
17
|
type LocalStorageAdapterOptions = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
storage: AsyncStorageLike;
|
|
19
|
+
prefix?: string | undefined;
|
|
20
|
+
titleGenerator?: TitleGenerationAdapter | undefined;
|
|
16
21
|
};
|
|
17
22
|
type StoredThreadMetadata = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
remoteId: string;
|
|
24
|
+
externalId?: string;
|
|
25
|
+
status: "regular" | "archived";
|
|
26
|
+
title?: string;
|
|
27
|
+
custom?: Record<string, unknown> | undefined;
|
|
23
28
|
};
|
|
24
|
-
declare const parseStoredThreadMetadata: (raw: string | null) => StoredThreadMetadata[];
|
|
25
|
-
declare const parseStoredMessageRepository: (raw: string | null) => ExportedMessageRepository;
|
|
26
|
-
declare const
|
|
27
|
-
|
|
28
|
-
export {
|
|
29
|
+
export declare const parseStoredThreadMetadata: (raw: string | null) => StoredThreadMetadata[];
|
|
30
|
+
export declare const parseStoredMessageRepository: (raw: string | null) => ExportedMessageRepository;
|
|
31
|
+
export declare const createLocalStorageHistoryAdapter: (storage: AsyncStorageLike, getAui: () => ReturnType<typeof useAui>, prefix: string, mutationQueue?: KeyedMutationQueue) => ThreadHistoryAdapter;
|
|
32
|
+
export declare const createLocalStorageAdapter: (options: LocalStorageAdapterOptions) => RemoteThreadListAdapter;
|
|
33
|
+
export {};
|
|
29
34
|
//# sourceMappingURL=LocalStorageThreadListAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalStorageThreadListAdapter.d.ts","
|
|
1
|
+
{"version":3,"file":"LocalStorageThreadListAdapter.d.ts","sourceRoot":"","sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAGV,uBAAuB,EAGvB,oBAAoB,EAGrB,uBAAoB;AACrB,OAAO,KAAK,EACV,yBAAyB,EAE1B,0BAAuB;AAexB,OAAO,KAAK,EAAE,sBAAsB,EAAE,oCAAiC;AAEvE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,SAAS,CAAC,GAAG,EAAE,MAAM;IAIf,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;IAQxD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAe5D;AAaD,KAAK,0BAA0B,GAAG;IAChC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CACrD,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC9C,CAAC;AA6KF,eAAO,MAAM,yBAAyB,GACpC,KAAK,MAAM,GAAG,IAAI,KACjB,oBAAoB,EAQtB,CAAC;AA4BF,eAAO,MAAM,4BAA4B,GACvC,KAAK,MAAM,GAAG,IAAI,KACjB,yBA+BF,CAAC;AA6FF,eAAO,MAAM,gCAAgC,GAC3C,SAAS,gBAAgB,EACzB,QAAQ,MAAM,UAAU,CAAC,OAAO,MAAM,CAAC,EACvC,QAAQ,MAAM,EACd,kCAAyC,KACxC,oBACqE,CAAC;AA4CzE,eAAO,MAAM,yBAAyB,GACpC,SAAS,0BAA0B,KAClC,uBA4JF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isRecord } from "../../utils/json/is-json.js";
|
|
2
|
+
import { isStoredMessagePart, isStoredMessageRole, isStoredMessageStatus, parseStoredAttachment, parseStoredDate, parseStoredThreadSteps } from "../../runtime/utils/stored-message-parts.js";
|
|
2
3
|
import { RuntimeAdapterProvider } from "../runtimes/RuntimeAdapterProvider.js";
|
|
3
4
|
import { createAssistantStream } from "assistant-stream";
|
|
4
5
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
@@ -8,6 +9,15 @@ import { jsx } from "react/jsx-runtime";
|
|
|
8
9
|
//#region src/react/adapters/LocalStorageThreadListAdapter.tsx
|
|
9
10
|
var KeyedMutationQueue = class {
|
|
10
11
|
tails = /* @__PURE__ */ new Map();
|
|
12
|
+
staleKeys = /* @__PURE__ */ new Set();
|
|
13
|
+
markStale(key) {
|
|
14
|
+
this.staleKeys.add(key);
|
|
15
|
+
}
|
|
16
|
+
async removeStale(key, storage) {
|
|
17
|
+
if (!this.staleKeys.has(key)) return;
|
|
18
|
+
await storage.removeItem(key);
|
|
19
|
+
this.staleKeys.delete(key);
|
|
20
|
+
}
|
|
11
21
|
run(key, mutation) {
|
|
12
22
|
const previous = this.tails.get(key);
|
|
13
23
|
const result = previous ? previous.then(mutation) : mutation();
|
|
@@ -48,26 +58,8 @@ const parseStoredThread = (value) => {
|
|
|
48
58
|
...isRecord(value.custom) ? { custom: value.custom } : void 0
|
|
49
59
|
};
|
|
50
60
|
};
|
|
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));
|
|
61
|
+
const messageModalities = { voice: true };
|
|
62
|
+
const isMessageModality = (value) => typeof value === "string" && Object.hasOwn(messageModalities, value);
|
|
71
63
|
const parseStoredMessageParts = (content, depth) => content.flatMap((part) => {
|
|
72
64
|
if (!isStoredMessagePart(part)) return [];
|
|
73
65
|
if (part.type !== "tool-call" || part.messages === void 0) return [part];
|
|
@@ -81,26 +73,24 @@ const parseStoredMessageParts = (content, depth) => content.flatMap((part) => {
|
|
|
81
73
|
})
|
|
82
74
|
}];
|
|
83
75
|
});
|
|
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
76
|
const parseStoredThreadMessage = (value, depth) => {
|
|
92
|
-
if (depth >
|
|
77
|
+
if (depth > 100) return null;
|
|
93
78
|
if (!isRecord(value) || typeof value.id !== "string") return null;
|
|
94
|
-
if (!
|
|
79
|
+
if (!isStoredMessageRole(value.role)) return null;
|
|
95
80
|
if (!Array.isArray(value.content)) return null;
|
|
96
|
-
const createdAt =
|
|
81
|
+
const createdAt = parseStoredDate(value.createdAt);
|
|
97
82
|
if (!createdAt) return null;
|
|
98
83
|
const metadata = value.metadata;
|
|
99
84
|
if (!isRecord(metadata) || !isRecord(metadata.custom)) return null;
|
|
85
|
+
const modality = isMessageModality(metadata.modality) ? metadata.modality : void 0;
|
|
100
86
|
if (value.role === "assistant") {
|
|
101
|
-
const status = value.status
|
|
102
|
-
|
|
103
|
-
|
|
87
|
+
const status = isStoredMessageStatus(value.status) ? value.status : {
|
|
88
|
+
type: "complete",
|
|
89
|
+
reason: "unknown"
|
|
90
|
+
};
|
|
91
|
+
const submittedFeedback = isRecord(metadata.submittedFeedback) ? metadata.submittedFeedback : void 0;
|
|
92
|
+
const submittedFeedbackType = submittedFeedback?.type;
|
|
93
|
+
const submittedFeedbackComment = submittedFeedback?.comment;
|
|
104
94
|
return {
|
|
105
95
|
id: value.id,
|
|
106
96
|
role: "assistant",
|
|
@@ -111,10 +101,14 @@ const parseStoredThreadMessage = (value, depth) => {
|
|
|
111
101
|
unstable_state: metadata.unstable_state ?? null,
|
|
112
102
|
unstable_annotations: Array.isArray(metadata.unstable_annotations) ? metadata.unstable_annotations : [],
|
|
113
103
|
unstable_data: Array.isArray(metadata.unstable_data) ? metadata.unstable_data : [],
|
|
114
|
-
steps:
|
|
115
|
-
...submittedFeedbackType === "positive" || submittedFeedbackType === "negative" ? { submittedFeedback: {
|
|
104
|
+
steps: parseStoredThreadSteps(metadata.steps),
|
|
105
|
+
...submittedFeedbackType === "positive" || submittedFeedbackType === "negative" ? { submittedFeedback: {
|
|
106
|
+
type: submittedFeedbackType,
|
|
107
|
+
...typeof submittedFeedbackComment === "string" && submittedFeedbackComment !== "" ? { comment: submittedFeedbackComment } : void 0
|
|
108
|
+
} } : void 0,
|
|
116
109
|
...metadata.timing !== void 0 ? { timing: metadata.timing } : void 0,
|
|
117
110
|
...metadata.isOptimistic === true ? { isOptimistic: true } : void 0,
|
|
111
|
+
...modality !== void 0 ? { modality } : void 0,
|
|
118
112
|
custom: metadata.custom
|
|
119
113
|
}
|
|
120
114
|
};
|
|
@@ -124,11 +118,14 @@ const parseStoredThreadMessage = (value, depth) => {
|
|
|
124
118
|
role: "user",
|
|
125
119
|
content: parseStoredMessageParts(value.content, depth),
|
|
126
120
|
attachments: Array.isArray(value.attachments) ? value.attachments.flatMap((item) => {
|
|
127
|
-
const attachment = parseStoredAttachment(item);
|
|
121
|
+
const attachment = parseStoredAttachment(item, isStoredMessagePart);
|
|
128
122
|
return attachment ? [attachment] : [];
|
|
129
123
|
}) : [],
|
|
130
124
|
createdAt,
|
|
131
|
-
metadata: {
|
|
125
|
+
metadata: {
|
|
126
|
+
...modality !== void 0 ? { modality } : void 0,
|
|
127
|
+
custom: metadata.custom
|
|
128
|
+
}
|
|
132
129
|
};
|
|
133
130
|
const content = parseStoredMessageParts(value.content, depth);
|
|
134
131
|
if (content.length !== 1) return null;
|
|
@@ -197,33 +194,48 @@ var AsyncStorageHistoryAdapter = class {
|
|
|
197
194
|
_messagesKey(remoteId) {
|
|
198
195
|
return `${this.prefix}messages:${remoteId}`;
|
|
199
196
|
}
|
|
197
|
+
_threadsKey() {
|
|
198
|
+
return `${this.prefix}threads`;
|
|
199
|
+
}
|
|
200
200
|
async load() {
|
|
201
201
|
const remoteId = this.aui.threadListItem.getState().remoteId;
|
|
202
202
|
if (!remoteId) return { messages: [] };
|
|
203
203
|
const raw = await this.storage.getItem(this._messagesKey(remoteId));
|
|
204
204
|
return parseStoredMessageRepository(raw);
|
|
205
205
|
}
|
|
206
|
-
async
|
|
206
|
+
async _upsert(item, moveHead) {
|
|
207
207
|
const { remoteId } = await this.aui.threadListItem.initialize();
|
|
208
208
|
const key = this._messagesKey(remoteId);
|
|
209
209
|
await this.mutationQueue.run(key, async () => {
|
|
210
|
+
if (await this.mutationQueue.run(this._threadsKey(), async () => {
|
|
211
|
+
const raw = await this.storage.getItem(this._threadsKey());
|
|
212
|
+
const parsed = parseJSON(raw);
|
|
213
|
+
return Array.isArray(parsed) && !parsed.some((thread) => parseStoredThread(thread)?.remoteId === remoteId);
|
|
214
|
+
})) return;
|
|
210
215
|
const raw = await this.storage.getItem(key);
|
|
211
216
|
const repo = parseStoredMessageRepository(raw);
|
|
212
217
|
const idx = repo.messages.findIndex((m) => m.message.id === item.message.id);
|
|
213
218
|
if (idx >= 0) repo.messages[idx] = item;
|
|
214
219
|
else repo.messages.push(item);
|
|
215
|
-
repo.headId = item.message.id;
|
|
220
|
+
if (moveHead) repo.headId = item.message.id;
|
|
216
221
|
await this.storage.setItem(key, JSON.stringify(repo));
|
|
217
222
|
});
|
|
218
223
|
}
|
|
224
|
+
async append(item) {
|
|
225
|
+
await this._upsert(item, true);
|
|
226
|
+
}
|
|
227
|
+
async update(item) {
|
|
228
|
+
await this._upsert(item, false);
|
|
229
|
+
}
|
|
219
230
|
};
|
|
231
|
+
const createLocalStorageHistoryAdapter = (storage, getAui, prefix, mutationQueue = getMutationQueue(storage)) => new AsyncStorageHistoryAdapter(storage, getAui, prefix, mutationQueue);
|
|
220
232
|
const useLocalStorageThreadAdapters = (storage, prefix, mutationQueue) => {
|
|
221
233
|
const aui = useAui();
|
|
222
234
|
const auiRef = useRef(aui);
|
|
223
235
|
useEffect(() => {
|
|
224
236
|
auiRef.current = aui;
|
|
225
237
|
});
|
|
226
|
-
const [history] = useState(() =>
|
|
238
|
+
const [history] = useState(() => createLocalStorageHistoryAdapter(storage, () => auiRef.current, prefix, mutationQueue));
|
|
227
239
|
return useMemo(() => ({ history }), [history]);
|
|
228
240
|
};
|
|
229
241
|
const createHistoryProvider = (storage, prefix, mutationQueue) => {
|
|
@@ -283,19 +295,23 @@ const createLocalStorageAdapter = (options) => {
|
|
|
283
295
|
},
|
|
284
296
|
async initialize(threadId) {
|
|
285
297
|
const remoteId = threadId;
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
298
|
+
const key = messagesKey(remoteId);
|
|
299
|
+
return mutationQueue.run(key, async () => {
|
|
300
|
+
await mutationQueue.removeStale(key, storage);
|
|
301
|
+
return mutationQueue.run(threadsKey, async () => {
|
|
302
|
+
const threads = await loadThreadMetadata();
|
|
303
|
+
if (!threads.some((t) => t.remoteId === remoteId)) {
|
|
304
|
+
threads.unshift({
|
|
305
|
+
remoteId,
|
|
306
|
+
status: "regular"
|
|
307
|
+
});
|
|
308
|
+
await saveThreadMetadata(threads);
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
290
311
|
remoteId,
|
|
291
|
-
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
return {
|
|
296
|
-
remoteId,
|
|
297
|
-
externalId: void 0
|
|
298
|
-
};
|
|
312
|
+
externalId: void 0
|
|
313
|
+
};
|
|
314
|
+
});
|
|
299
315
|
});
|
|
300
316
|
},
|
|
301
317
|
async rename(remoteId, newTitle) {
|
|
@@ -319,12 +335,15 @@ const createLocalStorageAdapter = (options) => {
|
|
|
319
335
|
});
|
|
320
336
|
},
|
|
321
337
|
async delete(remoteId) {
|
|
322
|
-
await mutationQueue.run(threadsKey, async () => {
|
|
323
|
-
const filtered = (await loadThreadMetadata()).filter((t) => t.remoteId !== remoteId);
|
|
324
|
-
await saveThreadMetadata(filtered);
|
|
325
|
-
});
|
|
326
338
|
const key = messagesKey(remoteId);
|
|
327
|
-
await mutationQueue.run(key, () =>
|
|
339
|
+
await mutationQueue.run(key, async () => {
|
|
340
|
+
await mutationQueue.run(threadsKey, async () => {
|
|
341
|
+
const filtered = (await loadThreadMetadata()).filter((t) => t.remoteId !== remoteId);
|
|
342
|
+
await saveThreadMetadata(filtered);
|
|
343
|
+
});
|
|
344
|
+
mutationQueue.markStale(key);
|
|
345
|
+
await mutationQueue.removeStale(key, storage);
|
|
346
|
+
});
|
|
328
347
|
},
|
|
329
348
|
async fetch(threadId) {
|
|
330
349
|
const thread = (await loadThreadMetadata()).find((t) => t.remoteId === threadId);
|
|
@@ -352,6 +371,6 @@ const createLocalStorageAdapter = (options) => {
|
|
|
352
371
|
};
|
|
353
372
|
};
|
|
354
373
|
//#endregion
|
|
355
|
-
export { createLocalStorageAdapter, parseStoredMessageRepository, parseStoredThreadMetadata };
|
|
374
|
+
export { createLocalStorageAdapter, createLocalStorageHistoryAdapter, parseStoredMessageRepository, parseStoredThreadMetadata };
|
|
356
375
|
|
|
357
376
|
//# sourceMappingURL=LocalStorageThreadListAdapter.js.map
|
|
@@ -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":"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"}
|
|
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","isStoredMessageStatus","isStoredMessagePart","isStoredMessageRole","parseStoredAttachment","parseStoredDate","parseStoredThreadSteps","RuntimeAdapterProvider","RuntimeAdapters","TitleGenerationAdapter","AsyncStorageLike","getItem","key","Promise","setItem","value","removeItem","KeyedMutationQueue","tails","Map","staleKeys","Set","markStale","add","removeStale","storage","has","delete","run","mutation","T","previous","get","result","then","tail","undefined","set","mutationQueues","WeakMap","getMutationQueue","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","reason","const","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","headId","some","AsyncStorageHistoryAdapter","getAui","ReturnType","mutationQueue","constructor","aui","_messagesKey","_threadsKey","load","threadListItem","getState","_upsert","moveHead","initialize","deleted","repo","idx","findIndex","m","push","stringify","append","update","createLocalStorageHistoryAdapter","useLocalStorageThreadAdapters","auiRef","current","history","createHistoryProvider","Provider","t0","$","_c","children","adapters","t1","createLocalStorageAdapter","options","threadsKey","messagesKey","threadId","loadThreadMetadata","saveThreadMetadata","threads","updateThreadMetadata","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 isStoredMessageStatus,\n isStoredMessagePart,\n isStoredMessageRole,\n parseStoredAttachment,\n parseStoredDate,\n parseStoredThreadSteps,\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 private readonly staleKeys = new Set<string>();\n\n markStale(key: string) {\n this.staleKeys.add(key);\n }\n\n async removeStale(key: string, storage: AsyncStorageLike) {\n if (!this.staleKeys.has(key)) return;\n await storage.removeItem(key);\n this.staleKeys.delete(key);\n }\n\n // Mutations may acquire another key but must never re-enter the key they\n // already hold. Thread lifecycle mutations acquire messages before metadata.\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 = isStoredMessageStatus(value.status)\n ? value.status\n : { type: \"complete\", reason: \"unknown\" as const };\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: parseStoredThreadSteps(metadata.steps),\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 private _threadsKey() {\n return `${this.prefix}threads`;\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 private async _upsert(\n item: ExportedMessageRepositoryItem,\n moveHead: boolean,\n ): Promise<void> {\n // Initialization acquires the same message key, so it must settle before\n // the upsert takes that lock.\n const { remoteId } = await this.aui.threadListItem.initialize();\n const key = this._messagesKey(remoteId);\n\n await this.mutationQueue.run(key, async () => {\n // A missing or unreadable metadata blob is not evidence of deletion, so\n // only a readable list that omits the thread skips the write.\n const deleted = await this.mutationQueue.run(\n this._threadsKey(),\n async () => {\n const raw = await this.storage.getItem(this._threadsKey());\n const parsed = parseJSON(raw);\n return (\n Array.isArray(parsed) &&\n !parsed.some(\n (thread) => parseStoredThread(thread)?.remoteId === remoteId,\n )\n );\n },\n );\n if (deleted) return;\n\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 if (moveHead) repo.headId = item.message.id;\n\n await this.storage.setItem(key, JSON.stringify(repo));\n });\n }\n\n async append(item: ExportedMessageRepositoryItem): Promise<void> {\n await this._upsert(item, true);\n }\n\n async update(item: ExportedMessageRepositoryItem): Promise<void> {\n await this._upsert(item, false);\n }\n}\n\nexport const createLocalStorageHistoryAdapter = (\n storage: AsyncStorageLike,\n getAui: () => ReturnType<typeof useAui>,\n prefix: string,\n mutationQueue = getMutationQueue(storage),\n): ThreadHistoryAdapter =>\n new AsyncStorageHistoryAdapter(storage, getAui, prefix, mutationQueue);\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 createLocalStorageHistoryAdapter(\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 const key = messagesKey(remoteId);\n return mutationQueue.run(key, async () => {\n await mutationQueue.removeStale(key, storage);\n\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\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 const key = messagesKey(remoteId);\n await mutationQueue.run(key, async () => {\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 mutationQueue.markStale(key);\n await mutationQueue.removeStale(key, storage);\n });\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,6 @@
|
|
|
1
|
-
import { ThreadMessage } from "../../types/message.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
generateTitle(messages: readonly ThreadMessage[]): Promise<string>;
|
|
1
|
+
import type { ThreadMessage } from "../../types/message.js";
|
|
2
|
+
export type TitleGenerationAdapter = {
|
|
3
|
+
generateTitle(messages: readonly ThreadMessage[]): Promise<string>;
|
|
5
4
|
};
|
|
6
|
-
declare const createSimpleTitleAdapter: () => TitleGenerationAdapter;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { TitleGenerationAdapter, createSimpleTitleAdapter };
|
|
5
|
+
export declare const createSimpleTitleAdapter: () => TitleGenerationAdapter;
|
|
9
6
|
//# sourceMappingURL=TitleGenerationAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleGenerationAdapter.d.ts","
|
|
1
|
+
{"version":3,"file":"TitleGenerationAdapter.d.ts","sourceRoot":"","sources":["../../../src/react/adapters/TitleGenerationAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA4B;AAEzD,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAO,sBAa3C,CAAC"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ClientOutput } from "@assistant-ui/store";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
thread: ResourceElement<ClientOutput<"thread">>;
|
|
1
|
+
import { type ResourceElement } from "@assistant-ui/tap";
|
|
2
|
+
import type { ClientOutput } from "@assistant-ui/store";
|
|
3
|
+
import type { RuntimeAdapters } from "../../runtimes/remote-thread-list/types.js";
|
|
4
|
+
export declare const AdaptedRemoteThread: import("@assistant-ui/tap").Resource<ClientOutput<"thread">, [{
|
|
5
|
+
useAdapters: () => RuntimeAdapters | null | undefined;
|
|
6
|
+
thread: ResourceElement<ClientOutput<"thread">>;
|
|
8
7
|
}]>;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { AdaptedRemoteThread };
|
|
11
8
|
//# sourceMappingURL=AdaptedRemoteThread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptedRemoteThread.d.ts","
|
|
1
|
+
{"version":3,"file":"AdaptedRemoteThread.d.ts","sourceRoot":"","sources":["../../../src/react/client/AdaptedRemoteThread.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,mDAAgD;AAoC/E,eAAO,MAAM,mBAAmB;iBAxBjB,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS;YAC7C,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;GAuBkB,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { ClientOutput } from "@assistant-ui/store";
|
|
2
|
-
|
|
3
|
-
declare const DataRenderers: import("@assistant-ui/tap").Resource<ClientOutput<"dataRenderers">, []>;
|
|
4
|
-
//#endregion
|
|
5
|
-
export { DataRenderers };
|
|
1
|
+
import type { ClientOutput } from "@assistant-ui/store";
|
|
2
|
+
export declare const DataRenderers: import("@assistant-ui/tap").Resource<ClientOutput<"dataRenderers">, []>;
|
|
6
3
|
//# sourceMappingURL=DataRenderers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRenderers.d.ts","
|
|
1
|
+
{"version":3,"file":"DataRenderers.d.ts","sourceRoot":"","sources":["../../../src/react/client/DataRenderers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAqExD,eAAO,MAAM,aAAa,yEAA6B,CAAC"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
onDelete?: (threadId: string) => void;
|
|
1
|
+
import { type ResourceElement } from "@assistant-ui/tap";
|
|
2
|
+
import type { AssistantClient, ClientOutput, ScopesConfig } from "@assistant-ui/store";
|
|
3
|
+
export type InMemoryThreadListProps = {
|
|
4
|
+
thread: (threadId: string) => ResourceElement<ClientOutput<"thread">>;
|
|
5
|
+
onSwitchToThread?: (threadId: string) => void;
|
|
6
|
+
onSwitchToNewThread?: () => void;
|
|
7
|
+
onDelete?: (threadId: string) => void;
|
|
9
8
|
};
|
|
10
|
-
declare const InMemoryThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: InMemoryThreadListProps]>;
|
|
9
|
+
export declare const InMemoryThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [props: InMemoryThreadListProps]>;
|
|
11
10
|
/**
|
|
12
11
|
* The scope defaults `InMemoryThreadList` installs when it is used as the
|
|
13
12
|
* `threads` config entry. Adapter packages that wrap it in their own config
|
|
14
13
|
* entry attach this to the wrapping resource for scope parity.
|
|
15
14
|
*/
|
|
16
|
-
declare const inMemoryThreadListTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { InMemoryThreadList, InMemoryThreadListProps, inMemoryThreadListTransformScopes };
|
|
15
|
+
export declare const inMemoryThreadListTransformScopes: (scopes: ScopesConfig, parent: AssistantClient) => void;
|
|
19
16
|
//# sourceMappingURL=InMemoryThreadList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryThreadList.d.ts","
|
|
1
|
+
{"version":3,"file":"InMemoryThreadList.d.ts","sourceRoot":"","sources":["../../../src/react/client/InMemoryThreadList.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAe7B,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAiOF,eAAO,MAAM,kBAAkB,iGAAkC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAC5C,QAAQ,YAAY,EACpB,QAAQ,eAAe,KACtB,IAiCF,CAAC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
//#region src/react/client/Interactables.d.ts
|
|
1
|
+
import type { ClientOutput } from "@assistant-ui/store";
|
|
2
|
+
import type { Unstable_InteractablesConfig } from "../types/scopes/interactables.js";
|
|
4
3
|
/**
|
|
5
4
|
* Registers the unstable interactables store scope.
|
|
6
5
|
*
|
|
7
6
|
* @deprecated Unstable / Experimental (not actually removed).
|
|
8
7
|
*/
|
|
9
|
-
declare const unstable_Interactables: import("@assistant-ui/tap").Resource<ClientOutput<"unstable_interactables">, [(Unstable_InteractablesConfig | undefined)?]>;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { unstable_Interactables };
|
|
8
|
+
export declare const unstable_Interactables: import("@assistant-ui/tap").Resource<ClientOutput<"unstable_interactables">, [(Unstable_InteractablesConfig | undefined)?]>;
|
|
12
9
|
//# sourceMappingURL=Interactables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interactables.d.ts","
|
|
1
|
+
{"version":3,"file":"Interactables.d.ts","sourceRoot":"","sources":["../../../src/react/client/Interactables.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,KAAK,EAKV,4BAA4B,EAC7B,yCAAsC;AAgyBvC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6HAAqC,CAAC"}
|