@assistant-ui/core 0.3.16 → 0.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/attachment.d.ts.map +1 -1
- package/dist/adapters/attachment.js +5 -4
- package/dist/adapters/attachment.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +4 -2
- package/dist/internal.js +4 -2
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +10 -4
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/frame/provider.d.ts +5 -0
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +101 -28
- package/dist/model-context/frame/provider.js.map +1 -1
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +16 -9
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/registry.js +3 -5
- package/dist/model-context/registry.js.map +1 -1
- package/dist/model-context/tool-call-text.d.ts +26 -0
- package/dist/model-context/tool-call-text.d.ts.map +1 -0
- package/dist/model-context/tool-call-text.js +18 -0
- package/dist/model-context/tool-call-text.js.map +1 -0
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js +5 -4
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/RuntimeAdapter.js +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/AdaptedRemoteThread.js +1 -1
- package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.js +63 -57
- package/dist/react/client/InMemoryThreadList.js.map +1 -1
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +25 -28
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +16 -0
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +354 -242
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +24 -18
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/index.d.ts +2 -1
- package/dist/react/index.js +2 -1
- package/dist/react/interactables-legacy/Interactables.js +246 -125
- package/dist/react/interactables-legacy/Interactables.js.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +11 -9
- package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
- package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
- package/dist/react/model-context/makeAssistantTool.js +1 -1
- package/dist/react/model-context/makeAssistantTool.js.map +1 -1
- package/dist/react/model-context/toolbox.d.ts +2 -14
- package/dist/react/model-context/toolbox.d.ts.map +1 -1
- package/dist/react/model-context/toolbox.js +1 -13
- package/dist/react/model-context/toolbox.js.map +1 -1
- package/dist/react/model-context/useAssistantContext.js +37 -7
- package/dist/react/model-context/useAssistantContext.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.d.ts +2 -2
- package/dist/react/model-context/useAssistantTool.js +1 -1
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js +31 -5
- package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
- package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
- package/dist/react/model-context/useInlineRender.js +10 -36
- package/dist/react/model-context/useInlineRender.js.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
- package/dist/react/model-context/useToolArgsStatus.js +2 -1
- package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useMessageError.js +2 -8
- package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +2 -4
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +4 -3
- package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js +4 -3
- package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +7 -6
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +2 -2
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +3 -3
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +5 -4
- package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +6 -4
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +59 -29
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +11 -6
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +160 -143
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +2 -6
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +15 -13
- package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
- package/dist/react/runtimes/assistant-transport/useLatestRef.js +2 -2
- package/dist/react/runtimes/assistant-transport/useLatestRef.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +4 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +424 -52
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +5 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +29 -0
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -0
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +160 -0
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -0
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +1 -9
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +16 -153
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +1 -1
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useExternalStoreRuntime.js +75 -46
- package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +77 -29
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/types/MessagePartComponentTypes.d.ts +7 -3
- package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +2 -0
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.d.ts +2 -2
- package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
- package/dist/runtime/api/message-part-runtime.js +1 -1
- package/dist/runtime/api/message-part-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.d.ts +7 -3
- package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-item-runtime.js +2 -2
- package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
- package/dist/runtime/api/thread-list-runtime.d.ts +12 -1
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +23 -14
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +5 -1
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +1 -1
- 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 +16 -12
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -2
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +8 -7
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/interfaces/composer-runtime-core.d.ts +12 -5
- package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +18 -3
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +15 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.d.ts +1 -1
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +6 -2
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +3 -2
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +5 -4
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +1 -0
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +15 -6
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -3
- package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
- package/dist/runtime/utils/resolveToolApprovalResponse.js +12 -3
- package/dist/runtime/utils/resolveToolApprovalResponse.js.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +2 -10
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +1 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtime/utils/tool-call-tree.d.ts +39 -0
- package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -0
- package/dist/runtime/utils/tool-call-tree.js +85 -0
- package/dist/runtime/utils/tool-call-tree.js.map +1 -0
- package/dist/runtimes/external-store/external-store-adapter.d.ts +29 -2
- package/dist/runtimes/external-store/external-store-adapter.d.ts.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 +21 -27
- 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 +2 -1
- 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 +34 -28
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/internal.d.ts +2 -2
- package/dist/runtimes/internal.js +2 -2
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +3 -1
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +18 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/remote-thread-state.js +148 -43
- package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
- package/dist/runtimes/remote-thread-list/title-generation.d.ts +49 -0
- package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/title-generation.js +197 -0
- package/dist/runtimes/remote-thread-list/title-generation.js.map +1 -0
- package/dist/runtimes/remote-thread-list/title.d.ts +11 -0
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/title.js +14 -0
- package/dist/runtimes/remote-thread-list/title.js.map +1 -0
- package/dist/runtimes/remote-thread-list/types.d.ts +16 -5
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +31 -8
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +97 -60
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/external-thread.d.ts +1 -1
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +30 -7
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/model-context-client.d.ts.map +1 -1
- package/dist/store/clients/model-context-client.js +2 -1
- package/dist/store/clients/model-context-client.js.map +1 -1
- package/dist/store/clients/single-thread-list.d.ts.map +1 -1
- package/dist/store/clients/single-thread-list.js +2 -1
- package/dist/store/clients/single-thread-list.js.map +1 -1
- package/dist/store/clients/suggestions.d.ts.map +1 -1
- package/dist/store/clients/suggestions.js +19 -6
- package/dist/store/clients/suggestions.js.map +1 -1
- package/dist/store/clients/thread-message-client.js +1 -1
- package/dist/store/clients/thread-selection-events.js +1 -1
- package/dist/store/index.d.ts +2 -1
- package/dist/store/index.js +2 -1
- package/dist/store/internal.d.ts +2 -2
- package/dist/store/internal.js +2 -2
- package/dist/store/primitive-predicates.d.ts +4 -1
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +9 -1
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -0
- package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +98 -62
- package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -0
- package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +221 -144
- package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
- 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 +2 -2
- 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 +128 -107
- package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +194 -122
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts +3 -1
- package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
- package/dist/store/runtime-clients/useSubscribable.js +1 -1
- package/dist/store/runtime-clients/useSubscribable.js.map +1 -1
- package/dist/store/scopes/composer.d.ts +10 -2
- package/dist/store/scopes/composer.d.ts.map +1 -1
- package/dist/store/scopes/message.d.ts +30 -1
- package/dist/store/scopes/message.d.ts.map +1 -1
- package/dist/store/scopes/part.d.ts +6 -3
- package/dist/store/scopes/part.d.ts.map +1 -1
- package/dist/store/scopes/thread-list-item.d.ts +2 -2
- package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
- package/dist/store/scopes/thread.d.ts +8 -0
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/store/scopes/threads.d.ts +1 -0
- package/dist/store/scopes/threads.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +8 -1
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +24 -16
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/attachment.d.ts +2 -1
- package/dist/types/attachment.d.ts.map +1 -1
- package/dist/types/attachment.js +2 -1
- package/dist/types/attachment.js.map +1 -1
- package/dist/types/message.d.ts +40 -1
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +7 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/abortable-iterable.d.ts +19 -0
- package/dist/utils/abortable-iterable.d.ts.map +1 -0
- package/dist/utils/abortable-iterable.js +72 -0
- package/dist/utils/abortable-iterable.js.map +1 -0
- package/dist/utils/composite-context-provider.d.ts.map +1 -1
- package/dist/utils/composite-context-provider.js +20 -2
- package/dist/utils/composite-context-provider.js.map +1 -1
- package/dist/utils/record.d.ts +11 -0
- package/dist/utils/record.d.ts.map +1 -0
- package/dist/utils/record.js +12 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +12 -17
- package/src/adapters/attachment.test.ts +50 -1
- package/src/adapters/attachment.ts +7 -4
- package/src/index.ts +7 -1
- package/src/internal.ts +12 -0
- package/src/model-context/frame/host.test.ts +24 -0
- package/src/model-context/frame/host.ts +10 -4
- package/src/model-context/frame/provider.test.ts +288 -1
- package/src/model-context/frame/provider.ts +148 -30
- package/src/model-context/interactable-composer-metadata.test.ts +28 -0
- package/src/model-context/interactable-composer-metadata.ts +9 -3
- package/src/model-context/registry.test.ts +12 -0
- package/src/model-context/registry.ts +3 -2
- package/src/model-context/tool-call-text.test.ts +67 -0
- package/src/model-context/tool-call-text.ts +67 -0
- package/src/model-context/types.test.ts +25 -0
- package/src/model-context/types.ts +9 -4
- package/src/react/AssistantRuntimeProvider.test.tsx +66 -2
- package/src/react/RuntimeAdapter.test.ts +34 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +1 -3
- package/src/react/client/InMemoryThreadList.ts +1 -0
- package/src/react/client/Interactables.test.ts +28 -0
- package/src/react/client/Interactables.ts +15 -13
- package/src/react/client/RemoteThreadList.background.test.ts +526 -0
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +315 -0
- package/src/react/client/RemoteThreadList.test.ts +617 -3
- package/src/react/client/RemoteThreadList.ts +433 -167
- package/src/react/client/Tools.ts +29 -12
- package/src/react/index.ts +4 -0
- package/src/react/interactables-legacy/Interactables.ts +16 -16
- package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +9 -10
- package/src/react/model-context/makeAssistantTool.ts +2 -2
- package/src/react/model-context/modelContextHooks.test.tsx +131 -0
- package/src/react/model-context/toolbox.test.ts +9 -9
- package/src/react/model-context/toolbox.ts +9 -36
- package/src/react/model-context/useAssistantContext.ts +4 -2
- package/src/react/model-context/useAssistantTool.ts +2 -2
- package/src/react/model-context/useAuiToolOverrides.ts +4 -2
- package/src/react/model-context/useInlineRender.test.tsx +48 -0
- package/src/react/model-context/useInlineRender.ts +14 -10
- package/src/react/model-context/useToolArgsStatus.test.tsx +30 -0
- package/src/react/model-context/useToolArgsStatus.ts +2 -1
- package/src/react/primitive-hooks/useMessageError.ts +2 -19
- package/src/react/primitive-hooks/useThreadListLoadMore.ts +2 -3
- package/src/react/primitives/composer/ComposerAttachments.test.tsx +76 -0
- package/src/react/primitives/composer/ComposerAttachments.tsx +9 -4
- package/src/react/primitives/composer/ComposerQueue.test.tsx +72 -0
- package/src/react/primitives/composer/ComposerQueue.tsx +7 -4
- package/src/react/primitives/message/MessageAttachments.test.tsx +107 -37
- package/src/react/primitives/message/MessageAttachments.tsx +10 -7
- package/src/react/primitives/message/MessageGroupedParts.tsx +2 -2
- package/src/react/primitives/message/MessageParts.tsx +3 -3
- package/src/react/primitives/threadList/ThreadListItems.test.tsx +99 -0
- package/src/react/primitives/threadList/ThreadListItems.tsx +8 -5
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.destroy.test.tsx +172 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +127 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +7 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +99 -35
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.load-error.test.ts +132 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.switch-delete.test.ts +274 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +223 -152
- package/src/react/runtimes/RemoteThreadResource.test.ts +9 -0
- package/src/react/runtimes/RemoteThreadResource.ts +20 -16
- package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +51 -2
- package/src/react/runtimes/assistant-transport/useLatestRef.ts +2 -2
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +45 -0
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +546 -5
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +546 -103
- package/src/react/runtimes/cloud/auiV0.ts +5 -0
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +103 -0
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +237 -0
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +90 -1
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +33 -238
- package/src/react/runtimes/external-message-converter.ts +1 -0
- package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +41 -0
- package/src/react/runtimes/useExternalStoreRuntime.ts +10 -4
- package/src/react/runtimes/useLocalRuntime.test.tsx +20 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +216 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.load-error.test.tsx +108 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +57 -6
- package/src/react/types/MessagePartComponentTypes.ts +7 -3
- package/src/react/types/scopes/tools.ts +2 -0
- package/src/runtime/api/message-part-runtime.ts +3 -3
- package/src/runtime/api/message-runtime.test.ts +75 -0
- package/src/runtime/api/thread-list-item-runtime.ts +10 -3
- package/src/runtime/api/thread-list-runtime.ts +46 -12
- package/src/runtime/api/thread-runtime.test.ts +78 -0
- package/src/runtime/api/thread-runtime.ts +8 -1
- package/src/runtime/base/base-composer-runtime-core.ts +36 -8
- package/src/runtime/base/base-thread-runtime-core.test.ts +149 -4
- package/src/runtime/base/base-thread-runtime-core.ts +16 -8
- package/src/runtime/interfaces/composer-runtime-core.ts +10 -5
- package/src/runtime/interfaces/thread-list-runtime-core.ts +25 -2
- package/src/runtime/interfaces/thread-runtime-core.ts +17 -1
- package/src/runtime/utils/auto-status.test.ts +57 -0
- package/src/runtime/utils/auto-status.ts +13 -1
- package/src/runtime/utils/external-message-conversion.test.ts +165 -0
- package/src/runtime/utils/external-message-conversion.ts +18 -2
- package/src/runtime/utils/message-repository.ts +29 -17
- package/src/runtime/utils/resolveToolApprovalResponse.test.ts +73 -0
- package/src/runtime/utils/resolveToolApprovalResponse.ts +27 -6
- package/src/runtime/utils/thread-message-like.ts +3 -11
- package/src/runtime/utils/tool-call-tree.test.ts +191 -0
- package/src/runtime/utils/tool-call-tree.ts +97 -0
- package/src/runtimes/external-store/external-store-adapter.ts +38 -2
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +18 -13
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +56 -33
- package/src/runtimes/inert/InertThreadRuntimeCore.ts +1 -1
- package/src/runtimes/internal.ts +1 -0
- package/src/runtimes/local/local-thread-runtime-core.test.ts +29 -3
- package/src/runtimes/local/local-thread-runtime-core.ts +5 -1
- package/src/runtimes/remote-thread-list/remote-thread-state.test.ts +238 -0
- package/src/runtimes/remote-thread-list/remote-thread-state.ts +223 -44
- package/src/runtimes/remote-thread-list/title-generation.test.ts +602 -0
- package/src/runtimes/remote-thread-list/title-generation.ts +329 -0
- package/src/runtimes/remote-thread-list/title.test.ts +62 -0
- package/src/runtimes/remote-thread-list/title.ts +16 -0
- package/src/runtimes/remote-thread-list/types.ts +16 -5
- package/src/runtimes/tool-invocations/EDGE_CASES.md +110 -5
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +750 -136
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +144 -91
- package/src/store/clients/external-thread.ts +62 -11
- package/src/store/clients/model-context-client.ts +5 -1
- package/src/store/clients/single-thread-list.ts +1 -0
- package/src/store/clients/suggestions.test.ts +195 -1
- package/src/store/clients/suggestions.ts +45 -34
- package/src/store/index.ts +4 -0
- package/src/store/internal.ts +2 -0
- package/src/store/primitive-predicates.ts +35 -0
- package/src/store/runtime-clients/composer-runtime-client.ts +42 -9
- package/src/store/runtime-clients/message-runtime-client.ts +54 -6
- package/src/store/runtime-clients/thread-list-item-runtime-client.ts +4 -2
- package/src/store/runtime-clients/thread-list-runtime-client.ts +17 -2
- package/src/store/runtime-clients/thread-runtime-client.ts +58 -10
- package/src/store/runtime-clients/useSubscribable.ts +8 -2
- package/src/store/scopes/composer.ts +16 -4
- package/src/store/scopes/message.ts +14 -0
- package/src/store/scopes/part.ts +6 -3
- package/src/store/scopes/thread-list-item.ts +5 -2
- package/src/store/scopes/thread.ts +4 -0
- package/src/store/scopes/threads.ts +1 -0
- package/src/subscribable/subscribable.test.ts +50 -0
- package/src/subscribable/subscribable.ts +33 -21
- package/src/tests/MessageRepository.test.ts +116 -0
- package/src/tests/OptimisticState-list-race.test.ts +1 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-initialize-adapter-change.test.ts +38 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-load-race.test.ts +158 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-loadMore.test.ts +78 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-reload.test.ts +52 -0
- package/src/tests/RemoteThreadListThreadListRuntimeCore-title-race.test.ts +89 -0
- package/src/tests/attachment-adapters.test.ts +14 -0
- package/src/tests/base-composer-runtime-core.test.ts +39 -0
- package/src/tests/external-store-optimistic-id.test.ts +79 -0
- package/src/tests/external-store-repository-instance.test.ts +166 -0
- package/src/tests/external-store-thread-list-runtime-core.test.ts +83 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +49 -34
- package/src/tests/external-thread-attachments.test.tsx +224 -1
- package/src/tests/external-thread-parity.test.tsx +23 -0
- package/src/tests/remote-thread-list-adapter-switch.test.ts +66 -1
- package/src/tests/remote-thread-list-isLoading.test.ts +1 -0
- package/src/tests/thread-list-runtime-getLoadThreadsPromise.test.ts +1 -0
- package/src/tests/thread-switch-events.test.tsx +475 -2
- package/src/tests/tools-scope-migration.test.tsx +28 -0
- package/src/types/attachment.ts +4 -0
- package/src/types/message.ts +50 -2
- package/src/utils/abortable-iterable.test.ts +213 -0
- package/src/utils/abortable-iterable.ts +93 -0
- package/src/utils/composite-context-provider.test.ts +25 -0
- package/src/utils/composite-context-provider.ts +23 -2
- package/src/utils/record.test.ts +48 -0
- package/src/utils/record.ts +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadListItems.js","names":["ComponentType","FC","ReactNode","memo","useMemo","RenderChildrenWithAccessor","useAuiState","ThreadListItemState","ThreadListItemByIndexProvider","ThreadListItemsComponentConfig","ThreadListItem","ThreadListPrimitiveItems","Props","archived","components","children","value","threadListItem","ThreadListPrimitiveItemByIndex","index","t0","$","_c","t1","undefined","ThreadListItemComponent","t2","t3","prev","next","displayName","ThreadListPrimitiveItemsInner","
|
|
1
|
+
{"version":3,"file":"ThreadListItems.js","names":["ComponentType","FC","ReactNode","memo","useMemo","RenderChildrenWithAccessor","useAuiState","useShallowSelector","ThreadListItemState","ThreadListItemByIndexProvider","ThreadListItemsComponentConfig","ThreadListItem","ThreadListPrimitiveItems","Props","archived","components","children","value","threadListItem","ThreadListPrimitiveItemByIndex","index","t0","$","_c","t1","undefined","ThreadListItemComponent","t2","t3","prev","next","displayName","ThreadListPrimitiveItemsInner","threadIds","s","threads","archivedThreadIds","map","threadId","aui","item","getState","getItem"],"sources":["../../../../src/react/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["import {\n type ComponentType,\n type FC,\n type ReactNode,\n memo,\n useMemo,\n} from \"react\";\nimport { RenderChildrenWithAccessor, useAuiState } from \"@assistant-ui/store\";\nimport { useShallowSelector } from \"@assistant-ui/store/internal\";\nimport type { ThreadListItemState } from \"../../../store/scopes/thread-list-item\";\nimport { ThreadListItemByIndexProvider } from \"../../providers/ThreadListItemByIndexProvider\";\n\ntype ThreadListItemsComponentConfig = {\n ThreadListItem: ComponentType;\n};\n\nexport namespace ThreadListPrimitiveItems {\n export type Props = {\n archived?: boolean | undefined;\n } & (\n | {\n /** @deprecated Use the children render function instead. */\n components: ThreadListItemsComponentConfig;\n children?: never;\n }\n | {\n /** Render function called for each thread list item. Receives the item. */\n children: (value: { threadListItem: ThreadListItemState }) => ReactNode;\n components?: never;\n }\n );\n}\n\nexport namespace ThreadListPrimitiveItemByIndex {\n export type Props = {\n index: number;\n archived?: boolean | undefined;\n components: ThreadListItemsComponentConfig;\n };\n}\n\n/**\n * Renders a single thread list item at the specified index.\n */\nexport const ThreadListPrimitiveItemByIndex: FC<ThreadListPrimitiveItemByIndex.Props> =\n memo(\n ({ index, archived = false, components }) => {\n const ThreadListItemComponent = components.ThreadListItem;\n\n return (\n <ThreadListItemByIndexProvider index={index} archived={archived}>\n <ThreadListItemComponent />\n </ThreadListItemByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index &&\n prev.archived === next.archived &&\n prev.components.ThreadListItem === next.components.ThreadListItem,\n );\n\nThreadListPrimitiveItemByIndex.displayName = \"ThreadListPrimitive.ItemByIndex\";\n\nconst ThreadListPrimitiveItemsInner: FC<{\n archived: boolean;\n children: (value: { threadListItem: ThreadListItemState }) => ReactNode;\n}> = ({ archived, children }) => {\n const threadIds = useAuiState(\n useShallowSelector((s) =>\n archived ? s.threads.archivedThreadIds : s.threads.threadIds,\n ),\n );\n\n return useMemo(\n () =>\n threadIds.map((threadId, index) => (\n <ThreadListItemByIndexProvider\n key={threadId}\n index={index}\n archived={archived}\n >\n <RenderChildrenWithAccessor\n getItemState={(aui) =>\n aui.threads.item({ index, archived }).getState()\n }\n >\n {(getItem) =>\n children({\n get threadListItem() {\n return getItem();\n },\n })\n }\n </RenderChildrenWithAccessor>\n </ThreadListItemByIndexProvider>\n )),\n [threadIds, archived, children],\n );\n};\n\nexport const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props> = ({\n archived = false,\n components,\n children,\n}) => {\n if (components) {\n const ThreadListItemComponent = components.ThreadListItem;\n return (\n <ThreadListPrimitiveItemsInner archived={archived}>\n {() => <ThreadListItemComponent />}\n </ThreadListPrimitiveItemsInner>\n );\n }\n return (\n <ThreadListPrimitiveItemsInner archived={archived}>\n {children}\n </ThreadListPrimitiveItemsInner>\n );\n};\n\nThreadListPrimitiveItems.displayName = \"ThreadListPrimitive.Items\";\n"],"mappings":";;;;;;;;;;AA4CA,MAAamB,iCACXhB,MACEkB,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAH,OAAAN,UAAAU,IAAAT,eAAAM;CAAS,MAAAP,WAAAU,OAAAC,KAAAA,IAAA,QAAAD;CACR,MAAAE,0BAAgCX,WAAUJ;CAAgB,IAAAgB;CAAA,IAAAL,EAAA,OAAAI,yBAAA;EAItDC,KAAA,oBAAC,yBAAD,CAAwB,CAAA;EAAGL,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAR,YAAAQ,EAAA,OAAAF,SAAAE,EAAA,OAAAK,IAAA;EAD7BC,KAAA,oBAAC,+BAAD;GAAsCR;GAAiBN;GACrDa,UAAAA;EAD4B,CAAA;EAEEL,EAAA,KAAAR;EAAAQ,EAAA,KAAAF;EAAAE,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAFhCM;AAEgC,IAGnCC,MAAMC,SACLD,KAAKT,UAAUU,KAAKV,SACpBS,KAAKf,aAAagB,KAAKhB,YACvBe,KAAKd,WAAWJ,mBAAmBmB,KAAKf,WAAWJ,cACvD;AAEFQ,+BAA+BY,cAAc;AAE7C,MAAMC,iCAGA,EAAElB,UAAUE,eAAe;CAC/B,MAAMiB,YAAY3B,YAChBC,oBAAoB2B,MAClBpB,WAAWoB,EAAEC,QAAQC,oBAAoBF,EAAEC,QAAQF,SACrD,CACF;CAEA,OAAO7B,cAEH6B,UAAUI,KAAKC,UAAUlB,UACvB,oBAAC,+BAAD;EAESA;EACGN;EAEV,UAAA,oBAAC,4BAAD;GACE,eAAeyB,QACbA,IAAIJ,QAAQK,KAAK;IAAEpB;IAAON;GAAS,CAAC,CAAC,CAAC2B,SAAS;GAG/CC,WAAAA,YACA1B,SAAS,EACP,IAAIE,iBAAiB;IACnB,OAAOwB,QAAQ;GACjB,EACF,CAAC;EAEuB,CAAA;CACC,GAjBxBJ,QAiBwB,CAChC,GACH;EAACL;EAAWnB;EAAUE;CAAQ,CAChC;AACF;AAEA,MAAaJ,4BAA+DS,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAT,UAAAU,IAAAT,YAAAC,aAAAK;CAC3E,MAAAP,WAAAU,OAAAC,KAAAA,IAAA,QAAAD;CAIA,IAAIT,YAAU;EACZ,MAAAW,0BAAgCX,WAAUJ;EAAgB,IAAAgB;EAAA,IAAAL,EAAA,OAAAI,yBAAA;GAGrDC,WAAM,oBAAC,yBAAD,CAAwB,CAAA;GAAGL,EAAA,KAAAI;GAAAJ,EAAA,KAAAK;EAAA,OAAAA,KAAAL,EAAA;EAAA,IAAAM;EAAA,IAAAN,EAAA,OAAAR,YAAAQ,EAAA,OAAAK,IAAA;GADpCC,KAAA,oBAAC,+BAAD;IAAyCd;IACtCa,UAAAA;GAD2B,CAAA;GAEEL,EAAA,KAAAR;GAAAQ,EAAA,KAAAK;GAAAL,EAAA,KAAAM;EAAA,OAAAA,KAAAN,EAAA;EAAA,OAFhCM;CAEgC;CAEnC,IAAAD;CAAA,IAAAL,EAAA,OAAAR,YAAAQ,EAAA,OAAAN,UAAA;EAECW,KAAA,oBAAC,+BAAD;GAAyCb;GACtCE;EAD2B,CAAA;EAEEM,EAAA,KAAAR;EAAAQ,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFhCK;AAEgC;AAIpCf,yBAAyBmB,cAAc"}
|
|
@@ -7,7 +7,7 @@ import { QueueItemState } from "../../runtime/queue/queue-item.js";
|
|
|
7
7
|
import { QueuePlacement } from "../../runtime/queue/external-thread-queue-adapter.js";
|
|
8
8
|
import { EditComposerRuntimeCore, ThreadComposerRuntimeCore } from "../../runtime/interfaces/composer-runtime-core.js";
|
|
9
9
|
import { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, ResumeToolCallOptions, RuntimeCapabilities, SpeechState, StartRunConfig, SubmitFeedbackOptions, ThreadRuntimeEventCallback, ThreadRuntimeEventType, ThreadSuggestion, VoiceSessionState } from "../../runtime/interfaces/thread-runtime-core.js";
|
|
10
|
-
import { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core.js";
|
|
10
|
+
import { ThreadListRuntimeCore, ThreadListRuntimeEvent } from "../../runtime/interfaces/thread-list-runtime-core.js";
|
|
11
11
|
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
12
12
|
import { RuntimeAdapters } from "../../runtimes/remote-thread-list/types.js";
|
|
13
13
|
import "../../store/index.js";
|
|
@@ -44,7 +44,7 @@ declare class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
|
44
44
|
unstable_notifySessionReset: () => void;
|
|
45
45
|
addToolResult: (options: AddToolResultOptions) => void;
|
|
46
46
|
resumeToolCall: (options: ResumeToolCallOptions) => void;
|
|
47
|
-
respondToToolApproval: (options: RespondToToolApprovalOptions) => void
|
|
47
|
+
respondToToolApproval: (options: RespondToToolApprovalOptions) => Promise<void>;
|
|
48
48
|
speak: (messageId: string) => void;
|
|
49
49
|
stopSpeaking: () => void;
|
|
50
50
|
connectVoice: () => void;
|
|
@@ -98,7 +98,7 @@ declare class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
|
98
98
|
unstable_notifySessionReset: () => void;
|
|
99
99
|
addToolResult: (options: AddToolResultOptions) => void;
|
|
100
100
|
resumeToolCall: (options: ResumeToolCallOptions) => void;
|
|
101
|
-
respondToToolApproval: (options: RespondToToolApprovalOptions) => void
|
|
101
|
+
respondToToolApproval: (options: RespondToToolApprovalOptions) => Promise<void>;
|
|
102
102
|
speak: (messageId: string) => void;
|
|
103
103
|
stopSpeaking: () => void;
|
|
104
104
|
connectVoice: () => void;
|
|
@@ -152,7 +152,7 @@ declare class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
|
152
152
|
unstable_notifySessionReset: () => void;
|
|
153
153
|
addToolResult: (options: AddToolResultOptions) => void;
|
|
154
154
|
resumeToolCall: (options: ResumeToolCallOptions) => void;
|
|
155
|
-
respondToToolApproval: (options: RespondToToolApprovalOptions) => void
|
|
155
|
+
respondToToolApproval: (options: RespondToToolApprovalOptions) => Promise<void>;
|
|
156
156
|
speak: (messageId: string) => void;
|
|
157
157
|
stopSpeaking: () => void;
|
|
158
158
|
connectVoice: () => void;
|
|
@@ -193,6 +193,8 @@ declare class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
|
193
193
|
__internal_isThreadRunning(threadId: string): boolean;
|
|
194
194
|
private runningSubscribers;
|
|
195
195
|
__internal_subscribeRunningChanged(callback: () => void): Unsubscribe;
|
|
196
|
+
private threadEventSubscribers;
|
|
197
|
+
__internal_subscribeThreadEvents(callback: (event: ThreadListRuntimeEvent) => void): Unsubscribe;
|
|
196
198
|
private _publish;
|
|
197
199
|
private _publishThreadRuntime;
|
|
198
200
|
private replacedSubscribers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteThreadListHookInstanceManager.d.ts","names":[],"sources":["../../../src/react/runtimes/RemoteThreadListHookInstanceManager.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RemoteThreadListHookInstanceManager.d.ts","names":[],"sources":["../../../src/react/runtimes/RemoteThreadListHookInstanceManager.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;cAoFa,4CAA4C;UAC/C;mBACS;mBAIA;mBAIA;UAIT;UACA;UACA;EAGN,YAAA,aAAa,sBACb,QAAQ;UAOF;EAsBD,mBAAmB,mBAAgB,QAAA;;;eA7BhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CH,gCAAgC,mBAAgB,QAAA;;;eAdb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCnC,qBAAqB,mBAAgB;;;eApBW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BhD,2BAA2B;UAI1B;EAED,mCAAmC,uBAAuB;UAKzD;EAID,iCACL,WAAW,OAAO,kCACjB;UAKK;UAQA;UAsBA;EAED,oCACL,uBACC;UAKK;UAiCA;EASD,kBAAkB;EAWlB,eAAe,gBAAgB;EAO/B,8BAA8B,UAAU;EAMxC,6BACL,kBACA,UAAU;EASL;UAMC;EAcD,mBAAmB,cAAc,kBAAA;EA0BjC,iCAAiC;IACtC,UAAU,cAAc;;EAenB,iBAAiB;IAAK,cAAc;;UAOnC;UAmCA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { notifyEventListeners } from "../../utils/notify-event-listeners.js";
|
|
2
|
+
import { BaseSubscribable, WritableSubscribable, notifySubscribers } from "../../subscribable/subscribable.js";
|
|
2
3
|
import { getThreadRuntimeCoreIsRunning } from "../../runtime/api/thread-runtime.js";
|
|
3
4
|
import { ThreadListRuntimeImpl } from "../../runtime/api/thread-list-runtime.js";
|
|
4
5
|
import { invalidateThreadRuntime } from "../../runtime/utils/thread-runtime-lifecycle.js";
|
|
6
|
+
import { useSubscribable } from "../../store/runtime-clients/useSubscribable.js";
|
|
5
7
|
import { useRuntimeAdapters } from "./useRuntimeAdapters.js";
|
|
6
8
|
import { ThreadListItemRuntimeProvider } from "../providers/ThreadListItemRuntimeProvider.js";
|
|
7
9
|
import { RemoteThreadResource } from "./RemoteThreadResource.js";
|
|
@@ -9,8 +11,13 @@ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
|
9
11
|
import { Fragment, memo, useEffect, useLayoutEffect, useMemo, useRef } from "@assistant-ui/tap/react-shim";
|
|
10
12
|
import { useResources, withKey } from "@assistant-ui/tap";
|
|
11
13
|
import { jsx } from "react/jsx-runtime";
|
|
12
|
-
import { create } from "zustand";
|
|
13
14
|
//#region src/react/runtimes/RemoteThreadListHookInstanceManager.tsx
|
|
15
|
+
const THREAD_EVENTS = [
|
|
16
|
+
"runStart",
|
|
17
|
+
"runEnd",
|
|
18
|
+
"initialize",
|
|
19
|
+
"modelContextUpdate"
|
|
20
|
+
];
|
|
14
21
|
const ProviderRenderDetector = (t0) => {
|
|
15
22
|
const $ = c(3);
|
|
16
23
|
const { detectorRef } = t0;
|
|
@@ -33,14 +40,14 @@ const ProviderRenderDetector = (t0) => {
|
|
|
33
40
|
};
|
|
34
41
|
var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
35
42
|
runtimeHook;
|
|
36
|
-
adapterStore =
|
|
43
|
+
adapterStore = new WritableSubscribable({
|
|
37
44
|
defaultAdapters: null,
|
|
38
45
|
threadAdapters: /* @__PURE__ */ new Map()
|
|
39
|
-
})
|
|
40
|
-
hostStore =
|
|
46
|
+
});
|
|
47
|
+
hostStore = new WritableSubscribable({
|
|
41
48
|
threads: [],
|
|
42
49
|
hookEpoch: 0
|
|
43
|
-
})
|
|
50
|
+
});
|
|
44
51
|
pendingThreadAdapters = /* @__PURE__ */ new Map();
|
|
45
52
|
instances = /* @__PURE__ */ new Map();
|
|
46
53
|
nextGeneration = 0;
|
|
@@ -72,7 +79,8 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
72
79
|
const generation = this.nextGeneration++;
|
|
73
80
|
this.instances.set(threadId, {
|
|
74
81
|
generation,
|
|
75
|
-
isRunning: false
|
|
82
|
+
isRunning: false,
|
|
83
|
+
destroy: new AbortController()
|
|
76
84
|
});
|
|
77
85
|
this._syncHostThreads();
|
|
78
86
|
}
|
|
@@ -82,6 +90,10 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
82
90
|
const instance = this.instances.get(threadId);
|
|
83
91
|
if (!instance) return this.startThreadRuntime(threadId);
|
|
84
92
|
if (instance.runtime) invalidateThreadRuntime(instance.runtime);
|
|
93
|
+
instance.unsubscribeRunning?.();
|
|
94
|
+
instance.unsubscribeRunning = void 0;
|
|
95
|
+
instance.destroy.abort();
|
|
96
|
+
instance.destroy = new AbortController();
|
|
85
97
|
instance.generation = this.nextGeneration++;
|
|
86
98
|
this._syncHostThreads();
|
|
87
99
|
this._notifySubscribers();
|
|
@@ -100,6 +112,11 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
100
112
|
this.runningSubscribers.add(callback);
|
|
101
113
|
return () => this.runningSubscribers.delete(callback);
|
|
102
114
|
}
|
|
115
|
+
threadEventSubscribers = /* @__PURE__ */ new Set();
|
|
116
|
+
__internal_subscribeThreadEvents(callback) {
|
|
117
|
+
this.threadEventSubscribers.add(callback);
|
|
118
|
+
return () => this.threadEventSubscribers.delete(callback);
|
|
119
|
+
}
|
|
103
120
|
_publish = (threadId, runtime, generation) => {
|
|
104
121
|
this._publishThreadRuntime(threadId, runtime, generation);
|
|
105
122
|
};
|
|
@@ -110,16 +127,16 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
110
127
|
const previousRuntime = instance.runtime;
|
|
111
128
|
instance.runtime = runtime;
|
|
112
129
|
instance.publishedGeneration = generation;
|
|
113
|
-
if (previousRuntime !== runtime) this._trackRunning(instance);
|
|
130
|
+
if (previousRuntime !== runtime) this._trackRunning(threadId, instance);
|
|
114
131
|
this._notifySubscribers();
|
|
115
|
-
if (previousRuntime !== void 0 && previousRuntime !== runtime)
|
|
132
|
+
if (previousRuntime !== void 0 && previousRuntime !== runtime) notifySubscribers(this.replacedSubscribers);
|
|
116
133
|
}
|
|
117
134
|
replacedSubscribers = /* @__PURE__ */ new Set();
|
|
118
135
|
__internal_subscribeRuntimeReplaced(callback) {
|
|
119
136
|
this.replacedSubscribers.add(callback);
|
|
120
137
|
return () => this.replacedSubscribers.delete(callback);
|
|
121
138
|
}
|
|
122
|
-
_trackRunning(instance) {
|
|
139
|
+
_trackRunning(threadId, instance) {
|
|
123
140
|
instance.unsubscribeRunning?.();
|
|
124
141
|
const runtime = instance.runtime;
|
|
125
142
|
if (!runtime) {
|
|
@@ -128,19 +145,28 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
128
145
|
return;
|
|
129
146
|
}
|
|
130
147
|
this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));
|
|
131
|
-
|
|
148
|
+
const unsubscribers = [runtime.subscribe(() => {
|
|
132
149
|
this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));
|
|
133
|
-
})
|
|
150
|
+
}), ...THREAD_EVENTS.map((type) => runtime.unstable_on(type, () => {
|
|
151
|
+
notifyEventListeners(this.threadEventSubscribers, {
|
|
152
|
+
threadId,
|
|
153
|
+
type
|
|
154
|
+
}, `Thread event "${type}"`);
|
|
155
|
+
}))];
|
|
156
|
+
instance.unsubscribeRunning = () => {
|
|
157
|
+
for (const unsubscribe of unsubscribers) unsubscribe();
|
|
158
|
+
};
|
|
134
159
|
}
|
|
135
160
|
_setRunning(instance, isRunning) {
|
|
136
161
|
if (instance.isRunning === isRunning) return;
|
|
137
162
|
instance.isRunning = isRunning;
|
|
138
|
-
|
|
163
|
+
notifySubscribers(this.runningSubscribers);
|
|
139
164
|
}
|
|
140
165
|
stopThreadRuntime(threadId) {
|
|
141
166
|
const instance = this.instances.get(threadId);
|
|
142
167
|
if (instance?.runtime) invalidateThreadRuntime(instance.runtime);
|
|
143
168
|
instance?.unsubscribeRunning?.();
|
|
169
|
+
instance?.destroy.abort();
|
|
144
170
|
this.instances.delete(threadId);
|
|
145
171
|
this.pendingThreadAdapters.delete(threadId);
|
|
146
172
|
this._syncHostThreads();
|
|
@@ -149,10 +175,11 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
149
175
|
setRuntimeHook(newRuntimeHook) {
|
|
150
176
|
if (this.runtimeHook === newRuntimeHook) return;
|
|
151
177
|
this.runtimeHook = newRuntimeHook;
|
|
152
|
-
this.hostStore.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
178
|
+
const host = this.hostStore.getState();
|
|
179
|
+
this.hostStore.setState({
|
|
180
|
+
...host,
|
|
181
|
+
hookEpoch: host.hookEpoch + 1
|
|
182
|
+
});
|
|
156
183
|
}
|
|
157
184
|
__internal_setDefaultAdapters(adapters) {
|
|
158
185
|
const current = this.adapterStore.getState();
|
|
@@ -160,7 +187,7 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
160
187
|
this.adapterStore.setState({
|
|
161
188
|
...current,
|
|
162
189
|
defaultAdapters: adapters
|
|
163
|
-
}
|
|
190
|
+
});
|
|
164
191
|
}
|
|
165
192
|
__internal_setThreadAdapters(threadId, adapters) {
|
|
166
193
|
const current = this.adapterStore.getState();
|
|
@@ -170,25 +197,27 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
170
197
|
this.adapterStore.setState({
|
|
171
198
|
...current,
|
|
172
199
|
threadAdapters: next
|
|
173
|
-
}
|
|
200
|
+
});
|
|
174
201
|
}
|
|
175
202
|
__internal_dispose() {
|
|
176
203
|
for (const threadId of [...this.instances.keys()]) this.stopThreadRuntime(threadId);
|
|
177
204
|
}
|
|
178
205
|
_syncHostThreads() {
|
|
179
|
-
this.hostStore.
|
|
180
|
-
|
|
181
|
-
|
|
206
|
+
const host = this.hostStore.getState();
|
|
207
|
+
this.hostStore.setState({
|
|
208
|
+
...host,
|
|
209
|
+
threads: Array.from(this.instances.entries()).map(([id, { generation, destroy }]) => ({
|
|
182
210
|
id,
|
|
183
|
-
generation
|
|
211
|
+
generation,
|
|
212
|
+
destroySignal: destroy.signal
|
|
184
213
|
}))
|
|
185
|
-
})
|
|
214
|
+
});
|
|
186
215
|
}
|
|
187
216
|
__internal_useHost(parentClient) {
|
|
188
|
-
const { threads, hookEpoch } = this.hostStore
|
|
189
|
-
const adapters = this.adapterStore
|
|
217
|
+
const { threads, hookEpoch } = useSubscribable(this.hostStore);
|
|
218
|
+
const adapters = useSubscribable(this.adapterStore);
|
|
190
219
|
const runtimeHook = this.runtimeHook;
|
|
191
|
-
return useResources(threads.map(({ id, generation }) => {
|
|
220
|
+
return useResources(threads.map(({ id, generation, destroySignal }) => {
|
|
192
221
|
const threadAdapters = this.pendingThreadAdapters.has(id) ? this.pendingThreadAdapters.get(id) : adapters.threadAdapters.get(id) ?? adapters.defaultAdapters;
|
|
193
222
|
return withKey(`${id}:${generation}:${hookEpoch}`, RemoteThreadResource({
|
|
194
223
|
threadId: id,
|
|
@@ -197,12 +226,13 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
197
226
|
runtimeHook,
|
|
198
227
|
parentClient,
|
|
199
228
|
adapters: threadAdapters,
|
|
200
|
-
publish: this._publish
|
|
229
|
+
publish: this._publish,
|
|
230
|
+
destroySignal
|
|
201
231
|
}));
|
|
202
232
|
}));
|
|
203
233
|
}
|
|
204
234
|
__internal_RenderThreadRuntimes = ({ provider }) => {
|
|
205
|
-
this.hostStore
|
|
235
|
+
useSubscribable(this.hostStore);
|
|
206
236
|
return Array.from(this.instances.entries()).map(([threadId, { generation }]) => /* @__PURE__ */ jsx(this._OuterActiveThreadProvider, {
|
|
207
237
|
threadId,
|
|
208
238
|
provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteThreadListHookInstanceManager.js","names":["FC","RefObject","useEffect","useLayoutEffect","useMemo","useRef","memo","PropsWithChildren","ComponentType","Fragment","create","useResources","withKey","AssistantClient","ThreadListItemRuntimeProvider","ThreadRuntimeCore","ThreadListRuntimeCore","Unsubscribe","BaseSubscribable","getThreadRuntimeCoreIsRunning","ThreadListRuntimeImpl","invalidateThreadRuntime","useRuntimeAdapters","RuntimeAdapters","RemoteThreadResource","RemoteThreadListHook","RemoteThreadListHookInstance","runtime","publishedGeneration","generation","isRunning","unsubscribeRunning","AdapterSnapshot","defaultAdapters","threadAdapters","ReadonlyMap","HostSnapshot","threads","id","hookEpoch","ProviderRenderDetector","detectorRef","t0","$","_c","t1","t2","current","RemoteThreadListHookInstanceManager","runtimeHook","adapterStore","Map","hostStore","pendingThreadAdapters","instances","nextGeneration","parent","constructor","_whenRuntimeAttached","threadId","Promise","resolve","reject","callback","instance","get","dispose","Error","subscribe","startThreadRuntime","has","set","_syncHostThreads","__internal_restartThreadRuntime","_notifySubscribers","getThreadRuntimeCore","undefined","__internal_isThreadRunning","runningSubscribers","Set","__internal_subscribeRunningChanged","add","delete","_publish","_publishThreadRuntime","previousRuntime","_trackRunning","replacedSubscribers","__internal_subscribeRuntimeReplaced","_setRunning","stopThreadRuntime","setRuntimeHook","newRuntimeHook","setState","state","__internal_setDefaultAdapters","adapters","getState","__internal_setThreadAdapters","next","__internal_dispose","keys","Array","from","entries","map","__internal_useHost","parentClient","parentList","publish","__internal_RenderThreadRuntimes","provider","__internal_Host","_OuterActiveThreadProvider","Provider","getItemById","process","env","NODE_ENV","setTimeout","console","warn","clearTimeout","_AdapterSink"],"sources":["../../../src/react/runtimes/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["import {\n type FC,\n type RefObject,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n memo,\n type PropsWithChildren,\n type ComponentType,\n Fragment,\n} from \"react\";\nimport { create } from \"zustand\";\nimport { useResources, withKey } from \"@assistant-ui/tap\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport { ThreadListItemRuntimeProvider } from \"../providers/ThreadListItemRuntimeProvider\";\nimport type { ThreadRuntimeCore } from \"../../runtime/interfaces/thread-runtime-core\";\nimport type { ThreadListRuntimeCore } from \"../../runtime/interfaces/thread-list-runtime-core\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport { BaseSubscribable } from \"../../subscribable/subscribable\";\nimport { getThreadRuntimeCoreIsRunning } from \"../../runtime/api/thread-runtime\";\nimport { ThreadListRuntimeImpl } from \"../../runtime/api/thread-list-runtime\";\nimport { invalidateThreadRuntime } from \"../../runtime/utils/thread-runtime-lifecycle\";\nimport {\n useRuntimeAdapters,\n type RuntimeAdapters,\n} from \"./RuntimeAdapterProvider\";\nimport {\n RemoteThreadResource,\n type RemoteThreadListHook,\n} from \"./RemoteThreadResource\";\n\ntype RemoteThreadListHookInstance = {\n runtime?: ThreadRuntimeCore | undefined;\n publishedGeneration?: number | undefined;\n generation: number;\n isRunning: boolean;\n unsubscribeRunning?: Unsubscribe | undefined;\n};\n\ntype AdapterSnapshot = {\n defaultAdapters: RuntimeAdapters | null;\n threadAdapters: ReadonlyMap<string, RuntimeAdapters | null>;\n};\n\ntype HostSnapshot = {\n threads: readonly { id: string; generation: number }[];\n hookEpoch: number;\n};\n\nconst ProviderRenderDetector: FC<{\n detectorRef: RefObject<boolean>;\n}> = ({ detectorRef }) => {\n useLayoutEffect(() => {\n detectorRef.current = true;\n }, [detectorRef]);\n return null;\n};\n\nexport class RemoteThreadListHookInstanceManager extends BaseSubscribable {\n private runtimeHook: RemoteThreadListHook;\n private readonly adapterStore = create<AdapterSnapshot>(() => ({\n defaultAdapters: null,\n threadAdapters: new Map(),\n }));\n private readonly hostStore = create<HostSnapshot>(() => ({\n threads: [],\n hookEpoch: 0,\n }));\n private readonly pendingThreadAdapters = new Map<\n string,\n RuntimeAdapters | null\n >();\n private instances = new Map<string, RemoteThreadListHookInstance>();\n private nextGeneration = 0;\n private parent: ThreadListRuntimeCore;\n\n constructor(\n runtimeHook: RemoteThreadListHook,\n parent: ThreadListRuntimeCore,\n ) {\n super();\n this.parent = parent;\n this.runtimeHook = runtimeHook;\n }\n\n private _whenRuntimeAttached(threadId: string) {\n return new Promise<ThreadRuntimeCore>((resolve, reject) => {\n const callback = () => {\n const instance = this.instances.get(threadId);\n if (!instance) {\n dispose();\n reject(new Error(\"Thread was deleted before runtime was started\"));\n } else if (\n !instance.runtime ||\n instance.publishedGeneration !== instance.generation\n ) {\n return;\n } else {\n dispose();\n resolve(instance.runtime);\n }\n };\n const dispose = this.subscribe(callback);\n callback();\n });\n }\n\n public startThreadRuntime(threadId: string) {\n if (!this.instances.has(threadId)) {\n const generation = this.nextGeneration++;\n this.instances.set(threadId, {\n generation,\n isRunning: false,\n });\n this._syncHostThreads();\n }\n\n return this._whenRuntimeAttached(threadId);\n }\n\n public __internal_restartThreadRuntime(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance) return this.startThreadRuntime(threadId);\n\n if (instance.runtime) invalidateThreadRuntime(instance.runtime);\n instance.generation = this.nextGeneration++;\n this._syncHostThreads();\n this._notifySubscribers();\n\n return this._whenRuntimeAttached(threadId);\n }\n\n public getThreadRuntimeCore(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance) return undefined;\n return instance.runtime;\n }\n\n public __internal_isThreadRunning(threadId: string) {\n return this.instances.get(threadId)?.isRunning ?? false;\n }\n\n private runningSubscribers = new Set<() => void>();\n\n public __internal_subscribeRunningChanged(callback: () => void): Unsubscribe {\n this.runningSubscribers.add(callback);\n return () => this.runningSubscribers.delete(callback);\n }\n\n private _publish = (\n threadId: string,\n runtime: ThreadRuntimeCore,\n generation: number,\n ) => {\n this._publishThreadRuntime(threadId, runtime, generation);\n };\n\n private _publishThreadRuntime(\n threadId: string,\n runtime: ThreadRuntimeCore,\n generation: number,\n ) {\n const instance = this.instances.get(threadId);\n if (!instance) return;\n\n if (instance.generation !== generation) return;\n\n const previousRuntime = instance.runtime;\n instance.runtime = runtime;\n instance.publishedGeneration = generation;\n if (previousRuntime !== runtime) {\n this._trackRunning(instance);\n }\n this._notifySubscribers();\n if (previousRuntime !== undefined && previousRuntime !== runtime) {\n for (const callback of this.replacedSubscribers) callback();\n }\n }\n\n private replacedSubscribers = new Set<() => void>();\n\n public __internal_subscribeRuntimeReplaced(\n callback: () => void,\n ): Unsubscribe {\n this.replacedSubscribers.add(callback);\n return () => this.replacedSubscribers.delete(callback);\n }\n\n private _trackRunning(instance: RemoteThreadListHookInstance) {\n instance.unsubscribeRunning?.();\n\n const runtime = instance.runtime;\n if (!runtime) {\n instance.unsubscribeRunning = undefined;\n this._setRunning(instance, false);\n return;\n }\n\n this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));\n instance.unsubscribeRunning = runtime.subscribe(() => {\n this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));\n });\n }\n\n private _setRunning(\n instance: RemoteThreadListHookInstance,\n isRunning: boolean,\n ) {\n if (instance.isRunning === isRunning) return;\n instance.isRunning = isRunning;\n for (const callback of this.runningSubscribers) callback();\n }\n\n public stopThreadRuntime(threadId: string) {\n const instance = this.instances.get(threadId);\n if (instance?.runtime) invalidateThreadRuntime(instance.runtime);\n instance?.unsubscribeRunning?.();\n this.instances.delete(threadId);\n this.pendingThreadAdapters.delete(threadId);\n this._syncHostThreads();\n this._notifySubscribers();\n }\n\n public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {\n if (this.runtimeHook === newRuntimeHook) return;\n this.runtimeHook = newRuntimeHook;\n this.hostStore.setState(\n (state) => ({ ...state, hookEpoch: state.hookEpoch + 1 }),\n true,\n );\n }\n\n public __internal_setDefaultAdapters(adapters: RuntimeAdapters | null) {\n const current = this.adapterStore.getState();\n if (current.defaultAdapters === adapters) return;\n this.adapterStore.setState({ ...current, defaultAdapters: adapters }, true);\n }\n\n public __internal_setThreadAdapters(\n threadId: string,\n adapters: RuntimeAdapters | null,\n ) {\n const current = this.adapterStore.getState();\n const next = new Map(current.threadAdapters);\n if (adapters === null) next.delete(threadId);\n else next.set(threadId, adapters);\n this.adapterStore.setState({ ...current, threadAdapters: next }, true);\n }\n\n public __internal_dispose() {\n for (const threadId of [...this.instances.keys()]) {\n this.stopThreadRuntime(threadId);\n }\n }\n\n private _syncHostThreads() {\n this.hostStore.setState(\n (state) => ({\n ...state,\n threads: Array.from(this.instances.entries()).map(\n ([id, { generation }]) => ({ id, generation }),\n ),\n }),\n true,\n );\n }\n\n public __internal_useHost(parentClient: AssistantClient) {\n const { threads, hookEpoch } = this.hostStore();\n const adapters = this.adapterStore();\n const runtimeHook = this.runtimeHook;\n return useResources(\n threads.map(({ id, generation }) => {\n const threadAdapters = this.pendingThreadAdapters.has(id)\n ? this.pendingThreadAdapters.get(id)!\n : (adapters.threadAdapters.get(id) ?? adapters.defaultAdapters);\n return withKey(\n `${id}:${generation}:${hookEpoch}`,\n RemoteThreadResource({\n threadId: id,\n generation,\n parentList: this.parent,\n runtimeHook,\n parentClient,\n adapters: threadAdapters,\n publish: this._publish,\n }),\n );\n }),\n );\n }\n\n public __internal_RenderThreadRuntimes: FC<{\n provider: ComponentType<PropsWithChildren>;\n }> = ({ provider }) => {\n this.hostStore();\n\n return Array.from(this.instances.entries()).map(\n ([threadId, { generation }]) => (\n <this._OuterActiveThreadProvider\n key={`${threadId}:${generation}`}\n threadId={threadId}\n provider={provider}\n />\n ),\n );\n };\n\n public __internal_Host: FC<{ parentClient: AssistantClient }> = ({\n parentClient,\n }) => {\n this.__internal_useHost(parentClient);\n return null;\n };\n\n private _OuterActiveThreadProvider: FC<{\n threadId: string;\n provider: ComponentType<PropsWithChildren>;\n }> = memo(({ threadId, provider: Provider }) => {\n const runtime = useMemo(\n () => new ThreadListRuntimeImpl(this.parent).getItemById(threadId),\n [threadId],\n );\n\n const detectorRef = useRef(false);\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\" && Provider !== Fragment) {\n const id = setTimeout(() => {\n if (!detectorRef.current) {\n console.warn(\n \"RemoteThreadListAdapter.unstable_Provider did not render its `children` synchronously. \" +\n \"Render `children` on first commit; deferring them behind a loading state, Suspense boundary, \" +\n \"or `useEffect` gate strands the runtime host and leaves the thread without context.\",\n );\n }\n }, 100);\n return () => clearTimeout(id);\n }\n return undefined;\n }, [Provider]);\n\n return (\n <ThreadListItemRuntimeProvider runtime={runtime}>\n <Provider>\n <this._AdapterSink threadId={threadId} detectorRef={detectorRef} />\n </Provider>\n </ThreadListItemRuntimeProvider>\n );\n });\n\n private _AdapterSink: FC<{\n threadId: string;\n detectorRef: RefObject<boolean>;\n }> = ({ threadId, detectorRef }) => {\n const adapters = useRuntimeAdapters();\n this.pendingThreadAdapters.set(threadId, adapters);\n useLayoutEffect(() => {\n this.__internal_setThreadAdapters(threadId, adapters);\n return () => {\n if (this.pendingThreadAdapters.get(threadId) === adapters) {\n this.pendingThreadAdapters.delete(threadId);\n }\n this.__internal_setThreadAdapters(threadId, null);\n };\n }, [threadId, adapters]);\n return <ProviderRenderDetector detectorRef={detectorRef} />;\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemoteThreadListHookInstanceManager.js","names":["FC","RefObject","useEffect","useLayoutEffect","useMemo","useRef","memo","PropsWithChildren","ComponentType","Fragment","useResources","withKey","AssistantClient","ThreadListItemRuntimeProvider","ThreadRuntimeCore","ThreadRuntimeEventType","ThreadListRuntimeCore","ThreadListRuntimeEvent","Unsubscribe","BaseSubscribable","notifySubscribers","WritableSubscribable","useSubscribable","getThreadRuntimeCoreIsRunning","ThreadListRuntimeImpl","invalidateThreadRuntime","notifyEventListeners","useRuntimeAdapters","RuntimeAdapters","RemoteThreadResource","RemoteThreadListHook","THREAD_EVENTS","const","RemoteThreadListHookInstance","runtime","publishedGeneration","generation","isRunning","unsubscribeRunning","destroy","AbortController","AdapterSnapshot","defaultAdapters","threadAdapters","ReadonlyMap","HostSnapshot","threads","id","destroySignal","AbortSignal","hookEpoch","ProviderRenderDetector","detectorRef","t0","$","_c","t1","t2","current","RemoteThreadListHookInstanceManager","runtimeHook","adapterStore","Map","hostStore","pendingThreadAdapters","instances","nextGeneration","parent","constructor","_whenRuntimeAttached","threadId","Promise","resolve","reject","callback","instance","get","dispose","Error","subscribe","startThreadRuntime","has","set","_syncHostThreads","__internal_restartThreadRuntime","undefined","abort","_notifySubscribers","getThreadRuntimeCore","__internal_isThreadRunning","runningSubscribers","Set","__internal_subscribeRunningChanged","add","delete","threadEventSubscribers","event","__internal_subscribeThreadEvents","_publish","_publishThreadRuntime","previousRuntime","_trackRunning","replacedSubscribers","__internal_subscribeRuntimeReplaced","_setRunning","unsubscribers","map","type","unstable_on","unsubscribe","stopThreadRuntime","setRuntimeHook","newRuntimeHook","host","getState","setState","__internal_setDefaultAdapters","adapters","__internal_setThreadAdapters","next","__internal_dispose","keys","Array","from","entries","signal","__internal_useHost","parentClient","parentList","publish","__internal_RenderThreadRuntimes","provider","__internal_Host","_OuterActiveThreadProvider","Provider","getItemById","process","env","NODE_ENV","setTimeout","console","warn","clearTimeout","_AdapterSink"],"sources":["../../../src/react/runtimes/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["import {\n type FC,\n type RefObject,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n memo,\n type PropsWithChildren,\n type ComponentType,\n Fragment,\n} from \"react\";\nimport { useResources, withKey } from \"@assistant-ui/tap\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport { ThreadListItemRuntimeProvider } from \"../providers/ThreadListItemRuntimeProvider\";\nimport type {\n ThreadRuntimeCore,\n ThreadRuntimeEventType,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport type {\n ThreadListRuntimeCore,\n ThreadListRuntimeEvent,\n} from \"../../runtime/interfaces/thread-list-runtime-core\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport {\n BaseSubscribable,\n notifySubscribers,\n WritableSubscribable,\n} from \"../../subscribable/subscribable\";\nimport { useSubscribable } from \"../../store/runtime-clients/useSubscribable\";\nimport { getThreadRuntimeCoreIsRunning } from \"../../runtime/api/thread-runtime\";\nimport { ThreadListRuntimeImpl } from \"../../runtime/api/thread-list-runtime\";\nimport { invalidateThreadRuntime } from \"../../runtime/utils/thread-runtime-lifecycle\";\nimport { notifyEventListeners } from \"../../utils/notify-event-listeners\";\nimport {\n useRuntimeAdapters,\n type RuntimeAdapters,\n} from \"./RuntimeAdapterProvider\";\nimport {\n RemoteThreadResource,\n type RemoteThreadListHook,\n} from \"./RemoteThreadResource\";\n\nconst THREAD_EVENTS = [\n \"runStart\",\n \"runEnd\",\n \"initialize\",\n \"modelContextUpdate\",\n] as const satisfies readonly ThreadRuntimeEventType[];\n\ntype RemoteThreadListHookInstance = {\n runtime?: ThreadRuntimeCore | undefined;\n publishedGeneration?: number | undefined;\n generation: number;\n isRunning: boolean;\n unsubscribeRunning?: Unsubscribe | undefined;\n // Permanent teardown of the thread's runtime, aborted when the thread is\n // stopped or its runtime restarted. A soft unmount leaves it armed.\n destroy: AbortController;\n};\n\ntype AdapterSnapshot = {\n defaultAdapters: RuntimeAdapters | null;\n threadAdapters: ReadonlyMap<string, RuntimeAdapters | null>;\n};\n\ntype HostSnapshot = {\n threads: readonly {\n id: string;\n generation: number;\n destroySignal: AbortSignal;\n }[];\n hookEpoch: number;\n};\n\nconst ProviderRenderDetector: FC<{\n detectorRef: RefObject<boolean>;\n}> = ({ detectorRef }) => {\n useLayoutEffect(() => {\n detectorRef.current = true;\n }, [detectorRef]);\n return null;\n};\n\nexport class RemoteThreadListHookInstanceManager extends BaseSubscribable {\n private runtimeHook: RemoteThreadListHook;\n private readonly adapterStore = new WritableSubscribable<AdapterSnapshot>({\n defaultAdapters: null,\n threadAdapters: new Map(),\n });\n private readonly hostStore = new WritableSubscribable<HostSnapshot>({\n threads: [],\n hookEpoch: 0,\n });\n private readonly pendingThreadAdapters = new Map<\n string,\n RuntimeAdapters | null\n >();\n private instances = new Map<string, RemoteThreadListHookInstance>();\n private nextGeneration = 0;\n private parent: ThreadListRuntimeCore;\n\n constructor(\n runtimeHook: RemoteThreadListHook,\n parent: ThreadListRuntimeCore,\n ) {\n super();\n this.parent = parent;\n this.runtimeHook = runtimeHook;\n }\n\n private _whenRuntimeAttached(threadId: string) {\n return new Promise<ThreadRuntimeCore>((resolve, reject) => {\n const callback = () => {\n const instance = this.instances.get(threadId);\n if (!instance) {\n dispose();\n reject(new Error(\"Thread was deleted before runtime was started\"));\n } else if (\n !instance.runtime ||\n instance.publishedGeneration !== instance.generation\n ) {\n return;\n } else {\n dispose();\n resolve(instance.runtime);\n }\n };\n const dispose = this.subscribe(callback);\n callback();\n });\n }\n\n public startThreadRuntime(threadId: string) {\n if (!this.instances.has(threadId)) {\n const generation = this.nextGeneration++;\n this.instances.set(threadId, {\n generation,\n isRunning: false,\n destroy: new AbortController(),\n });\n this._syncHostThreads();\n }\n\n return this._whenRuntimeAttached(threadId);\n }\n\n public __internal_restartThreadRuntime(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance) return this.startThreadRuntime(threadId);\n\n if (instance.runtime) invalidateThreadRuntime(instance.runtime);\n // Detach before aborting, as stopThreadRuntime does: the abort runs the\n // destroy listeners synchronously, and a listener that stops the outgoing\n // runtime would otherwise emit that generation's terminal events through\n // the subscription the next generation is about to reuse.\n instance.unsubscribeRunning?.();\n instance.unsubscribeRunning = undefined;\n instance.destroy.abort();\n instance.destroy = new AbortController();\n instance.generation = this.nextGeneration++;\n this._syncHostThreads();\n this._notifySubscribers();\n\n return this._whenRuntimeAttached(threadId);\n }\n\n public getThreadRuntimeCore(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance) return undefined;\n return instance.runtime;\n }\n\n public __internal_isThreadRunning(threadId: string) {\n return this.instances.get(threadId)?.isRunning ?? false;\n }\n\n private runningSubscribers = new Set<() => void>();\n\n public __internal_subscribeRunningChanged(callback: () => void): Unsubscribe {\n this.runningSubscribers.add(callback);\n return () => this.runningSubscribers.delete(callback);\n }\n\n private threadEventSubscribers = new Set<\n (event: ThreadListRuntimeEvent) => void\n >();\n\n public __internal_subscribeThreadEvents(\n callback: (event: ThreadListRuntimeEvent) => void,\n ): Unsubscribe {\n this.threadEventSubscribers.add(callback);\n return () => this.threadEventSubscribers.delete(callback);\n }\n\n private _publish = (\n threadId: string,\n runtime: ThreadRuntimeCore,\n generation: number,\n ) => {\n this._publishThreadRuntime(threadId, runtime, generation);\n };\n\n private _publishThreadRuntime(\n threadId: string,\n runtime: ThreadRuntimeCore,\n generation: number,\n ) {\n const instance = this.instances.get(threadId);\n if (!instance) return;\n\n if (instance.generation !== generation) return;\n\n const previousRuntime = instance.runtime;\n instance.runtime = runtime;\n instance.publishedGeneration = generation;\n if (previousRuntime !== runtime) {\n this._trackRunning(threadId, instance);\n }\n this._notifySubscribers();\n if (previousRuntime !== undefined && previousRuntime !== runtime) {\n notifySubscribers(this.replacedSubscribers);\n }\n }\n\n private replacedSubscribers = new Set<() => void>();\n\n public __internal_subscribeRuntimeReplaced(\n callback: () => void,\n ): Unsubscribe {\n this.replacedSubscribers.add(callback);\n return () => this.replacedSubscribers.delete(callback);\n }\n\n private _trackRunning(\n threadId: string,\n instance: RemoteThreadListHookInstance,\n ) {\n instance.unsubscribeRunning?.();\n\n const runtime = instance.runtime;\n if (!runtime) {\n instance.unsubscribeRunning = undefined;\n this._setRunning(instance, false);\n return;\n }\n\n this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));\n const unsubscribers = [\n runtime.subscribe(() => {\n this._setRunning(instance, getThreadRuntimeCoreIsRunning(runtime));\n }),\n ...THREAD_EVENTS.map((type) =>\n runtime.unstable_on(type, () => {\n notifyEventListeners(\n this.threadEventSubscribers,\n { threadId, type },\n `Thread event \"${type}\"`,\n );\n }),\n ),\n ];\n instance.unsubscribeRunning = () => {\n for (const unsubscribe of unsubscribers) unsubscribe();\n };\n }\n\n private _setRunning(\n instance: RemoteThreadListHookInstance,\n isRunning: boolean,\n ) {\n if (instance.isRunning === isRunning) return;\n instance.isRunning = isRunning;\n notifySubscribers(this.runningSubscribers);\n }\n\n public stopThreadRuntime(threadId: string) {\n const instance = this.instances.get(threadId);\n if (instance?.runtime) invalidateThreadRuntime(instance.runtime);\n instance?.unsubscribeRunning?.();\n instance?.destroy.abort();\n this.instances.delete(threadId);\n this.pendingThreadAdapters.delete(threadId);\n this._syncHostThreads();\n this._notifySubscribers();\n }\n\n public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {\n if (this.runtimeHook === newRuntimeHook) return;\n this.runtimeHook = newRuntimeHook;\n const host = this.hostStore.getState();\n this.hostStore.setState({ ...host, hookEpoch: host.hookEpoch + 1 });\n }\n\n public __internal_setDefaultAdapters(adapters: RuntimeAdapters | null) {\n const current = this.adapterStore.getState();\n if (current.defaultAdapters === adapters) return;\n this.adapterStore.setState({ ...current, defaultAdapters: adapters });\n }\n\n public __internal_setThreadAdapters(\n threadId: string,\n adapters: RuntimeAdapters | null,\n ) {\n const current = this.adapterStore.getState();\n const next = new Map(current.threadAdapters);\n if (adapters === null) next.delete(threadId);\n else next.set(threadId, adapters);\n this.adapterStore.setState({ ...current, threadAdapters: next });\n }\n\n public __internal_dispose() {\n for (const threadId of [...this.instances.keys()]) {\n this.stopThreadRuntime(threadId);\n }\n }\n\n private _syncHostThreads() {\n const host = this.hostStore.getState();\n this.hostStore.setState({\n ...host,\n threads: Array.from(this.instances.entries()).map(\n ([id, { generation, destroy }]) => ({\n id,\n generation,\n destroySignal: destroy.signal,\n }),\n ),\n });\n }\n\n public __internal_useHost(parentClient: AssistantClient) {\n const { threads, hookEpoch } = useSubscribable(this.hostStore);\n const adapters = useSubscribable(this.adapterStore);\n const runtimeHook = this.runtimeHook;\n return useResources(\n threads.map(({ id, generation, destroySignal }) => {\n const threadAdapters = this.pendingThreadAdapters.has(id)\n ? this.pendingThreadAdapters.get(id)!\n : (adapters.threadAdapters.get(id) ?? adapters.defaultAdapters);\n return withKey(\n `${id}:${generation}:${hookEpoch}`,\n RemoteThreadResource({\n threadId: id,\n generation,\n parentList: this.parent,\n runtimeHook,\n parentClient,\n adapters: threadAdapters,\n publish: this._publish,\n destroySignal,\n }),\n );\n }),\n );\n }\n\n public __internal_RenderThreadRuntimes: FC<{\n provider: ComponentType<PropsWithChildren>;\n }> = ({ provider }) => {\n useSubscribable(this.hostStore);\n\n return Array.from(this.instances.entries()).map(\n ([threadId, { generation }]) => (\n <this._OuterActiveThreadProvider\n key={`${threadId}:${generation}`}\n threadId={threadId}\n provider={provider}\n />\n ),\n );\n };\n\n public __internal_Host: FC<{ parentClient: AssistantClient }> = ({\n parentClient,\n }) => {\n this.__internal_useHost(parentClient);\n return null;\n };\n\n private _OuterActiveThreadProvider: FC<{\n threadId: string;\n provider: ComponentType<PropsWithChildren>;\n }> = memo(({ threadId, provider: Provider }) => {\n const runtime = useMemo(\n () => new ThreadListRuntimeImpl(this.parent).getItemById(threadId),\n [threadId],\n );\n\n const detectorRef = useRef(false);\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\" && Provider !== Fragment) {\n const id = setTimeout(() => {\n if (!detectorRef.current) {\n console.warn(\n \"RemoteThreadListAdapter.unstable_Provider did not render its `children` synchronously. \" +\n \"Render `children` on first commit; deferring them behind a loading state, Suspense boundary, \" +\n \"or `useEffect` gate strands the runtime host and leaves the thread without context.\",\n );\n }\n }, 100);\n return () => clearTimeout(id);\n }\n return undefined;\n }, [Provider]);\n\n return (\n <ThreadListItemRuntimeProvider runtime={runtime}>\n <Provider>\n <this._AdapterSink threadId={threadId} detectorRef={detectorRef} />\n </Provider>\n </ThreadListItemRuntimeProvider>\n );\n });\n\n private _AdapterSink: FC<{\n threadId: string;\n detectorRef: RefObject<boolean>;\n }> = ({ threadId, detectorRef }) => {\n const adapters = useRuntimeAdapters();\n this.pendingThreadAdapters.set(threadId, adapters);\n useLayoutEffect(() => {\n this.__internal_setThreadAdapters(threadId, adapters);\n return () => {\n if (this.pendingThreadAdapters.get(threadId) === adapters) {\n this.pendingThreadAdapters.delete(threadId);\n }\n this.__internal_setThreadAdapters(threadId, null);\n };\n }, [threadId, adapters]);\n return <ProviderRenderDetector detectorRef={detectorRef} />;\n };\n}\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { QueueItemState } from "../../runtime/queue/queue-item.js";
|
|
|
7
7
|
import { QueuePlacement } from "../../runtime/queue/external-thread-queue-adapter.js";
|
|
8
8
|
import { EditComposerRuntimeCore, ThreadComposerRuntimeCore } from "../../runtime/interfaces/composer-runtime-core.js";
|
|
9
9
|
import { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, ResumeToolCallOptions, RuntimeCapabilities, SpeechState, StartRunConfig, SubmitFeedbackOptions, ThreadRuntimeEventCallback, ThreadRuntimeEventType, ThreadSuggestion, VoiceSessionState } from "../../runtime/interfaces/thread-runtime-core.js";
|
|
10
|
-
import { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core.js";
|
|
10
|
+
import { ThreadListRuntimeCore, ThreadListRuntimeEvent } from "../../runtime/interfaces/thread-list-runtime-core.js";
|
|
11
11
|
import { BaseSubscribable } from "../../subscribable/subscribable.js";
|
|
12
12
|
import { RemoteThreadListOptions } from "../../runtimes/remote-thread-list/types.js";
|
|
13
13
|
import "../../store/index.js";
|
|
@@ -28,6 +28,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
28
28
|
private _staleThreadIdsOnReplace;
|
|
29
29
|
private _switchGeneration;
|
|
30
30
|
private _switchTask;
|
|
31
|
+
private readonly _titleStates;
|
|
31
32
|
private _mainThreadId;
|
|
32
33
|
private readonly _state;
|
|
33
34
|
private readonly _useAdaptersProvider;
|
|
@@ -38,7 +39,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
38
39
|
loadMore(): Promise<void>;
|
|
39
40
|
constructor(options: RemoteThreadListOptions, contextProvider: ModelContextProvider);
|
|
40
41
|
private _initialThreadLoaded;
|
|
41
|
-
private
|
|
42
|
+
private providerStore;
|
|
42
43
|
__internal_setOptions(options: RemoteThreadListOptions): void;
|
|
43
44
|
private _requireAdapterGeneration;
|
|
44
45
|
private _requireAdapterSettled;
|
|
@@ -47,6 +48,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
47
48
|
reloadMainThread(): Promise<void>;
|
|
48
49
|
reload(): Promise<void>;
|
|
49
50
|
get isLoading(): boolean;
|
|
51
|
+
get loadError(): unknown;
|
|
50
52
|
get isLoadingMore(): boolean;
|
|
51
53
|
get hasMore(): boolean;
|
|
52
54
|
get threadIds(): readonly string[];
|
|
@@ -72,7 +74,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
72
74
|
unstable_notifySessionReset: () => void;
|
|
73
75
|
addToolResult: (options: AddToolResultOptions) => void;
|
|
74
76
|
resumeToolCall: (options: ResumeToolCallOptions) => void;
|
|
75
|
-
respondToToolApproval: (options: RespondToToolApprovalOptions) => void
|
|
77
|
+
respondToToolApproval: (options: RespondToToolApprovalOptions) => Promise<void>;
|
|
76
78
|
speak: (messageId: string) => void;
|
|
77
79
|
stopSpeaking: () => void;
|
|
78
80
|
connectVoice: () => void;
|
|
@@ -126,7 +128,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
126
128
|
unstable_notifySessionReset: () => void;
|
|
127
129
|
addToolResult: (options: AddToolResultOptions) => void;
|
|
128
130
|
resumeToolCall: (options: ResumeToolCallOptions) => void;
|
|
129
|
-
respondToToolApproval: (options: RespondToToolApprovalOptions) => void
|
|
131
|
+
respondToToolApproval: (options: RespondToToolApprovalOptions) => Promise<void>;
|
|
130
132
|
speak: (messageId: string) => void;
|
|
131
133
|
stopSpeaking: () => void;
|
|
132
134
|
connectVoice: () => void;
|
|
@@ -165,6 +167,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
165
167
|
unstable_on<E extends ThreadRuntimeEventType>(event: E, callback: ThreadRuntimeEventCallback<E>): Unsubscribe;
|
|
166
168
|
}>;
|
|
167
169
|
unstable_isThreadRunning(threadIdOrRemoteId: string): boolean;
|
|
170
|
+
unstable_subscribeThreadEvents(callback: (event: ThreadListRuntimeEvent) => void): Unsubscribe;
|
|
168
171
|
getItemById(threadIdOrRemoteId: string): RemoteThreadData | undefined;
|
|
169
172
|
switchToThread(threadIdOrRemoteId: string, options?: {
|
|
170
173
|
unarchive?: boolean;
|
|
@@ -179,7 +182,9 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
179
182
|
remoteId: string;
|
|
180
183
|
externalId: string | undefined;
|
|
181
184
|
}>;
|
|
182
|
-
generateTitle: (threadId: string
|
|
185
|
+
generateTitle: (threadId: string, options?: {
|
|
186
|
+
automatic?: boolean;
|
|
187
|
+
}) => Promise<void>;
|
|
183
188
|
rename(threadIdOrRemoteId: string, newTitle: string): Promise<void>;
|
|
184
189
|
updateCustom(threadIdOrRemoteId: string, custom: Record<string, unknown> | undefined): Promise<void>;
|
|
185
190
|
private _ensureThreadIsNotMain;
|
|
@@ -188,7 +193,7 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
188
193
|
delete(threadIdOrRemoteId: string): Promise<void>;
|
|
189
194
|
__internal_dispose(): void;
|
|
190
195
|
detach(threadIdOrRemoteId: string): Promise<void>;
|
|
191
|
-
private
|
|
196
|
+
private boundIdsStore;
|
|
192
197
|
__internal_RenderComponent: FC;
|
|
193
198
|
}
|
|
194
199
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteThreadListThreadListRuntimeCore.d.ts","names":[],"sources":["../../../src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RemoteThreadListThreadListRuntimeCore.d.ts","names":[],"sources":["../../../src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx"],"mappings":";;;;;;;;;;;;;;;;;;cA2Ea,8CACH,4BACG;UAEH;mBACS;mBACA;UAET;UACA;UACA;UACA;UACA;UACA;UACA;UACA;mBACS;UAET;mBACS;mBAIA;mBAYA;UAcT;MAUG,eAAW,SAAA,OA3DX,mBA2DW;EAIf,yBAAqB;EAmFrB,YAAY;EAwDjB,YAAA,SAAS,yBACT,iBAAiB;UA6BX;UACA;EAED,sBAAsB,SAAS;UA0C9B;UAMA;UAMA;EA8GD;EAgBM,oBAAoB;EA4B1B,UAAM;MAWF;MAIA;MAIA;MAIA;MAIA;MAIA;MAIA;MAIA;cAMC;UAKJ;UAEA;EASD,4BAAwB;;;eA7DlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEN,qBAAqB,6BAA0B;;;eANvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBxB,yBAAyB;EAMzB,+BACL,WAAW,OAAO,kCAAA;EAKb,YAAY,6BAA0B;EAItC,eACL,4BACA;IAAY;MACX;UAIK;UAgBM;EA0HP,qBAAqB;UAIpB;UAMA;UAOM;EAwBP,aAAoB,qBAAgB;;;;EA4CpC,gBACL,kBACA;IAAY;QAAqB;EAwDtB,OACX,4BACA,mBACC;EAyCU,aACX,4BACA,QAAQ,sCACP;UAoDW;EAsBD,QAAQ,6BAA0B;EAwBlC,UAAU,6BAA6B;EA4BvC,OAAO,6BAA0B;EA6BvC;EAIM,OAAO,6BAA6B;UAYzC;EAED,4BAA4B"}
|