@assistant-ui/core 0.3.13 → 0.3.14
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/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +9 -15
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/thread-history.d.ts +2 -0
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/adapters/voice.d.ts.map +1 -1
- package/dist/adapters/voice.js +27 -15
- package/dist/adapters/voice.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +6 -6
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +2 -1
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/registry.js +16 -4
- package/dist/model-context/registry.js.map +1 -1
- package/dist/react/RuntimeAdapter.d.ts +8 -1
- package/dist/react/RuntimeAdapter.d.ts.map +1 -1
- package/dist/react/RuntimeAdapter.js +23 -18
- package/dist/react/RuntimeAdapter.js.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +28 -12
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.d.ts +11 -0
- package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -0
- package/dist/react/client/AdaptedRemoteThread.js +27 -0
- package/dist/react/client/AdaptedRemoteThread.js.map +1 -0
- package/dist/react/client/InMemoryThreadList.d.ts +19 -0
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -0
- package/dist/react/client/InMemoryThreadList.js +418 -0
- package/dist/react/client/InMemoryThreadList.js.map +1 -0
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +159 -102
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +34 -0
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -0
- package/dist/react/client/RemoteThreadList.js +826 -0
- package/dist/react/client/RemoteThreadList.js.map +1 -0
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +38 -27
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/index.d.ts +7 -2
- package/dist/react/index.js +5 -2
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +145 -110
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +13 -18
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +2 -4
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +2 -4
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +2 -6
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +2 -6
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +2 -4
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +2 -4
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +6 -2
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.d.ts +13 -0
- package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +22 -10
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +109 -71
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +8 -2
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +40 -13
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +30 -0
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -0
- package/dist/react/runtimes/RemoteThreadResource.js +134 -0
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -0
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +3 -10
- package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/react/runtimes/RuntimeAdapterProvider.js +3 -6
- package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +17 -0
- package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/commandQueue.js +55 -0
- package/dist/react/runtimes/assistant-transport/commandQueue.js.map +1 -0
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +11 -0
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +165 -0
- package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -0
- package/dist/react/runtimes/assistant-transport/runManager.d.ts +15 -0
- package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/runManager.js +86 -0
- package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -0
- package/dist/react/runtimes/assistant-transport/types.d.ts +130 -0
- package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/types.js +0 -0
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +14 -0
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +296 -0
- package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -0
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +7 -0
- package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/useConvertedState.js +25 -0
- package/dist/react/runtimes/assistant-transport/useConvertedState.js.map +1 -0
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +7 -0
- package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -0
- package/dist/react/runtimes/assistant-transport/useLatestRef.js +27 -0
- package/dist/react/runtimes/assistant-transport/useLatestRef.js.map +1 -0
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +39 -13
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +2 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +3 -3
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +4 -0
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +7 -0
- 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 +22 -12
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +16 -0
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -0
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.js +36 -0
- package/dist/react/runtimes/cloud/useCloudThreadListRuntime.js.map +1 -0
- package/dist/react/runtimes/external-message-converter.js +14 -14
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +44 -28
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreSharedOptions.js.map +1 -1
- package/dist/react/runtimes/useLocalRuntime.js +1 -1
- package/dist/react/runtimes/useRuntimeAdapters.d.ts +9 -0
- package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -0
- package/dist/react/runtimes/useRuntimeAdapters.js +20 -0
- package/dist/react/runtimes/useRuntimeAdapters.js.map +1 -0
- package/dist/runtime/api/composer-runtime.d.ts +5 -0
- package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
- package/dist/runtime/api/composer-runtime.js.map +1 -1
- package/dist/runtime/api/message-runtime.js +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +1 -0
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +4 -2
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +12 -2
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +8 -2
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +8 -7
- 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 +3 -3
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +0 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +10 -4
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +6 -0
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/internal.js +5 -5
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +2 -1
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +8 -0
- package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -0
- package/dist/runtime/utils/thread-runtime-lifecycle.js +11 -0
- package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -0
- package/dist/runtimes/external-store/external-store-shared-options.js.map +1 -1
- 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 +4 -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 +8 -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 +35 -13
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/internal.d.ts +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +3 -0
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +53 -13
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +3 -0
- package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/empty-thread-core.js +3 -0
- package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +29 -1
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +1 -12
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +67 -38
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/suggestions.js +2 -2
- package/dist/store/clients/suggestions.js.map +1 -1
- package/dist/store/clients/thread-selection-events.d.ts +10 -0
- package/dist/store/clients/thread-selection-events.d.ts.map +1 -0
- package/dist/store/clients/thread-selection-events.js +40 -0
- package/dist/store/clients/thread-selection-events.js.map +1 -0
- package/dist/store/env.d.ts +5 -0
- package/dist/store/env.d.ts.map +1 -0
- package/dist/store/env.js +12 -0
- package/dist/store/env.js.map +1 -0
- package/dist/store/index.d.ts +5 -3
- package/dist/store/index.js +4 -2
- package/dist/store/internal.d.ts +4 -1
- package/dist/store/internal.js +4 -1
- package/dist/store/primitive-predicates.d.ts +19 -0
- package/dist/store/primitive-predicates.d.ts.map +1 -0
- package/dist/store/primitive-predicates.js +19 -0
- package/dist/store/primitive-predicates.js.map +1 -0
- package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/attachment-runtime-client.js +18 -11
- package/dist/store/runtime-clients/attachment-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/handle-runtime-action.d.ts +5 -0
- package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -0
- package/dist/store/runtime-clients/handle-runtime-action.js +12 -0
- package/dist/store/runtime-clients/handle-runtime-action.js.map +1 -0
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts +5 -0
- package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -0
- package/dist/store/runtime-clients/handle-thread-list-action.js +7 -0
- package/dist/store/runtime-clients/handle-thread-list-action.js.map +1 -0
- 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 +62 -29
- 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.map +1 -1
- package/dist/store/runtime-clients/thread-list-runtime-client.js +5 -6
- package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
- package/dist/store/scopes/composer.d.ts +9 -4
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +7 -6
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +8 -7
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +17 -1
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +2 -1
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +23 -18
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/utils/composite-context-provider.d.ts +1 -0
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.js +25 -9
- package/dist/utils/composite-context-provider.js.map +1 -1
- package/dist/utils/notify-event-listeners.d.ts +2 -2
- package/dist/utils/notify-event-listeners.d.ts.map +1 -1
- package/dist/utils/notify-event-listeners.js +2 -2
- package/dist/utils/notify-event-listeners.js.map +1 -1
- package/package.json +7 -7
- package/src/adapters/speech.test.ts +118 -1
- package/src/adapters/speech.ts +21 -22
- package/src/adapters/thread-history.ts +2 -0
- package/src/adapters/voice.test.ts +69 -0
- package/src/adapters/voice.ts +27 -27
- package/src/index.ts +1 -0
- package/src/model-context/frame/host.test.ts +23 -0
- package/src/model-context/frame/host.ts +2 -1
- package/src/model-context/registry.test.ts +131 -0
- package/src/model-context/registry.ts +16 -6
- package/src/react/RuntimeAdapter.test.ts +2 -0
- package/src/react/RuntimeAdapter.ts +20 -8
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +34 -17
- package/src/react/client/AdaptedRemoteThread.ts +41 -0
- package/src/react/client/InMemoryThreadList.test.tsx +148 -0
- package/src/react/client/InMemoryThreadList.ts +290 -0
- package/src/react/client/Interactables.test.ts +326 -2
- package/src/react/client/Interactables.ts +227 -110
- package/src/react/client/RemoteThreadList.test.ts +1026 -0
- package/src/react/client/RemoteThreadList.ts +1067 -0
- package/src/react/client/Tools.ts +36 -29
- package/src/react/index.ts +13 -0
- package/src/react/interactables-legacy/Interactables.test.ts +317 -0
- package/src/react/interactables-legacy/Interactables.ts +204 -128
- package/src/react/primitive-hooks/useActionBarCopy.ts +2 -7
- package/src/react/primitive-hooks/useActionBarEdit.ts +2 -1
- package/src/react/primitive-hooks/useActionBarReload.ts +2 -6
- package/src/react/primitive-hooks/useBranchPickerNext.ts +2 -7
- package/src/react/primitive-hooks/useBranchPickerPrevious.ts +2 -7
- package/src/react/primitive-hooks/useComposerCancel.ts +2 -1
- package/src/react/primitive-hooks/useComposerSend.ts +2 -5
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +11 -0
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +4 -5
- package/src/react/primitives/message/MessageParts.tsx +0 -1
- package/src/react/primitives/thread/ThreadMessages.tsx +2 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +116 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +1 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +57 -6
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +272 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +159 -124
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +59 -20
- package/src/react/runtimes/RemoteThreadResource.test.ts +141 -0
- package/src/react/runtimes/RemoteThreadResource.ts +231 -0
- package/src/react/runtimes/RuntimeAdapterProvider.tsx +8 -20
- package/src/react/runtimes/assistant-transport/commandQueue.ts +68 -0
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +455 -0
- package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +172 -0
- package/src/react/runtimes/assistant-transport/runManager.ts +124 -0
- package/src/react/runtimes/assistant-transport/transport-delivery.test.tsx +79 -0
- package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +97 -0
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +414 -0
- package/src/react/runtimes/assistant-transport/types.ts +170 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +141 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +625 -0
- package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +481 -0
- package/src/react/runtimes/assistant-transport/useConvertedState.ts +20 -0
- package/src/react/runtimes/assistant-transport/useLatestRef.ts +9 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +131 -6
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +61 -15
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +6 -4
- package/src/react/runtimes/cloud/auiV0.ts +17 -1
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +36 -21
- package/src/react/runtimes/cloud/useCloudThreadListRuntime.test.tsx +56 -0
- package/src/react/runtimes/cloud/useCloudThreadListRuntime.ts +31 -0
- package/src/react/runtimes/external-message-converter.test.ts +143 -0
- package/src/react/runtimes/external-message-converter.ts +41 -41
- package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +58 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +83 -0
- package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +13 -3
- package/src/react/runtimes/useExternalStoreRuntime.ts +7 -0
- package/src/react/runtimes/useExternalStoreSharedOptions.ts +3 -1
- package/src/react/runtimes/useLocalRuntime.test.tsx +130 -4
- package/src/react/runtimes/useRuntimeAdapters.test.tsx +62 -0
- package/src/react/runtimes/useRuntimeAdapters.ts +28 -0
- package/src/runtime/api/composer-runtime.ts +5 -0
- package/src/runtime/api/thread-list-runtime.ts +3 -1
- package/src/runtime/api/thread-runtime.ts +20 -2
- package/src/runtime/base/base-composer-runtime-core.ts +6 -5
- package/src/runtime/base/base-thread-runtime-core.test.ts +191 -0
- package/src/runtime/base/base-thread-runtime-core.ts +11 -2
- package/src/runtime/base/default-thread-composer-runtime-core.ts +12 -4
- package/src/runtime/interfaces/thread-runtime-core.ts +6 -0
- package/src/runtime/queue/message-queue.ts +2 -1
- package/src/runtime/utils/thread-runtime-lifecycle.ts +18 -0
- package/src/runtimes/external-store/external-store-shared-options.ts +3 -1
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +4 -1
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +99 -34
- package/src/runtimes/local/local-thread-runtime-core.test.ts +373 -4
- package/src/runtimes/local/local-thread-runtime-core.ts +79 -14
- package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +4 -0
- package/src/runtimes/remote-thread-list/empty-thread-core.ts +4 -0
- package/src/runtimes/remote-thread-list/types.ts +30 -0
- package/src/runtimes/tool-invocations/EDGE_CASES.md +17 -6
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +243 -0
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +127 -61
- package/src/store/clients/model-context-client.test.ts +16 -8
- package/src/store/clients/suggestions.ts +2 -2
- package/src/store/clients/thread-selection-events.ts +21 -0
- package/src/store/env.ts +11 -0
- package/src/store/index.ts +14 -1
- package/src/store/internal.ts +13 -0
- package/src/store/primitive-predicates.test.ts +184 -0
- package/src/store/primitive-predicates.ts +43 -0
- package/src/store/runtime-clients/attachment-runtime-client.test.ts +41 -0
- package/src/store/runtime-clients/attachment-runtime-client.ts +2 -1
- package/src/store/runtime-clients/handle-runtime-action.ts +11 -0
- package/src/store/runtime-clients/handle-thread-list-action.test.ts +69 -0
- package/src/store/runtime-clients/handle-thread-list-action.ts +6 -0
- package/src/store/runtime-clients/thread-list-item-runtime-client.ts +15 -7
- package/src/store/runtime-clients/thread-list-runtime-client.ts +9 -6
- package/src/store/scopes/composer.ts +9 -4
- package/src/store/scopes/thread-list-item.ts +7 -6
- package/src/store/scopes/thread.ts +8 -7
- package/src/store/scopes/threads.ts +14 -0
- package/src/subscribable/subscribable.test.ts +77 -1
- package/src/subscribable/subscribable.ts +38 -23
- package/src/tests/RemoteThreadListThreadListRuntimeCore-switchToThread-unarchive.test.ts +25 -0
- package/src/tests/auiV0Encode.test.ts +66 -0
- package/src/tests/base-composer-runtime-core-send.test.ts +30 -0
- package/src/tests/base-composer-runtime-core.test.ts +28 -0
- package/src/tests/composer-can-cancel.test.ts +101 -0
- package/src/tests/external-store-thread-list-runtime-core.test.ts +101 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +191 -1
- package/src/tests/external-store-thread-runtime-core.test.ts +124 -0
- package/src/tests/interactables-toolui-migration.test.tsx +66 -0
- package/src/tests/message-queue.test.ts +28 -0
- package/src/tests/session-reset-notification.test.ts +145 -0
- package/src/tests/thread-switch-events.test.tsx +99 -1
- package/src/tests/tools-scope-migration.test.tsx +58 -0
- package/src/utils/composite-context-provider.test.ts +139 -0
- package/src/utils/composite-context-provider.ts +26 -8
- package/src/utils/notify-event-listeners.ts +10 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteThreadList.js","names":["useCallback","useEffect","useMemo","useState","useSyncExternalStore","resource","withKey","ClientOutput","attachTransformScopes","useClientLookup","useClientResource","isDevelopment","useThreadSelectionEvents","generateId","OptimisticState","classifyThreads","createThreadMappingId","getThreadData","normalizeCursor","updateStatusReducer","RemoteThreadData","RemoteThreadState","RemoteThreadInitializeResponse","RemoteThreadListAdapter","ThreadMessage","AssistantMessageStream","handleThreadListAction","inMemoryThreadListTransformScopes","InMemoryThreadListProps","AdaptedRemoteThread","RESOLVED_PROMISE","Promise","resolve","EMPTY_LIST","isLoading","isLoadingMore","cursor","undefined","newThreadId","threadIds","archivedThreadIds","threadIdMap","threadData","RemoteThreadListProps","adapter","thread","threadId","onThreadIdChange","onSwitchToThread","onSwitchToNewThread","onDelete","threadNotFoundError","threadIdOrRemoteId","action","Error","threadStatusError","status","toInitializeResult","result","remoteId","externalId","applyTitleStream","stream","Parameters","fromAssistantStream","onTitle","title","messageStream","parts","filter","part","type","text","seedNewThread","state","id","mappingId","custom","useThreadListItemClient","props","$","_c","data","isRunning","onSwitchTo","onRename","onUpdateCustom","onArchive","onUnarchive","onGenerateTitle","onInitialize","onDetach","t0","lastMessageAt","t1","t2","t3","getState","switchTo","rename","updateCustom","archive","unarchive","delete","generateTitle","initialize","detach","ThreadListItemClient","collectItemOrder","listState","mainThreadId","ids","seenIds","Set","seenRemoteIds","items","has","add","push","itemMatchesId","item","isSameThread","left","right","useRemoteThreadListView","threadFactory","useAdapters","wrapped","key","mainThreadClient","itemOrder","t4","t5","options","messages","map","threadListItems","useRemoteThreadList","store","initialMainId","session","seeded","loadGeneration","switchGeneration","loadPromise","loadMorePromise","lastNotifiedRemoteId","lastControlledThreadId","switchTask","isFirstThreadIdEffect","onStoreChange","subscribe","value","setMainThreadId","assignMainThreadId","notifyRemoteId","emit","getLoadThreadsPromise","generation","optimisticUpdate","execute","list","loading","then","page","fresh","threads","nextCursor","catch","error","console","update","baseValue","reload","unstable_useAdapters","unstable_Provider","warn","loadMore","snapshot","currentAdapter","task","after","appended","startSwitch","run","settle","reject","switchToThread","emitThreadIdChange","remoteMetadata","fetch","wasInTarget","includes","threadIdsWithoutRemote","archivedThreadIdsWithoutRemote","initializeTask","current","optimistic","switchToNewThread","waitForUpdate","existing","existingId","ensureNotMain","lastAwaitedTask","startedFallback","newTitle","Record","deleteThread","mainRemoteId","Object","is","hasMore","threadItems","main","reloadMainThread","methods","unstable_refetchThread","selector","index","findIndex","get","archived","RemoteThreadList"],"sources":["../../../src/react/client/RemoteThreadList.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport {\n attachTransformScopes,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store/client\";\nimport { isDevelopment, useThreadSelectionEvents } from \"../../store/internal\";\nimport { generateId } from \"../../utils/id\";\nimport { OptimisticState } from \"../../runtimes/remote-thread-list/optimistic-state\";\nimport {\n classifyThreads,\n createThreadMappingId,\n getThreadData,\n normalizeCursor,\n updateStatusReducer,\n type RemoteThreadData,\n type RemoteThreadState,\n} from \"../../runtimes/remote-thread-list/remote-thread-state\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n} from \"../../runtimes/remote-thread-list/types\";\nimport type { ThreadMessage } from \"../../types/message\";\nimport { AssistantMessageStream } from \"assistant-stream\";\nimport { handleThreadListAction } from \"../../store/runtime-clients/handle-thread-list-action\";\nimport {\n inMemoryThreadListTransformScopes,\n type InMemoryThreadListProps,\n} from \"./InMemoryThreadList\";\nimport { AdaptedRemoteThread } from \"./AdaptedRemoteThread\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nconst EMPTY_LIST: RemoteThreadState = {\n isLoading: true,\n isLoadingMore: false,\n cursor: undefined,\n newThreadId: undefined,\n threadIds: [],\n archivedThreadIds: [],\n threadIdMap: {},\n threadData: {},\n};\n\nexport type RemoteThreadListProps = {\n /**\n * Swapping this to a different backing store does not reload the list. Call `reload()` after a genuine swap. A recreated object for the same store is a no-op.\n */\n adapter: RemoteThreadListAdapter;\n /**\n * Factory for the visible thread. Per-thread history reload requires a\n * resource keyed by thread id (`withKey(id, thread(...))`). An unkeyed\n * factory keeps one instance across switches, so a mount-once history\n * loader will not fetch the next thread.\n */\n thread: InMemoryThreadListProps[\"thread\"];\n threadId?: string | undefined;\n onThreadIdChange?: ((threadId: string | undefined) => void) | undefined;\n onSwitchToThread?: ((threadId: string) => void) | undefined;\n onSwitchToNewThread?: (() => void) | undefined;\n onDelete?: ((threadId: string) => void) | undefined;\n};\n\nconst threadNotFoundError = (threadIdOrRemoteId: string, action: string) =>\n new Error(`Thread \"${threadIdOrRemoteId}\" was not found while ${action}.`);\n\nconst threadStatusError = (\n threadIdOrRemoteId: string,\n status: RemoteThreadData[\"status\"],\n action: string,\n) =>\n new Error(\n `Thread \"${threadIdOrRemoteId}\" has status \"${status}\", so it cannot ${action}.`,\n );\n\nconst toInitializeResult = (\n result: RemoteThreadInitializeResponse,\n): { remoteId: string; externalId: string | undefined } => ({\n remoteId: result.remoteId,\n externalId: result.externalId,\n});\n\nconst applyTitleStream = async (\n stream: Parameters<typeof AssistantMessageStream.fromAssistantStream>[0],\n onTitle: (title: string | undefined) => void,\n) => {\n const messageStream = AssistantMessageStream.fromAssistantStream(stream);\n for await (const result of messageStream) {\n onTitle(result.parts.filter((part) => part.type === \"text\")[0]?.text);\n }\n};\n\nconst seedNewThread = (\n state: RemoteThreadState,\n): { id: string; state: RemoteThreadState } => {\n let id: string;\n do {\n id = `__LOCALID_${generateId()}`;\n } while (state.threadIdMap[id]);\n const mappingId = createThreadMappingId(id);\n return {\n id,\n state: {\n ...state,\n newThreadId: id,\n threadIdMap: {\n ...state.threadIdMap,\n [id]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [mappingId]: {\n status: \"new\",\n id,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n custom: undefined,\n },\n },\n },\n };\n};\n\nconst useThreadListItemClient = (props: {\n data: RemoteThreadData;\n isRunning: boolean;\n onSwitchTo: (options?: { unarchive?: boolean }) => void;\n onRename: (title: string) => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n onGenerateTitle: () => void;\n onInitialize: () => Promise<{\n remoteId: string;\n externalId: string | undefined;\n }>;\n onDetach: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const {\n data,\n isRunning,\n onSwitchTo,\n onRename,\n onUpdateCustom,\n onArchive,\n onUnarchive,\n onDelete,\n onGenerateTitle,\n onInitialize,\n onDetach,\n } = props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: data.remoteId,\n externalId: data.externalId,\n title: data.title,\n lastMessageAt: \"lastMessageAt\" in data ? data.lastMessageAt : undefined,\n status: data.status,\n custom: data.custom,\n isRunning,\n }),\n [data, isRunning],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: onRename,\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: onGenerateTitle,\n initialize: onInitialize,\n detach: onDetach,\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\nconst collectItemOrder = (\n listState: RemoteThreadState,\n mainThreadId: string,\n): RemoteThreadData[] => {\n const ids = [\n listState.newThreadId,\n ...listState.threadIds,\n ...listState.archivedThreadIds,\n mainThreadId,\n ].filter((id): id is string => id !== undefined);\n const seenIds = new Set<string>();\n const seenRemoteIds = new Set<string>();\n const items: RemoteThreadData[] = [];\n for (const id of ids) {\n const data = getThreadData(listState, id);\n if (!data || seenIds.has(data.id)) continue;\n if (data.remoteId !== undefined && seenRemoteIds.has(data.remoteId)) {\n continue;\n }\n seenIds.add(data.id);\n if (data.remoteId !== undefined) seenRemoteIds.add(data.remoteId);\n items.push(data);\n }\n return items;\n};\n\nconst itemMatchesId = (\n item: RemoteThreadData,\n listState: RemoteThreadState,\n id: string,\n) => {\n const data = getThreadData(listState, id);\n return (\n item.id === id ||\n item.id === data?.id ||\n (data?.remoteId !== undefined &&\n (item.id === data.remoteId || item.remoteId === data.remoteId))\n );\n};\n\nconst isSameThread = (\n listState: RemoteThreadState,\n left: string,\n right: string,\n) => {\n if (left === right) return true;\n const data = getThreadData(listState, left);\n return data !== undefined && itemMatchesId(data, listState, right);\n};\n\nconst useRemoteThreadListView = ({\n listState,\n mainThreadId,\n threadFactory,\n useAdapters,\n onSwitchTo,\n onRename,\n onUpdateCustom,\n onArchive,\n onUnarchive,\n onDelete,\n onGenerateTitle,\n onInitialize,\n onDetach,\n}: {\n listState: RemoteThreadState;\n mainThreadId: string;\n threadFactory: RemoteThreadListProps[\"thread\"];\n useAdapters: RemoteThreadListAdapter[\"unstable_useAdapters\"];\n onSwitchTo: (\n threadId: string,\n options?: { unarchive?: boolean },\n ) => Promise<void>;\n onRename: (threadId: string, title: string) => Promise<void>;\n onUpdateCustom: (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => Promise<void>;\n onArchive: (threadId: string) => Promise<void>;\n onUnarchive: (threadId: string) => Promise<void>;\n onDelete: (threadId: string) => Promise<void>;\n onGenerateTitle: (\n threadId: string,\n messages: readonly ThreadMessage[] | undefined,\n ) => Promise<void>;\n onInitialize: (threadId: string) => Promise<{\n remoteId: string;\n externalId: string | undefined;\n }>;\n onDetach: (threadId: string) => Promise<void>;\n}) => {\n const thread = threadFactory(mainThreadId);\n const wrapped =\n useAdapters === undefined\n ? thread\n : AdaptedRemoteThread({\n useAdapters,\n thread,\n });\n const mainThreadClient = useClientResource(\n thread.key === undefined ? wrapped : withKey(thread.key, wrapped),\n );\n const itemOrder = useMemo(\n () => collectItemOrder(listState, mainThreadId),\n [listState, mainThreadId],\n );\n const threadListItems = useClientLookup(\n itemOrder.map((data) =>\n withKey(\n data.id,\n ThreadListItemClient({\n data,\n isRunning:\n itemMatchesId(data, listState, mainThreadId) &&\n mainThreadClient.state.isRunning,\n onSwitchTo: (options) =>\n handleThreadListAction(\"switch\", () =>\n onSwitchTo(data.id, options),\n ),\n onRename: (title) =>\n handleThreadListAction(\"rename\", () => onRename(data.id, title)),\n onUpdateCustom: (custom) =>\n handleThreadListAction(\"update custom metadata\", () =>\n onUpdateCustom(data.id, custom),\n ),\n onArchive: () =>\n handleThreadListAction(\"archive\", () => onArchive(data.id)),\n onUnarchive: () =>\n handleThreadListAction(\"unarchive\", () => onUnarchive(data.id)),\n onDelete: () =>\n handleThreadListAction(\"delete\", () => onDelete(data.id)),\n onGenerateTitle: () =>\n handleThreadListAction(\"generate title\", () =>\n onGenerateTitle(\n data.id,\n mainThreadClient.state.messages as\n | readonly ThreadMessage[]\n | undefined,\n ),\n ),\n onInitialize: () => onInitialize(data.id),\n onDetach: () =>\n handleThreadListAction(\"detach\", () => onDetach(data.id)),\n }),\n ),\n ),\n );\n return { mainThreadClient, itemOrder, threadListItems };\n};\n\nconst useRemoteThreadList = (\n props: RemoteThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n adapter,\n thread: threadFactory,\n threadId,\n onThreadIdChange,\n onSwitchToThread,\n onSwitchToNewThread,\n onDelete,\n } = props;\n\n const [{ store, initialMainId, session }] = useState(() => {\n const seeded = seedNewThread(EMPTY_LIST);\n return {\n store: new OptimisticState(seeded.state),\n initialMainId: seeded.id,\n session: {\n adapter,\n loadGeneration: 0,\n switchGeneration: 0,\n loadPromise: undefined as Promise<void> | undefined,\n loadMorePromise: undefined as Promise<void> | undefined,\n lastNotifiedRemoteId: undefined as string | undefined,\n lastControlledThreadId: undefined as string | undefined,\n switchTask: undefined as Promise<void> | undefined,\n mainThreadId: seeded.id,\n isFirstThreadIdEffect: true,\n onThreadIdChange,\n onSwitchToThread,\n onSwitchToNewThread,\n },\n };\n });\n\n const listState = useSyncExternalStore(\n (onStoreChange) => store.subscribe(onStoreChange),\n () => store.value,\n () => store.value,\n );\n\n const [mainThreadId, setMainThreadId] = useState(initialMainId);\n const assignMainThreadId = useCallback(\n (id: string) => {\n session.mainThreadId = id;\n setMainThreadId(id);\n },\n [session],\n );\n useThreadSelectionEvents(mainThreadId);\n useEffect(() => {\n session.adapter = adapter;\n session.mainThreadId = mainThreadId;\n session.onThreadIdChange = onThreadIdChange;\n session.onSwitchToThread = onSwitchToThread;\n session.onSwitchToNewThread = onSwitchToNewThread;\n }, [\n adapter,\n mainThreadId,\n onSwitchToNewThread,\n onSwitchToThread,\n onThreadIdChange,\n session,\n ]);\n\n const notifyRemoteId = useCallback(\n (remoteId: string | undefined, emit: boolean) => {\n if (session.lastNotifiedRemoteId === remoteId) return;\n session.lastNotifiedRemoteId = remoteId;\n if (emit) session.onThreadIdChange?.(remoteId);\n },\n [session],\n );\n\n const getLoadThreadsPromise = useCallback(() => {\n if (session.loadPromise) return session.loadPromise;\n const generation = session.loadGeneration;\n session.loadPromise = store\n .optimisticUpdate({\n execute: () => session.adapter.list(),\n loading: (state) => ({ ...state, isLoading: true }),\n then: (state, page) => {\n if (generation !== session.loadGeneration) return state;\n const fresh = classifyThreads(page.threads, {\n threadIds: [],\n archivedThreadIds: [],\n threadIdMap: {},\n threadData: {},\n });\n return {\n ...state,\n isLoading: false,\n cursor: normalizeCursor(page.nextCursor),\n threadIds: fresh.threadIds,\n archivedThreadIds: fresh.archivedThreadIds,\n threadIdMap: {\n ...state.threadIdMap,\n ...fresh.threadIdMap,\n },\n threadData: {\n ...state.threadData,\n ...fresh.threadData,\n },\n };\n },\n })\n .catch((error: unknown) => {\n if (generation !== session.loadGeneration) return;\n console.error(\"[assistant-ui] thread list load failed:\", error);\n session.loadPromise = undefined;\n store.update({\n ...store.baseValue,\n isLoading: false,\n });\n })\n .then(() => {});\n return session.loadPromise;\n }, [session, store]);\n\n const reload = useCallback(() => {\n session.loadGeneration++;\n session.loadPromise = undefined;\n session.loadMorePromise = undefined;\n store.update({\n ...store.baseValue,\n cursor: undefined,\n });\n return getLoadThreadsPromise();\n }, [getLoadThreadsPromise, session, store]);\n\n useEffect(() => {\n void getLoadThreadsPromise();\n }, [getLoadThreadsPromise]);\n\n useEffect(() => {\n if (!isDevelopment) return;\n if (adapter.unstable_useAdapters !== undefined) return;\n if (adapter.unstable_Provider === undefined) return;\n console.warn(\n \"[assistant-ui] RemoteThreadList ignores RemoteThreadListAdapter.unstable_Provider. Expose unstable_useAdapters so per-thread history loads on this entry. useRemoteThreadListRuntime still honors unstable_Provider.\",\n );\n }, [adapter]);\n\n const loadMore = useCallback(() => {\n if (session.loadMorePromise) return session.loadMorePromise;\n const snapshot = store.value;\n if (snapshot.cursor === undefined || snapshot.isLoading) {\n return RESOLVED_PROMISE;\n }\n const generation = session.loadGeneration;\n const cursor = snapshot.cursor;\n const currentAdapter = session.adapter;\n const task = store\n .optimisticUpdate({\n execute: () => currentAdapter.list({ after: cursor }),\n loading: (state) => ({ ...state, isLoadingMore: true }),\n then: (state, page) => {\n if (generation !== session.loadGeneration) return state;\n const appended = classifyThreads(page.threads, {\n threadIds: [...state.threadIds],\n archivedThreadIds: [...state.archivedThreadIds],\n threadIdMap: { ...state.threadIdMap },\n threadData: { ...state.threadData },\n });\n return {\n ...state,\n isLoadingMore: false,\n cursor: normalizeCursor(page.nextCursor),\n threadIds: appended.threadIds,\n archivedThreadIds: appended.archivedThreadIds,\n threadIdMap: appended.threadIdMap,\n threadData: appended.threadData,\n };\n },\n })\n .catch((error: unknown) => {\n console.error(\"[assistant-ui] thread list loadMore failed:\", error);\n })\n .then(() => {\n if (session.loadMorePromise === task) {\n session.loadMorePromise = undefined;\n }\n });\n session.loadMorePromise = task;\n return task;\n }, [session, store]);\n\n const startSwitch = useCallback(\n (run: (generation: number) => Promise<void>) => {\n const generation = ++session.switchGeneration;\n let settle!: (error?: unknown) => void;\n const task = new Promise<void>((resolve, reject) => {\n settle = (error) => {\n if (error === undefined) resolve();\n else reject(error);\n };\n });\n session.switchTask = task;\n void run(generation).then(\n () => settle(),\n (error: unknown) => settle(error),\n );\n return task;\n },\n [session],\n );\n\n const switchToThread = useCallback(\n (\n threadIdOrRemoteId: string,\n options?: { unarchive?: boolean },\n emitThreadIdChange = true,\n ) =>\n startSwitch(async (generation) => {\n let data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) {\n const remoteMetadata =\n await session.adapter.fetch(threadIdOrRemoteId);\n if (generation !== session.switchGeneration) return;\n const state = store.value;\n const mappingId = createThreadMappingId(remoteMetadata.remoteId);\n const wasInTarget =\n remoteMetadata.status === \"regular\"\n ? state.threadIds.includes(remoteMetadata.remoteId)\n : state.archivedThreadIds.includes(remoteMetadata.remoteId);\n const threadIdsWithoutRemote = state.threadIds.filter(\n (id) => id !== remoteMetadata.remoteId,\n );\n const archivedThreadIdsWithoutRemote = state.archivedThreadIds.filter(\n (id) => id !== remoteMetadata.remoteId,\n );\n store.update({\n ...state,\n threadIds:\n remoteMetadata.status === \"regular\"\n ? wasInTarget\n ? state.threadIds\n : [...threadIdsWithoutRemote, remoteMetadata.remoteId]\n : threadIdsWithoutRemote,\n archivedThreadIds:\n remoteMetadata.status === \"archived\"\n ? wasInTarget\n ? state.archivedThreadIds\n : [...archivedThreadIdsWithoutRemote, remoteMetadata.remoteId]\n : archivedThreadIdsWithoutRemote,\n threadIdMap: {\n ...state.threadIdMap,\n [remoteMetadata.remoteId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [mappingId]: {\n id: mappingId,\n initializeTask: Promise.resolve({\n remoteId: remoteMetadata.remoteId,\n externalId: remoteMetadata.externalId,\n }),\n remoteId: remoteMetadata.remoteId,\n externalId: remoteMetadata.externalId,\n status: remoteMetadata.status,\n title: remoteMetadata.title,\n lastMessageAt: remoteMetadata.lastMessageAt,\n custom: remoteMetadata.custom,\n },\n },\n });\n data = getThreadData(store.value, threadIdOrRemoteId);\n }\n if (!data) {\n throw threadNotFoundError(threadIdOrRemoteId, \"switching to it\");\n }\n if (isSameThread(store.value, data.id, session.mainThreadId)) return;\n if (data.status === \"archived\" && options?.unarchive !== false) {\n const current = data;\n const { remoteId } = await current.initializeTask;\n if (generation !== session.switchGeneration) return;\n await store.optimisticUpdate({\n execute: () => session.adapter.unarchive(remoteId),\n optimistic: (state) =>\n updateStatusReducer(state, current.id, \"regular\"),\n });\n if (generation !== session.switchGeneration) return;\n data = getThreadData(store.value, current.id) ?? current;\n }\n if (generation !== session.switchGeneration) return;\n assignMainThreadId(data.id);\n notifyRemoteId(data.remoteId, emitThreadIdChange);\n session.onSwitchToThread?.(data.id);\n }),\n [assignMainThreadId, notifyRemoteId, session, startSwitch, store],\n );\n\n const switchToNewThread = useCallback(\n (emitThreadIdChange = true) =>\n startSwitch(async (generation) => {\n while (\n store.baseValue.newThreadId !== undefined &&\n store.value.newThreadId === undefined\n ) {\n await store.waitForUpdate();\n if (generation !== session.switchGeneration) return;\n }\n const existing = store.value.newThreadId;\n if (existing !== undefined) {\n const existingId =\n getThreadData(store.value, existing)?.id ?? existing;\n if (isSameThread(store.value, existingId, session.mainThreadId)) {\n return;\n }\n assignMainThreadId(existingId);\n notifyRemoteId(undefined, emitThreadIdChange);\n session.onSwitchToNewThread?.();\n return;\n }\n const seeded = seedNewThread(store.baseValue);\n store.update(seeded.state);\n if (generation !== session.switchGeneration) return;\n assignMainThreadId(seeded.id);\n notifyRemoteId(undefined, emitThreadIdChange);\n session.onSwitchToNewThread?.();\n }),\n [assignMainThreadId, notifyRemoteId, session, startSwitch, store],\n );\n\n const ensureNotMain = useCallback(\n async (threadId: string) => {\n if (threadId === store.value.newThreadId) {\n throw new Error(\"Cannot ensure new thread is not main\");\n }\n let lastAwaitedTask: Promise<void> | undefined;\n while (isSameThread(store.value, threadId, session.mainThreadId)) {\n let switchTask = session.switchTask;\n const startedFallback = !switchTask || switchTask === lastAwaitedTask;\n if (startedFallback) {\n switchTask = switchToNewThread();\n }\n lastAwaitedTask = switchTask;\n try {\n await switchTask;\n } catch (error) {\n if (startedFallback && session.switchTask === switchTask) {\n throw error;\n }\n }\n }\n },\n [session, store, switchToNewThread],\n );\n\n const initialize = useCallback(\n async (threadId: string) => {\n if (store.value.newThreadId !== threadId) {\n const data = getThreadData(store.value, threadId);\n if (!data) throw threadNotFoundError(threadId, \"initializing it\");\n if (data.status === \"new\") {\n throw threadStatusError(threadId, data.status, \"be initialized here\");\n }\n return toInitializeResult(await data.initializeTask);\n }\n const result = await store.optimisticUpdate({\n execute: () => session.adapter.initialize(threadId),\n optimistic: (state) => updateStatusReducer(state, threadId, \"regular\"),\n loading: (state, task) => {\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...state.threadData[mappingId],\n initializeTask: task,\n },\n },\n };\n },\n then: (state, { remoteId, externalId }) => {\n const data = getThreadData(state, threadId);\n if (!data) return state;\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadIdMap: {\n ...state.threadIdMap,\n [remoteId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...data,\n initializeTask: Promise.resolve({ remoteId, externalId }),\n remoteId,\n externalId,\n },\n },\n };\n },\n });\n if (threadId === session.mainThreadId) {\n notifyRemoteId(result.remoteId, true);\n }\n return toInitializeResult(result);\n },\n [notifyRemoteId, session, store],\n );\n\n const rename = useCallback(\n (threadIdOrRemoteId: string, newTitle: string) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) throw threadNotFoundError(threadIdOrRemoteId, \"renaming it\");\n if (data.status === \"new\") {\n throw threadStatusError(threadIdOrRemoteId, data.status, \"be renamed\");\n }\n return store.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n return session.adapter.rename(remoteId, newTitle);\n },\n optimistic: (state) => {\n const current = getThreadData(state, threadIdOrRemoteId);\n if (!current) return state;\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [current.id]: {\n ...current,\n title: newTitle,\n },\n },\n };\n },\n });\n },\n [session, store],\n );\n\n const updateCustom = useCallback(\n (\n threadIdOrRemoteId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) {\n throw threadNotFoundError(\n threadIdOrRemoteId,\n \"updating its custom metadata\",\n );\n }\n if (data.status === \"new\") {\n throw threadStatusError(\n threadIdOrRemoteId,\n data.status,\n \"update custom metadata\",\n );\n }\n if (!session.adapter.updateCustom) {\n throw new Error(\n \"Remote thread list adapter does not support updating custom metadata\",\n );\n }\n return store.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n const currentAdapter = session.adapter;\n if (!currentAdapter.updateCustom) {\n throw new Error(\n \"Remote thread list adapter does not support updating custom metadata\",\n );\n }\n return currentAdapter.updateCustom(remoteId, custom);\n },\n optimistic: (state) => {\n const current = getThreadData(state, threadIdOrRemoteId);\n if (!current) return state;\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [current.id]: {\n ...current,\n custom,\n },\n },\n };\n },\n });\n },\n [session, store],\n );\n\n const archive = useCallback(\n async (threadIdOrRemoteId: string) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) throw threadNotFoundError(threadIdOrRemoteId, \"archiving it\");\n if (data.status !== \"regular\") {\n throw threadStatusError(threadIdOrRemoteId, data.status, \"be archived\");\n }\n await ensureNotMain(data.id);\n return store.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n return session.adapter.archive(remoteId);\n },\n optimistic: (state) => updateStatusReducer(state, data.id, \"archived\"),\n });\n },\n [ensureNotMain, session, store],\n );\n\n const unarchive = useCallback(\n (threadIdOrRemoteId: string) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data)\n throw threadNotFoundError(threadIdOrRemoteId, \"unarchiving it\");\n if (data.status !== \"archived\") {\n throw threadStatusError(\n threadIdOrRemoteId,\n data.status,\n \"be unarchived\",\n );\n }\n return store.optimisticUpdate({\n execute: async () => {\n try {\n const { remoteId } = await data.initializeTask;\n return await session.adapter.unarchive(remoteId);\n } catch (error) {\n await ensureNotMain(data.id);\n throw error;\n }\n },\n optimistic: (state) => updateStatusReducer(state, data.id, \"regular\"),\n });\n },\n [ensureNotMain, session, store],\n );\n\n const deleteThread = useCallback(\n async (threadIdOrRemoteId: string) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) throw threadNotFoundError(threadIdOrRemoteId, \"deleting it\");\n if (data.status !== \"regular\" && data.status !== \"archived\") {\n throw threadStatusError(threadIdOrRemoteId, data.status, \"be deleted\");\n }\n await ensureNotMain(data.id);\n onDelete?.(data.id);\n return store.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n return session.adapter.delete(remoteId);\n },\n optimistic: (state) => updateStatusReducer(state, data.id, \"deleted\"),\n });\n },\n [ensureNotMain, onDelete, session, store],\n );\n\n const generateTitle = useCallback(\n async (\n threadIdOrRemoteId: string,\n messages: readonly ThreadMessage[] | undefined,\n ) => {\n const data = getThreadData(store.value, threadIdOrRemoteId);\n if (!data) {\n throw threadNotFoundError(threadIdOrRemoteId, \"generating its title\");\n }\n if (data.status === \"new\") {\n throw threadStatusError(\n threadIdOrRemoteId,\n data.status,\n \"generate a title\",\n );\n }\n const { remoteId } = await data.initializeTask;\n if (!isSameThread(store.value, data.id, session.mainThreadId)) return;\n if (!messages) return;\n const stream = await session.adapter.generateTitle(remoteId, messages);\n await applyTitleStream(stream, (newTitle) => {\n const state = store.baseValue;\n const current = getThreadData(state, data.id);\n if (!current) return;\n store.update({\n ...state,\n threadData: {\n ...state.threadData,\n [current.id]: {\n ...current,\n title: newTitle,\n },\n },\n });\n });\n },\n [session, store],\n );\n\n const { mainThreadClient, itemOrder, threadListItems } =\n useRemoteThreadListView({\n listState,\n mainThreadId,\n threadFactory,\n useAdapters: adapter.unstable_useAdapters,\n onSwitchTo: (id, options) => switchToThread(id, options),\n onRename: (id, title) => rename(id, title),\n onUpdateCustom: (id, custom) => updateCustom(id, custom),\n onArchive: (id) => archive(id),\n onUnarchive: (id) => unarchive(id),\n onDelete: (id) => deleteThread(id),\n onGenerateTitle: (id, messages) => generateTitle(id, messages),\n onInitialize: async (id) => toInitializeResult(await initialize(id)),\n onDetach: (id) => ensureNotMain(id),\n });\n\n const mainRemoteId = getThreadData(listState, mainThreadId)?.remoteId;\n useEffect(() => {\n if (session.lastNotifiedRemoteId === mainRemoteId) return;\n session.lastNotifiedRemoteId = mainRemoteId;\n onThreadIdChange?.(mainRemoteId);\n }, [mainRemoteId, onThreadIdChange, session]);\n\n useEffect(() => {\n if (session.isFirstThreadIdEffect) {\n session.isFirstThreadIdEffect = false;\n session.lastControlledThreadId = threadId;\n if (threadId === undefined) return;\n handleThreadListAction(\"switch\", () =>\n switchToThread(threadId, undefined, false),\n );\n return;\n }\n if (Object.is(session.lastControlledThreadId, threadId)) return;\n session.lastControlledThreadId = threadId;\n if (threadId === undefined) {\n handleThreadListAction(\"create\", () => switchToNewThread(false));\n return;\n }\n handleThreadListAction(\"switch\", () =>\n switchToThread(threadId, undefined, false),\n );\n }, [session, switchToNewThread, switchToThread, threadId]);\n\n const state = useMemo(\n () => ({\n mainThreadId,\n newThreadId: listState.newThreadId ?? null,\n isLoading: listState.isLoading,\n isLoadingMore: listState.isLoadingMore,\n hasMore: listState.cursor !== undefined,\n threadIds: listState.threadIds,\n archivedThreadIds: listState.archivedThreadIds,\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n }),\n [\n listState.archivedThreadIds,\n listState.cursor,\n listState.isLoading,\n listState.isLoadingMore,\n listState.newThreadId,\n listState.threadIds,\n mainThreadClient.state,\n mainThreadId,\n threadListItems.state,\n ],\n );\n\n return {\n getState: () => state,\n switchToThread: (id, options) => {\n handleThreadListAction(\"switch\", () => switchToThread(id, options));\n },\n switchToNewThread: () => {\n handleThreadListAction(\"create\", () => switchToNewThread());\n },\n getLoadThreadsPromise,\n reload,\n reloadMainThread: () => {\n if (getThreadData(store.value, mainThreadId)?.status === \"new\") {\n return RESOLVED_PROMISE;\n }\n return (\n mainThreadClient.methods.unstable_refetchThread?.() ?? RESOLVED_PROMISE\n );\n },\n loadMore,\n item: (selector) => {\n if (selector === \"main\") {\n const index = itemOrder.findIndex((item) =>\n itemMatchesId(item, listState, mainThreadId),\n );\n return threadListItems.get({ index });\n }\n if (\"id\" in selector) {\n const index = itemOrder.findIndex((item) =>\n itemMatchesId(item, listState, selector.id),\n );\n return threadListItems.get({ index });\n }\n const ids = selector.archived\n ? listState.archivedThreadIds\n : listState.threadIds;\n const id = ids[selector.index];\n if (id === undefined) {\n return threadListItems.get({ index: -1 });\n }\n const index = itemOrder.findIndex((item) =>\n itemMatchesId(item, listState, id),\n );\n return threadListItems.get({ index });\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\n/**\n * `AuiConfig` `threads` entry backed by a `RemoteThreadListAdapter`. Thread\n * bodies are born from the `thread` factory inside the client tree, so any\n * `AssistantClient` host can run a remote or cloud list. Per-thread history\n * and attachments come from `unstable_useAdapters`. `useRemoteThreadListRuntime`\n * uses the same hook when `unstable_Provider` is omitted. Key the factory\n * with `withKey` so history reloads when the visible thread changes.\n */\nexport const RemoteThreadList = resource(useRemoteThreadList);\n\nattachTransformScopes(useRemoteThreadList, inMemoryThreadListTransformScopes);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tools.d.ts","names":[],"sources":["../../../src/react/client/Tools.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Tools.d.ts","names":[],"sources":["../../../src/react/client/Tools.ts"],"mappings":";;;;;cA6Ja,mCAAK,SAAA;;EAvHN,UAAA;;EAED,SAAA,gBAAgB"}
|
|
@@ -3,7 +3,7 @@ import { isStandaloneToolDisplay, makeToolCallTextComponent } from "../model-con
|
|
|
3
3
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
4
4
|
import { useEffect, useState } from "@assistant-ui/tap/react-shim";
|
|
5
5
|
import { resource, useResources, withKey } from "@assistant-ui/tap";
|
|
6
|
-
import { attachTransformScopes, useAssistantClientRef } from "@assistant-ui/store/client";
|
|
6
|
+
import { attachTransformScopes, useAssistantClientRef, useAssistantScopeEffect } from "@assistant-ui/store/client";
|
|
7
7
|
//#region src/react/client/Tools.ts
|
|
8
8
|
/**
|
|
9
9
|
* Registers tools with model context and installs tool-call renderers.
|
|
@@ -14,7 +14,7 @@ import { attachTransformScopes, useAssistantClientRef } from "@assistant-ui/stor
|
|
|
14
14
|
* message rendering.
|
|
15
15
|
*/
|
|
16
16
|
const useTools = (t0) => {
|
|
17
|
-
const $ = c(
|
|
17
|
+
const $ = c(16);
|
|
18
18
|
const { toolkit, mcpApp } = t0;
|
|
19
19
|
let t1;
|
|
20
20
|
if ($[0] !== mcpApp) {
|
|
@@ -65,7 +65,7 @@ const useTools = (t0) => {
|
|
|
65
65
|
const setToolUI = t3;
|
|
66
66
|
let t4;
|
|
67
67
|
let t5;
|
|
68
|
-
if ($[6] !==
|
|
68
|
+
if ($[6] !== toolkit) {
|
|
69
69
|
t4 = () => {
|
|
70
70
|
if (!toolkit) return;
|
|
71
71
|
const unsubscribes = [];
|
|
@@ -75,36 +75,47 @@ const useTools = (t0) => {
|
|
|
75
75
|
const render_0 = toolRender ?? (toolRenderText ? makeToolCallTextComponent(toolRenderText) : void 0);
|
|
76
76
|
if (render_0) unsubscribes.push(setToolUI(toolName_0, render_0, { standalone: isStandaloneToolDisplay(tool) }));
|
|
77
77
|
}
|
|
78
|
-
const toolsWithoutRender = Object.entries(toolkit).reduce(_temp2, {});
|
|
79
|
-
unsubscribes.push(clientRef.current.modelContext().register({ getModelContext: () => ({ tools: toolsWithoutRender }) }));
|
|
80
78
|
return () => {
|
|
81
|
-
unsubscribes.forEach(
|
|
79
|
+
unsubscribes.forEach(_temp2);
|
|
82
80
|
};
|
|
83
81
|
};
|
|
84
|
-
t5 = [
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
];
|
|
89
|
-
$[6] = clientRef;
|
|
90
|
-
$[7] = toolkit;
|
|
91
|
-
$[8] = t4;
|
|
92
|
-
$[9] = t5;
|
|
82
|
+
t5 = [toolkit, setToolUI];
|
|
83
|
+
$[6] = toolkit;
|
|
84
|
+
$[7] = t4;
|
|
85
|
+
$[8] = t5;
|
|
93
86
|
} else {
|
|
94
|
-
t4 = $[
|
|
95
|
-
t5 = $[
|
|
87
|
+
t4 = $[7];
|
|
88
|
+
t5 = $[8];
|
|
96
89
|
}
|
|
97
90
|
useEffect(t4, t5);
|
|
98
91
|
let t6;
|
|
99
|
-
if ($[10] !==
|
|
100
|
-
t6 = {
|
|
101
|
-
|
|
102
|
-
|
|
92
|
+
if ($[9] !== clientRef || $[10] !== toolkit) {
|
|
93
|
+
t6 = () => {
|
|
94
|
+
if (!toolkit) return;
|
|
95
|
+
const toolsWithoutRender = Object.entries(toolkit).reduce(_temp3, {});
|
|
96
|
+
return clientRef.current.modelContext().register({ getModelContext: () => ({ tools: toolsWithoutRender }) });
|
|
103
97
|
};
|
|
104
|
-
$[
|
|
98
|
+
$[9] = clientRef;
|
|
99
|
+
$[10] = toolkit;
|
|
105
100
|
$[11] = t6;
|
|
106
101
|
} else t6 = $[11];
|
|
107
|
-
|
|
102
|
+
let t7;
|
|
103
|
+
if ($[12] !== toolkit) {
|
|
104
|
+
t7 = [toolkit];
|
|
105
|
+
$[12] = toolkit;
|
|
106
|
+
$[13] = t7;
|
|
107
|
+
} else t7 = $[13];
|
|
108
|
+
useAssistantScopeEffect("modelContext", t6, t7);
|
|
109
|
+
let t8;
|
|
110
|
+
if ($[14] !== state) {
|
|
111
|
+
t8 = {
|
|
112
|
+
getState: () => state,
|
|
113
|
+
setToolUI
|
|
114
|
+
};
|
|
115
|
+
$[14] = state;
|
|
116
|
+
$[15] = t8;
|
|
117
|
+
} else t8 = $[15];
|
|
118
|
+
return t8;
|
|
108
119
|
};
|
|
109
120
|
const Tools = resource(useTools);
|
|
110
121
|
attachTransformScopes(useTools, (scopes, parent) => {
|
|
@@ -113,16 +124,16 @@ attachTransformScopes(useTools, (scopes, parent) => {
|
|
|
113
124
|
function _temp() {
|
|
114
125
|
return {};
|
|
115
126
|
}
|
|
116
|
-
function _temp2(
|
|
127
|
+
function _temp2(fn) {
|
|
128
|
+
return fn();
|
|
129
|
+
}
|
|
130
|
+
function _temp3(acc, t0) {
|
|
117
131
|
const [name, tool_0] = t0;
|
|
118
132
|
if (tool_0.type === "mcp") return acc;
|
|
119
133
|
const { display: _display, render: _render, renderText: _renderText, ...rest_0 } = tool_0;
|
|
120
134
|
acc[name] = rest_0;
|
|
121
135
|
return acc;
|
|
122
136
|
}
|
|
123
|
-
function _temp3(fn) {
|
|
124
|
-
return fn();
|
|
125
|
-
}
|
|
126
137
|
//#endregion
|
|
127
138
|
export { Tools };
|
|
128
139
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tools.js","names":["useState","useEffect","useCallback","useMemo","useResources","resource","withKey","ResourceElement","ClientOutput","attachTransformScopes","useAssistantClientRef","McpAppResourceOutput","ToolsState","Tool","isStandaloneToolDisplay","makeToolCallTextComponent","Toolkit","ToolCallMessagePartComponent","ModelContext","useTools","t0","$","_c","toolkit","mcpApp","t1","mcpAppOutputs","mcpAppOutput","toolUIs","setToolUIs","_temp","t2","state","clientRef","t3","Symbol","for","toolName","render","options","registration","standalone","prev","prev_0","next","filter","r","length","rest","setToolUI","t4","t5","unsubscribes","toolName_0","tool","Object","entries","toolRender","undefined","toolRenderText","renderText","render_0","push","toolsWithoutRender","reduce","
|
|
1
|
+
{"version":3,"file":"Tools.js","names":["useState","useEffect","useCallback","useMemo","useResources","resource","withKey","ResourceElement","ClientOutput","attachTransformScopes","useAssistantClientRef","useAssistantScopeEffect","McpAppResourceOutput","ToolsState","Tool","isStandaloneToolDisplay","makeToolCallTextComponent","Toolkit","ToolCallMessagePartComponent","ModelContext","useTools","t0","$","_c","toolkit","mcpApp","t1","mcpAppOutputs","mcpAppOutput","toolUIs","setToolUIs","_temp","t2","state","clientRef","t3","Symbol","for","toolName","render","options","registration","standalone","prev","prev_0","next","filter","r","length","rest","setToolUI","t4","t5","unsubscribes","toolName_0","tool","Object","entries","toolRender","undefined","toolRenderText","renderText","render_0","push","forEach","_temp2","t6","toolsWithoutRender","reduce","_temp3","Record","modelContextProvider","getModelContext","tools","current","modelContext","register","t7","t8","getState","Tools","scopes","parent","source","fn","acc","name","tool_0","type","display","_display","_render","_renderText","rest_0"],"sources":["../../../src/react/client/Tools.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useMemo } from \"react\";\nimport {\n useResources,\n resource,\n withKey,\n type ResourceElement,\n} from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport {\n attachTransformScopes,\n useAssistantClientRef,\n useAssistantScopeEffect,\n} from \"@assistant-ui/store/client\";\nimport type { McpAppResourceOutput, ToolsState } from \"../types/scopes/tools\";\nimport type { Tool } from \"assistant-stream\";\nimport {\n isStandaloneToolDisplay,\n makeToolCallTextComponent,\n type Toolkit,\n} from \"../model-context/toolbox\";\nimport type { ToolCallMessagePartComponent } from \"../types/MessagePartComponentTypes\";\nimport { ModelContext } from \"../../store/clients/model-context-client\";\n\nexport type { McpAppResourceOutput };\n\n/**\n * Registers tools with model context and installs tool-call renderers.\n *\n * Mount this resource near an assistant subtree when you want to expose a\n * group of tools declaratively. Tool definitions are registered with model\n * context, while each tool renderer is registered with the tools scope for\n * message rendering.\n */\nconst useTools = ({\n toolkit,\n mcpApp,\n}: {\n /** Tools to expose to the model and optional renderers to install. */\n toolkit?: Toolkit;\n /** Optional MCP app resource whose tools should be merged into context. */\n mcpApp?: ResourceElement<McpAppResourceOutput> | undefined;\n}): ClientOutput<\"tools\"> => {\n const mcpAppOutputs = useResources(mcpApp ? [withKey(\"mcpApp\", mcpApp)] : []);\n const mcpAppOutput = mcpAppOutputs[0];\n\n const [toolUIs, setToolUIs] = useState<ToolsState[\"toolUIs\"]>(() => ({}));\n\n const state = useMemo(\n (): ToolsState => ({\n toolUIs,\n mcpApp: mcpAppOutput,\n }),\n [toolUIs, mcpAppOutput],\n );\n\n const clientRef = useAssistantClientRef();\n\n const setToolUI = useCallback(\n (\n toolName: string,\n render: ToolCallMessagePartComponent,\n options?: { standalone?: boolean },\n ) => {\n // One registration object per call; identity is the removal key, so\n // the per-name list stays correctly ref-counted across re-registers.\n const registration = {\n render,\n standalone: options?.standalone ?? false,\n };\n\n setToolUIs((prev) => ({\n ...prev,\n [toolName]: [...(prev[toolName] ?? []), registration],\n }));\n\n return () => {\n setToolUIs((prev) => {\n const next = prev[toolName]?.filter((r) => r !== registration) ?? [];\n if (next.length > 0) return { ...prev, [toolName]: next };\n // Drop the key entirely so repeatedly mounted/unmounted tools\n // don't leave empty arrays accumulating across a long session.\n const rest = { ...prev };\n delete rest[toolName];\n return rest;\n });\n };\n },\n [],\n );\n\n useEffect(() => {\n if (!toolkit) return;\n const unsubscribes: (() => void)[] = [];\n\n // Register tool UIs (exclude symbols)\n for (const [toolName, tool] of Object.entries(toolkit)) {\n const toolRender = \"render\" in tool ? tool.render : undefined;\n const toolRenderText = \"renderText\" in tool ? tool.renderText : undefined;\n const render =\n toolRender ??\n (toolRenderText\n ? makeToolCallTextComponent(toolRenderText)\n : undefined);\n if (render) {\n unsubscribes.push(\n setToolUI(toolName, render, {\n standalone: isStandaloneToolDisplay(tool),\n }),\n );\n }\n }\n\n return () => {\n unsubscribes.forEach((fn) => fn());\n };\n }, [toolkit, setToolUI]);\n\n useAssistantScopeEffect(\n \"modelContext\",\n () => {\n if (!toolkit) return;\n\n // Register tools with model context (exclude symbols). `render`,\n // `renderText`, and `display` are client-only presentation concerns and\n // never reach the model.\n const toolsWithoutRender = Object.entries(toolkit).reduce(\n (acc, [name, tool]) => {\n if (tool.type === \"mcp\") return acc;\n const {\n display: _display,\n render: _render,\n renderText: _renderText,\n ...rest\n } = tool as typeof tool & { renderText?: unknown };\n acc[name] = rest as Tool<any, any>;\n return acc;\n },\n {} as Record<string, Tool<any, any>>,\n );\n\n const modelContextProvider = {\n getModelContext: () => ({\n tools: toolsWithoutRender,\n }),\n };\n\n return clientRef.current!.modelContext().register(modelContextProvider);\n },\n [toolkit],\n );\n\n return {\n getState: () => state,\n setToolUI,\n };\n};\n\nexport const Tools = resource(useTools);\n\nattachTransformScopes(useTools, (scopes, parent) => {\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n});\n"],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { AssistantContextConfig } from "../model-context/types.js";
|
|
4
4
|
import { PartState } from "../store/scopes/part.js";
|
|
5
5
|
import { RuntimeAdapter } from "./RuntimeAdapter.js";
|
|
6
|
+
import { RuntimeAdapters } from "../runtimes/remote-thread-list/types.js";
|
|
6
7
|
import { JoinStrategy, convertExternalMessages, useExternalMessageConverter } from "./runtimes/external-message-converter.js";
|
|
7
8
|
import { StreamingTimingAccessors, StreamingTimingOptions, StreamingTimingState } from "../runtime/utils/streaming-timing.js";
|
|
8
9
|
import { useStreamingTiming } from "./runtimes/useStreamingTiming.js";
|
|
@@ -54,7 +55,8 @@ import { ChainOfThoughtPartByIndexProvider } from "./providers/ChainOfThoughtPar
|
|
|
54
55
|
import { SuggestionByIndexProvider, SuggestionByIndexProviderProps } from "./providers/SuggestionByIndexProvider.js";
|
|
55
56
|
import { QueueItemByIndexProvider, QueueItemByIndexProviderProps } from "./providers/QueueItemByIndexProvider.js";
|
|
56
57
|
import { ReadonlyThreadProvider } from "./providers/ReadonlyThreadProvider.js";
|
|
57
|
-
import {
|
|
58
|
+
import { useRuntimeAdapters } from "./runtimes/useRuntimeAdapters.js";
|
|
59
|
+
import { RuntimeAdapterProvider } from "./runtimes/RuntimeAdapterProvider.js";
|
|
58
60
|
import { useExternalStoreRuntime } from "./runtimes/useExternalStoreRuntime.js";
|
|
59
61
|
import { useExternalStoreSharedOptions } from "./runtimes/useExternalStoreSharedOptions.js";
|
|
60
62
|
import { createMessageConverter } from "./runtimes/createMessageConverter.js";
|
|
@@ -63,6 +65,9 @@ import { RemoteThreadListHookInstanceManager } from "./runtimes/RemoteThreadList
|
|
|
63
65
|
import { RemoteThreadListThreadListRuntimeCore } from "./runtimes/RemoteThreadListThreadListRuntimeCore.js";
|
|
64
66
|
import { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntime.js";
|
|
65
67
|
import { useCloudThreadListAdapter } from "./runtimes/cloud/useCloudThreadListAdapter.js";
|
|
68
|
+
import { useCloudThreadListRuntime } from "./runtimes/cloud/useCloudThreadListRuntime.js";
|
|
69
|
+
import { AssistantTransportCommand, AssistantTransportConnectionMetadata, AssistantTransportOptions, AssistantTransportProtocol, SendCommandsRequestBody } from "./runtimes/assistant-transport/types.js";
|
|
70
|
+
import { useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState } from "./runtimes/assistant-transport/useAssistantTransportRuntime.js";
|
|
66
71
|
import { useAssistantCloudThreadHistoryAdapter } from "./runtimes/cloud/AssistantCloudThreadHistoryAdapter.js";
|
|
67
72
|
import { CloudFileAttachmentAdapter } from "./runtimes/cloud/CloudFileAttachmentAdapter.js";
|
|
68
73
|
import { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveUnstable_MessageById } from "./primitives/thread/ThreadMessages.js";
|
|
@@ -112,4 +117,4 @@ import { useEditComposerCancel } from "./primitive-hooks/useEditComposerCancel.j
|
|
|
112
117
|
import { useEditComposerSend } from "./primitive-hooks/useEditComposerSend.js";
|
|
113
118
|
import { useMessageError } from "./primitive-hooks/useMessageError.js";
|
|
114
119
|
import { LocalRuntimeOptions, splitLocalRuntimeOptions, useLocalRuntime } from "./runtimes/useLocalRuntime.js";
|
|
115
|
-
export { type AssistantContextConfig, type AssistantDataUI, type AssistantDataUIProps, type AssistantInteractableProps, AssistantProviderBase, type AssistantProviderBaseProps, AssistantRuntimeProvider, type AssistantTool, type AssistantToolProps, type AssistantToolUI, type AssistantToolUIProps, type AsyncStorageLike, ChainOfThoughtByIndicesProvider, ChainOfThoughtPartByIndexProvider, ChainOfThoughtPrimitiveParts, CloudFileAttachmentAdapter, ComposerAttachmentByIndexProvider, ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments, ComposerPrimitiveIf, ComposerPrimitiveQueue, type DataMessagePartComponent, type DataMessagePartProps, DataRenderers, type DataRenderersClientSchema, type DataRenderersMethods, type DataRenderersState, type EmptyMessagePartComponent, type EmptyMessagePartProps, type EnrichedPartState, type FileMessagePartComponent, type FileMessagePartProps, type GenerativeUIComponentRegistry, type GenerativeUIMessagePartComponent, type GenerativeUIMessagePartProps, GenerativeUIRender, GenerativeUIRenderError, type GenerativeUIRenderProps, type GroupByContext, type ImageMessagePartComponent, type ImageMessagePartProps, type InteractableDefinition, type InteractablePersistedState, type InteractablePersistenceAdapter, type InteractablePersistenceStatus, type InteractableRegistration, type InteractableStateSchema, Interactables, type InteractablesClientSchema, type InteractablesMethods, type InteractablesState, type JoinStrategy, type LocalRuntimeOptions, type McpAppResourceOutput, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessagePartComponent, MessagePartPrimitiveInProgress, MessagePrimitiveAttachmentByIndex, MessagePrimitiveAttachments, MessagePrimitiveGenerativeUI, MessagePrimitiveGroupedParts, MessagePrimitivePartByIndex, MessagePrimitiveParts, MessagePrimitiveQuote, PartByIndexProvider, PartPrimitiveMessages, PartPrimitiveMessagesImpl, type PartState, type ProviderToolConfig, QueueItemByIndexProvider, type QueueItemByIndexProviderProps, type QuoteMessagePartComponent, type QuoteMessagePartProps, ReadonlyThreadProvider, type ReasoningGroupComponent, type ReasoningGroupProps, type ReasoningMessagePartComponent, type ReasoningMessagePartProps, RemoteThreadListHookInstanceManager, RemoteThreadListThreadListRuntimeCore, RuntimeAdapter, RuntimeAdapterProvider, type RuntimeAdapters, type RuntimeExtras, type SourceMessagePartComponent, type SourceMessagePartProps, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, SuggestionByIndexProvider, type SuggestionByIndexProviderProps, type TextMessagePartComponent, type TextMessagePartProps, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemPrimitiveTitle, ThreadListItemRuntimeProvider, ThreadListPrimitiveItemByIndex, ThreadListPrimitiveItems, ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveSuggestionByIndex, ThreadPrimitiveSuggestions, ThreadPrimitiveSuggestionsImpl, ThreadPrimitiveUnstable_MessageById, type TitleGenerationAdapter, type ToolArgsStatus, type ToolCallMessagePartComponent, type ToolCallMessagePartProps, type ToolCallText, type ToolDefinition, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, Tools, type ToolsClientSchema, type ToolsMethods, type ToolsState, type Unstable_AudioMessagePartComponent, type Unstable_AudioMessagePartProps, type Unstable_InferInteractableState, type Unstable_InteractableConfig, type Unstable_InteractableDefinition, type Unstable_InteractablePersistedState, type Unstable_InteractablePersistenceAdapter, type Unstable_InteractablePersistenceStatus, type Unstable_InteractableRegistration, type Unstable_InteractableStateSchema, type Unstable_InteractableToolConfig, type Unstable_InteractableToolRenderProps, type Unstable_InteractableVersionInfo, type Unstable_InteractablesClientSchema, type Unstable_InteractablesConfig, type Unstable_InteractablesMethods, type Unstable_InteractablesState, type UseActionBarCopyOptions, type UseComposerIfProps, type UseSuggestionTriggerOptions, convertExternalMessages, createLocalStorageAdapter, createMessageConverter, createRuntimeExtras, createSimpleTitleAdapter, defineMcpToolkit, defineToolkit, externalTool, getMessageQuote, getRenderComponent, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, defaultComponents as messagePartsDefaultComponents, providerTool, splitLocalRuntimeOptions, stubTool, unstable_Interactables, unstable_createRuntimeExtrasFromBrand, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useActionBarCopy, useActionBarEdit, useActionBarFeedbackNegative, useActionBarFeedbackPositive, useActionBarReload, useActionBarSpeak, useActionBarStopSpeaking, useAssistantCloudThreadHistoryAdapter, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAuiToolOverrides, useBranchPickerNext, useBranchPickerPrevious, useCloudThreadListAdapter, useComposerAddAttachment, useComposerCancel, useComposerDictate, useComposerSend, useEditComposerCancel, useEditComposerSend, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessageBranching, useMessageError, useMessageReload, useRemoteThreadListRuntime, useRuntimeAdapters, useStreamingTiming, useSuggestionTrigger, useThreadIsEmpty, useThreadIsRunning, useThreadListItemArchive, useThreadListItemDelete, useThreadListItemTrigger, useThreadListItemUnarchive, useThreadListLoadMore, useThreadListNew, useThreadMessages, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume };
|
|
120
|
+
export { type AssistantContextConfig, type AssistantDataUI, type AssistantDataUIProps, type AssistantInteractableProps, AssistantProviderBase, type AssistantProviderBaseProps, AssistantRuntimeProvider, type AssistantTool, type AssistantToolProps, type AssistantToolUI, type AssistantToolUIProps, type AssistantTransportCommand, type AssistantTransportConnectionMetadata, type AssistantTransportOptions, type AssistantTransportProtocol, type AsyncStorageLike, ChainOfThoughtByIndicesProvider, ChainOfThoughtPartByIndexProvider, ChainOfThoughtPrimitiveParts, CloudFileAttachmentAdapter, ComposerAttachmentByIndexProvider, ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments, ComposerPrimitiveIf, ComposerPrimitiveQueue, type DataMessagePartComponent, type DataMessagePartProps, DataRenderers, type DataRenderersClientSchema, type DataRenderersMethods, type DataRenderersState, type EmptyMessagePartComponent, type EmptyMessagePartProps, type EnrichedPartState, type FileMessagePartComponent, type FileMessagePartProps, type GenerativeUIComponentRegistry, type GenerativeUIMessagePartComponent, type GenerativeUIMessagePartProps, GenerativeUIRender, GenerativeUIRenderError, type GenerativeUIRenderProps, type GroupByContext, type ImageMessagePartComponent, type ImageMessagePartProps, type InteractableDefinition, type InteractablePersistedState, type InteractablePersistenceAdapter, type InteractablePersistenceStatus, type InteractableRegistration, type InteractableStateSchema, Interactables, type InteractablesClientSchema, type InteractablesMethods, type InteractablesState, type JoinStrategy, type LocalRuntimeOptions, type McpAppResourceOutput, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessagePartComponent, MessagePartPrimitiveInProgress, MessagePrimitiveAttachmentByIndex, MessagePrimitiveAttachments, MessagePrimitiveGenerativeUI, MessagePrimitiveGroupedParts, MessagePrimitivePartByIndex, MessagePrimitiveParts, MessagePrimitiveQuote, PartByIndexProvider, PartPrimitiveMessages, PartPrimitiveMessagesImpl, type PartState, type ProviderToolConfig, QueueItemByIndexProvider, type QueueItemByIndexProviderProps, type QuoteMessagePartComponent, type QuoteMessagePartProps, ReadonlyThreadProvider, type ReasoningGroupComponent, type ReasoningGroupProps, type ReasoningMessagePartComponent, type ReasoningMessagePartProps, RemoteThreadListHookInstanceManager, RemoteThreadListThreadListRuntimeCore, RuntimeAdapter, RuntimeAdapterProvider, type RuntimeAdapters, type RuntimeExtras, type SendCommandsRequestBody, type SourceMessagePartComponent, type SourceMessagePartProps, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, SuggestionByIndexProvider, type SuggestionByIndexProviderProps, type TextMessagePartComponent, type TextMessagePartProps, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemPrimitiveTitle, ThreadListItemRuntimeProvider, ThreadListPrimitiveItemByIndex, ThreadListPrimitiveItems, ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveSuggestionByIndex, ThreadPrimitiveSuggestions, ThreadPrimitiveSuggestionsImpl, ThreadPrimitiveUnstable_MessageById, type TitleGenerationAdapter, type ToolArgsStatus, type ToolCallMessagePartComponent, type ToolCallMessagePartProps, type ToolCallText, type ToolDefinition, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, Tools, type ToolsClientSchema, type ToolsMethods, type ToolsState, type Unstable_AudioMessagePartComponent, type Unstable_AudioMessagePartProps, type Unstable_InferInteractableState, type Unstable_InteractableConfig, type Unstable_InteractableDefinition, type Unstable_InteractablePersistedState, type Unstable_InteractablePersistenceAdapter, type Unstable_InteractablePersistenceStatus, type Unstable_InteractableRegistration, type Unstable_InteractableStateSchema, type Unstable_InteractableToolConfig, type Unstable_InteractableToolRenderProps, type Unstable_InteractableVersionInfo, type Unstable_InteractablesClientSchema, type Unstable_InteractablesConfig, type Unstable_InteractablesMethods, type Unstable_InteractablesState, type UseActionBarCopyOptions, type UseComposerIfProps, type UseSuggestionTriggerOptions, convertExternalMessages, createLocalStorageAdapter, createMessageConverter, createRuntimeExtras, createSimpleTitleAdapter, defineMcpToolkit, defineToolkit, externalTool, getMessageQuote, getRenderComponent, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, defaultComponents as messagePartsDefaultComponents, providerTool, splitLocalRuntimeOptions, stubTool, unstable_Interactables, unstable_createRuntimeExtrasFromBrand, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useActionBarCopy, useActionBarEdit, useActionBarFeedbackNegative, useActionBarFeedbackPositive, useActionBarReload, useActionBarSpeak, useActionBarStopSpeaking, useAssistantCloudThreadHistoryAdapter, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAuiToolOverrides, useBranchPickerNext, useBranchPickerPrevious, useCloudThreadListAdapter, useCloudThreadListRuntime, useComposerAddAttachment, useComposerCancel, useComposerDictate, useComposerSend, useEditComposerCancel, useEditComposerSend, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessageBranching, useMessageError, useMessageReload, useRemoteThreadListRuntime, useRuntimeAdapters, useStreamingTiming, useSuggestionTrigger, useThreadIsEmpty, useThreadIsRunning, useThreadListItemArchive, useThreadListItemDelete, useThreadListItemTrigger, useThreadListItemUnarchive, useThreadListLoadMore, useThreadListNew, useThreadMessages, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume };
|
package/dist/react/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import { unstable_useInteractable } from "./model-context/useInteractable.js";
|
|
|
26
26
|
import { unstable_useInteractableVersions } from "./model-context/useInteractableVersions.js";
|
|
27
27
|
import { unstable_interactableTool } from "./model-context/interactableTool.js";
|
|
28
28
|
import { useToolArgsStatus } from "./model-context/useToolArgsStatus.js";
|
|
29
|
+
import { useRuntimeAdapters } from "./runtimes/useRuntimeAdapters.js";
|
|
29
30
|
import { convertExternalMessages, useExternalMessageConverter } from "./runtimes/external-message-converter.js";
|
|
30
31
|
import { useStreamingTiming } from "./runtimes/useStreamingTiming.js";
|
|
31
32
|
import { Interactables } from "./interactables-legacy/Interactables.js";
|
|
@@ -41,7 +42,7 @@ import { ChainOfThoughtPartByIndexProvider } from "./providers/ChainOfThoughtPar
|
|
|
41
42
|
import { SuggestionByIndexProvider } from "./providers/SuggestionByIndexProvider.js";
|
|
42
43
|
import { QueueItemByIndexProvider } from "./providers/QueueItemByIndexProvider.js";
|
|
43
44
|
import { ReadonlyThreadProvider } from "./providers/ReadonlyThreadProvider.js";
|
|
44
|
-
import { RuntimeAdapterProvider
|
|
45
|
+
import { RuntimeAdapterProvider } from "./runtimes/RuntimeAdapterProvider.js";
|
|
45
46
|
import { useExternalStoreRuntime } from "./runtimes/useExternalStoreRuntime.js";
|
|
46
47
|
import { useExternalStoreSharedOptions } from "./runtimes/useExternalStoreSharedOptions.js";
|
|
47
48
|
import { createMessageConverter } from "./runtimes/createMessageConverter.js";
|
|
@@ -52,6 +53,8 @@ import { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntim
|
|
|
52
53
|
import { useAssistantCloudThreadHistoryAdapter } from "./runtimes/cloud/AssistantCloudThreadHistoryAdapter.js";
|
|
53
54
|
import { CloudFileAttachmentAdapter } from "./runtimes/cloud/CloudFileAttachmentAdapter.js";
|
|
54
55
|
import { useCloudThreadListAdapter } from "./runtimes/cloud/useCloudThreadListAdapter.js";
|
|
56
|
+
import { useCloudThreadListRuntime } from "./runtimes/cloud/useCloudThreadListRuntime.js";
|
|
57
|
+
import { useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState } from "./runtimes/assistant-transport/useAssistantTransportRuntime.js";
|
|
55
58
|
import { createLocalStorageAdapter } from "./adapters/LocalStorageThreadListAdapter.js";
|
|
56
59
|
import { createSimpleTitleAdapter } from "./adapters/TitleGenerationAdapter.js";
|
|
57
60
|
import { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveUnstable_MessageById } from "./primitives/thread/ThreadMessages.js";
|
|
@@ -101,4 +104,4 @@ import { useEditComposerCancel } from "./primitive-hooks/useEditComposerCancel.j
|
|
|
101
104
|
import { useEditComposerSend } from "./primitive-hooks/useEditComposerSend.js";
|
|
102
105
|
import { useMessageError } from "./primitive-hooks/useMessageError.js";
|
|
103
106
|
import { splitLocalRuntimeOptions, useLocalRuntime } from "./runtimes/useLocalRuntime.js";
|
|
104
|
-
export { AssistantProviderBase, AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ChainOfThoughtPartByIndexProvider, ChainOfThoughtPrimitiveParts, CloudFileAttachmentAdapter, ComposerAttachmentByIndexProvider, ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments, ComposerPrimitiveIf, ComposerPrimitiveQueue, DataRenderers, GenerativeUIRender, GenerativeUIRenderError, Interactables, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessagePartComponent, MessagePartPrimitiveInProgress, MessagePrimitiveAttachmentByIndex, MessagePrimitiveAttachments, MessagePrimitiveGenerativeUI, MessagePrimitiveGroupedParts, MessagePrimitivePartByIndex, MessagePrimitiveParts, MessagePrimitiveQuote, PartByIndexProvider, PartPrimitiveMessages, PartPrimitiveMessagesImpl, QueueItemByIndexProvider, ReadonlyThreadProvider, RemoteThreadListHookInstanceManager, RemoteThreadListThreadListRuntimeCore, RuntimeAdapter, RuntimeAdapterProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemPrimitiveTitle, ThreadListItemRuntimeProvider, ThreadListPrimitiveItemByIndex, ThreadListPrimitiveItems, ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveSuggestionByIndex, ThreadPrimitiveSuggestions, ThreadPrimitiveSuggestionsImpl, ThreadPrimitiveUnstable_MessageById, Tools, convertExternalMessages, createLocalStorageAdapter, createMessageConverter, createRuntimeExtras, createSimpleTitleAdapter, defineMcpToolkit, defineToolkit, externalTool, getMessageQuote, getRenderComponent, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, defaultComponents as messagePartsDefaultComponents, providerTool, splitLocalRuntimeOptions, stubTool, unstable_Interactables, unstable_createRuntimeExtrasFromBrand, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useActionBarCopy, useActionBarEdit, useActionBarFeedbackNegative, useActionBarFeedbackPositive, useActionBarReload, useActionBarSpeak, useActionBarStopSpeaking, useAssistantCloudThreadHistoryAdapter, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAuiToolOverrides, useBranchPickerNext, useBranchPickerPrevious, useCloudThreadListAdapter, useComposerAddAttachment, useComposerCancel, useComposerDictate, useComposerSend, useEditComposerCancel, useEditComposerSend, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessageBranching, useMessageError, useMessageReload, useRemoteThreadListRuntime, useRuntimeAdapters, useStreamingTiming, useSuggestionTrigger, useThreadIsEmpty, useThreadIsRunning, useThreadListItemArchive, useThreadListItemDelete, useThreadListItemTrigger, useThreadListItemUnarchive, useThreadListLoadMore, useThreadListNew, useThreadMessages, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume };
|
|
107
|
+
export { AssistantProviderBase, AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ChainOfThoughtPartByIndexProvider, ChainOfThoughtPrimitiveParts, CloudFileAttachmentAdapter, ComposerAttachmentByIndexProvider, ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments, ComposerPrimitiveIf, ComposerPrimitiveQueue, DataRenderers, GenerativeUIRender, GenerativeUIRenderError, Interactables, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessagePartComponent, MessagePartPrimitiveInProgress, MessagePrimitiveAttachmentByIndex, MessagePrimitiveAttachments, MessagePrimitiveGenerativeUI, MessagePrimitiveGroupedParts, MessagePrimitivePartByIndex, MessagePrimitiveParts, MessagePrimitiveQuote, PartByIndexProvider, PartPrimitiveMessages, PartPrimitiveMessagesImpl, QueueItemByIndexProvider, ReadonlyThreadProvider, RemoteThreadListHookInstanceManager, RemoteThreadListThreadListRuntimeCore, RuntimeAdapter, RuntimeAdapterProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemPrimitiveTitle, ThreadListItemRuntimeProvider, ThreadListPrimitiveItemByIndex, ThreadListPrimitiveItems, ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveSuggestionByIndex, ThreadPrimitiveSuggestions, ThreadPrimitiveSuggestionsImpl, ThreadPrimitiveUnstable_MessageById, Tools, convertExternalMessages, createLocalStorageAdapter, createMessageConverter, createRuntimeExtras, createSimpleTitleAdapter, defineMcpToolkit, defineToolkit, externalTool, getMessageQuote, getRenderComponent, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, defaultComponents as messagePartsDefaultComponents, providerTool, splitLocalRuntimeOptions, stubTool, unstable_Interactables, unstable_createRuntimeExtrasFromBrand, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useActionBarCopy, useActionBarEdit, useActionBarFeedbackNegative, useActionBarFeedbackPositive, useActionBarReload, useActionBarSpeak, useActionBarStopSpeaking, useAssistantCloudThreadHistoryAdapter, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAuiToolOverrides, useBranchPickerNext, useBranchPickerPrevious, useCloudThreadListAdapter, useCloudThreadListRuntime, useComposerAddAttachment, useComposerCancel, useComposerDictate, useComposerSend, useEditComposerCancel, useEditComposerSend, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessageBranching, useMessageError, useMessageReload, useRemoteThreadListRuntime, useRuntimeAdapters, useStreamingTiming, useSuggestionTrigger, useThreadIsEmpty, useThreadIsRunning, useThreadListItemArchive, useThreadListItemDelete, useThreadListItemTrigger, useThreadListItemUnarchive, useThreadListLoadMore, useThreadListNew, useThreadMessages, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/interactables-legacy/Interactables.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"Interactables.d.ts","names":[],"sources":["../../../src/react/interactables-legacy/Interactables.ts"],"mappings":";;;;;;;cAiZa,2CAAa,SAAA"}
|