@assistant-ui/core 0.3.17 → 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 +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -2
- package/dist/internal.js +3 -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 +2 -0
- package/dist/model-context/frame/provider.d.ts.map +1 -1
- package/dist/model-context/frame/provider.js +30 -7
- 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/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/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/react/client/InMemoryThreadList.js +62 -56
- 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 +24 -27
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts +1 -0
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +151 -141
- 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 +18 -16
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/interactables-legacy/Interactables.js +242 -121
- 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/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/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/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +16 -8
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +5 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +103 -103
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.d.ts +1 -0
- package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadResource.js +13 -11
- package/dist/react/runtimes/RemoteThreadResource.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 +401 -34
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +2 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.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 +63 -23
- package/dist/react/runtimes/useRemoteThreadListRuntime.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 +3 -0
- package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-list-runtime.js +18 -14
- package/dist/runtime/api/thread-list-runtime.js.map +1 -1
- package/dist/runtime/api/thread-runtime.d.ts +4 -0
- 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.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +6 -5
- 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 +4 -1
- package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +1 -1
- 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/thread-message-like.js +1 -1
- package/dist/runtime/utils/thread-message-like.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 +21 -27
- package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
- package/dist/runtimes/internal.d.ts +2 -2
- package/dist/runtimes/internal.js +2 -2
- 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 +130 -42
- 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 +3 -1
- package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/title.js +9 -1
- package/dist/runtimes/remote-thread-list/title.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +10 -0
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +19 -3
- 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 +1 -0
- 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 +5 -4
- package/dist/store/clients/suggestions.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 +97 -61
- 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 +1 -1
- 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 +54 -52
- 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 +193 -121
- package/dist/store/runtime-clients/thread-runtime-client.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/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/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/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 +10 -10
- package/src/adapters/attachment.test.ts +50 -1
- package/src/adapters/attachment.ts +7 -4
- package/src/index.ts +1 -0
- package/src/internal.ts +4 -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 +71 -0
- package/src/model-context/frame/provider.ts +37 -7
- 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/types.test.ts +25 -0
- package/src/model-context/types.ts +9 -4
- package/src/react/RuntimeAdapter.test.ts +34 -0
- 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 +148 -6
- package/src/react/client/RemoteThreadList.concurrent.test.tsx +42 -1
- package/src/react/client/RemoteThreadList.test.ts +345 -3
- package/src/react/client/RemoteThreadList.ts +166 -110
- package/src/react/client/Tools.ts +22 -11
- 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/useAssistantTool.ts +2 -2
- package/src/react/model-context/useToolArgsStatus.test.tsx +30 -0
- package/src/react/model-context/useToolArgsStatus.ts +2 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.destroy.test.tsx +172 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +33 -0
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +7 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +28 -5
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.load-error.test.ts +132 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.switch-delete.test.ts +105 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +136 -111
- package/src/react/runtimes/RemoteThreadResource.test.ts +9 -0
- package/src/react/runtimes/RemoteThreadResource.ts +19 -12
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +483 -6
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +504 -68
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +15 -0
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.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.load-error.test.tsx +108 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +33 -0
- 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 +21 -11
- 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 +55 -1
- package/src/runtime/base/base-thread-runtime-core.ts +6 -4
- package/src/runtime/interfaces/composer-runtime-core.ts +10 -5
- package/src/runtime/interfaces/thread-list-runtime-core.ts +5 -1
- package/src/runtime/utils/external-message-conversion.test.ts +68 -0
- package/src/runtime/utils/external-message-conversion.ts +1 -1
- package/src/runtime/utils/message-repository.ts +29 -17
- package/src/runtime/utils/thread-message-like.ts +1 -1
- package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +18 -13
- package/src/runtimes/internal.ts +1 -0
- package/src/runtimes/remote-thread-list/remote-thread-state.test.ts +128 -2
- package/src/runtimes/remote-thread-list/remote-thread-state.ts +182 -42
- 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 +13 -0
- package/src/runtimes/remote-thread-list/types.ts +10 -0
- package/src/store/clients/external-thread.ts +48 -3
- 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 +40 -0
- package/src/store/clients/suggestions.ts +13 -10
- 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 +1 -0
- package/src/store/runtime-clients/thread-runtime-client.ts +58 -10
- package/src/store/scopes/composer.ts +16 -4
- package/src/store/scopes/message.ts +14 -0
- 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/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 +47 -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-thread-list-runtime-core.test.ts +83 -0
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +27 -18
- package/src/tests/external-thread-attachments.test.tsx +139 -0
- package/src/tests/external-thread-parity.test.tsx +23 -0
- 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 +78 -0
- package/src/tests/tools-scope-migration.test.tsx +28 -0
- package/src/types/attachment.ts +4 -0
- 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
|
@@ -7,7 +7,7 @@ import "../../index.js";
|
|
|
7
7
|
* Props used to register a tool from React.
|
|
8
8
|
*
|
|
9
9
|
* @deprecated Use a toolkit with `Tools({ toolkit })` and register it via
|
|
10
|
-
* `
|
|
10
|
+
* `AuiConfig({ tools: Tools({ toolkit }) })` on the provider's `config` prop instead. See
|
|
11
11
|
* https://assistant-ui.com/docs/migrations/toolkit-tools.
|
|
12
12
|
*/
|
|
13
13
|
type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = AssistantToolProps$1<TArgs, TResult> & {
|
|
@@ -30,7 +30,7 @@ type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Assist
|
|
|
30
30
|
* @param tool - Tool definition and name to register.
|
|
31
31
|
*
|
|
32
32
|
* @deprecated Use a toolkit with `Tools({ toolkit })` and register it via
|
|
33
|
-
* `
|
|
33
|
+
* `AuiConfig({ tools: Tools({ toolkit }) })` on the provider's `config` prop instead. See
|
|
34
34
|
* https://assistant-ui.com/docs/migrations/toolkit-tools.
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
@@ -17,7 +17,7 @@ import { useAui } from "@assistant-ui/store";
|
|
|
17
17
|
* @param tool - Tool definition and name to register.
|
|
18
18
|
*
|
|
19
19
|
* @deprecated Use a toolkit with `Tools({ toolkit })` and register it via
|
|
20
|
-
* `
|
|
20
|
+
* `AuiConfig({ tools: Tools({ toolkit }) })` on the provider's `config` prop instead. See
|
|
21
21
|
* https://assistant-ui.com/docs/migrations/toolkit-tools.
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAssistantTool.js","names":["useEffect","useMemo","useAui","ToolCallMessagePartComponent","AssistantToolProps","CoreAssistantToolProps","isStandaloneToolDisplay","makeToolCallTextComponent","ToolCallText","Record","TArgs","TResult","render","renderText","useAssistantTool","tool","$","_c","aui","t0","standalone","t1","undefined","renderTextComponent","t2","tools","toolName","setToolUI","t3","t4","modelContext","render_0","display","rest","context","register","getModelContext","t5"],"sources":["../../../src/react/model-context/useAssistantTool.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type { ToolCallMessagePartComponent } from \"../types/MessagePartComponentTypes\";\nimport type { AssistantToolProps as CoreAssistantToolProps } from \"../..\";\nimport {\n isStandaloneToolDisplay,\n makeToolCallTextComponent,\n type ToolCallText,\n} from \"./toolbox\";\n\n/**\n * Props used to register a tool from React.\n *\n * @deprecated Use a toolkit with `Tools({ toolkit })` and register it via\n * `
|
|
1
|
+
{"version":3,"file":"useAssistantTool.js","names":["useEffect","useMemo","useAui","ToolCallMessagePartComponent","AssistantToolProps","CoreAssistantToolProps","isStandaloneToolDisplay","makeToolCallTextComponent","ToolCallText","Record","TArgs","TResult","render","renderText","useAssistantTool","tool","$","_c","aui","t0","standalone","t1","undefined","renderTextComponent","t2","tools","toolName","setToolUI","t3","t4","modelContext","render_0","display","rest","context","register","getModelContext","t5"],"sources":["../../../src/react/model-context/useAssistantTool.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type { ToolCallMessagePartComponent } from \"../types/MessagePartComponentTypes\";\nimport type { AssistantToolProps as CoreAssistantToolProps } from \"../..\";\nimport {\n isStandaloneToolDisplay,\n makeToolCallTextComponent,\n type ToolCallText,\n} from \"./toolbox\";\n\n/**\n * Props used to register a tool from React.\n *\n * @deprecated Use a toolkit with `Tools({ toolkit })` and register it via\n * `AuiConfig({ tools: Tools({ toolkit }) })` on the provider's `config` prop instead. See\n * https://assistant-ui.com/docs/migrations/toolkit-tools.\n */\nexport type AssistantToolProps<\n TArgs extends Record<string, unknown>,\n TResult,\n> = CoreAssistantToolProps<TArgs, TResult> & {\n /** Component used to render calls to this tool in assistant messages. */\n render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;\n /** Lightweight text rendered while a tool call is running or complete. */\n renderText?: ToolCallText<TArgs, TResult> | undefined;\n};\n\n/**\n * Registers a tool with the assistant model context while the component is\n * mounted.\n *\n * If `render` is provided, it is also installed as the renderer for matching\n * tool-call message parts. The registration is removed automatically when the\n * component unmounts or the tool definition changes.\n *\n * Pass a referentially stable tool object, such as one declared at module\n * scope or memoized with `useMemo`, to avoid re-registering on every render.\n *\n * @param tool - Tool definition and name to register.\n *\n * @deprecated Use a toolkit with `Tools({ toolkit })` and register it via\n * `AuiConfig({ tools: Tools({ toolkit }) })` on the provider's `config` prop instead. See\n * https://assistant-ui.com/docs/migrations/toolkit-tools.\n *\n * @example\n * ```tsx\n * const weatherTool = {\n * toolName: \"get_weather\",\n * type: \"frontend\",\n * description: \"Get the weather for a city.\",\n * parameters: weatherSchema,\n * execute: async ({ city }: { city: string }) => fetchWeather(city),\n * render: WeatherToolUI,\n * } satisfies AssistantToolProps<{ city: string }, Weather>;\n *\n * function WeatherToolRegistration() {\n * useAssistantTool(weatherTool);\n * return null;\n * }\n * ```\n */\nexport const useAssistantTool = <\n TArgs extends Record<string, unknown>,\n TResult,\n>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const aui = useAui();\n\n const standalone = isStandaloneToolDisplay(tool);\n const renderTextComponent = useMemo(\n () =>\n tool.renderText ? makeToolCallTextComponent(tool.renderText) : undefined,\n [tool.renderText],\n );\n const render = tool.render ?? renderTextComponent;\n\n useEffect(() => {\n if (!render) return undefined;\n return aui.tools.setToolUI(tool.toolName, render, { standalone });\n }, [aui, tool.toolName, render, standalone]);\n\n useEffect(() => {\n // `render`, `renderText`, and `display` are client-only presentation\n // concerns and never reach the model.\n const { toolName, render, renderText, display, ...rest } = tool;\n const context = {\n tools: {\n [toolName]: rest,\n },\n };\n return aui.modelContext.register({\n getModelContext: () => context,\n });\n }, [aui, tool]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,MAAac,oBAAmBC,SAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAM9B,MAAAC,MAAYhB,OAAO;CAAE,IAAAiB;CAAA,IAAAH,EAAA,OAAAD,MAAA;EAEFI,KAAAb,wBAAwBS,IAAI;EAACC,EAAA,KAAAD;EAAAC,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAhD,MAAAI,aAAmBD;CAA8B,IAAAE;CAAA,IAAAL,EAAA,OAAAD,KAAAF,YAAA;EAG7CQ,KAAAN,KAAIF,aAAcN,0BAA0BQ,KAAIF,UAAuB,IAAvES,KAAAA;EAAwEN,EAAA,KAAAD,KAAAF;EAAAG,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAF5E,MAAAO,sBAEIF;CAGJ,MAAAT,SAAeG,KAAIH,UAAJW;CAAmC,IAAAC;CAAA,IAAAR,EAAA,OAAAE,IAAAO,SAAAT,EAAA,OAAAJ,UAAAI,EAAA,OAAAI,cAAAJ,EAAA,OAAAD,KAAAW,UAAA;EAExCF,WAAA;GACR,IAAI,CAACZ,QAAM;GAAmB,OACvBM,IAAGO,MAAME,UAAWZ,KAAIW,UAAWd,QAAQ,EAAAQ,WAAa,CAAC;EAAC;EAClEJ,EAAA,KAAAE,IAAAO;EAAAT,EAAA,KAAAJ;EAAAI,EAAA,KAAAI;EAAAJ,EAAA,KAAAD,KAAAW;EAAAV,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,OAAAF,EAAA,QAAAJ,UAAAI,EAAA,QAAAI,cAAAJ,EAAA,QAAAD,KAAAW,UAAA;EAAEE,KAAA;GAACV;GAAKH,KAAIW;GAAWd;GAAQQ;EAAU;EAACJ,EAAA,KAAAE;EAAAF,EAAA,MAAAJ;EAAAI,EAAA,MAAAI;EAAAJ,EAAA,MAAAD,KAAAW;EAAAV,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAH3ChB,UAAUwB,IAGPI,EAAwC;CAAC,IAAAC;CAAA,IAAAb,EAAA,QAAAE,IAAAY,gBAAAd,EAAA,QAAAD,MAAA;EAElCc,WAAA;GAGR,MAAA,EAAAH,UAAAd,QAAAmB,UAAAlB,YAAAmB,SAAA,GAAAC,SAA2DlB;GAC3D,MAAAmB,UAAgB,EAAAT,OACP,GACJC,WAAWO,KACd,EACF;GAAE,OACKf,IAAGY,aAAaK,SAAU,EAAAC,uBACRF,QACzB,CAAC;EAAC;EACHlB,EAAA,MAAAE,IAAAY;EAAAd,EAAA,MAAAD;EAAAC,EAAA,MAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAE,OAAAF,EAAA,QAAAD,MAAA;EAAEsB,KAAA,CAACnB,KAAKH,IAAI;EAACC,EAAA,MAAAE;EAAAF,EAAA,MAAAD;EAAAC,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAZdhB,UAAU6B,IAYPQ,EAAW;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToolArgsStatus.d.ts","names":[],"sources":["../../../src/react/model-context/useToolArgsStatus.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useToolArgsStatus.d.ts","names":[],"sources":["../../../src/react/model-context/useToolArgsStatus.ts"],"mappings":";KAQK;;;;KAKO,eACV,cAAc,0BAA0B;;EAGxC;;EAEA,YAAY,QAAQ,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;cA2B7B,oBACX,cAAc,0BAA0B,8BACrC,eAAe"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { nullProtoRecord } from "../../utils/record.js";
|
|
1
2
|
import { getPartialJsonObjectFieldState, getPartialJsonObjectMeta } from "assistant-stream/utils";
|
|
2
3
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
4
|
import "@assistant-ui/tap/react-shim";
|
|
@@ -45,7 +46,7 @@ const useToolArgsStatus = () => {
|
|
|
45
46
|
const meta = t2;
|
|
46
47
|
let propStatus;
|
|
47
48
|
if ($[2] !== args || $[3] !== isStreaming || $[4] !== meta) {
|
|
48
|
-
propStatus =
|
|
49
|
+
propStatus = nullProtoRecord();
|
|
49
50
|
for (const key of Object.keys(args)) if (meta) {
|
|
50
51
|
const fieldState = getPartialJsonObjectFieldState(args, [key]);
|
|
51
52
|
propStatus[key] = fieldState === "complete" || !isStreaming ? "complete" : "streaming";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToolArgsStatus.js","names":["useMemo","useAuiState","getPartialJsonObjectFieldState","getPartialJsonObjectMeta","PropFieldStatus","ToolArgsStatus","Record","status","propStatus","Partial","TArgs","useToolArgsStatus","$","_c","part","_temp","t0","statusType","type","Error","isStreaming","args","t1","t2","meta","key","Object","keys","fieldState","t3","t4","s"],"sources":["../../../src/react/model-context/useToolArgsStatus.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport {\n getPartialJsonObjectFieldState,\n getPartialJsonObjectMeta,\n} from \"assistant-stream/utils\";\n\ntype PropFieldStatus = \"streaming\" | \"complete\";\n\n/**\n * Streaming completion status for the arguments of the current tool call.\n */\nexport type ToolArgsStatus<\n TArgs extends Record<string, unknown> = Record<string, unknown>,\n> = {\n /** Overall lifecycle state of the tool-call part. */\n status: \"running\" | \"complete\" | \"incomplete\" | \"requires-action\";\n /** Per-argument status keyed by argument name. */\n propStatus: Partial<Record<keyof TArgs, PropFieldStatus>>;\n};\n\n/**\n * Reads whether each argument field for the current tool-call message part is\n * still streaming or complete.\n *\n * Use inside a tool-call renderer to avoid showing incomplete argument values\n * as final.\n *\n * @throws If called outside a tool-call message part.\n *\n * @example\n * ```tsx\n * function WeatherToolUI({\n * args,\n * }: ToolCallMessagePartProps<{ city: string }>) {\n * const { propStatus } = useToolArgsStatus<{ city: string }>();\n *\n * return (\n * <span>\n * {propStatus.city === \"streaming\" ? \"Reading city...\" : args.city}\n * </span>\n * );\n * }\n * ```\n */\nexport const useToolArgsStatus = <\n TArgs extends Record<string, unknown> = Record<string, unknown>,\n>(): ToolArgsStatus<TArgs> => {\n const part = useAuiState((s) => s.part);\n\n return useMemo(() => {\n const statusType = part.status.type;\n\n if (part.type !== \"tool-call\") {\n throw new Error(\n \"useToolArgsStatus can only be used inside tool-call message parts\",\n );\n }\n\n const isStreaming = statusType === \"running\";\n const args = part.args as Record<string, unknown>;\n const meta = getPartialJsonObjectMeta(args as Record<symbol, unknown>);\n const propStatus
|
|
1
|
+
{"version":3,"file":"useToolArgsStatus.js","names":["useMemo","useAuiState","getPartialJsonObjectFieldState","getPartialJsonObjectMeta","nullProtoRecord","PropFieldStatus","ToolArgsStatus","Record","status","propStatus","Partial","TArgs","useToolArgsStatus","$","_c","part","_temp","t0","statusType","type","Error","isStreaming","args","t1","t2","meta","key","Object","keys","fieldState","t3","t4","s"],"sources":["../../../src/react/model-context/useToolArgsStatus.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport {\n getPartialJsonObjectFieldState,\n getPartialJsonObjectMeta,\n} from \"assistant-stream/utils\";\nimport { nullProtoRecord } from \"../../utils/record\";\n\ntype PropFieldStatus = \"streaming\" | \"complete\";\n\n/**\n * Streaming completion status for the arguments of the current tool call.\n */\nexport type ToolArgsStatus<\n TArgs extends Record<string, unknown> = Record<string, unknown>,\n> = {\n /** Overall lifecycle state of the tool-call part. */\n status: \"running\" | \"complete\" | \"incomplete\" | \"requires-action\";\n /** Per-argument status keyed by argument name. */\n propStatus: Partial<Record<keyof TArgs, PropFieldStatus>>;\n};\n\n/**\n * Reads whether each argument field for the current tool-call message part is\n * still streaming or complete.\n *\n * Use inside a tool-call renderer to avoid showing incomplete argument values\n * as final.\n *\n * @throws If called outside a tool-call message part.\n *\n * @example\n * ```tsx\n * function WeatherToolUI({\n * args,\n * }: ToolCallMessagePartProps<{ city: string }>) {\n * const { propStatus } = useToolArgsStatus<{ city: string }>();\n *\n * return (\n * <span>\n * {propStatus.city === \"streaming\" ? \"Reading city...\" : args.city}\n * </span>\n * );\n * }\n * ```\n */\nexport const useToolArgsStatus = <\n TArgs extends Record<string, unknown> = Record<string, unknown>,\n>(): ToolArgsStatus<TArgs> => {\n const part = useAuiState((s) => s.part);\n\n return useMemo(() => {\n const statusType = part.status.type;\n\n if (part.type !== \"tool-call\") {\n throw new Error(\n \"useToolArgsStatus can only be used inside tool-call message parts\",\n );\n }\n\n const isStreaming = statusType === \"running\";\n const args = part.args as Record<string, unknown>;\n const meta = getPartialJsonObjectMeta(args as Record<symbol, unknown>);\n const propStatus = nullProtoRecord<PropFieldStatus>();\n\n for (const key of Object.keys(args)) {\n if (meta) {\n const fieldState = getPartialJsonObjectFieldState(args, [key]);\n propStatus[key] =\n fieldState === \"complete\" || !isStreaming ? \"complete\" : \"streaming\";\n } else {\n propStatus[key] = isStreaming ? \"streaming\" : \"complete\";\n }\n }\n\n return {\n status: statusType,\n propStatus: propStatus as Partial<Record<keyof TArgs, PropFieldStatus>>,\n };\n }, [part]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAaY,0BAAoB;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAG/B,MAAAC,OAAad,YAAYe,KAAa;CAAE,IAAAC;CAGtC,MAAAC,aAAmBH,KAAIP,OAAOW;CAE9B,IAAIJ,KAAII,SAAU,aAChB,MAAM,IAAIC,MACR,mEACF;CAGF,MAAAC,cAAoBH,eAAe;CACnC,MAAAI,OAAaP,KAAIO;CACqB,MAAAC,KAAAD;CAA+B,IAAAE;CAAA,IAAAX,EAAA,OAAAU,IAAA;EAAxDC,KAAArB,yBAAyBoB,EAA+B;EAACV,EAAA,KAAAU;EAAAV,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAtE,MAAAY,OAAaD;CAA0D,IAAAf;CAAA,IAAAI,EAAA,OAAAS,QAAAT,EAAA,OAAAQ,eAAAR,EAAA,OAAAY,MAAA;EACvEhB,aAAmBL,gBAAiC;EAEpD,KAAK,MAAAsB,OAAaC,OAAMC,KAAMN,IAAI,GAChC,IAAIG,MAAI;GACN,MAAAI,aAAmB3B,+BAA+BoB,MAAM,CAACI,GAAG,CAAC;GAC7DjB,WAAWiB,OACTG,eAAe,cAAf,CAA8BR,cAA9B,aAAA;EADa,OAGfZ,WAAWiB,OAAOL,cAAA,cAAA;EAErBR,EAAA,KAAAS;EAAAT,EAAA,KAAAQ;EAAAR,EAAA,KAAAY;EAAAZ,EAAA,KAAAJ;CAAA,OAAAA,aAAAI,EAAA;CAIa,MAAAiB,KAAArB;CAA2D,IAAAsB;CAAA,IAAAlB,EAAA,OAAAK,cAAAL,EAAA,OAAAiB,IAAA;EAFlEC,KAAA;GAAAvB,QACGU;GAAUT,YACNqB;EACd;EAACjB,EAAA,KAAAK;EAAAL,EAAA,KAAAiB;EAAAjB,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAHDI,KAAOc;CAGL,OA3BGd;AA4BG;AAjCqB,SAAAD,MAAAgB,GAAA;CAAA,OAGCA,EAACjB;AAAK"}
|
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
import { notifyEventListeners } from "../../utils/notify-event-listeners.js";
|
|
2
|
-
import { BaseSubscribable, WritableSubscribable } from "../../subscribable/subscribable.js";
|
|
2
|
+
import { BaseSubscribable, WritableSubscribable, notifySubscribers } from "../../subscribable/subscribable.js";
|
|
3
3
|
import { getThreadRuntimeCoreIsRunning } from "../../runtime/api/thread-runtime.js";
|
|
4
4
|
import { ThreadListRuntimeImpl } from "../../runtime/api/thread-list-runtime.js";
|
|
5
5
|
import { invalidateThreadRuntime } from "../../runtime/utils/thread-runtime-lifecycle.js";
|
|
@@ -79,7 +79,8 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
79
79
|
const generation = this.nextGeneration++;
|
|
80
80
|
this.instances.set(threadId, {
|
|
81
81
|
generation,
|
|
82
|
-
isRunning: false
|
|
82
|
+
isRunning: false,
|
|
83
|
+
destroy: new AbortController()
|
|
83
84
|
});
|
|
84
85
|
this._syncHostThreads();
|
|
85
86
|
}
|
|
@@ -89,6 +90,10 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
89
90
|
const instance = this.instances.get(threadId);
|
|
90
91
|
if (!instance) return this.startThreadRuntime(threadId);
|
|
91
92
|
if (instance.runtime) invalidateThreadRuntime(instance.runtime);
|
|
93
|
+
instance.unsubscribeRunning?.();
|
|
94
|
+
instance.unsubscribeRunning = void 0;
|
|
95
|
+
instance.destroy.abort();
|
|
96
|
+
instance.destroy = new AbortController();
|
|
92
97
|
instance.generation = this.nextGeneration++;
|
|
93
98
|
this._syncHostThreads();
|
|
94
99
|
this._notifySubscribers();
|
|
@@ -124,7 +129,7 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
124
129
|
instance.publishedGeneration = generation;
|
|
125
130
|
if (previousRuntime !== runtime) this._trackRunning(threadId, instance);
|
|
126
131
|
this._notifySubscribers();
|
|
127
|
-
if (previousRuntime !== void 0 && previousRuntime !== runtime)
|
|
132
|
+
if (previousRuntime !== void 0 && previousRuntime !== runtime) notifySubscribers(this.replacedSubscribers);
|
|
128
133
|
}
|
|
129
134
|
replacedSubscribers = /* @__PURE__ */ new Set();
|
|
130
135
|
__internal_subscribeRuntimeReplaced(callback) {
|
|
@@ -155,12 +160,13 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
155
160
|
_setRunning(instance, isRunning) {
|
|
156
161
|
if (instance.isRunning === isRunning) return;
|
|
157
162
|
instance.isRunning = isRunning;
|
|
158
|
-
|
|
163
|
+
notifySubscribers(this.runningSubscribers);
|
|
159
164
|
}
|
|
160
165
|
stopThreadRuntime(threadId) {
|
|
161
166
|
const instance = this.instances.get(threadId);
|
|
162
167
|
if (instance?.runtime) invalidateThreadRuntime(instance.runtime);
|
|
163
168
|
instance?.unsubscribeRunning?.();
|
|
169
|
+
instance?.destroy.abort();
|
|
164
170
|
this.instances.delete(threadId);
|
|
165
171
|
this.pendingThreadAdapters.delete(threadId);
|
|
166
172
|
this._syncHostThreads();
|
|
@@ -200,9 +206,10 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
200
206
|
const host = this.hostStore.getState();
|
|
201
207
|
this.hostStore.setState({
|
|
202
208
|
...host,
|
|
203
|
-
threads: Array.from(this.instances.entries()).map(([id, { generation }]) => ({
|
|
209
|
+
threads: Array.from(this.instances.entries()).map(([id, { generation, destroy }]) => ({
|
|
204
210
|
id,
|
|
205
|
-
generation
|
|
211
|
+
generation,
|
|
212
|
+
destroySignal: destroy.signal
|
|
206
213
|
}))
|
|
207
214
|
});
|
|
208
215
|
}
|
|
@@ -210,7 +217,7 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
210
217
|
const { threads, hookEpoch } = useSubscribable(this.hostStore);
|
|
211
218
|
const adapters = useSubscribable(this.adapterStore);
|
|
212
219
|
const runtimeHook = this.runtimeHook;
|
|
213
|
-
return useResources(threads.map(({ id, generation }) => {
|
|
220
|
+
return useResources(threads.map(({ id, generation, destroySignal }) => {
|
|
214
221
|
const threadAdapters = this.pendingThreadAdapters.has(id) ? this.pendingThreadAdapters.get(id) : adapters.threadAdapters.get(id) ?? adapters.defaultAdapters;
|
|
215
222
|
return withKey(`${id}:${generation}:${hookEpoch}`, RemoteThreadResource({
|
|
216
223
|
threadId: id,
|
|
@@ -219,7 +226,8 @@ var RemoteThreadListHookInstanceManager = class extends BaseSubscribable {
|
|
|
219
226
|
runtimeHook,
|
|
220
227
|
parentClient,
|
|
221
228
|
adapters: threadAdapters,
|
|
222
|
-
publish: this._publish
|
|
229
|
+
publish: this._publish,
|
|
230
|
+
destroySignal
|
|
223
231
|
}));
|
|
224
232
|
}));
|
|
225
233
|
}
|
|
@@ -1 +1 @@
|
|
|
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","WritableSubscribable","useSubscribable","getThreadRuntimeCoreIsRunning","ThreadListRuntimeImpl","invalidateThreadRuntime","notifyEventListeners","useRuntimeAdapters","RuntimeAdapters","RemoteThreadResource","RemoteThreadListHook","THREAD_EVENTS","const","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","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","__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 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};\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 = 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 });\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 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 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(\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 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 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 }]) => ({ id, generation }),\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 }) => {\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 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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"}
|
|
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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"}
|
|
@@ -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;
|
|
@@ -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[];
|
|
@@ -180,7 +182,9 @@ declare class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable imp
|
|
|
180
182
|
remoteId: string;
|
|
181
183
|
externalId: string | undefined;
|
|
182
184
|
}>;
|
|
183
|
-
generateTitle: (threadId: string
|
|
185
|
+
generateTitle: (threadId: string, options?: {
|
|
186
|
+
automatic?: boolean;
|
|
187
|
+
}) => Promise<void>;
|
|
184
188
|
rename(threadIdOrRemoteId: string, newTitle: string): Promise<void>;
|
|
185
189
|
updateCustom(threadIdOrRemoteId: string, custom: Record<string, unknown> | undefined): Promise<void>;
|
|
186
190
|
private _ensureThreadIsNotMain;
|
|
@@ -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"}
|