@assistant-ui/core 0.2.12 → 0.2.15
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.js.map +1 -1
- package/dist/adapters/directive-formatter.js.map +1 -1
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/thread-history.d.ts +3 -1
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/duplicate-detection.js.map +1 -1
- package/dist/internal.d.ts +2 -1
- package/dist/internal.js +2 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/frame/types.js.map +1 -1
- package/dist/model-context/registry.js.map +1 -1
- package/dist/model-context/tool.js.map +1 -1
- package/dist/model-context/types.d.ts +1 -0
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/AssistantProvider.js +7 -1
- package/dist/react/AssistantProvider.js.map +1 -1
- package/dist/react/AssistantRuntimeProvider.js +18 -6
- package/dist/react/AssistantRuntimeProvider.js.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +1 -1
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.js +35 -6
- package/dist/react/RuntimeAdapter.js.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +29 -7
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/adapters/TitleGenerationAdapter.js.map +1 -1
- package/dist/react/client/DataRenderers.d.ts +1 -8
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.js +56 -36
- package/dist/react/client/DataRenderers.js.map +1 -1
- package/dist/react/client/Interactables.d.ts +1 -1
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +71 -70
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/Tools.d.ts +2 -13
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +121 -57
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/model-context/define-mcp-toolkit.js.map +1 -1
- package/dist/react/model-context/define-toolkit.js.map +1 -1
- package/dist/react/model-context/external-tool.js.map +1 -1
- package/dist/react/model-context/human-tool.js.map +1 -1
- package/dist/react/model-context/makeAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/makeAssistantTool.js.map +1 -1
- package/dist/react/model-context/makeAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/provider-tool.js.map +1 -1
- package/dist/react/model-context/stub-tool.js.map +1 -1
- package/dist/react/model-context/toolbox.js.map +1 -1
- package/dist/react/model-context/useAssistantContext.js.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.js +27 -8
- package/dist/react/model-context/useAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.js +33 -10
- package/dist/react/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/react/model-context/useAssistantInteractable.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.js +59 -17
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +30 -9
- package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
- package/dist/react/model-context/useInlineRender.js +35 -8
- package/dist/react/model-context/useInlineRender.js.map +1 -1
- package/dist/react/model-context/useInteractableState.js +65 -19
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.js +42 -14
- package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +59 -22
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +25 -7
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.js +49 -13
- package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +25 -7
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js +28 -9
- package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +25 -7
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +27 -11
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +27 -11
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js +24 -8
- package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +25 -7
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js +25 -7
- package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +25 -7
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js +18 -4
- package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js +25 -7
- package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.js +41 -9
- package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.js +4 -1
- package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js +25 -7
- package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +31 -13
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.js +4 -1
- package/dist/react/primitive-hooks/useThreadIsEmpty.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.js +4 -1
- package/dist/react/primitive-hooks/useThreadIsRunning.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +18 -4
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +25 -7
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js +18 -4
- package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadMessages.js +4 -1
- package/dist/react/primitive-hooks/useThreadMessages.js.map +1 -1
- package/dist/react/primitive-hooks/useVoice.js +63 -13
- package/dist/react/primitive-hooks/useVoice.js.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +42 -7
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +67 -16
- package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/react/primitives/composer/ComposerIf.js +30 -9
- package/dist/react/primitives/composer/ComposerIf.js.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +55 -13
- package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +68 -16
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +3 -2
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +6 -6
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +28 -1
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +665 -163
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/message/MessageQuote.js +18 -2
- package/dist/react/primitives/message/MessageQuote.js.map +1 -1
- package/dist/react/primitives/messagePart/MessagePartInProgress.js +6 -2
- package/dist/react/primitives/messagePart/MessagePartInProgress.js.map +1 -1
- package/dist/react/primitives/part/PartMessages.js +46 -14
- package/dist/react/primitives/part/PartMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +67 -10
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +50 -10
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +55 -14
- package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.js +15 -2
- package/dist/react/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.js +57 -12
- package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +33 -11
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +29 -6
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.js +49 -19
- package/dist/react/providers/MessageByIndexProvider.js.map +1 -1
- package/dist/react/providers/PartByIndexProvider.js +29 -6
- package/dist/react/providers/PartByIndexProvider.js.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js +29 -6
- package/dist/react/providers/QueueItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js +83 -28
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js +29 -6
- package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/react/providers/TextMessagePartProvider.js +75 -26
- package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js +30 -6
- package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemRuntimeProvider.js +28 -5
- package/dist/react/providers/ThreadListItemRuntimeProvider.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +2 -0
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +19 -4
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +2 -0
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +1 -0
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.js +27 -10
- package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +16 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +19 -17
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/createMessageConverter.js.map +1 -1
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +67 -30
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +44 -10
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.js +17 -12
- package/dist/react/runtimes/useExternalStoreSharedOptions.js.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +34 -6
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +5 -6
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/utils/getMessageQuote.js.map +1 -1
- package/dist/react/utils/groupParts.d.ts +13 -1
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/groupParts.js +17 -5
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/runtime/api/assistant-runtime.js.map +1 -1
- package/dist/runtime/api/attachment-runtime.js.map +1 -1
- package/dist/runtime/api/bindings.d.ts +1 -0
- package/dist/runtime/api/bindings.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +3 -9
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +3 -6
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.d.ts +2 -0
- package/dist/runtime/api/message-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-runtime.js +5 -0
- package/dist/runtime/api/message-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +1 -0
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +3 -0
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +4 -0
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-assistant-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +1 -0
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts +30 -0
- package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -0
- package/dist/runtime/branch/external-thread-branch-adapter.js +0 -0
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +1 -0
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +4 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/external-store-message.js.map +1 -1
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +15 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.js +35 -0
- package/dist/runtime/utils/resolveToolApprovalResponse.js.map +1 -0
- package/dist/runtime/utils/thread-message-like.d.ts +5 -1
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtimes/assistant-transport/utils.js.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +1 -0
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/external-store-shared-options.js.map +1 -1
- 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 +1 -0
- 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 +13 -0
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/external-store/thread-message-converter.js.map +1 -1
- package/dist/runtimes/local/local-runtime-core.js.map +1 -1
- package/dist/runtimes/local/local-runtime-options.d.ts +1 -1
- package/dist/runtimes/local/local-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +9 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +65 -5
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/should-continue.js +4 -2
- package/dist/runtimes/local/should-continue.js.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +2 -0
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +4 -0
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.js +4 -0
- package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -1
- package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +1 -0
- 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 -0
- package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +1 -0
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/chain-of-thought-client.d.ts +2 -7
- package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
- package/dist/store/clients/chain-of-thought-client.js +39 -20
- package/dist/store/clients/chain-of-thought-client.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts +1 -1
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/model-context-client.js +67 -16
- package/dist/store/clients/model-context-client.js.map +1 -1
- package/dist/store/clients/no-op-composer-client.d.ts +2 -4
- package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
- package/dist/store/clients/no-op-composer-client.js +96 -54
- package/dist/store/clients/no-op-composer-client.js.map +1 -1
- package/dist/store/clients/runtime-adapter.d.ts +1 -3
- package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
- package/dist/store/clients/runtime-adapter.js +2 -15
- package/dist/store/clients/runtime-adapter.js.map +1 -1
- package/dist/store/clients/suggestions.d.ts +1 -4
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/suggestions.js +63 -23
- package/dist/store/clients/suggestions.js.map +1 -1
- package/dist/store/clients/thread-message-client.d.ts +1 -1
- package/dist/store/clients/thread-message-client.d.ts.map +1 -1
- package/dist/store/clients/thread-message-client.js +184 -73
- package/dist/store/clients/thread-message-client.js.map +1 -1
- package/dist/store/internal.d.ts +2 -2
- package/dist/store/internal.js +2 -2
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts +2 -4
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.js +31 -7
- package/dist/store/runtime-clients/attachment-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +2 -10
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +195 -72
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/liveRef.d.ts +7 -0
- package/dist/store/runtime-clients/liveRef.d.ts.map +1 -0
- package/dist/store/runtime-clients/liveRef.js +8 -0
- package/dist/store/runtime-clients/liveRef.js.map +1 -0
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts +2 -4
- package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-part-runtime-client.js +49 -9
- package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +2 -7
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +220 -54
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +2 -4
- package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js +71 -26
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +2 -5
- package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.js +141 -36
- package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts +2 -4
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +196 -72
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.js +2 -9
- package/dist/store/runtime-clients/useSubscribable.js.map +1 -1
- package/dist/store/scopes/message.d.ts +1 -0
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +5 -6
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/queue-item.js.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +1 -0
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +1 -0
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/dist/types/message.d.ts +38 -5
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/composite-context-provider.js.map +1 -1
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/json/is-json-equal.js.map +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/text.js.map +1 -1
- package/package.json +6 -6
- package/src/adapters/thread-history.ts +2 -0
- package/src/index.ts +5 -0
- package/src/internal.ts +1 -0
- package/src/model-context/types.ts +1 -0
- package/src/react/AssistantProvider.tsx +10 -1
- package/src/react/RuntimeAdapter.ts +25 -8
- package/src/react/client/DataRenderers.ts +42 -45
- package/src/react/client/Interactables.ts +261 -261
- package/src/react/client/Tools.ts +9 -9
- package/src/react/primitives/message/MessageGroupedParts.tsx +19 -7
- package/src/react/primitives/message/MessageParts.tsx +64 -13
- package/src/react/providers/TextMessagePartProvider.tsx +5 -3
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +1 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +11 -0
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +6 -0
- package/src/react/runtimes/external-message-converter.ts +3 -1
- package/src/react/types/MessagePartComponentTypes.ts +5 -5
- package/src/react/utils/groupParts.ts +27 -0
- package/src/runtime/api/bindings.ts +1 -0
- package/src/runtime/api/message-part-runtime.ts +14 -11
- package/src/runtime/api/message-runtime.ts +7 -0
- package/src/runtime/api/thread-list-runtime.ts +1 -0
- package/src/runtime/api/thread-runtime.ts +7 -0
- package/src/runtime/base/base-thread-runtime-core.ts +1 -0
- package/src/runtime/branch/external-thread-branch-adapter.ts +26 -0
- package/src/runtime/interfaces/thread-list-runtime-core.ts +1 -0
- package/src/runtime/interfaces/thread-runtime-core.ts +4 -0
- package/src/runtime/utils/resolveToolApprovalResponse.test.ts +91 -0
- package/src/runtime/utils/resolveToolApprovalResponse.ts +55 -0
- package/src/runtime/utils/thread-message-like.ts +10 -1
- package/src/runtimes/external-store/external-store-adapter.ts +1 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +24 -0
- package/src/runtimes/local/local-runtime-options.ts +1 -1
- package/src/runtimes/local/local-thread-runtime-core.test.ts +370 -0
- package/src/runtimes/local/local-thread-runtime-core.ts +113 -7
- package/src/runtimes/local/should-continue.ts +24 -13
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +5 -0
- package/src/runtimes/remote-thread-list/empty-thread-core.ts +5 -0
- package/src/runtimes/remote-thread-list/remote-thread-state.ts +2 -0
- package/src/runtimes/remote-thread-list/types.ts +1 -0
- package/src/store/clients/chain-of-thought-client.ts +5 -3
- package/src/store/clients/model-context-client.test.ts +5 -4
- package/src/store/clients/model-context-client.ts +21 -21
- package/src/store/clients/no-op-composer-client.ts +5 -3
- package/src/store/clients/runtime-adapter.ts +0 -24
- package/src/store/clients/suggestions.ts +12 -23
- package/src/store/clients/thread-message-client.ts +42 -40
- package/src/store/internal.ts +1 -4
- package/src/store/runtime-clients/attachment-runtime-client.ts +14 -14
- package/src/store/runtime-clients/composer-runtime-client.ts +48 -45
- package/src/store/runtime-clients/liveRef.ts +5 -0
- package/src/store/runtime-clients/message-part-runtime-client.ts +5 -3
- package/src/store/runtime-clients/message-runtime-client.ts +42 -40
- package/src/store/runtime-clients/thread-list-item-runtime-client.ts +5 -3
- package/src/store/runtime-clients/thread-list-runtime-client.ts +13 -11
- package/src/store/runtime-clients/thread-runtime-client.ts +20 -16
- package/src/store/runtime-clients/useSubscribable.ts +2 -10
- package/src/store/scopes/message.ts +1 -0
- package/src/store/scopes/part.ts +5 -2
- package/src/store/scopes/thread-list-item.ts +1 -0
- package/src/store/scopes/thread.ts +1 -0
- package/src/tests/external-store-thread-runtime-core.test.ts +57 -0
- package/src/tests/groupMessageParts.test.ts +84 -0
- package/src/tests/groupParts.test.ts +55 -0
- package/src/types/message.ts +45 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;;KAGY,2BAAA;EACV,SAAA;EACA,WAAA;EACA,IAAA;EACA,eAAA;EACA,gBAAA;EACA,IAAA;EACA,OAAA,GAAU,MAAM;AAAA;AAAA,KAGN,mBAAA;EACV,MAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,KAGU,YAAA;EACV,QAAA;EACA,MAAA;EACA,KAAA,GAAQ,MAAA,SAAe,IAAA;EACvB,YAAA,GAAe,2BAAA;EACf,MAAA,GAAS,mBAAA;AAAA;AAAA,KAGC,oBAAA;EACV,eAAA,QAAuB,YAAA;EACvB,SAAA,IAAa,QAAA,iBAAyB,WAAW;AAAA;AAAA,KAGvC,kBAAA,eACI,MAAA,8BAEZ,IAAA,CAAK,KAAA,EAAO,OAAA;EACd,QAAA;EACA,MAAA;AAAA;AAAA,KAGU,2BAAA;EACV,QAAA;EACA,WAAW;AAAA;AAAA,KAGD,sBAAA;EACV,UAAA;EACA,QAAQ;AAAA;AAAA,cAGG,kBAAA,GACX,SAAA,EAAW,GAAA,CAAI,oBAAA,MACd,YAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;;KAGY,2BAAA;EACV,SAAA;EACA,WAAA;EACA,IAAA;EACA,eAAA;EACA,gBAAA;EACA,IAAA;EACA,OAAA,GAAU,MAAM;AAAA;AAAA,KAGN,mBAAA;EACV,MAAA;EACA,OAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,KAGU,YAAA;EACV,QAAA;EACA,MAAA;EACA,KAAA,GAAQ,MAAA,SAAe,IAAA;EACvB,YAAA,GAAe,2BAAA;EACf,MAAA,GAAS,mBAAA;AAAA;AAAA,KAGC,oBAAA;EACV,eAAA,QAAuB,YAAA;EACvB,SAAA,IAAa,QAAA,iBAAyB,WAAW;AAAA;AAAA,KAGvC,kBAAA,eACI,MAAA,8BAEZ,IAAA,CAAK,KAAA,EAAO,OAAA;EACd,QAAA;EACA,MAAA;AAAA;AAAA,KAGU,2BAAA;EACV,QAAA;EACA,WAAW;AAAA;AAAA,KAGD,sBAAA;EACV,UAAA;EACA,QAAQ;AAAA;AAAA,cAGG,kBAAA,GACX,SAAA,EAAW,GAAA,CAAI,oBAAA,MACd,YAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/model-context/types.ts"],"sourcesContent":["import type { Unsubscribe } from \"../types/unsubscribe\";\nimport type { Tool } from \"assistant-stream\";\n\nexport type LanguageModelV1CallSettings = {\n maxTokens?: number;\n temperature?: number;\n topP?: number;\n presencePenalty?: number;\n frequencyPenalty?: number;\n seed?: number;\n headers?: Record<string, string | undefined>;\n};\n\nexport type LanguageModelConfig = {\n apiKey?: string;\n baseUrl?: string;\n modelName?: string;\n};\n\nexport type ModelContext = {\n priority?: number | undefined;\n system?: string | undefined;\n tools?: Record<string, Tool<any, any>> | undefined;\n callSettings?: LanguageModelV1CallSettings | undefined;\n config?: LanguageModelConfig | undefined;\n};\n\nexport type ModelContextProvider = {\n getModelContext: () => ModelContext;\n subscribe?: (callback: () => void) => Unsubscribe;\n};\n\nexport type AssistantToolProps<\n TArgs extends Record<string, unknown>,\n TResult,\n> = Tool<TArgs, TResult> & {\n toolName: string;\n render?: unknown;\n};\n\nexport type AssistantInstructionsConfig = {\n disabled?: boolean | undefined;\n instruction: string;\n};\n\nexport type AssistantContextConfig = {\n getContext: () => string;\n disabled?: boolean | undefined;\n};\n\nexport const mergeModelContexts = (\n configSet: Set<ModelContextProvider>,\n): ModelContext => {\n const configs = Array.from(configSet)\n .map((c) => c.getModelContext())\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n\n const toolPriorities: Record<string, number> = {};\n\n return configs.reduce((acc, config) => {\n const priority = config.priority ?? 0;\n if (config.system) {\n if (acc.system) {\n acc.system += `\\n\\n${config.system}`;\n } else {\n acc.system = config.system;\n }\n }\n if (config.tools) {\n for (const [name, tool] of Object.entries(config.tools)) {\n const existing = acc.tools?.[name];\n if (existing && existing !== tool) {\n const existingPriority = toolPriorities[name]!;\n if (existingPriority === priority) {\n throw new Error(\n `You tried to define a tool with the name ${name}, but it already exists.`,\n );\n }\n\n const higherPriorityTool =\n existingPriority > priority ? existing : tool;\n const lowerPriorityTool =\n existingPriority > priority ? tool : existing;\n acc.tools![name] = {\n ...lowerPriorityTool,\n ...higherPriorityTool,\n } as Tool<any, any>;\n toolPriorities[name] = Math.max(existingPriority, priority);\n continue;\n }\n\n if (!acc.tools) acc.tools = {};\n acc.tools[name] = tool;\n toolPriorities[name] ??= priority;\n }\n }\n if (config.config) {\n acc.config = {\n ...acc.config,\n ...config.config,\n };\n }\n if (config.callSettings) {\n acc.callSettings = {\n ...acc.callSettings,\n ...config.callSettings,\n };\n }\n return acc;\n }, {} as ModelContext);\n};\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"types.js","names":["Unsubscribe","Tool","LanguageModelV1CallSettings","maxTokens","temperature","topP","presencePenalty","frequencyPenalty","seed","headers","Record","LanguageModelConfig","apiKey","baseUrl","modelName","reasoningEffort","ModelContext","priority","system","tools","callSettings","config","ModelContextProvider","getModelContext","subscribe","callback","AssistantToolProps","TArgs","TResult","toolName","render","AssistantInstructionsConfig","disabled","instruction","AssistantContextConfig","getContext","mergeModelContexts","configSet","Set","configs","Array","from","map","c","sort","a","b","toolPriorities","reduce","acc","name","tool","Object","entries","existing","existingPriority","Error","higherPriorityTool","lowerPriorityTool","Math","max"],"sources":["../../src/model-context/types.ts"],"sourcesContent":["import type { Unsubscribe } from \"../types/unsubscribe\";\nimport type { Tool } from \"assistant-stream\";\n\nexport type LanguageModelV1CallSettings = {\n maxTokens?: number;\n temperature?: number;\n topP?: number;\n presencePenalty?: number;\n frequencyPenalty?: number;\n seed?: number;\n headers?: Record<string, string | undefined>;\n};\n\nexport type LanguageModelConfig = {\n apiKey?: string;\n baseUrl?: string;\n modelName?: string;\n reasoningEffort?: string;\n};\n\nexport type ModelContext = {\n priority?: number | undefined;\n system?: string | undefined;\n tools?: Record<string, Tool<any, any>> | undefined;\n callSettings?: LanguageModelV1CallSettings | undefined;\n config?: LanguageModelConfig | undefined;\n};\n\nexport type ModelContextProvider = {\n getModelContext: () => ModelContext;\n subscribe?: (callback: () => void) => Unsubscribe;\n};\n\nexport type AssistantToolProps<\n TArgs extends Record<string, unknown>,\n TResult,\n> = Tool<TArgs, TResult> & {\n toolName: string;\n render?: unknown;\n};\n\nexport type AssistantInstructionsConfig = {\n disabled?: boolean | undefined;\n instruction: string;\n};\n\nexport type AssistantContextConfig = {\n getContext: () => string;\n disabled?: boolean | undefined;\n};\n\nexport const mergeModelContexts = (\n configSet: Set<ModelContextProvider>,\n): ModelContext => {\n const configs = Array.from(configSet)\n .map((c) => c.getModelContext())\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n\n const toolPriorities: Record<string, number> = {};\n\n return configs.reduce((acc, config) => {\n const priority = config.priority ?? 0;\n if (config.system) {\n if (acc.system) {\n acc.system += `\\n\\n${config.system}`;\n } else {\n acc.system = config.system;\n }\n }\n if (config.tools) {\n for (const [name, tool] of Object.entries(config.tools)) {\n const existing = acc.tools?.[name];\n if (existing && existing !== tool) {\n const existingPriority = toolPriorities[name]!;\n if (existingPriority === priority) {\n throw new Error(\n `You tried to define a tool with the name ${name}, but it already exists.`,\n );\n }\n\n const higherPriorityTool =\n existingPriority > priority ? existing : tool;\n const lowerPriorityTool =\n existingPriority > priority ? tool : existing;\n acc.tools![name] = {\n ...lowerPriorityTool,\n ...higherPriorityTool,\n } as Tool<any, any>;\n toolPriorities[name] = Math.max(existingPriority, priority);\n continue;\n }\n\n if (!acc.tools) acc.tools = {};\n acc.tools[name] = tool;\n toolPriorities[name] ??= priority;\n }\n }\n if (config.config) {\n acc.config = {\n ...acc.config,\n ...config.config,\n };\n }\n if (config.callSettings) {\n acc.callSettings = {\n ...acc.callSettings,\n ...config.callSettings,\n };\n }\n return acc;\n }, {} as ModelContext);\n};\n"],"mappings":";AAmDA,MAAaoC,sBACXC,cACiB;CACjB,MAAME,UAAUC,MAAMC,KAAKJ,SAAS,CAAC,CAClCK,KAAKC,MAAMA,EAAEpB,gBAAgB,CAAC,CAAC,CAC/BqB,MAAMC,GAAGC,OAAOA,EAAE7B,YAAY,MAAM4B,EAAE5B,YAAY,EAAE;CAEvD,MAAM8B,iBAAyC,CAAC;CAEhD,OAAOR,QAAQS,QAAQC,KAAK5B,WAAW;EACrC,MAAMJ,WAAWI,OAAOJ,YAAY;EACpC,IAAII,OAAOH,QACT,IAAI+B,IAAI/B,QACN+B,IAAI/B,UAAU,OAAOG,OAAOH;OAE5B+B,IAAI/B,SAASG,OAAOH;EAGxB,IAAIG,OAAOF,OACT,KAAK,MAAM,CAAC+B,MAAMC,SAASC,OAAOC,QAAQhC,OAAOF,KAAK,GAAG;GACvD,MAAMmC,WAAWL,IAAI9B,QAAQ+B;GAC7B,IAAII,YAAYA,aAAaH,MAAM;IACjC,MAAMI,mBAAmBR,eAAeG;IACxC,IAAIK,qBAAqBtC,UACvB,MAAM,IAAIuC,MACR,4CAA4CN,KAAI,yBAClD;IAGF,MAAMO,qBACJF,mBAAmBtC,WAAWqC,WAAWH;IAC3C,MAAMO,oBACJH,mBAAmBtC,WAAWkC,OAAOG;IACvCL,IAAI9B,MAAO+B,QAAQ;KACjB,GAAGQ;KACH,GAAGD;IACL;IACAV,eAAeG,QAAQS,KAAKC,IAAIL,kBAAkBtC,QAAQ;IAC1D;GACF;GAEA,IAAI,CAACgC,IAAI9B,OAAO8B,IAAI9B,QAAQ,CAAC;GAC7B8B,IAAI9B,MAAM+B,QAAQC;GAClBJ,eAAeG,UAAUjC;EAC3B;EAEF,IAAII,OAAOA,QACT4B,IAAI5B,SAAS;GACX,GAAG4B,IAAI5B;GACP,GAAGA,OAAOA;EACZ;EAEF,IAAIA,OAAOD,cACT6B,IAAI7B,eAAe;GACjB,GAAG6B,IAAI7B;GACP,GAAGC,OAAOD;EACZ;EAEF,OAAO6B;CACT,GAAG,CAAC,CAAiB;AACvB"}
|
|
@@ -7,12 +7,18 @@ const getRenderComponent = (runtime) => {
|
|
|
7
7
|
return runtime._core?.RenderComponent;
|
|
8
8
|
};
|
|
9
9
|
const AssistantProviderBase = memo(({ runtime, aui: parent = null, children }) => {
|
|
10
|
+
"use no memo";
|
|
10
11
|
const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent });
|
|
11
12
|
const RenderComponent = getRenderComponent(runtime);
|
|
12
|
-
|
|
13
|
+
const inner = /* @__PURE__ */ jsxs(AuiProvider, {
|
|
13
14
|
value: aui,
|
|
14
15
|
children: [RenderComponent && /* @__PURE__ */ jsx(RenderComponent, {}), children]
|
|
15
16
|
});
|
|
17
|
+
if (!parent) return inner;
|
|
18
|
+
return /* @__PURE__ */ jsx(AuiProvider, {
|
|
19
|
+
value: parent,
|
|
20
|
+
children: inner
|
|
21
|
+
});
|
|
16
22
|
});
|
|
17
23
|
//#endregion
|
|
18
24
|
export { AssistantProviderBase, getRenderComponent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantProvider.js","names":[],"sources":["../../src/react/AssistantProvider.tsx"],"sourcesContent":["import {\n memo,\n type ComponentType,\n type FC,\n type PropsWithChildren,\n} from \"react\";\nimport { useAui, AuiProvider, type AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport type { AssistantRuntimeCore } from \"../runtime/interfaces/assistant-runtime-core\";\nimport { RuntimeAdapter } from \"./RuntimeAdapter\";\n\nexport const getRenderComponent = (runtime: AssistantRuntime) => {\n return (runtime as { _core?: AssistantRuntimeCore })._core\n ?.RenderComponent as ComponentType | undefined;\n};\n\nexport type AssistantProviderBaseProps = PropsWithChildren<{\n runtime: AssistantRuntime;\n aui?: AssistantClient | null;\n}>;\n\nexport const AssistantProviderBase: FC<AssistantProviderBaseProps> = memo(\n ({ runtime, aui: parent = null, children }) => {\n const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent });\n const RenderComponent = getRenderComponent(runtime);\n
|
|
1
|
+
{"version":3,"file":"AssistantProvider.js","names":["memo","ComponentType","FC","PropsWithChildren","useAui","AuiProvider","AssistantClient","AssistantRuntime","AssistantRuntimeCore","RuntimeAdapter","getRenderComponent","runtime","_core","RenderComponent","AssistantProviderBaseProps","aui","AssistantProviderBase","parent","children","threads","inner"],"sources":["../../src/react/AssistantProvider.tsx"],"sourcesContent":["import {\n memo,\n type ComponentType,\n type FC,\n type PropsWithChildren,\n} from \"react\";\nimport { useAui, AuiProvider, type AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport type { AssistantRuntimeCore } from \"../runtime/interfaces/assistant-runtime-core\";\nimport { RuntimeAdapter } from \"./RuntimeAdapter\";\n\nexport const getRenderComponent = (runtime: AssistantRuntime) => {\n return (runtime as { _core?: AssistantRuntimeCore })._core\n ?.RenderComponent as ComponentType | undefined;\n};\n\nexport type AssistantProviderBaseProps = PropsWithChildren<{\n runtime: AssistantRuntime;\n aui?: AssistantClient | null;\n}>;\n\nexport const AssistantProviderBase: FC<AssistantProviderBaseProps> = memo(\n ({ runtime, aui: parent = null, children }) => {\n // The runtime has a stable identity but mutates in place: its options are\n // pushed in by an unconditional effect inside <RenderComponent />, so that\n // element must be re-created every commit for React to re-render it and\n // re-run the effect. React Compiler caches <RenderComponent /> on the\n // stable RenderComponent type, which silences the effect and stops option\n // changes (e.g. unstable_enableMessageQueue) from reaching the runtime.\n \"use no memo\";\n const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent });\n const RenderComponent = getRenderComponent(runtime);\n const inner = (\n <AuiProvider value={aui}>\n {RenderComponent && <RenderComponent />}\n {children}\n </AuiProvider>\n );\n if (!parent) return inner;\n return <AuiProvider value={parent}>{inner}</AuiProvider>;\n },\n);\n"],"mappings":";;;;;AAWA,MAAaU,sBAAsBC,YAA8B;CAC/D,OAAQA,QAA6CC,OACjDC;AACN;AAOA,MAAaG,wBAAwDhB,MAClE,EAAEW,SAASI,KAAKE,SAAS,MAAMC,eAAe;CAO7C;CACA,MAAMH,MAAMX,OAAO,EAAEe,SAASV,eAAeE,OAAO,EAAE,GAAG,EAAEM,OAAO,CAAC;CACnE,MAAMJ,kBAAkBH,mBAAmBC,OAAO;CAClD,MAAMS,QACJ,qBAAC,aAAD;EAAa,OAAOL;YAApB,CACGF,mBAAmB,oBAAC,iBAAD,CAAgB,CAAA,GACnCK,QACU;;CAEf,IAAI,CAACD,QAAQ,OAAOG;CACpB,OAAO,oBAAC,aAAD;EAAa,OAAOH;YAASG;CAAmB,CAAA;AACzD,CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AssistantProviderBase } from "./AssistantProvider.js";
|
|
2
2
|
import { memo } from "@assistant-ui/tap/react-shim";
|
|
3
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/react/AssistantRuntimeProvider.tsx
|
|
5
6
|
/**
|
|
@@ -24,12 +25,23 @@ import { jsx } from "react/jsx-runtime";
|
|
|
24
25
|
* }
|
|
25
26
|
* ```
|
|
26
27
|
*/
|
|
27
|
-
const AssistantRuntimeProvider = memo((
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const AssistantRuntimeProvider = memo((t0) => {
|
|
29
|
+
const $ = c(4);
|
|
30
|
+
const { runtime, aui, children } = t0;
|
|
31
|
+
const t1 = aui ?? null;
|
|
32
|
+
let t2;
|
|
33
|
+
if ($[0] !== children || $[1] !== runtime || $[2] !== t1) {
|
|
34
|
+
t2 = /* @__PURE__ */ jsx(AssistantProviderBase, {
|
|
35
|
+
runtime,
|
|
36
|
+
aui: t1,
|
|
37
|
+
children
|
|
38
|
+
});
|
|
39
|
+
$[0] = children;
|
|
40
|
+
$[1] = runtime;
|
|
41
|
+
$[2] = t1;
|
|
42
|
+
$[3] = t2;
|
|
43
|
+
} else t2 = $[3];
|
|
44
|
+
return t2;
|
|
33
45
|
});
|
|
34
46
|
//#endregion
|
|
35
47
|
export { AssistantRuntimeProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantRuntimeProvider.js","names":[],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"sourcesContent":["import { type ReactNode, memo } from \"react\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport { AssistantProviderBase } from \"./AssistantProvider\";\n\n/**\n * Mounts an `AssistantRuntime` into the React tree.\n *\n * Accepts the runtime returned by a runtime hook (e.g. `useLocalRuntime`,\n * `useExternalStoreRuntime`, `useAssistantTransportRuntime`). Internally\n * installs an {@link AuiProvider}, so descendants can use `useAui`,\n * `useAuiState`, `useAuiEvent`, and the primitives without any\n * additional setup.\n *\n * @example\n * ```tsx\n * function App() {\n * const runtime = useLocalRuntime(MyModelAdapter);\n *\n * return (\n * <AssistantRuntimeProvider runtime={runtime}>\n * <Thread />\n * </AssistantRuntimeProvider>\n * );\n * }\n * ```\n */\nexport const AssistantRuntimeProvider = memo(\n ({\n runtime,\n aui,\n children,\n }: {\n /**\n * The assistant runtime to expose to descendants. Build one with\n * `useLocalRuntime`, `useExternalStoreRuntime`, or\n * `useAssistantTransportRuntime`.\n */\n runtime: AssistantRuntime;\n /**\n * Optional parent `AssistantClient` whose scopes are inherited by the\n * client created for this runtime. Use this when nesting an\n * `AssistantRuntimeProvider` inside another assistant context.\n * @defaultValue null\n */\n aui?: AssistantClient | null;\n children: ReactNode;\n }) => {\n return (\n <AssistantProviderBase runtime={runtime} aui={aui ?? null}>\n {children}\n </AssistantProviderBase>\n );\n },\n);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AssistantRuntimeProvider.js","names":["ReactNode","memo","AssistantClient","AssistantRuntime","AssistantProviderBase","AssistantRuntimeProvider","t0","$","_c","runtime","aui","children","t1","t2"],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"sourcesContent":["import { type ReactNode, memo } from \"react\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport { AssistantProviderBase } from \"./AssistantProvider\";\n\n/**\n * Mounts an `AssistantRuntime` into the React tree.\n *\n * Accepts the runtime returned by a runtime hook (e.g. `useLocalRuntime`,\n * `useExternalStoreRuntime`, `useAssistantTransportRuntime`). Internally\n * installs an {@link AuiProvider}, so descendants can use `useAui`,\n * `useAuiState`, `useAuiEvent`, and the primitives without any\n * additional setup.\n *\n * @example\n * ```tsx\n * function App() {\n * const runtime = useLocalRuntime(MyModelAdapter);\n *\n * return (\n * <AssistantRuntimeProvider runtime={runtime}>\n * <Thread />\n * </AssistantRuntimeProvider>\n * );\n * }\n * ```\n */\nexport const AssistantRuntimeProvider = memo(\n ({\n runtime,\n aui,\n children,\n }: {\n /**\n * The assistant runtime to expose to descendants. Build one with\n * `useLocalRuntime`, `useExternalStoreRuntime`, or\n * `useAssistantTransportRuntime`.\n */\n runtime: AssistantRuntime;\n /**\n * Optional parent `AssistantClient` whose scopes are inherited by the\n * client created for this runtime. Use this when nesting an\n * `AssistantRuntimeProvider` inside another assistant context.\n * @defaultValue null\n */\n aui?: AssistantClient | null;\n children: ReactNode;\n }) => {\n return (\n <AssistantProviderBase runtime={runtime} aui={aui ?? null}>\n {children}\n </AssistantProviderBase>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAaK,2BAA2BJ,MACtCK,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,SAAAC,KAAAC,aAAAL;CAqBiD,MAAAM,KAAAF,OAAA;CAAW,IAAAG;CAAA,IAAAN,EAAA,OAAAI,YAAAJ,EAAA,OAAAE,WAAAF,EAAA,OAAAK,IAAA;EAAzDC,KAAA,oBAAC,uBAAD;GAAgCJ;GAAc,KAAAG;GAC3CD;EADmB,CAAA;EAEEJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAFxBM;AAEwB,CAG9B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
|
|
2
2
|
//#region src/react/RuntimeAdapter.d.ts
|
|
3
|
-
declare const RuntimeAdapter:
|
|
3
|
+
declare const RuntimeAdapter: import("@assistant-ui/tap").Resource<import("@assistant-ui/store").ClientOutput<"threads">, [runtime: AssistantRuntime]>;
|
|
4
4
|
//#endregion
|
|
5
5
|
export { RuntimeAdapter };
|
|
6
6
|
//# sourceMappingURL=RuntimeAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;cA+Ba,cAAA,8BAAc,QAAA,+BAAA,YAAA,cAAA,OAAA,EAAA,gBAAA"}
|
|
@@ -1,13 +1,42 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ThreadListClient } from "../store/runtime-clients/thread-list-runtime-client.js";
|
|
2
|
+
import { baseRuntimeAdapterTransformScopes } from "../store/clients/runtime-adapter.js";
|
|
2
3
|
import { DataRenderers } from "./client/DataRenderers.js";
|
|
3
4
|
import { Tools } from "./client/Tools.js";
|
|
4
|
-
import {
|
|
5
|
+
import { useEffect } from "@assistant-ui/tap/react-shim";
|
|
6
|
+
import { attachTransformScopes, useAssistantClientRef } from "@assistant-ui/store";
|
|
7
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
8
|
import { resource, useResource } from "@assistant-ui/tap";
|
|
6
9
|
//#region src/react/RuntimeAdapter.ts
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const useRuntimeAdapter = (runtime) => {
|
|
11
|
+
const $ = c(6);
|
|
12
|
+
const clientRef = useAssistantClientRef();
|
|
13
|
+
let t0;
|
|
14
|
+
let t1;
|
|
15
|
+
if ($[0] !== clientRef || $[1] !== runtime) {
|
|
16
|
+
t0 = () => runtime.registerModelContextProvider(clientRef.current.modelContext());
|
|
17
|
+
t1 = [runtime, clientRef];
|
|
18
|
+
$[0] = clientRef;
|
|
19
|
+
$[1] = runtime;
|
|
20
|
+
$[2] = t0;
|
|
21
|
+
$[3] = t1;
|
|
22
|
+
} else {
|
|
23
|
+
t0 = $[2];
|
|
24
|
+
t1 = $[3];
|
|
25
|
+
}
|
|
26
|
+
useEffect(t0, t1);
|
|
27
|
+
let t2;
|
|
28
|
+
if ($[4] !== runtime) {
|
|
29
|
+
t2 = ThreadListClient({
|
|
30
|
+
runtime: runtime.threads,
|
|
31
|
+
__internal_assistantRuntime: runtime
|
|
32
|
+
});
|
|
33
|
+
$[4] = runtime;
|
|
34
|
+
$[5] = t2;
|
|
35
|
+
} else t2 = $[5];
|
|
36
|
+
return useResource(t2);
|
|
37
|
+
};
|
|
38
|
+
const RuntimeAdapter = resource(useRuntimeAdapter);
|
|
39
|
+
attachTransformScopes(useRuntimeAdapter, (scopes, parent) => {
|
|
11
40
|
baseRuntimeAdapterTransformScopes(scopes, parent);
|
|
12
41
|
if (!scopes.tools && parent.tools.source === null) scopes.tools = Tools({});
|
|
13
42
|
if (!scopes.dataRenderers && parent.dataRenderers.source === null) scopes.dataRenderers = DataRenderers();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeAdapter.js","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"sourcesContent":["import { useResource, resource } from \"@assistant-ui/tap\";\nimport type { AssistantRuntime } from \"..\";\nimport {\n
|
|
1
|
+
{"version":3,"file":"RuntimeAdapter.js","names":["useEffect","useResource","resource","AssistantRuntime","baseRuntimeAdapterTransformScopes","ThreadListClient","attachTransformScopes","useAssistantClientRef","DataRenderers","Tools","useRuntimeAdapter","runtime","$","_c","clientRef","t0","t1","registerModelContextProvider","current","modelContext","t2","threads","__internal_assistantRuntime","RuntimeAdapter","scopes","parent","tools","source","dataRenderers"],"sources":["../../src/react/RuntimeAdapter.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useResource, resource } from \"@assistant-ui/tap\";\nimport type { AssistantRuntime } from \"..\";\nimport {\n baseRuntimeAdapterTransformScopes,\n ThreadListClient,\n} from \"../store/internal\";\nimport {\n attachTransformScopes,\n useAssistantClientRef,\n} from \"@assistant-ui/store\";\nimport { DataRenderers } from \"./client/DataRenderers\";\nimport { Tools } from \"./client/Tools\";\n\nconst useRuntimeAdapter = (runtime: AssistantRuntime) => {\n const clientRef = useAssistantClientRef();\n\n useEffect(() => {\n return runtime.registerModelContextProvider(\n clientRef.current!.modelContext(),\n );\n }, [runtime, clientRef]);\n\n return useResource(\n ThreadListClient({\n runtime: runtime.threads,\n __internal_assistantRuntime: runtime,\n }),\n );\n};\n\nexport const RuntimeAdapter = resource(useRuntimeAdapter);\n\nattachTransformScopes(useRuntimeAdapter, (scopes, parent) => {\n baseRuntimeAdapterTransformScopes(scopes, parent);\n\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n});\n"],"mappings":";;;;;;;;;AAcA,MAAMU,qBAAoBC,YAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CACxB,MAAAC,YAAkBP,sBAAsB;CAAE,IAAAQ;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAE,aAAAF,EAAA,OAAAD,SAAA;EAEhCI,WACDJ,QAAOM,6BACZH,UAASI,QAAQC,aAAe,CAClC;EACCH,KAAA,CAACL,SAASG,SAAS;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAD;EAAAC,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAJvBZ,UAAUe,IAIPC,EAAoB;CAAC,IAAAI;CAAA,IAAAR,EAAA,OAAAD,SAAA;EAGtBS,KAAAf,iBAAiB;GAAAM,SACNA,QAAOU;GAAQC,6BACKX;EAC/B,CAAC;EAACC,EAAA,KAAAD;EAAAC,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAJGX,YACLmB,EAIF;AAAC;AAGH,MAAaG,iBAAiBrB,SAASQ,iBAAiB;AAExDJ,sBAAsBI,oBAAoBc,QAAQC,WAAW;CAC3DrB,kCAAkCoB,QAAQC,MAAM;CAEhD,IAAI,CAACD,OAAOE,SAASD,OAAOC,MAAMC,WAAW,MAC3CH,OAAOE,QAAQjB,MAAM,CAAC,CAAC;CAGzB,IAAI,CAACe,OAAOI,iBAAiBH,OAAOG,cAAcD,WAAW,MAC3DH,OAAOI,gBAAgBpB,cAAc;AAEzC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RuntimeAdapterProvider } from "../runtimes/RuntimeAdapterProvider.js";
|
|
2
2
|
import { createAssistantStream } from "assistant-stream";
|
|
3
|
-
import { useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
3
|
import { useAui } from "@assistant-ui/store";
|
|
4
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/react/adapters/LocalStorageThreadListAdapter.tsx
|
|
7
7
|
var AsyncStorageHistoryAdapter = class {
|
|
@@ -36,13 +36,35 @@ var AsyncStorageHistoryAdapter = class {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
const createHistoryProvider = (storage, prefix) => {
|
|
39
|
-
const Provider = (
|
|
39
|
+
const Provider = (t0) => {
|
|
40
|
+
const $ = c(7);
|
|
41
|
+
const { children } = t0;
|
|
40
42
|
const aui = useAui();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
let t1;
|
|
44
|
+
if ($[0] !== aui) {
|
|
45
|
+
t1 = new AsyncStorageHistoryAdapter(storage, aui, prefix);
|
|
46
|
+
$[0] = aui;
|
|
47
|
+
$[1] = t1;
|
|
48
|
+
} else t1 = $[1];
|
|
49
|
+
const history = t1;
|
|
50
|
+
let t2;
|
|
51
|
+
if ($[2] !== history) {
|
|
52
|
+
t2 = { history };
|
|
53
|
+
$[2] = history;
|
|
54
|
+
$[3] = t2;
|
|
55
|
+
} else t2 = $[3];
|
|
56
|
+
const adapters = t2;
|
|
57
|
+
let t3;
|
|
58
|
+
if ($[4] !== adapters || $[5] !== children) {
|
|
59
|
+
t3 = /* @__PURE__ */ jsx(RuntimeAdapterProvider, {
|
|
60
|
+
adapters,
|
|
61
|
+
children
|
|
62
|
+
});
|
|
63
|
+
$[4] = adapters;
|
|
64
|
+
$[5] = children;
|
|
65
|
+
$[6] = t3;
|
|
66
|
+
} else t3 = $[6];
|
|
67
|
+
return t3;
|
|
46
68
|
};
|
|
47
69
|
return Provider;
|
|
48
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalStorageThreadListAdapter.js","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"sourcesContent":["import { type AssistantStream, createAssistantStream } from \"assistant-stream\";\nimport { type FC, type PropsWithChildren, useMemo } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n ThreadHistoryAdapter,\n ThreadMessage,\n} from \"../../index\";\nimport type {\n ExportedMessageRepository,\n ExportedMessageRepositoryItem,\n} from \"../../internal\";\nimport { RuntimeAdapterProvider } 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\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\nclass AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {\n constructor(\n private storage: AsyncStorageLike,\n private aui: ReturnType<typeof useAui>,\n private prefix: string,\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 if (!raw) return { messages: [] };\n return JSON.parse(raw) as ExportedMessageRepository;\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 const raw = await this.storage.getItem(key);\n const repo: ExportedMessageRepository = raw\n ? (JSON.parse(raw) as ExportedMessageRepository)\n : { messages: [] };\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\nconst createHistoryProvider = (\n storage: AsyncStorageLike,\n prefix: string,\n): FC<PropsWithChildren> => {\n const Provider: FC<PropsWithChildren> = ({ children }) => {\n const aui = useAui();\n const history = useMemo(\n () => new AsyncStorageHistoryAdapter(storage, aui, prefix),\n [aui],\n );\n const adapters = useMemo(() => ({ history }), [history]);\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\n const loadThreadMetadata = async (): Promise<StoredThreadMetadata[]> => {\n const raw = await storage.getItem(threadsKey);\n return raw ? (JSON.parse(raw) as StoredThreadMetadata[]) : [];\n };\n\n const saveThreadMetadata = async (\n threads: StoredThreadMetadata[],\n ): Promise<void> => {\n await storage.setItem(threadsKey, JSON.stringify(threads));\n };\n\n const adapter: RemoteThreadListAdapter = {\n unstable_Provider: createHistoryProvider(storage, prefix),\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 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 async rename(remoteId: string, newTitle: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.title = newTitle;\n await saveThreadMetadata(threads);\n }\n },\n\n async updateCustom(\n remoteId: string,\n custom: Record<string, unknown> | undefined,\n ): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.custom = custom;\n await saveThreadMetadata(threads);\n }\n },\n\n async archive(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.status = \"archived\";\n await saveThreadMetadata(threads);\n }\n },\n\n async unarchive(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.status = \"regular\";\n await saveThreadMetadata(threads);\n }\n },\n\n async delete(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const filtered = threads.filter((t) => t.remoteId !== remoteId);\n await saveThreadMetadata(filtered);\n await storage.removeItem(messagesKey(remoteId));\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) throw new Error(\"Thread not found\");\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 const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.title = title;\n await saveThreadMetadata(threads);\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","useMemo","useAui","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","ThreadHistoryAdapter","ThreadMessage","ExportedMessageRepository","ExportedMessageRepositoryItem","RuntimeAdapterProvider","TitleGenerationAdapter","AsyncStorageLike","getItem","key","Promise","setItem","value","removeItem","LocalStorageAdapterOptions","storage","prefix","titleGenerator","StoredThreadMetadata","remoteId","externalId","status","title","custom","Record","AsyncStorageHistoryAdapter","constructor","aui","ReturnType","_messagesKey","load","threadListItem","getState","messages","raw","JSON","parse","append","item","initialize","repo","idx","findIndex","m","message","id","push","headId","stringify","createHistoryProvider","Provider","t0","$","_c","children","t1","history","t2","adapters","t3","createLocalStorageAdapter","options","threadsKey","messagesKey","threadId","loadThreadMetadata","saveThreadMetadata","threads","adapter","unstable_Provider","list","map","t","some","unshift","undefined","rename","newTitle","thread","find","updateCustom","archive","unarchive","delete","filtered","filter","fetch","Error","generateTitle","controller","appendText"],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"sourcesContent":["import { type AssistantStream, createAssistantStream } from \"assistant-stream\";\nimport { type FC, type PropsWithChildren, useMemo } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n ThreadHistoryAdapter,\n ThreadMessage,\n} from \"../../index\";\nimport type {\n ExportedMessageRepository,\n ExportedMessageRepositoryItem,\n} from \"../../internal\";\nimport { RuntimeAdapterProvider } 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\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\nclass AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {\n constructor(\n private storage: AsyncStorageLike,\n private aui: ReturnType<typeof useAui>,\n private prefix: string,\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 if (!raw) return { messages: [] };\n return JSON.parse(raw) as ExportedMessageRepository;\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 const raw = await this.storage.getItem(key);\n const repo: ExportedMessageRepository = raw\n ? (JSON.parse(raw) as ExportedMessageRepository)\n : { messages: [] };\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\nconst createHistoryProvider = (\n storage: AsyncStorageLike,\n prefix: string,\n): FC<PropsWithChildren> => {\n const Provider: FC<PropsWithChildren> = ({ children }) => {\n const aui = useAui();\n const history = useMemo(\n () => new AsyncStorageHistoryAdapter(storage, aui, prefix),\n [aui],\n );\n const adapters = useMemo(() => ({ history }), [history]);\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\n const loadThreadMetadata = async (): Promise<StoredThreadMetadata[]> => {\n const raw = await storage.getItem(threadsKey);\n return raw ? (JSON.parse(raw) as StoredThreadMetadata[]) : [];\n };\n\n const saveThreadMetadata = async (\n threads: StoredThreadMetadata[],\n ): Promise<void> => {\n await storage.setItem(threadsKey, JSON.stringify(threads));\n };\n\n const adapter: RemoteThreadListAdapter = {\n unstable_Provider: createHistoryProvider(storage, prefix),\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 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 async rename(remoteId: string, newTitle: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.title = newTitle;\n await saveThreadMetadata(threads);\n }\n },\n\n async updateCustom(\n remoteId: string,\n custom: Record<string, unknown> | undefined,\n ): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.custom = custom;\n await saveThreadMetadata(threads);\n }\n },\n\n async archive(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.status = \"archived\";\n await saveThreadMetadata(threads);\n }\n },\n\n async unarchive(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.status = \"regular\";\n await saveThreadMetadata(threads);\n }\n },\n\n async delete(remoteId: string): Promise<void> {\n const threads = await loadThreadMetadata();\n const filtered = threads.filter((t) => t.remoteId !== remoteId);\n await saveThreadMetadata(filtered);\n await storage.removeItem(messagesKey(remoteId));\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) throw new Error(\"Thread not found\");\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 const threads = await loadThreadMetadata();\n const thread = threads.find((t) => t.remoteId === remoteId);\n if (thread) {\n thread.title = title;\n await saveThreadMetadata(threads);\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleGenerationAdapter.js","names":[],"sources":["../../../src/react/adapters/TitleGenerationAdapter.ts"],"sourcesContent":["import type { ThreadMessage } from \"../../types/message\";\n\nexport type TitleGenerationAdapter = {\n generateTitle(messages: readonly ThreadMessage[]): Promise<string>;\n};\n\nexport const createSimpleTitleAdapter = (): TitleGenerationAdapter => {\n return {\n async generateTitle(messages) {\n const firstUserMessage = messages.find((m) => m.role === \"user\");\n if (!firstUserMessage) return \"New Thread\";\n\n const textPart = firstUserMessage.content.find((p) => p.type === \"text\");\n if (!textPart || textPart.type !== \"text\") return \"New Thread\";\n\n const text = textPart.text.trim();\n return text.length > 50 ? `${text.slice(0, 47)}...` : text;\n },\n };\n};\n"],"mappings":";AAMA,
|
|
1
|
+
{"version":3,"file":"TitleGenerationAdapter.js","names":["ThreadMessage","TitleGenerationAdapter","generateTitle","messages","Promise","createSimpleTitleAdapter","firstUserMessage","find","m","role","textPart","content","p","type","text","trim","length","slice"],"sources":["../../../src/react/adapters/TitleGenerationAdapter.ts"],"sourcesContent":["import type { ThreadMessage } from \"../../types/message\";\n\nexport type TitleGenerationAdapter = {\n generateTitle(messages: readonly ThreadMessage[]): Promise<string>;\n};\n\nexport const createSimpleTitleAdapter = (): TitleGenerationAdapter => {\n return {\n async generateTitle(messages) {\n const firstUserMessage = messages.find((m) => m.role === \"user\");\n if (!firstUserMessage) return \"New Thread\";\n\n const textPart = firstUserMessage.content.find((p) => p.type === \"text\");\n if (!textPart || textPart.type !== \"text\") return \"New Thread\";\n\n const text = textPart.text.trim();\n return text.length > 50 ? `${text.slice(0, 47)}...` : text;\n },\n };\n};\n"],"mappings":";AAMA,MAAaK,iCAAyD;CACpE,OAAO,EACL,MAAMH,cAAcC,UAAU;EAC5B,MAAMG,mBAAmBH,SAASI,MAAMC,MAAMA,EAAEC,SAAS,MAAM;EAC/D,IAAI,CAACH,kBAAkB,OAAO;EAE9B,MAAMI,WAAWJ,iBAAiBK,QAAQJ,MAAMK,MAAMA,EAAEC,SAAS,MAAM;EACvE,IAAI,CAACH,YAAYA,SAASG,SAAS,QAAQ,OAAO;EAElD,MAAMC,OAAOJ,SAASI,KAAKC,KAAK;EAChC,OAAOD,KAAKE,SAAS,KAAK,GAAGF,KAAKG,MAAM,GAAG,EAAE,EAAC,OAAQH;CACxD,EACF;AACF"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import { ClientOutput } from "@assistant-ui/store";
|
|
2
2
|
|
|
3
3
|
//#region src/react/client/DataRenderers.d.ts
|
|
4
|
-
|
|
5
|
-
* Registers renderers for `data` message parts.
|
|
6
|
-
*
|
|
7
|
-
* Data renderers are looked up by the part's `name` field. Use this resource
|
|
8
|
-
* directly for a renderer scope, or prefer {@link useAssistantDataUI} /
|
|
9
|
-
* {@link makeAssistantDataUI} when registering from React components.
|
|
10
|
-
*/
|
|
11
|
-
declare const DataRenderers: () => import("@assistant-ui/tap").ResourceElement<ClientOutput<"dataRenderers">, undefined>;
|
|
4
|
+
declare const DataRenderers: import("@assistant-ui/tap").Resource<ClientOutput<"dataRenderers">, []>;
|
|
12
5
|
//#endregion
|
|
13
6
|
export { DataRenderers };
|
|
14
7
|
//# sourceMappingURL=DataRenderers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRenderers.d.ts","names":[],"sources":["../../../src/react/client/DataRenderers.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataRenderers.d.ts","names":[],"sources":["../../../src/react/client/DataRenderers.ts"],"mappings":";;;cAmEa,aAAA,8BAAa,QAAA,CAAA,YAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useState } from "@assistant-ui/tap/react-shim";
|
|
2
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
2
3
|
import { resource } from "@assistant-ui/tap";
|
|
3
4
|
//#region src/react/client/DataRenderers.ts
|
|
4
5
|
/**
|
|
@@ -8,49 +9,68 @@ import { resource } from "@assistant-ui/tap";
|
|
|
8
9
|
* directly for a renderer scope, or prefer {@link useAssistantDataUI} /
|
|
9
10
|
* {@link makeAssistantDataUI} when registering from React components.
|
|
10
11
|
*/
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
...prev,
|
|
12
|
+
const useDataRenderers = () => {
|
|
13
|
+
const $ = c(4);
|
|
14
|
+
const [state, setState] = useState(_temp);
|
|
15
|
+
let t0;
|
|
16
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
17
|
+
t0 = (name, render) => {
|
|
18
|
+
setState((prev) => ({
|
|
19
|
+
...prev,
|
|
20
|
+
renderers: {
|
|
21
|
+
...prev.renderers,
|
|
22
|
+
[name]: [...prev.renderers[name] ?? [], render]
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
return () => {
|
|
26
|
+
setState((prev_0) => ({
|
|
27
|
+
...prev_0,
|
|
22
28
|
renderers: {
|
|
23
|
-
...
|
|
24
|
-
[name]:
|
|
29
|
+
...prev_0.renderers,
|
|
30
|
+
[name]: prev_0.renderers[name]?.filter((r) => r !== render) ?? []
|
|
25
31
|
}
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
return () => {
|
|
29
|
-
setState((prev) => {
|
|
30
|
-
return {
|
|
31
|
-
...prev,
|
|
32
|
-
renderers: {
|
|
33
|
-
...prev.renderers,
|
|
34
|
-
[name]: prev.renderers[name]?.filter((r) => r !== render) ?? []
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
});
|
|
32
|
+
}));
|
|
38
33
|
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
};
|
|
35
|
+
$[0] = t0;
|
|
36
|
+
} else t0 = $[0];
|
|
37
|
+
const setDataUI = t0;
|
|
38
|
+
let t1;
|
|
39
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
40
|
+
t1 = (render_0) => {
|
|
41
|
+
setState((prev_1) => ({
|
|
42
|
+
...prev_1,
|
|
43
|
+
fallbacks: [...prev_1.fallbacks, render_0]
|
|
44
44
|
}));
|
|
45
45
|
return () => {
|
|
46
|
-
setState((
|
|
47
|
-
...
|
|
48
|
-
fallbacks:
|
|
46
|
+
setState((prev_2) => ({
|
|
47
|
+
...prev_2,
|
|
48
|
+
fallbacks: prev_2.fallbacks.filter((r_0) => r_0 !== render_0)
|
|
49
49
|
}));
|
|
50
50
|
};
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
|
+
$[1] = t1;
|
|
53
|
+
} else t1 = $[1];
|
|
54
|
+
const setFallbackDataUI = t1;
|
|
55
|
+
let t2;
|
|
56
|
+
if ($[2] !== state) {
|
|
57
|
+
t2 = {
|
|
58
|
+
getState: () => state,
|
|
59
|
+
setDataUI,
|
|
60
|
+
setFallbackDataUI
|
|
61
|
+
};
|
|
62
|
+
$[2] = state;
|
|
63
|
+
$[3] = t2;
|
|
64
|
+
} else t2 = $[3];
|
|
65
|
+
return t2;
|
|
66
|
+
};
|
|
67
|
+
const DataRenderers = resource(useDataRenderers);
|
|
68
|
+
function _temp() {
|
|
69
|
+
return {
|
|
70
|
+
renderers: {},
|
|
71
|
+
fallbacks: []
|
|
52
72
|
};
|
|
53
|
-
}
|
|
73
|
+
}
|
|
54
74
|
//#endregion
|
|
55
75
|
export { DataRenderers };
|
|
56
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRenderers.js","names":[],"sources":["../../../src/react/client/DataRenderers.ts"],"sourcesContent":["import { useState, useCallback } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport type { DataRenderersState } from \"../types/scopes/dataRenderers\";\nimport type { DataMessagePartComponent } from \"../types/MessagePartComponentTypes\";\n\n/**\n * Registers renderers for `data` message parts.\n *\n * Data renderers are looked up by the part's `name` field. Use this resource\n * directly for a renderer scope, or prefer {@link useAssistantDataUI} /\n * {@link makeAssistantDataUI} when registering from React components.\n */\
|
|
1
|
+
{"version":3,"file":"DataRenderers.js","names":["useState","useCallback","resource","ClientOutput","DataRenderersState","DataMessagePartComponent","useDataRenderers","$","_c","state","setState","_temp","t0","Symbol","for","name","render","prev","renderers","prev_0","filter","r","setDataUI","t1","render_0","prev_1","fallbacks","prev_2","r_0","setFallbackDataUI","t2","getState","DataRenderers"],"sources":["../../../src/react/client/DataRenderers.ts"],"sourcesContent":["import { useState, useCallback } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport type { DataRenderersState } from \"../types/scopes/dataRenderers\";\nimport type { DataMessagePartComponent } from \"../types/MessagePartComponentTypes\";\n\n/**\n * Registers renderers for `data` message parts.\n *\n * Data renderers are looked up by the part's `name` field. Use this resource\n * directly for a renderer scope, or prefer {@link useAssistantDataUI} /\n * {@link makeAssistantDataUI} when registering from React components.\n */\nconst useDataRenderers = (): ClientOutput<\"dataRenderers\"> => {\n const [state, setState] = useState<DataRenderersState>(() => ({\n renderers: {},\n fallbacks: [],\n }));\n\n const setDataUI = useCallback(\n (name: string, render: DataMessagePartComponent) => {\n setState((prev) => {\n return {\n ...prev,\n renderers: {\n ...prev.renderers,\n [name]: [...(prev.renderers[name] ?? []), render],\n },\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n renderers: {\n ...prev.renderers,\n [name]: prev.renderers[name]?.filter((r) => r !== render) ?? [],\n },\n };\n });\n };\n },\n [],\n );\n\n const setFallbackDataUI = useCallback((render: DataMessagePartComponent) => {\n setState((prev) => ({\n ...prev,\n fallbacks: [...prev.fallbacks, render],\n }));\n\n return () => {\n setState((prev) => ({\n ...prev,\n fallbacks: prev.fallbacks.filter((r) => r !== render),\n }));\n };\n }, []);\n\n return {\n getState: () => state,\n setDataUI,\n setFallbackDataUI,\n };\n};\n\nexport const DataRenderers = resource(useDataRenderers);\n"],"mappings":";;;;;;;;;;;AAaA,MAAMM,yBAAmB;CAAA,MAAAC,IAAAC,EAAA,CAAA;CACvB,MAAA,CAAAC,OAAAC,YAA0BV,SAA6BW,KAGrD;CAAE,IAAAC;CAAA,IAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,GAAA;EAGFF,MAAAG,MAAAC,WAAA;GACEN,UAASO,UACA;IAAA,GACFA;IAAIC,WACI;KAAA,GACND,KAAIC;MACNH,OAAO,CAAA,GAAKE,KAAIC,UAAWH,SAAf,CAAA,GAA6BC,MAAM;IAClD;GACF,EACD;GAAC,aAEK;IACLN,UAASS,YACA;KAAA,GACFF;KAAIC,WACI;MAAA,GACND,OAAIC;OACNH,OAAOE,OAAIC,UAAWH,KAAa,EAAAK,QAACC,MAAOA,MAAML,MAAY,KAAtD,CAAA;KACV;IACF,EACD;GAAC;EACH;EACFT,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAvBH,MAAAe,YAAkBV;CAyBhB,IAAAW;CAAA,IAAAhB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,GAAA;EAEoCS,MAAAC,aAAA;GACpCd,UAASe,YAAW;IAAA,GACfR;IAAIS,WACI,CAAA,GAAIT,OAAIS,WAAYV,QAAM;GACvC,EAAE;GAAC,aAEI;IACLN,UAASiB,YAAW;KAAA,GACfV;KAAIS,WACIT,OAAIS,UAAUN,QAAQQ,QAAOP,QAAML,QAAM;IACtD,EAAE;GAAC;EACJ;EACFT,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAZD,MAAAsB,oBAA0BN;CAYnB,IAAAO;CAAA,IAAAvB,EAAA,OAAAE,OAAA;EAEAqB,KAAA;GAAAC,gBACWtB;GAAKa;GAAAO;EAGvB;EAACtB,EAAA,KAAAE;EAAAF,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAJMuB;AAIN;AAGH,MAAaE,gBAAgB9B,SAASI,gBAAgB;AAtD7B,SAAAK,QAAA;CAAA,OACuC;EAAAO,WACjD,CAAC;EAACQ,WACF,CAAA;CACb;AAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ClientOutput } from "@assistant-ui/store";
|
|
2
2
|
|
|
3
3
|
//#region src/react/client/Interactables.d.ts
|
|
4
|
-
declare const Interactables:
|
|
4
|
+
declare const Interactables: import("@assistant-ui/tap").Resource<ClientOutput<"interactables">, []>;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { Interactables };
|
|
7
7
|
//# sourceMappingURL=Interactables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/client/Interactables.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/client/Interactables.ts"],"mappings":";;;cAgUa,aAAA,8BAAa,QAAA,CAAA,YAAA"}
|