@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
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { OptimisticState } from "../../runtimes/remote-thread-list/optimistic-state.js";
|
|
2
|
-
import { classifyThreads, createEmptyRemoteThreadState, createThreadMappingId, getThreadData, normalizeCursor, preserveMidLoadTransitions, seedNewThread, statusSnapshot, updateStatusReducer } from "../../runtimes/remote-thread-list/remote-thread-state.js";
|
|
2
|
+
import { classifyThreads, createEmptyRemoteThreadState, createThreadMappingId, getThreadData, normalizeCursor, preserveMidLoadTransitions, promoteNewThreadReducer, reconcileInitializedThread, seedNewThread, statusSnapshot, updateStatusReducer } from "../../runtimes/remote-thread-list/remote-thread-state.js";
|
|
3
3
|
import { handleThreadListAction } from "../../store/runtime-clients/handle-thread-list-action.js";
|
|
4
4
|
import { useThreadSelectionEvents } from "../../store/clients/thread-selection-events.js";
|
|
5
5
|
import { isDevelopment } from "../../store/env.js";
|
|
6
6
|
import { inMemoryThreadListTransformScopes } from "./InMemoryThreadList.js";
|
|
7
7
|
import { ThreadListAdapterChangedError } from "../../runtimes/remote-thread-list/adapter-changed.js";
|
|
8
8
|
import { AdaptedRemoteThread } from "./AdaptedRemoteThread.js";
|
|
9
|
-
import { isTitleSourceMessage } from "../../runtimes/remote-thread-list/title.js";
|
|
9
|
+
import { applyTitleStream, isTitleSourceMessage } from "../../runtimes/remote-thread-list/title.js";
|
|
10
|
+
import { clearThreadTitleState, finishThreadTitleRename, runThreadTitleGeneration, startThreadTitleRename } from "../../runtimes/remote-thread-list/title-generation.js";
|
|
10
11
|
import { Derived, attachTransformScopes, useAssistantContextProvider, useAssistantContextValue, useClientLookup, useClientResource, useConfiguredAui } from "@assistant-ui/store/client";
|
|
11
|
-
import { AssistantMessageStream } from "assistant-stream";
|
|
12
12
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
13
13
|
import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "@assistant-ui/tap/react-shim";
|
|
14
14
|
import { resource, withKey } from "@assistant-ui/tap";
|
|
@@ -21,10 +21,6 @@ const toInitializeResult = (result) => ({
|
|
|
21
21
|
remoteId: result.remoteId,
|
|
22
22
|
externalId: result.externalId
|
|
23
23
|
});
|
|
24
|
-
const applyTitleStream = async (stream, onTitle) => {
|
|
25
|
-
const messageStream = AssistantMessageStream.fromAssistantStream(stream);
|
|
26
|
-
for await (const result of messageStream) await onTitle(result.parts.filter((part) => part.type === "text")[0]?.text);
|
|
27
|
-
};
|
|
28
24
|
const useThreadListItemClient = (props) => {
|
|
29
25
|
const $ = c(22);
|
|
30
26
|
const { data, isRunning, onSwitchTo, onRename, onUpdateCustom, onArchive, onUnarchive, onDelete, onGenerateTitle, onInitialize, onDetach } = props;
|
|
@@ -140,7 +136,7 @@ const useRemoteThreadBody = ({ id, status, remoteId, item, thread }) => {
|
|
|
140
136
|
useEffect(() => {
|
|
141
137
|
if (!hasTitleSource || titleFiredRef.current) return;
|
|
142
138
|
titleFiredRef.current = true;
|
|
143
|
-
client.threadListItem.generateTitle();
|
|
139
|
+
client.threadListItem.generateTitle({ automatic: true });
|
|
144
140
|
}, [hasTitleSource]);
|
|
145
141
|
return body.methods;
|
|
146
142
|
});
|
|
@@ -203,7 +199,7 @@ const useRemoteThreadListView = (t0) => {
|
|
|
203
199
|
onArchive: () => handleThreadListAction("archive", () => onArchive(data_0.id)),
|
|
204
200
|
onUnarchive: () => handleThreadListAction("unarchive", () => onUnarchive(data_0.id)),
|
|
205
201
|
onDelete: () => handleThreadListAction("delete", () => onDelete(data_0.id)),
|
|
206
|
-
onGenerateTitle: () => handleThreadListAction("generate title", () => onGenerateTitle(data_0.id, backgroundThreads ? bodyStateOf(data_0.id)?.messages : mainThreadClient.state.messages)),
|
|
202
|
+
onGenerateTitle: (options_0) => handleThreadListAction("generate title", () => onGenerateTitle(data_0.id, backgroundThreads ? bodyStateOf(data_0.id)?.messages : mainThreadClient.state.messages, options_0)),
|
|
207
203
|
onInitialize: () => onInitialize(data_0.id),
|
|
208
204
|
onDetach: () => handleThreadListAction("detach", () => onDetach(data_0.id))
|
|
209
205
|
});
|
|
@@ -297,6 +293,7 @@ const useRemoteThreadList = (props) => {
|
|
|
297
293
|
adapter,
|
|
298
294
|
adapterAtLoad: adapter,
|
|
299
295
|
adapterGeneration: 0,
|
|
296
|
+
titleStates: /* @__PURE__ */ new Map(),
|
|
300
297
|
loadGeneration: 0,
|
|
301
298
|
switchGeneration: 0,
|
|
302
299
|
loadPromise: void 0,
|
|
@@ -352,7 +349,8 @@ const useRemoteThreadList = (props) => {
|
|
|
352
349
|
if (generation !== session.loadGeneration) return state;
|
|
353
350
|
return {
|
|
354
351
|
...state,
|
|
355
|
-
isLoading: true
|
|
352
|
+
isLoading: true,
|
|
353
|
+
loadError: void 0
|
|
356
354
|
};
|
|
357
355
|
},
|
|
358
356
|
then: (state_0, page) => {
|
|
@@ -367,6 +365,7 @@ const useRemoteThreadList = (props) => {
|
|
|
367
365
|
const merged = {
|
|
368
366
|
...state_0,
|
|
369
367
|
isLoading: false,
|
|
368
|
+
loadError: void 0,
|
|
370
369
|
cursor: normalizeCursor(page.nextCursor),
|
|
371
370
|
threadIds: fresh.threadIds,
|
|
372
371
|
archivedThreadIds: fresh.archivedThreadIds,
|
|
@@ -381,7 +380,8 @@ const useRemoteThreadList = (props) => {
|
|
|
381
380
|
session.loadPromise = void 0;
|
|
382
381
|
store.update({
|
|
383
382
|
...store.baseValue,
|
|
384
|
-
isLoading: false
|
|
383
|
+
isLoading: false,
|
|
384
|
+
loadError: error
|
|
385
385
|
});
|
|
386
386
|
}).then(() => {});
|
|
387
387
|
return session.loadPromise;
|
|
@@ -393,6 +393,7 @@ const useRemoteThreadList = (props) => {
|
|
|
393
393
|
session.loadMorePromise = void 0;
|
|
394
394
|
if (adapterChanged) {
|
|
395
395
|
session.adapterGeneration++;
|
|
396
|
+
session.titleStates.clear();
|
|
396
397
|
session.switchGeneration++;
|
|
397
398
|
session.switchTask = void 0;
|
|
398
399
|
session.adapterAtLoad = adapter;
|
|
@@ -417,6 +418,21 @@ const useRemoteThreadList = (props) => {
|
|
|
417
418
|
session,
|
|
418
419
|
store
|
|
419
420
|
]);
|
|
421
|
+
useEffect(() => {
|
|
422
|
+
if (typeof window === "undefined" || typeof document === "undefined") return;
|
|
423
|
+
const retryAfterError = () => {
|
|
424
|
+
if (store.value.loadError !== void 0) getLoadThreadsPromise();
|
|
425
|
+
};
|
|
426
|
+
const retryAfterVisible = () => {
|
|
427
|
+
if (document.visibilityState === "visible") retryAfterError();
|
|
428
|
+
};
|
|
429
|
+
window.addEventListener("online", retryAfterError);
|
|
430
|
+
document.addEventListener("visibilitychange", retryAfterVisible);
|
|
431
|
+
return () => {
|
|
432
|
+
window.removeEventListener("online", retryAfterError);
|
|
433
|
+
document.removeEventListener("visibilitychange", retryAfterVisible);
|
|
434
|
+
};
|
|
435
|
+
}, [getLoadThreadsPromise, store]);
|
|
420
436
|
useEffect(() => {
|
|
421
437
|
getLoadThreadsPromise();
|
|
422
438
|
}, [getLoadThreadsPromise]);
|
|
@@ -609,60 +625,30 @@ const useRemoteThreadList = (props) => {
|
|
|
609
625
|
requireAdapterGeneration(adapterGeneration);
|
|
610
626
|
return result;
|
|
611
627
|
}
|
|
628
|
+
requireAdapterGeneration(adapterGeneration);
|
|
629
|
+
const initializeTask = currentAdapter_0.initialize(threadId_1);
|
|
630
|
+
let removedMappingId;
|
|
631
|
+
let replacementMainThreadId;
|
|
612
632
|
const result_0 = await store.optimisticUpdate({
|
|
613
|
-
execute: () =>
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
threadData: {
|
|
623
|
-
...state_6.threadData,
|
|
624
|
-
[mappingId_0]: {
|
|
625
|
-
...state_6.threadData[mappingId_0],
|
|
626
|
-
initializeTask: task_1
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
};
|
|
630
|
-
},
|
|
631
|
-
then: (state_7, { remoteId: remoteId_1, externalId }) => {
|
|
632
|
-
if (adapterGeneration !== session.adapterGeneration) return state_7;
|
|
633
|
-
const data_1 = getThreadData(state_7, threadId_1);
|
|
634
|
-
if (!data_1) return state_7;
|
|
635
|
-
const mappingId_1 = createThreadMappingId(threadId_1);
|
|
636
|
-
const listedMappingId = state_7.threadIdMap[remoteId_1];
|
|
637
|
-
const orphan = listedMappingId !== void 0 && listedMappingId !== mappingId_1 ? state_7.threadData[listedMappingId] : void 0;
|
|
638
|
-
const threadData = { ...state_7.threadData };
|
|
639
|
-
if (orphan !== void 0) delete threadData[listedMappingId];
|
|
640
|
-
threadData[mappingId_1] = {
|
|
641
|
-
...data_1,
|
|
642
|
-
initializeTask: Promise.resolve({
|
|
643
|
-
remoteId: remoteId_1,
|
|
644
|
-
externalId
|
|
645
|
-
}),
|
|
646
|
-
remoteId: remoteId_1,
|
|
647
|
-
externalId
|
|
648
|
-
};
|
|
649
|
-
const rewire = (ids) => orphan === void 0 ? ids : ids.filter((id_2) => id_2 !== orphan.id);
|
|
650
|
-
return {
|
|
651
|
-
...state_7,
|
|
652
|
-
threadIds: rewire(state_7.threadIds),
|
|
653
|
-
archivedThreadIds: rewire(state_7.archivedThreadIds),
|
|
654
|
-
threadIdMap: {
|
|
655
|
-
...state_7.threadIdMap,
|
|
656
|
-
[remoteId_1]: mappingId_1
|
|
657
|
-
},
|
|
658
|
-
threadData
|
|
659
|
-
};
|
|
633
|
+
execute: () => initializeTask,
|
|
634
|
+
optimistic: (state_5) => promoteNewThreadReducer(state_5, threadId_1, initializeTask),
|
|
635
|
+
then: (state_6, { remoteId: remoteId_1, externalId }) => {
|
|
636
|
+
if (adapterGeneration !== session.adapterGeneration) return state_6;
|
|
637
|
+
const retainedThreadId = backgroundThreads ? threadId_1 : session.mainThreadId;
|
|
638
|
+
const reconciliation = reconcileInitializedThread(state_6, threadId_1, remoteId_1, externalId, retainedThreadId);
|
|
639
|
+
removedMappingId = reconciliation.removedMappingId;
|
|
640
|
+
if (removedMappingId === session.mainThreadId) replacementMainThreadId = reconciliation.survivorMappingId;
|
|
641
|
+
return reconciliation.state;
|
|
660
642
|
}
|
|
661
643
|
});
|
|
662
644
|
requireAdapterGeneration(adapterGeneration);
|
|
645
|
+
if (removedMappingId !== void 0) setStartedIds((prev_0) => prev_0.filter((startedId) => startedId !== removedMappingId));
|
|
646
|
+
if (replacementMainThreadId !== void 0 && session.mainThreadId === removedMappingId) assignMainThreadId(replacementMainThreadId);
|
|
663
647
|
if (threadId_1 === session.mainThreadId) notifyRemoteId(result_0.remoteId, true);
|
|
664
648
|
return toInitializeResult(result_0);
|
|
665
649
|
}, [
|
|
650
|
+
assignMainThreadId,
|
|
651
|
+
backgroundThreads,
|
|
666
652
|
notifyRemoteId,
|
|
667
653
|
requireAdapterGeneration,
|
|
668
654
|
session,
|
|
@@ -671,22 +657,23 @@ const useRemoteThreadList = (props) => {
|
|
|
671
657
|
const rename = useCallback((threadIdOrRemoteId_0, newTitle) => {
|
|
672
658
|
const currentAdapter_1 = session.adapter;
|
|
673
659
|
const adapterGeneration_0 = session.adapterGeneration;
|
|
674
|
-
const
|
|
675
|
-
if (!
|
|
676
|
-
if (
|
|
660
|
+
const data_1 = getThreadData(store.value, threadIdOrRemoteId_0);
|
|
661
|
+
if (!data_1) throw threadNotFoundError(threadIdOrRemoteId_0, "renaming it");
|
|
662
|
+
if (data_1.status === "new") throw threadStatusError(threadIdOrRemoteId_0, data_1.status, "be renamed");
|
|
663
|
+
const claim = startThreadTitleRename(session.titleStates, data_1.id, newTitle);
|
|
677
664
|
return store.optimisticUpdate({
|
|
678
665
|
execute: async () => {
|
|
679
|
-
const { remoteId: remoteId_2 } = await
|
|
666
|
+
const { remoteId: remoteId_2 } = await data_1.initializeTask;
|
|
680
667
|
requireAdapterGeneration(adapterGeneration_0);
|
|
681
668
|
return currentAdapter_1.rename(remoteId_2, newTitle);
|
|
682
669
|
},
|
|
683
|
-
optimistic: (
|
|
684
|
-
const current_0 = getThreadData(
|
|
685
|
-
if (!current_0) return
|
|
670
|
+
optimistic: (state_7) => {
|
|
671
|
+
const current_0 = getThreadData(state_7, threadIdOrRemoteId_0);
|
|
672
|
+
if (!current_0) return state_7;
|
|
686
673
|
return {
|
|
687
|
-
...
|
|
674
|
+
...state_7,
|
|
688
675
|
threadData: {
|
|
689
|
-
...
|
|
676
|
+
...state_7.threadData,
|
|
690
677
|
[current_0.id]: {
|
|
691
678
|
...current_0,
|
|
692
679
|
title: newTitle
|
|
@@ -694,6 +681,12 @@ const useRemoteThreadList = (props) => {
|
|
|
694
681
|
}
|
|
695
682
|
};
|
|
696
683
|
}
|
|
684
|
+
}).then((result_1) => {
|
|
685
|
+
finishThreadTitleRename(session.titleStates, data_1.id, claim, true);
|
|
686
|
+
return result_1;
|
|
687
|
+
}, (error_4) => {
|
|
688
|
+
finishThreadTitleRename(session.titleStates, data_1.id, claim, false);
|
|
689
|
+
throw error_4;
|
|
697
690
|
});
|
|
698
691
|
}, [
|
|
699
692
|
requireAdapterGeneration,
|
|
@@ -703,24 +696,24 @@ const useRemoteThreadList = (props) => {
|
|
|
703
696
|
const updateCustom = useCallback((threadIdOrRemoteId_1, custom) => {
|
|
704
697
|
const currentAdapter_2 = session.adapter;
|
|
705
698
|
const adapterGeneration_1 = session.adapterGeneration;
|
|
706
|
-
const
|
|
707
|
-
if (!
|
|
708
|
-
if (
|
|
699
|
+
const data_2 = getThreadData(store.value, threadIdOrRemoteId_1);
|
|
700
|
+
if (!data_2) throw threadNotFoundError(threadIdOrRemoteId_1, "updating its custom metadata");
|
|
701
|
+
if (data_2.status === "new") throw threadStatusError(threadIdOrRemoteId_1, data_2.status, "update custom metadata");
|
|
709
702
|
if (!currentAdapter_2.updateCustom) throw new Error("Remote thread list adapter does not support updating custom metadata");
|
|
710
703
|
return store.optimisticUpdate({
|
|
711
704
|
execute: async () => {
|
|
712
|
-
const { remoteId: remoteId_3 } = await
|
|
705
|
+
const { remoteId: remoteId_3 } = await data_2.initializeTask;
|
|
713
706
|
requireAdapterGeneration(adapterGeneration_1);
|
|
714
707
|
if (!currentAdapter_2.updateCustom) throw new Error("Remote thread list adapter does not support updating custom metadata");
|
|
715
708
|
return currentAdapter_2.updateCustom(remoteId_3, custom);
|
|
716
709
|
},
|
|
717
|
-
optimistic: (
|
|
718
|
-
const current_1 = getThreadData(
|
|
719
|
-
if (!current_1) return
|
|
710
|
+
optimistic: (state_8) => {
|
|
711
|
+
const current_1 = getThreadData(state_8, threadIdOrRemoteId_1);
|
|
712
|
+
if (!current_1) return state_8;
|
|
720
713
|
return {
|
|
721
|
-
...
|
|
714
|
+
...state_8,
|
|
722
715
|
threadData: {
|
|
723
|
-
...
|
|
716
|
+
...state_8.threadData,
|
|
724
717
|
[current_1.id]: {
|
|
725
718
|
...current_1,
|
|
726
719
|
custom
|
|
@@ -737,18 +730,18 @@ const useRemoteThreadList = (props) => {
|
|
|
737
730
|
const archive = useCallback(async (threadIdOrRemoteId_2) => {
|
|
738
731
|
const currentAdapter_3 = session.adapter;
|
|
739
732
|
const adapterGeneration_2 = session.adapterGeneration;
|
|
740
|
-
const
|
|
741
|
-
if (!
|
|
742
|
-
if (
|
|
743
|
-
await ensureNotMain(
|
|
733
|
+
const data_3 = getThreadData(store.value, threadIdOrRemoteId_2);
|
|
734
|
+
if (!data_3) throw threadNotFoundError(threadIdOrRemoteId_2, "archiving it");
|
|
735
|
+
if (data_3.status !== "regular") throw threadStatusError(threadIdOrRemoteId_2, data_3.status, "be archived");
|
|
736
|
+
await ensureNotMain(data_3.id);
|
|
744
737
|
requireAdapterGeneration(adapterGeneration_2);
|
|
745
738
|
return store.optimisticUpdate({
|
|
746
739
|
execute: async () => {
|
|
747
|
-
const { remoteId: remoteId_4 } = await
|
|
740
|
+
const { remoteId: remoteId_4 } = await data_3.initializeTask;
|
|
748
741
|
requireAdapterGeneration(adapterGeneration_2);
|
|
749
742
|
return currentAdapter_3.archive(remoteId_4);
|
|
750
743
|
},
|
|
751
|
-
optimistic: (
|
|
744
|
+
optimistic: (state_9) => updateStatusReducer(state_9, data_3.id, "archived")
|
|
752
745
|
});
|
|
753
746
|
}, [
|
|
754
747
|
ensureNotMain,
|
|
@@ -759,21 +752,21 @@ const useRemoteThreadList = (props) => {
|
|
|
759
752
|
const unarchive = useCallback((threadIdOrRemoteId_3) => {
|
|
760
753
|
const currentAdapter_4 = session.adapter;
|
|
761
754
|
const adapterGeneration_3 = session.adapterGeneration;
|
|
762
|
-
const
|
|
763
|
-
if (!
|
|
764
|
-
if (
|
|
755
|
+
const data_4 = getThreadData(store.value, threadIdOrRemoteId_3);
|
|
756
|
+
if (!data_4) throw threadNotFoundError(threadIdOrRemoteId_3, "unarchiving it");
|
|
757
|
+
if (data_4.status !== "archived") throw threadStatusError(threadIdOrRemoteId_3, data_4.status, "be unarchived");
|
|
765
758
|
return store.optimisticUpdate({
|
|
766
759
|
execute: async () => {
|
|
767
760
|
try {
|
|
768
|
-
const { remoteId: remoteId_5 } = await
|
|
761
|
+
const { remoteId: remoteId_5 } = await data_4.initializeTask;
|
|
769
762
|
requireAdapterGeneration(adapterGeneration_3);
|
|
770
763
|
return await currentAdapter_4.unarchive(remoteId_5);
|
|
771
|
-
} catch (
|
|
772
|
-
if (adapterGeneration_3 === session.adapterGeneration) await ensureNotMain(
|
|
773
|
-
throw
|
|
764
|
+
} catch (error_5) {
|
|
765
|
+
if (adapterGeneration_3 === session.adapterGeneration) await ensureNotMain(data_4.id);
|
|
766
|
+
throw error_5;
|
|
774
767
|
}
|
|
775
768
|
},
|
|
776
|
-
optimistic: (
|
|
769
|
+
optimistic: (state_10) => updateStatusReducer(state_10, data_4.id, "regular")
|
|
777
770
|
});
|
|
778
771
|
}, [
|
|
779
772
|
ensureNotMain,
|
|
@@ -784,20 +777,23 @@ const useRemoteThreadList = (props) => {
|
|
|
784
777
|
const deleteThread = useCallback(async (threadIdOrRemoteId_4) => {
|
|
785
778
|
const currentAdapter_5 = session.adapter;
|
|
786
779
|
const adapterGeneration_4 = session.adapterGeneration;
|
|
787
|
-
const
|
|
788
|
-
if (!
|
|
789
|
-
if (
|
|
790
|
-
await ensureNotMain(
|
|
780
|
+
const data_5 = getThreadData(store.value, threadIdOrRemoteId_4);
|
|
781
|
+
if (!data_5) throw threadNotFoundError(threadIdOrRemoteId_4, "deleting it");
|
|
782
|
+
if (data_5.status !== "regular" && data_5.status !== "archived") throw threadStatusError(threadIdOrRemoteId_4, data_5.status, "be deleted");
|
|
783
|
+
await ensureNotMain(data_5.id);
|
|
791
784
|
requireAdapterGeneration(adapterGeneration_4);
|
|
792
|
-
|
|
793
|
-
return store.optimisticUpdate({
|
|
785
|
+
const result_2 = await store.optimisticUpdate({
|
|
794
786
|
execute: async () => {
|
|
795
|
-
const { remoteId: remoteId_6 } = await
|
|
787
|
+
const { remoteId: remoteId_6 } = await data_5.initializeTask;
|
|
796
788
|
requireAdapterGeneration(adapterGeneration_4);
|
|
797
789
|
return currentAdapter_5.delete(remoteId_6);
|
|
798
790
|
},
|
|
799
|
-
optimistic: (
|
|
791
|
+
optimistic: (state_11) => updateStatusReducer(state_11, data_5.id, "deleted")
|
|
800
792
|
});
|
|
793
|
+
if (getThreadData(store.value, data_5.id) !== void 0) return result_2;
|
|
794
|
+
clearThreadTitleState(session.titleStates, data_5.id);
|
|
795
|
+
onDelete?.(data_5.id);
|
|
796
|
+
return result_2;
|
|
801
797
|
}, [
|
|
802
798
|
ensureNotMain,
|
|
803
799
|
onDelete,
|
|
@@ -805,37 +801,49 @@ const useRemoteThreadList = (props) => {
|
|
|
805
801
|
session,
|
|
806
802
|
store
|
|
807
803
|
]);
|
|
808
|
-
const generateTitle = useCallback(async (threadIdOrRemoteId_5, messages) => {
|
|
804
|
+
const generateTitle = useCallback(async (threadIdOrRemoteId_5, messages, options_0) => {
|
|
809
805
|
const currentAdapter_6 = session.adapter;
|
|
810
806
|
const adapterGeneration_5 = session.adapterGeneration;
|
|
811
|
-
const
|
|
812
|
-
if (!
|
|
813
|
-
if (
|
|
814
|
-
const { remoteId: remoteId_7 } = await
|
|
807
|
+
const data_6 = getThreadData(store.value, threadIdOrRemoteId_5);
|
|
808
|
+
if (!data_6) throw threadNotFoundError(threadIdOrRemoteId_5, "generating its title");
|
|
809
|
+
if (data_6.status === "new") throw threadStatusError(threadIdOrRemoteId_5, data_6.status, "generate a title");
|
|
810
|
+
const { remoteId: remoteId_7 } = await data_6.initializeTask;
|
|
815
811
|
requireAdapterGeneration(adapterGeneration_5);
|
|
816
|
-
if (!backgroundThreads && !isSameThread(store.value,
|
|
812
|
+
if (!backgroundThreads && !isSameThread(store.value, data_6.id, session.mainThreadId)) return;
|
|
817
813
|
if (!messages) return;
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
814
|
+
await runThreadTitleGeneration({
|
|
815
|
+
states: session.titleStates,
|
|
816
|
+
threadId: data_6.id,
|
|
817
|
+
automatic: options_0?.automatic === true,
|
|
818
|
+
generate: async (onTitle) => {
|
|
819
|
+
const stream = await currentAdapter_6.generateTitle(remoteId_7, messages);
|
|
820
|
+
requireAdapterGeneration(adapterGeneration_5);
|
|
821
|
+
await applyTitleStream(stream, onTitle);
|
|
822
|
+
},
|
|
823
|
+
rename: async (title) => {
|
|
824
|
+
requireAdapterGeneration(adapterGeneration_5);
|
|
825
|
+
await currentAdapter_6.rename(remoteId_7, title);
|
|
826
|
+
},
|
|
827
|
+
applyTitle: async (title_0) => {
|
|
828
|
+
await store.optimisticUpdate({
|
|
829
|
+
execute: async () => {},
|
|
830
|
+
optimistic: (state_12) => {
|
|
831
|
+
if (adapterGeneration_5 !== session.adapterGeneration) return state_12;
|
|
832
|
+
const current_2 = getThreadData(state_12, data_6.id);
|
|
833
|
+
if (!current_2) return state_12;
|
|
834
|
+
return {
|
|
835
|
+
...state_12,
|
|
836
|
+
threadData: {
|
|
837
|
+
...state_12.threadData,
|
|
838
|
+
[current_2.id]: {
|
|
839
|
+
...current_2,
|
|
840
|
+
title: title_0
|
|
841
|
+
}
|
|
834
842
|
}
|
|
835
|
-
}
|
|
836
|
-
}
|
|
837
|
-
}
|
|
838
|
-
}
|
|
843
|
+
};
|
|
844
|
+
}
|
|
845
|
+
});
|
|
846
|
+
}
|
|
839
847
|
});
|
|
840
848
|
}, [
|
|
841
849
|
backgroundThreads,
|
|
@@ -845,7 +853,7 @@ const useRemoteThreadList = (props) => {
|
|
|
845
853
|
]);
|
|
846
854
|
const detach = useCallback(async (threadId_2) => {
|
|
847
855
|
await ensureNotMain(threadId_2);
|
|
848
|
-
setStartedIds((
|
|
856
|
+
setStartedIds((prev_1) => prev_1.filter((id_2) => id_2 !== threadId_2));
|
|
849
857
|
}, [ensureNotMain]);
|
|
850
858
|
const { mainThreadClient, itemOrder, threadListItems } = useRemoteThreadListView({
|
|
851
859
|
listState,
|
|
@@ -854,15 +862,15 @@ const useRemoteThreadList = (props) => {
|
|
|
854
862
|
backgroundThreads,
|
|
855
863
|
threadFactory,
|
|
856
864
|
useAdapters: adapter.unstable_useAdapters,
|
|
857
|
-
onSwitchTo: (
|
|
858
|
-
onRename: (
|
|
859
|
-
onUpdateCustom: (
|
|
860
|
-
onArchive: (
|
|
861
|
-
onUnarchive: (
|
|
862
|
-
onDelete: (
|
|
863
|
-
onGenerateTitle: (
|
|
864
|
-
onInitialize: async (
|
|
865
|
-
onDetach: (
|
|
865
|
+
onSwitchTo: (id_3, options_1) => switchToThread(id_3, options_1),
|
|
866
|
+
onRename: (id_4, title_1) => rename(id_4, title_1),
|
|
867
|
+
onUpdateCustom: (id_5, custom_0) => updateCustom(id_5, custom_0),
|
|
868
|
+
onArchive: (id_6) => archive(id_6),
|
|
869
|
+
onUnarchive: (id_7) => unarchive(id_7),
|
|
870
|
+
onDelete: (id_8) => deleteThread(id_8),
|
|
871
|
+
onGenerateTitle: (id_9, messages_0, options_2) => generateTitle(id_9, messages_0, options_2),
|
|
872
|
+
onInitialize: async (id_10) => toInitializeResult(await initialize(id_10)),
|
|
873
|
+
onDetach: (id_11) => detach(id_11)
|
|
866
874
|
});
|
|
867
875
|
const mainRemoteId = getThreadData(listState, mainThreadId)?.remoteId;
|
|
868
876
|
useEffect(() => {
|
|
@@ -895,10 +903,11 @@ const useRemoteThreadList = (props) => {
|
|
|
895
903
|
switchToThread,
|
|
896
904
|
threadId
|
|
897
905
|
]);
|
|
898
|
-
const
|
|
906
|
+
const state_13 = useMemo(() => ({
|
|
899
907
|
mainThreadId,
|
|
900
908
|
newThreadId: listState.newThreadId ?? null,
|
|
901
909
|
isLoading: listState.isLoading,
|
|
910
|
+
loadError: listState.loadError,
|
|
902
911
|
isLoadingMore: listState.isLoadingMore,
|
|
903
912
|
hasMore: listState.cursor !== void 0,
|
|
904
913
|
threadIds: listState.threadIds,
|
|
@@ -909,6 +918,7 @@ const useRemoteThreadList = (props) => {
|
|
|
909
918
|
listState.archivedThreadIds,
|
|
910
919
|
listState.cursor,
|
|
911
920
|
listState.isLoading,
|
|
921
|
+
listState.loadError,
|
|
912
922
|
listState.isLoadingMore,
|
|
913
923
|
listState.newThreadId,
|
|
914
924
|
listState.threadIds,
|
|
@@ -917,9 +927,9 @@ const useRemoteThreadList = (props) => {
|
|
|
917
927
|
threadListItems.state
|
|
918
928
|
]);
|
|
919
929
|
return {
|
|
920
|
-
getState: () =>
|
|
921
|
-
switchToThread: (
|
|
922
|
-
handleThreadListAction("switch", () => switchToThread(
|
|
930
|
+
getState: () => state_13,
|
|
931
|
+
switchToThread: (id_12, options_3) => {
|
|
932
|
+
handleThreadListAction("switch", () => switchToThread(id_12, options_3));
|
|
923
933
|
},
|
|
924
934
|
switchToNewThread: () => {
|
|
925
935
|
handleThreadListAction("create", () => switchToNewThread());
|
|
@@ -940,9 +950,9 @@ const useRemoteThreadList = (props) => {
|
|
|
940
950
|
const index_0 = itemOrder.findIndex((item_0) => itemMatchesId(item_0, listState, selector.id));
|
|
941
951
|
return threadListItems.get({ index: index_0 });
|
|
942
952
|
}
|
|
943
|
-
const
|
|
944
|
-
if (
|
|
945
|
-
const index_1 = itemOrder.findIndex((item_1) => itemMatchesId(item_1, listState,
|
|
953
|
+
const id_13 = (selector.archived ? listState.archivedThreadIds : listState.threadIds)[selector.index];
|
|
954
|
+
if (id_13 === void 0) return threadListItems.get({ index: -1 });
|
|
955
|
+
const index_1 = itemOrder.findIndex((item_1) => itemMatchesId(item_1, listState, id_13));
|
|
946
956
|
return threadListItems.get({ index: index_1 });
|
|
947
957
|
},
|
|
948
958
|
thread: () => mainThreadClient.methods
|