@assistant-ui/react 0.7.23 → 0.7.25
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/api/AssistantRuntime.d.ts +1 -1
- package/dist/api/AssistantRuntime.d.ts.map +1 -1
- package/dist/api/AssistantRuntime.js +1 -1
- package/dist/api/AssistantRuntime.js.map +1 -1
- package/dist/api/AssistantRuntime.mjs +1 -1
- package/dist/api/AssistantRuntime.mjs.map +1 -1
- package/dist/api/ComposerRuntime.d.ts +4 -2
- package/dist/api/ComposerRuntime.d.ts.map +1 -1
- package/dist/api/ComposerRuntime.js +6 -1
- package/dist/api/ComposerRuntime.js.map +1 -1
- package/dist/api/ComposerRuntime.mjs +6 -1
- package/dist/api/ComposerRuntime.mjs.map +1 -1
- package/dist/api/ThreadListItemRuntime.d.ts +3 -1
- package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListItemRuntime.js.map +1 -1
- package/dist/api/ThreadListItemRuntime.mjs.map +1 -1
- package/dist/api/ThreadListRuntime.d.ts +8 -8
- package/dist/api/ThreadListRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListRuntime.js +7 -5
- package/dist/api/ThreadListRuntime.js.map +1 -1
- package/dist/api/ThreadListRuntime.mjs +7 -5
- package/dist/api/ThreadListRuntime.mjs.map +1 -1
- package/dist/api/ThreadRuntime.d.ts +59 -32
- package/dist/api/ThreadRuntime.d.ts.map +1 -1
- package/dist/api/ThreadRuntime.js +2 -2
- package/dist/api/ThreadRuntime.js.map +1 -1
- package/dist/api/ThreadRuntime.mjs +2 -2
- package/dist/api/ThreadRuntime.mjs.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.js +8 -3
- package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.mjs +8 -3
- package/dist/context/providers/AssistantRuntimeProvider.mjs.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.js +2 -4
- package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.mjs +2 -4
- package/dist/primitives/threadList/ThreadListItems.mjs.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +6 -6
- package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js +29 -20
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +29 -20
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +2 -3
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +2 -3
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js +1 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs +1 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/core/AssistantRuntimeCore.d.ts +2 -0
- package/dist/runtimes/core/AssistantRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/AssistantRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ComposerRuntimeCore.d.ts +2 -1
- package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +4 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +5 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +5 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/index.d.ts +5 -4
- package/dist/runtimes/index.d.ts.map +1 -1
- package/dist/runtimes/index.js +11 -9
- package/dist/runtimes/index.js.map +1 -1
- package/dist/runtimes/index.mjs +5 -4
- package/dist/runtimes/index.mjs.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +2 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js +12 -8
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +12 -8
- package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/BaseSubscribable.d.ts +8 -0
- package/dist/runtimes/remote-thread-list/BaseSubscribable.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/BaseSubscribable.js +62 -0
- package/dist/runtimes/remote-thread-list/BaseSubscribable.js.map +1 -0
- package/dist/runtimes/remote-thread-list/BaseSubscribable.mjs +37 -0
- package/dist/runtimes/remote-thread-list/BaseSubscribable.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts +3 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +150 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.mjs +125 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.d.ts +23 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.js +83 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.js.map +1 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.mjs +58 -0
- package/dist/runtimes/remote-thread-list/OptimisticState.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +75 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +127 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +102 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +76 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +396 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +371 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.d.ts +7 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.js +39 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.mjs +14 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloud.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.d.ts +19 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.js +79 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.mjs +57 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.d.ts +20 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.js +95 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.mjs +69 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.d.ts +46 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.js +50 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.mjs +25 -0
- package/dist/runtimes/remote-thread-list/cloud/AssistantCloudThreads.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.d.ts +10 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.js +32 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.mjs +7 -0
- package/dist/runtimes/remote-thread-list/cloud/CloudContext.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/index.d.ts +4 -0
- package/dist/runtimes/remote-thread-list/cloud/index.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/index.js +37 -0
- package/dist/runtimes/remote-thread-list/cloud/index.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/index.mjs +10 -0
- package/dist/runtimes/remote-thread-list/cloud/index.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.d.ts +4 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.js +46 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.mjs +22 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.d.ts +14 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.js +103 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.js.map +1 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.mjs +79 -0
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/index.d.ts +2 -0
- package/dist/runtimes/remote-thread-list/index.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/index.js +25 -0
- package/dist/runtimes/remote-thread-list/index.js.map +1 -0
- package/dist/runtimes/remote-thread-list/index.mjs +3 -0
- package/dist/runtimes/remote-thread-list/index.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/types.d.ts +25 -0
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/types.js +19 -0
- package/dist/runtimes/remote-thread-list/types.js.map +1 -0
- package/dist/runtimes/remote-thread-list/types.mjs +1 -0
- package/dist/runtimes/remote-thread-list/types.mjs.map +1 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts +3 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts.map +1 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +51 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +26 -0
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +1 -0
- package/dist/styles/index.css +2 -0
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/tailwindcss/thread.css +5 -1
- package/dist/styles/tailwindcss/thread.css.json +4 -1
- package/dist/ui/attachment-ui.d.ts.map +1 -1
- package/dist/ui/attachment-ui.js +12 -7
- package/dist/ui/attachment-ui.js.map +1 -1
- package/dist/ui/attachment-ui.mjs +12 -7
- package/dist/ui/attachment-ui.mjs.map +1 -1
- package/dist/utils/createActionButton.d.ts +2 -2
- package/dist/utils/createActionButton.d.ts.map +1 -1
- package/dist/utils/createActionButton.js +2 -4
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/createActionButton.mjs +5 -5
- package/dist/utils/createActionButton.mjs.map +1 -1
- package/package.json +3 -3
- package/src/api/AssistantRuntime.ts +2 -6
- package/src/api/ComposerRuntime.ts +10 -2
- package/src/api/ThreadListItemRuntime.ts +3 -1
- package/src/api/ThreadListRuntime.ts +11 -9
- package/src/api/ThreadRuntime.ts +3 -3
- package/src/context/providers/AssistantRuntimeProvider.tsx +21 -6
- package/src/primitives/threadList/ThreadListItems.tsx +3 -5
- package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +43 -25
- package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +2 -3
- package/src/runtimes/composer/DefaultThreadComposerRuntimeCore.tsx +1 -1
- package/src/runtimes/core/AssistantRuntimeCore.tsx +3 -0
- package/src/runtimes/core/ComposerRuntimeCore.tsx +2 -1
- package/src/runtimes/core/ThreadListRuntimeCore.tsx +5 -2
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +1 -1
- package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +6 -1
- package/src/runtimes/index.ts +5 -4
- package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +14 -9
- package/src/runtimes/remote-thread-list/BaseSubscribable.tsx +38 -0
- package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +158 -0
- package/src/runtimes/remote-thread-list/OptimisticState.ts +82 -0
- package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +132 -0
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +486 -0
- package/src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx +11 -0
- package/src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx +81 -0
- package/src/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.tsx +95 -0
- package/src/runtimes/remote-thread-list/cloud/AssistantCloudThreads.tsx +72 -0
- package/src/runtimes/remote-thread-list/cloud/CloudContext.tsx +12 -0
- package/src/runtimes/remote-thread-list/cloud/index.ts +3 -0
- package/src/runtimes/remote-thread-list/cloud/useCloudGetOrCreateThread.tsx +19 -0
- package/src/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.tsx +100 -0
- package/src/runtimes/remote-thread-list/index.ts +2 -0
- package/src/runtimes/remote-thread-list/types.tsx +34 -0
- package/src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx +28 -0
- package/src/styles/tailwindcss/thread.css +5 -1
- package/src/ui/attachment-ui.tsx +20 -14
- package/src/utils/createActionButton.tsx +11 -6
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
// src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx
|
|
2
|
+
import { generateId } from "../../internal.mjs";
|
|
3
|
+
import { RemoteThreadListHookInstanceManager } from "./RemoteThreadListHookInstanceManager.mjs";
|
|
4
|
+
import { BaseSubscribable } from "./BaseSubscribable.mjs";
|
|
5
|
+
import { EMPTY_THREAD_CORE } from "./EMPTY_THREAD_CORE.mjs";
|
|
6
|
+
import { OptimisticState } from "./OptimisticState.mjs";
|
|
7
|
+
import { useEffect, useId } from "react";
|
|
8
|
+
import { create } from "zustand";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
var DEFAULT_RENDER_COMPONENT = ({ children }) => {
|
|
11
|
+
return children;
|
|
12
|
+
};
|
|
13
|
+
function createThreadMappingId(id) {
|
|
14
|
+
return id;
|
|
15
|
+
}
|
|
16
|
+
var getThreadData = (state, threadIdOrRemoteId) => {
|
|
17
|
+
const idx = state.threadIdMap[threadIdOrRemoteId];
|
|
18
|
+
if (idx === void 0) return void 0;
|
|
19
|
+
return state.threadData[idx];
|
|
20
|
+
};
|
|
21
|
+
var updateStatusReducer = (state, threadIdOrRemoteId, newStatus) => {
|
|
22
|
+
const data = getThreadData(state, threadIdOrRemoteId);
|
|
23
|
+
if (!data) return state;
|
|
24
|
+
const { threadId, remoteId, status: lastStatus } = data;
|
|
25
|
+
if (lastStatus === newStatus) return state;
|
|
26
|
+
const newState = { ...state };
|
|
27
|
+
switch (lastStatus) {
|
|
28
|
+
case "new":
|
|
29
|
+
newState.newThreadId = void 0;
|
|
30
|
+
break;
|
|
31
|
+
case "regular":
|
|
32
|
+
newState.threadIds = newState.threadIds.filter((t) => t !== threadId);
|
|
33
|
+
break;
|
|
34
|
+
case "archived":
|
|
35
|
+
newState.archivedThreadIds = newState.archivedThreadIds.filter(
|
|
36
|
+
(t) => t !== threadId
|
|
37
|
+
);
|
|
38
|
+
break;
|
|
39
|
+
default: {
|
|
40
|
+
const _exhaustiveCheck = lastStatus;
|
|
41
|
+
throw new Error(`Unsupported state: ${_exhaustiveCheck}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
switch (newStatus) {
|
|
45
|
+
case "regular":
|
|
46
|
+
newState.threadIds = [...newState.threadIds, threadId];
|
|
47
|
+
break;
|
|
48
|
+
case "archived":
|
|
49
|
+
newState.archivedThreadIds = [...newState.archivedThreadIds, threadId];
|
|
50
|
+
break;
|
|
51
|
+
case "deleted":
|
|
52
|
+
newState.threadData = Object.fromEntries(
|
|
53
|
+
Object.entries(newState.threadData).filter(([key]) => key !== threadId)
|
|
54
|
+
);
|
|
55
|
+
newState.threadIdMap = Object.fromEntries(
|
|
56
|
+
Object.entries(newState.threadIdMap).filter(
|
|
57
|
+
([key]) => key !== threadId && key !== remoteId
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
break;
|
|
61
|
+
default: {
|
|
62
|
+
const _exhaustiveCheck = newStatus;
|
|
63
|
+
throw new Error(`Unsupported state: ${_exhaustiveCheck}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (newStatus !== "deleted") {
|
|
67
|
+
newState.threadData = {
|
|
68
|
+
...newState.threadData,
|
|
69
|
+
[threadId]: {
|
|
70
|
+
...data,
|
|
71
|
+
status: newStatus
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return newState;
|
|
76
|
+
};
|
|
77
|
+
var RemoteThreadListThreadListRuntimeCore = class extends BaseSubscribable {
|
|
78
|
+
_adapter;
|
|
79
|
+
_disposeOldAdapter;
|
|
80
|
+
_hookManager;
|
|
81
|
+
_loadThreadsPromise;
|
|
82
|
+
_mainThreadId;
|
|
83
|
+
_state = new OptimisticState({
|
|
84
|
+
isLoading: false,
|
|
85
|
+
newThreadId: void 0,
|
|
86
|
+
threadIds: [],
|
|
87
|
+
archivedThreadIds: [],
|
|
88
|
+
threadIdMap: {},
|
|
89
|
+
threadData: {}
|
|
90
|
+
});
|
|
91
|
+
getLoadThreadsPromise() {
|
|
92
|
+
return this._loadThreadsPromise;
|
|
93
|
+
}
|
|
94
|
+
constructor(adapter) {
|
|
95
|
+
super();
|
|
96
|
+
this._state.subscribe(() => this._notifySubscribers());
|
|
97
|
+
this._hookManager = new RemoteThreadListHookInstanceManager(
|
|
98
|
+
adapter.runtimeHook
|
|
99
|
+
);
|
|
100
|
+
this.useRenderComponent = create(() => ({
|
|
101
|
+
RenderComponent: adapter.__internal_RenderComponent ?? DEFAULT_RENDER_COMPONENT
|
|
102
|
+
}));
|
|
103
|
+
this.__internal_setAdapter(adapter);
|
|
104
|
+
this._loadThreadsPromise = this._state.optimisticUpdate({
|
|
105
|
+
execute: () => adapter.list(),
|
|
106
|
+
loading: (state) => {
|
|
107
|
+
return {
|
|
108
|
+
...state,
|
|
109
|
+
isLoading: true
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
then: (state, l) => {
|
|
113
|
+
const newThreadIds = [];
|
|
114
|
+
const newArchivedThreadIds = [];
|
|
115
|
+
const newThreadIdMap = {};
|
|
116
|
+
const newThreadData = {};
|
|
117
|
+
for (const thread of l.threads) {
|
|
118
|
+
switch (thread.status) {
|
|
119
|
+
case "regular":
|
|
120
|
+
newThreadIds.push(thread.remoteId);
|
|
121
|
+
break;
|
|
122
|
+
case "archived":
|
|
123
|
+
newArchivedThreadIds.push(thread.remoteId);
|
|
124
|
+
break;
|
|
125
|
+
default: {
|
|
126
|
+
const _exhaustiveCheck = thread.status;
|
|
127
|
+
throw new Error(`Unsupported state: ${_exhaustiveCheck}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const mappingId = createThreadMappingId(thread.remoteId);
|
|
131
|
+
newThreadIdMap[thread.remoteId] = mappingId;
|
|
132
|
+
newThreadData[mappingId] = {
|
|
133
|
+
threadId: thread.remoteId,
|
|
134
|
+
remoteId: thread.remoteId,
|
|
135
|
+
externalId: thread.externalId,
|
|
136
|
+
status: thread.status,
|
|
137
|
+
title: thread.title
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
...state,
|
|
142
|
+
threadIds: newThreadIds,
|
|
143
|
+
archivedThreadIds: newArchivedThreadIds,
|
|
144
|
+
threadIdMap: {
|
|
145
|
+
...state.threadIdMap,
|
|
146
|
+
...newThreadIdMap
|
|
147
|
+
},
|
|
148
|
+
threadData: {
|
|
149
|
+
...state.threadData,
|
|
150
|
+
...newThreadData
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}).then(() => {
|
|
155
|
+
});
|
|
156
|
+
this.switchToNewThread();
|
|
157
|
+
}
|
|
158
|
+
useRenderComponent;
|
|
159
|
+
__internal_setAdapter(adapter) {
|
|
160
|
+
if (this._adapter === adapter) return;
|
|
161
|
+
this._adapter = adapter;
|
|
162
|
+
this._disposeOldAdapter?.();
|
|
163
|
+
this._disposeOldAdapter = this._adapter.onInitialize(this._onInitialize);
|
|
164
|
+
const RenderComponent = adapter.__internal_RenderComponent ?? DEFAULT_RENDER_COMPONENT;
|
|
165
|
+
if (RenderComponent !== this.useRenderComponent.getState().RenderComponent) {
|
|
166
|
+
this.useRenderComponent.setState({ RenderComponent }, true);
|
|
167
|
+
}
|
|
168
|
+
this._hookManager.setRuntimeHook(adapter.runtimeHook);
|
|
169
|
+
}
|
|
170
|
+
get threadIds() {
|
|
171
|
+
return this._state.value.threadIds;
|
|
172
|
+
}
|
|
173
|
+
get archivedThreadIds() {
|
|
174
|
+
return this._state.value.archivedThreadIds;
|
|
175
|
+
}
|
|
176
|
+
get newThreadId() {
|
|
177
|
+
return this._state.value.newThreadId;
|
|
178
|
+
}
|
|
179
|
+
get mainThreadId() {
|
|
180
|
+
return this._mainThreadId;
|
|
181
|
+
}
|
|
182
|
+
getMainThreadRuntimeCore() {
|
|
183
|
+
const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);
|
|
184
|
+
if (!result) return EMPTY_THREAD_CORE;
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
getItemById(threadIdOrRemoteId) {
|
|
188
|
+
return getThreadData(this._state.value, threadIdOrRemoteId);
|
|
189
|
+
}
|
|
190
|
+
async switchToThread(threadIdOrRemoteId) {
|
|
191
|
+
const data = this.getItemById(threadIdOrRemoteId);
|
|
192
|
+
if (!data) throw new Error("Thread not found");
|
|
193
|
+
if (this._mainThreadId === data.threadId) return;
|
|
194
|
+
const task = this._hookManager.startThreadRuntime(data.threadId);
|
|
195
|
+
if (this.mainThreadId !== void 0) {
|
|
196
|
+
await task;
|
|
197
|
+
} else {
|
|
198
|
+
task.then(() => this._notifySubscribers());
|
|
199
|
+
}
|
|
200
|
+
if (data.status === "archived") await this.unarchive(data.threadId);
|
|
201
|
+
this._mainThreadId = data.threadId;
|
|
202
|
+
this._notifySubscribers();
|
|
203
|
+
}
|
|
204
|
+
async switchToNewThread() {
|
|
205
|
+
while (this._state.baseValue.newThreadId !== void 0 && this._state.value.newThreadId === void 0) {
|
|
206
|
+
await this._state.waitForUpdate();
|
|
207
|
+
}
|
|
208
|
+
const state = this._state.value;
|
|
209
|
+
let threadId = this._state.value.newThreadId;
|
|
210
|
+
if (threadId === void 0) {
|
|
211
|
+
do {
|
|
212
|
+
threadId = `__LOCALID_${generateId()}`;
|
|
213
|
+
} while (state.threadIdMap[threadId]);
|
|
214
|
+
const mappingId = createThreadMappingId(threadId);
|
|
215
|
+
this._state.update({
|
|
216
|
+
...state,
|
|
217
|
+
newThreadId: threadId,
|
|
218
|
+
threadIdMap: {
|
|
219
|
+
...state.threadIdMap,
|
|
220
|
+
[threadId]: mappingId
|
|
221
|
+
},
|
|
222
|
+
threadData: {
|
|
223
|
+
...state.threadData,
|
|
224
|
+
[threadId]: {
|
|
225
|
+
status: "new",
|
|
226
|
+
threadId
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
return this.switchToThread(threadId);
|
|
232
|
+
}
|
|
233
|
+
_onInitialize = async (task) => {
|
|
234
|
+
const threadId = this._state.value.newThreadId;
|
|
235
|
+
if (!threadId)
|
|
236
|
+
throw new Error(
|
|
237
|
+
"ThreadListAdapter called onInitialize before switching to new thread"
|
|
238
|
+
);
|
|
239
|
+
await this._state.optimisticUpdate({
|
|
240
|
+
execute: () => {
|
|
241
|
+
return task;
|
|
242
|
+
},
|
|
243
|
+
optimistic: (state) => {
|
|
244
|
+
return updateStatusReducer(state, threadId, "regular");
|
|
245
|
+
},
|
|
246
|
+
then: (state, { remoteId, externalId }) => {
|
|
247
|
+
const data = getThreadData(state, threadId);
|
|
248
|
+
if (!data) return state;
|
|
249
|
+
const mappingId = createThreadMappingId(remoteId);
|
|
250
|
+
return {
|
|
251
|
+
...state,
|
|
252
|
+
threadIdMap: {
|
|
253
|
+
...state.threadIdMap,
|
|
254
|
+
[remoteId]: mappingId
|
|
255
|
+
},
|
|
256
|
+
threadData: {
|
|
257
|
+
...state.threadData,
|
|
258
|
+
[threadId]: {
|
|
259
|
+
...data,
|
|
260
|
+
remoteId,
|
|
261
|
+
externalId
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
};
|
|
268
|
+
rename(threadIdOrRemoteId, newTitle) {
|
|
269
|
+
const data = this.getItemById(threadIdOrRemoteId);
|
|
270
|
+
if (!data) throw new Error("Thread not found");
|
|
271
|
+
if (data.status === "new") throw new Error("Thread is not yet initialized");
|
|
272
|
+
return this._state.optimisticUpdate({
|
|
273
|
+
execute: () => {
|
|
274
|
+
return this._adapter.rename(data.remoteId, newTitle);
|
|
275
|
+
},
|
|
276
|
+
optimistic: (state) => {
|
|
277
|
+
const data2 = getThreadData(state, threadIdOrRemoteId);
|
|
278
|
+
if (!data2) return state;
|
|
279
|
+
return {
|
|
280
|
+
...state,
|
|
281
|
+
threadData: {
|
|
282
|
+
...state.threadData,
|
|
283
|
+
[data2.threadId]: {
|
|
284
|
+
...data2,
|
|
285
|
+
title: newTitle
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
async _ensureThreadIsNotMain(threadId) {
|
|
293
|
+
if (threadId === this._mainThreadId) {
|
|
294
|
+
const lastThreadId = this._state.value.threadIds[0];
|
|
295
|
+
if (lastThreadId) {
|
|
296
|
+
await this.switchToThread(lastThreadId);
|
|
297
|
+
} else {
|
|
298
|
+
await this.switchToNewThread();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
async archive(threadIdOrRemoteId) {
|
|
303
|
+
const data = this.getItemById(threadIdOrRemoteId);
|
|
304
|
+
if (!data) throw new Error("Thread not found");
|
|
305
|
+
if (data.status !== "regular")
|
|
306
|
+
throw new Error("Thread is not yet initialized or already archived");
|
|
307
|
+
return this._state.optimisticUpdate({
|
|
308
|
+
execute: async () => {
|
|
309
|
+
await this._ensureThreadIsNotMain(data.threadId);
|
|
310
|
+
return this._adapter.archive(data.remoteId);
|
|
311
|
+
},
|
|
312
|
+
optimistic: (state) => {
|
|
313
|
+
return updateStatusReducer(state, data.threadId, "archived");
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
unarchive(threadIdOrRemoteId) {
|
|
318
|
+
const data = this.getItemById(threadIdOrRemoteId);
|
|
319
|
+
if (!data) throw new Error("Thread not found");
|
|
320
|
+
if (data.status !== "archived") throw new Error("Thread is not archived");
|
|
321
|
+
return this._state.optimisticUpdate({
|
|
322
|
+
execute: async () => {
|
|
323
|
+
try {
|
|
324
|
+
return await this._adapter.unarchive(data.remoteId);
|
|
325
|
+
} catch (error) {
|
|
326
|
+
await this._ensureThreadIsNotMain(data.threadId);
|
|
327
|
+
throw error;
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
optimistic: (state) => {
|
|
331
|
+
return updateStatusReducer(state, data.threadId, "regular");
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
async delete(threadIdOrRemoteId) {
|
|
336
|
+
const data = this.getItemById(threadIdOrRemoteId);
|
|
337
|
+
if (!data) throw new Error("Thread not found");
|
|
338
|
+
if (data.status !== "regular" && data.status !== "archived")
|
|
339
|
+
throw new Error("Thread is not yet initialized");
|
|
340
|
+
return this._state.optimisticUpdate({
|
|
341
|
+
execute: async () => {
|
|
342
|
+
await this._ensureThreadIsNotMain(data.threadId);
|
|
343
|
+
return await this._adapter.delete(data.remoteId);
|
|
344
|
+
},
|
|
345
|
+
optimistic: (state) => {
|
|
346
|
+
return updateStatusReducer(state, data.threadId, "deleted");
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
useBoundIds = create(() => []);
|
|
351
|
+
__internal_RenderComponent = ({ children }) => {
|
|
352
|
+
const id = useId();
|
|
353
|
+
useEffect(() => {
|
|
354
|
+
this.useBoundIds.setState((s) => [...s, id], true);
|
|
355
|
+
return () => {
|
|
356
|
+
this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);
|
|
357
|
+
};
|
|
358
|
+
}, []);
|
|
359
|
+
const boundIds = this.useBoundIds();
|
|
360
|
+
const { RenderComponent } = this.useRenderComponent();
|
|
361
|
+
return /* @__PURE__ */ jsxs(RenderComponent, { children: [
|
|
362
|
+
(boundIds.length === 0 || boundIds[0] === id) && // only render if the component is the first one mounted
|
|
363
|
+
/* @__PURE__ */ jsx(this._hookManager.__internal_RenderThreadRuntimes, {}),
|
|
364
|
+
children
|
|
365
|
+
] });
|
|
366
|
+
};
|
|
367
|
+
};
|
|
368
|
+
export {
|
|
369
|
+
RemoteThreadListThreadListRuntimeCore
|
|
370
|
+
};
|
|
371
|
+
//# sourceMappingURL=RemoteThreadListThreadListRuntimeCore.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx"],"sourcesContent":["import { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { generateId } from \"../../internal\";\nimport { RemoteThreadListAdapter } from \"./types\";\nimport { RemoteThreadListHookInstanceManager } from \"./RemoteThreadListHookInstanceManager\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { EMPTY_THREAD_CORE } from \"./EMPTY_THREAD_CORE\";\nimport { OptimisticState } from \"./OptimisticState\";\nimport { FC, PropsWithChildren, useEffect, useId } from \"react\";\nimport { create } from \"zustand\";\nimport { CloudInitializeResponse } from \"./cloud/CloudContext\";\n\ntype RemoteThreadData =\n | {\n readonly threadId: string;\n readonly remoteId?: undefined;\n readonly externalId?: undefined;\n readonly status: \"new\";\n readonly title: undefined;\n }\n | {\n readonly threadId: string;\n readonly remoteId: string;\n readonly externalId: string | undefined;\n readonly status: \"regular\" | \"archived\";\n readonly title?: string | undefined;\n };\n\nconst DEFAULT_RENDER_COMPONENT: FC<PropsWithChildren> = ({ children }) => {\n return children;\n};\n\ntype THREAD_MAPPING_ID = string & { __brand: \"THREAD_MAPPING_ID\" };\nfunction createThreadMappingId(id: string): THREAD_MAPPING_ID {\n return id as THREAD_MAPPING_ID;\n}\n\ntype RemoteThreadState = {\n readonly isLoading: boolean;\n readonly newThreadId: string | undefined;\n readonly threadIds: readonly string[];\n readonly archivedThreadIds: readonly string[];\n readonly threadIdMap: Readonly<Record<string, THREAD_MAPPING_ID>>;\n readonly threadData: Readonly<Record<THREAD_MAPPING_ID, RemoteThreadData>>;\n};\n\nconst getThreadData = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n) => {\n const idx = state.threadIdMap[threadIdOrRemoteId];\n if (idx === undefined) return undefined;\n return state.threadData[idx];\n};\n\nconst updateStatusReducer = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n newStatus: \"regular\" | \"archived\" | \"deleted\",\n) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n const { threadId, remoteId, status: lastStatus } = data;\n if (lastStatus === newStatus) return state;\n\n const newState = { ...state };\n\n // lastStatus\n switch (lastStatus) {\n case \"new\":\n newState.newThreadId = undefined;\n break;\n case \"regular\":\n newState.threadIds = newState.threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n newState.archivedThreadIds = newState.archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newStatus\n switch (newStatus) {\n case \"regular\":\n newState.threadIds = [...newState.threadIds, threadId];\n break;\n\n case \"archived\":\n newState.archivedThreadIds = [...newState.archivedThreadIds, threadId];\n break;\n\n case \"deleted\":\n newState.threadData = Object.fromEntries(\n Object.entries(newState.threadData).filter(([key]) => key !== threadId),\n );\n newState.threadIdMap = Object.fromEntries(\n Object.entries(newState.threadIdMap).filter(\n ([key]) => key !== threadId && key !== remoteId,\n ),\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = newStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newStatus !== \"deleted\") {\n newState.threadData = {\n ...newState.threadData,\n [threadId]: {\n ...data,\n status: newStatus,\n },\n };\n }\n\n return newState;\n};\n\nexport class RemoteThreadListThreadListRuntimeCore\n extends BaseSubscribable\n implements ThreadListRuntimeCore\n{\n private _adapter!: RemoteThreadListAdapter;\n private _disposeOldAdapter?: () => void;\n private readonly _hookManager: RemoteThreadListHookInstanceManager;\n\n private readonly _loadThreadsPromise: Promise<void>;\n\n private _mainThreadId!: string;\n private readonly _state = new OptimisticState<RemoteThreadState>({\n isLoading: false,\n newThreadId: undefined,\n threadIds: [],\n archivedThreadIds: [],\n threadIdMap: {},\n threadData: {},\n });\n\n public getLoadThreadsPromise() {\n return this._loadThreadsPromise;\n }\n\n constructor(adapter: RemoteThreadListAdapter) {\n super();\n\n this._state.subscribe(() => this._notifySubscribers());\n this._hookManager = new RemoteThreadListHookInstanceManager(\n adapter.runtimeHook,\n );\n this.useRenderComponent = create(() => ({\n RenderComponent:\n adapter.__internal_RenderComponent ?? DEFAULT_RENDER_COMPONENT,\n }));\n this.__internal_setAdapter(adapter);\n\n this._loadThreadsPromise = this._state\n .optimisticUpdate({\n execute: () => adapter.list(),\n loading: (state) => {\n return {\n ...state,\n isLoading: true,\n };\n },\n then: (state, l) => {\n const newThreadIds = [];\n const newArchivedThreadIds = [];\n const newThreadIdMap = {} as Record<string, THREAD_MAPPING_ID>;\n const newThreadData = {} as Record<\n THREAD_MAPPING_ID,\n RemoteThreadData\n >;\n\n for (const thread of l.threads) {\n switch (thread.status) {\n case \"regular\":\n newThreadIds.push(thread.remoteId);\n break;\n case \"archived\":\n newArchivedThreadIds.push(thread.remoteId);\n break;\n default: {\n const _exhaustiveCheck: never = thread.status;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n const mappingId = createThreadMappingId(thread.remoteId);\n newThreadIdMap[thread.remoteId] = mappingId;\n newThreadData[mappingId] = {\n threadId: thread.remoteId,\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n status: thread.status,\n title: thread.title,\n };\n }\n\n return {\n ...state,\n threadIds: newThreadIds,\n archivedThreadIds: newArchivedThreadIds,\n threadIdMap: {\n ...state.threadIdMap,\n ...newThreadIdMap,\n },\n threadData: {\n ...state.threadData,\n ...newThreadData,\n },\n };\n },\n })\n .then(() => {});\n\n this.switchToNewThread();\n }\n\n private useRenderComponent;\n\n public __internal_setAdapter(adapter: RemoteThreadListAdapter) {\n if (this._adapter === adapter) return;\n\n this._adapter = adapter;\n this._disposeOldAdapter?.();\n this._disposeOldAdapter = this._adapter.onInitialize(this._onInitialize);\n\n const RenderComponent =\n adapter.__internal_RenderComponent ?? DEFAULT_RENDER_COMPONENT;\n if (\n RenderComponent !== this.useRenderComponent.getState().RenderComponent\n ) {\n this.useRenderComponent.setState({ RenderComponent }, true);\n }\n\n this._hookManager.setRuntimeHook(adapter.runtimeHook);\n }\n\n public get threadIds() {\n return this._state.value.threadIds;\n }\n\n public get archivedThreadIds() {\n return this._state.value.archivedThreadIds;\n }\n\n public get newThreadId() {\n return this._state.value.newThreadId;\n }\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);\n if (!result) return EMPTY_THREAD_CORE;\n return result;\n }\n\n public getItemById(threadIdOrRemoteId: string) {\n return getThreadData(this._state.value, threadIdOrRemoteId);\n }\n\n public async switchToThread(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (this._mainThreadId === data.threadId) return;\n\n const task = this._hookManager.startThreadRuntime(data.threadId);\n if (this.mainThreadId !== undefined) {\n await task;\n } else {\n task.then(() => this._notifySubscribers());\n }\n\n if (data.status === \"archived\") await this.unarchive(data.threadId);\n this._mainThreadId = data.threadId;\n\n this._notifySubscribers();\n }\n\n public async switchToNewThread(): Promise<void> {\n // an initialization transaction is in progress, wait for it to settle\n while (\n this._state.baseValue.newThreadId !== undefined &&\n this._state.value.newThreadId === undefined\n ) {\n await this._state.waitForUpdate();\n }\n\n const state = this._state.value;\n let threadId: string | undefined = this._state.value.newThreadId;\n if (threadId === undefined) {\n do {\n threadId = `__LOCALID_${generateId()}`;\n } while (state.threadIdMap[threadId]);\n\n const mappingId = createThreadMappingId(threadId);\n this._state.update({\n ...state,\n newThreadId: threadId,\n threadIdMap: {\n ...state.threadIdMap,\n [threadId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [threadId]: {\n status: \"new\",\n threadId,\n },\n },\n });\n }\n\n return this.switchToThread(threadId);\n }\n\n private _onInitialize = async (task: Promise<CloudInitializeResponse>) => {\n const threadId = this._state.value.newThreadId;\n if (!threadId)\n throw new Error(\n \"ThreadListAdapter called onInitialize before switching to new thread\",\n );\n\n await this._state.optimisticUpdate({\n execute: () => {\n return task;\n },\n optimistic: (state) => {\n return updateStatusReducer(state, threadId, \"regular\");\n },\n then: (state, { remoteId, externalId }) => {\n const data = getThreadData(state, threadId);\n if (!data) return state;\n\n const mappingId = createThreadMappingId(remoteId);\n return {\n ...state,\n threadIdMap: {\n ...state.threadIdMap,\n [remoteId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [threadId]: {\n ...data,\n remoteId,\n externalId,\n },\n },\n };\n },\n });\n };\n\n public rename(threadIdOrRemoteId: string, newTitle: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: () => {\n return this._adapter.rename(data.remoteId, newTitle);\n },\n optimistic: (state) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [data.threadId]: {\n ...data,\n title: newTitle,\n },\n },\n };\n },\n });\n }\n\n private async _ensureThreadIsNotMain(threadId: string) {\n // if thread is main thread, switch to another thread\n if (threadId === this._mainThreadId) {\n const lastThreadId = this._state.value.threadIds[0];\n if (lastThreadId) {\n await this.switchToThread(lastThreadId);\n } else {\n await this.switchToNewThread();\n }\n }\n }\n\n public async archive(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n return this._adapter.archive(data.remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"archived\");\n },\n });\n }\n\n public unarchive(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"archived\") throw new Error(\"Thread is not archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n try {\n return await this._adapter.unarchive(data.remoteId);\n } catch (error) {\n await this._ensureThreadIsNotMain(data.threadId);\n throw error;\n }\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"regular\");\n },\n });\n }\n\n public async delete(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\" && data.status !== \"archived\")\n throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n return await this._adapter.delete(data.remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"deleted\");\n },\n });\n }\n\n private useBoundIds = create<string[]>(() => []);\n\n public __internal_RenderComponent: FC<PropsWithChildren> = ({ children }) => {\n const id = useId();\n useEffect(() => {\n this.useBoundIds.setState((s) => [...s, id], true);\n return () => {\n this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);\n };\n }, []);\n\n const boundIds = this.useBoundIds();\n const { RenderComponent } = this.useRenderComponent();\n\n return (\n <RenderComponent>\n {(boundIds.length === 0 || boundIds[0] === id) && (\n // only render if the component is the first one mounted\n <this._hookManager.__internal_RenderThreadRuntimes />\n )}\n\n {children}\n </RenderComponent>\n );\n };\n}\n"],"mappings":"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","names":["data"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AssistantCloudConfig } from "./AssistantCloudAPI";
|
|
2
|
+
import { AssistantCloudThreads } from "./AssistantCloudThreads";
|
|
3
|
+
export declare class AssistantCloud {
|
|
4
|
+
readonly threads: AssistantCloudThreads;
|
|
5
|
+
constructor(config: AssistantCloudConfig);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=AssistantCloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantCloud.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,qBAAa,cAAc;IACzB,SAAgB,OAAO,wBAAC;gBAEZ,MAAM,EAAE,oBAAoB;CAIzC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx
|
|
21
|
+
var AssistantCloud_exports = {};
|
|
22
|
+
__export(AssistantCloud_exports, {
|
|
23
|
+
AssistantCloud: () => AssistantCloud
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(AssistantCloud_exports);
|
|
26
|
+
var import_AssistantCloudAPI = require("./AssistantCloudAPI.js");
|
|
27
|
+
var import_AssistantCloudThreads = require("./AssistantCloudThreads.js");
|
|
28
|
+
var AssistantCloud = class {
|
|
29
|
+
threads;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
const api = new import_AssistantCloudAPI.AssistantCloudAPI(config);
|
|
32
|
+
this.threads = new import_AssistantCloudThreads.AssistantCloudThreads(api);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
36
|
+
0 && (module.exports = {
|
|
37
|
+
AssistantCloud
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=AssistantCloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx"],"sourcesContent":["import { AssistantCloudAPI, AssistantCloudConfig } from \"./AssistantCloudAPI\";\nimport { AssistantCloudThreads } from \"./AssistantCloudThreads\";\n\nexport class AssistantCloud {\n public readonly threads;\n\n constructor(config: AssistantCloudConfig) {\n const api = new AssistantCloudAPI(config);\n this.threads = new AssistantCloudThreads(api);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAwD;AACxD,mCAAsC;AAE/B,IAAM,iBAAN,MAAqB;AAAA,EACV;AAAA,EAEhB,YAAY,QAA8B;AACxC,UAAM,MAAM,IAAI,2CAAkB,MAAM;AACxC,SAAK,UAAU,IAAI,mDAAsB,GAAG;AAAA,EAC9C;AACF;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx
|
|
2
|
+
import { AssistantCloudAPI } from "./AssistantCloudAPI.mjs";
|
|
3
|
+
import { AssistantCloudThreads } from "./AssistantCloudThreads.mjs";
|
|
4
|
+
var AssistantCloud = class {
|
|
5
|
+
threads;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
const api = new AssistantCloudAPI(config);
|
|
8
|
+
this.threads = new AssistantCloudThreads(api);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
AssistantCloud
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=AssistantCloud.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/remote-thread-list/cloud/AssistantCloud.tsx"],"sourcesContent":["import { AssistantCloudAPI, AssistantCloudConfig } from \"./AssistantCloudAPI\";\nimport { AssistantCloudThreads } from \"./AssistantCloudThreads\";\n\nexport class AssistantCloud {\n public readonly threads;\n\n constructor(config: AssistantCloudConfig) {\n const api = new AssistantCloudAPI(config);\n this.threads = new AssistantCloudThreads(api);\n }\n}\n"],"mappings":";AAAA,SAAS,yBAA+C;AACxD,SAAS,6BAA6B;AAE/B,IAAM,iBAAN,MAAqB;AAAA,EACV;AAAA,EAEhB,YAAY,QAA8B;AACxC,UAAM,MAAM,IAAI,kBAAkB,MAAM;AACxC,SAAK,UAAU,IAAI,sBAAsB,GAAG;AAAA,EAC9C;AACF;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type AssistantCloudConfig = {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
unstable_projectId: string;
|
|
4
|
+
authToken(): Promise<string>;
|
|
5
|
+
} | {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
workspaceId: string;
|
|
8
|
+
};
|
|
9
|
+
export declare class AssistantCloudAPI {
|
|
10
|
+
private _tokenManager;
|
|
11
|
+
private _baseUrl;
|
|
12
|
+
constructor(config: AssistantCloudConfig);
|
|
13
|
+
makeRequest(endpoint: string, options?: {
|
|
14
|
+
method?: "POST" | "PUT" | "DELETE" | undefined;
|
|
15
|
+
query?: Record<string, string | number | boolean> | undefined;
|
|
16
|
+
body?: object | undefined;
|
|
17
|
+
}): Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=AssistantCloudAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantCloudAPI.d.ts","sourceRoot":"","sources":["../../../../src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B,GACD;IACE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEN,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC;gBAEL,MAAM,EAAE,oBAAoB;IAgB3B,WAAW,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC/C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;QAC9D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACtB;CAoCT"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx
|
|
21
|
+
var AssistantCloudAPI_exports = {};
|
|
22
|
+
__export(AssistantCloudAPI_exports, {
|
|
23
|
+
AssistantCloudAPI: () => AssistantCloudAPI
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(AssistantCloudAPI_exports);
|
|
26
|
+
var import_AssistantCloudAuthStrategy = require("./AssistantCloudAuthStrategy.js");
|
|
27
|
+
var AssistantCloudAPI = class {
|
|
28
|
+
_tokenManager;
|
|
29
|
+
_baseUrl;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
if ("authToken" in config) {
|
|
32
|
+
this._baseUrl = config.baseUrl;
|
|
33
|
+
this._tokenManager = new import_AssistantCloudAuthStrategy.AssistantCloudJWTAuthStrategy(
|
|
34
|
+
config.unstable_projectId,
|
|
35
|
+
config.authToken
|
|
36
|
+
);
|
|
37
|
+
} else {
|
|
38
|
+
this._baseUrl = "https://api.assistant-ui.com";
|
|
39
|
+
this._tokenManager = new import_AssistantCloudAuthStrategy.AssistantCloudAPIKeyAuthStrategy(
|
|
40
|
+
config.apiKey,
|
|
41
|
+
config.workspaceId
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async makeRequest(endpoint, options = {}) {
|
|
46
|
+
const authHeaders = await this._tokenManager.getAuthHeaders();
|
|
47
|
+
const headers = {
|
|
48
|
+
...authHeaders,
|
|
49
|
+
"Content-Type": "application/json"
|
|
50
|
+
};
|
|
51
|
+
const queryParams = new URLSearchParams();
|
|
52
|
+
if (options.query) {
|
|
53
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
54
|
+
if (value === false) continue;
|
|
55
|
+
if (value === true) {
|
|
56
|
+
queryParams.set(key, "true");
|
|
57
|
+
} else {
|
|
58
|
+
queryParams.set(key, value.toString());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const url = new URL(`${this._baseUrl}${endpoint}`);
|
|
63
|
+
url.search = queryParams.toString();
|
|
64
|
+
const response = await fetch(url, {
|
|
65
|
+
method: options.method ?? "GET",
|
|
66
|
+
headers,
|
|
67
|
+
body: options.body ? JSON.stringify(options.body) : null
|
|
68
|
+
});
|
|
69
|
+
if (!response.ok) {
|
|
70
|
+
throw new Error(`Request failed with status ${response.status}`);
|
|
71
|
+
}
|
|
72
|
+
return response.json();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
76
|
+
0 && (module.exports = {
|
|
77
|
+
AssistantCloudAPI
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=AssistantCloudAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx"],"sourcesContent":["import {\n AssistantCloudAuthStrategy,\n AssistantCloudJWTAuthStrategy,\n AssistantCloudAPIKeyAuthStrategy,\n} from \"./AssistantCloudAuthStrategy\";\n\nexport type AssistantCloudConfig =\n | {\n baseUrl: string;\n // TODO use baseUrl to construct the projectId\n unstable_projectId: string;\n authToken(): Promise<string>;\n }\n | {\n apiKey: string;\n workspaceId: string;\n };\n\nexport class AssistantCloudAPI {\n private _tokenManager: AssistantCloudAuthStrategy;\n private _baseUrl;\n\n constructor(config: AssistantCloudConfig) {\n if (\"authToken\" in config) {\n this._baseUrl = config.baseUrl;\n this._tokenManager = new AssistantCloudJWTAuthStrategy(\n config.unstable_projectId,\n config.authToken,\n );\n } else {\n this._baseUrl = \"https://api.assistant-ui.com\";\n this._tokenManager = new AssistantCloudAPIKeyAuthStrategy(\n config.apiKey,\n config.workspaceId,\n );\n }\n }\n\n public async makeRequest(\n endpoint: string,\n options: {\n method?: \"POST\" | \"PUT\" | \"DELETE\" | undefined;\n query?: Record<string, string | number | boolean> | undefined;\n body?: object | undefined;\n } = {},\n ) {\n const authHeaders = await this._tokenManager.getAuthHeaders();\n const headers = {\n ...authHeaders,\n \"Content-Type\": \"application/json\",\n };\n\n const queryParams = new URLSearchParams();\n if (options.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value === false) continue;\n if (value === true) {\n queryParams.set(key, \"true\");\n } else {\n queryParams.set(key, value.toString());\n }\n }\n }\n\n const url = new URL(`${this._baseUrl}${endpoint}`);\n url.search = queryParams.toString();\n\n const response = await fetch(url, {\n method: options.method ?? \"GET\",\n headers,\n body: options.body ? JSON.stringify(options.body) : null,\n });\n\n if (!response.ok) {\n // TODO better error handling\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n return response.json();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAIO;AAcA,IAAM,oBAAN,MAAwB;AAAA,EACrB;AAAA,EACA;AAAA,EAER,YAAY,QAA8B;AACxC,QAAI,eAAe,QAAQ;AACzB,WAAK,WAAW,OAAO;AACvB,WAAK,gBAAgB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,WAAK,WAAW;AAChB,WAAK,gBAAgB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,YACX,UACA,UAII,CAAC,GACL;AACA,UAAM,cAAc,MAAM,KAAK,cAAc,eAAe;AAC5D,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,gBAAgB;AAAA,IAClB;AAEA,UAAM,cAAc,IAAI,gBAAgB;AACxC,QAAI,QAAQ,OAAO;AACjB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAK,GAAG;AACxD,YAAI,UAAU,MAAO;AACrB,YAAI,UAAU,MAAM;AAClB,sBAAY,IAAI,KAAK,MAAM;AAAA,QAC7B,OAAO;AACL,sBAAY,IAAI,KAAK,MAAM,SAAS,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,QAAQ,GAAG,QAAQ,EAAE;AACjD,QAAI,SAAS,YAAY,SAAS;AAElC,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ,QAAQ,UAAU;AAAA,MAC1B;AAAA,MACA,MAAM,QAAQ,OAAO,KAAK,UAAU,QAAQ,IAAI,IAAI;AAAA,IACtD,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAEhB,YAAM,IAAI,MAAM,8BAA8B,SAAS,MAAM,EAAE;AAAA,IACjE;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;","names":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx
|
|
2
|
+
import {
|
|
3
|
+
AssistantCloudJWTAuthStrategy,
|
|
4
|
+
AssistantCloudAPIKeyAuthStrategy
|
|
5
|
+
} from "./AssistantCloudAuthStrategy.mjs";
|
|
6
|
+
var AssistantCloudAPI = class {
|
|
7
|
+
_tokenManager;
|
|
8
|
+
_baseUrl;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
if ("authToken" in config) {
|
|
11
|
+
this._baseUrl = config.baseUrl;
|
|
12
|
+
this._tokenManager = new AssistantCloudJWTAuthStrategy(
|
|
13
|
+
config.unstable_projectId,
|
|
14
|
+
config.authToken
|
|
15
|
+
);
|
|
16
|
+
} else {
|
|
17
|
+
this._baseUrl = "https://api.assistant-ui.com";
|
|
18
|
+
this._tokenManager = new AssistantCloudAPIKeyAuthStrategy(
|
|
19
|
+
config.apiKey,
|
|
20
|
+
config.workspaceId
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async makeRequest(endpoint, options = {}) {
|
|
25
|
+
const authHeaders = await this._tokenManager.getAuthHeaders();
|
|
26
|
+
const headers = {
|
|
27
|
+
...authHeaders,
|
|
28
|
+
"Content-Type": "application/json"
|
|
29
|
+
};
|
|
30
|
+
const queryParams = new URLSearchParams();
|
|
31
|
+
if (options.query) {
|
|
32
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
33
|
+
if (value === false) continue;
|
|
34
|
+
if (value === true) {
|
|
35
|
+
queryParams.set(key, "true");
|
|
36
|
+
} else {
|
|
37
|
+
queryParams.set(key, value.toString());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const url = new URL(`${this._baseUrl}${endpoint}`);
|
|
42
|
+
url.search = queryParams.toString();
|
|
43
|
+
const response = await fetch(url, {
|
|
44
|
+
method: options.method ?? "GET",
|
|
45
|
+
headers,
|
|
46
|
+
body: options.body ? JSON.stringify(options.body) : null
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new Error(`Request failed with status ${response.status}`);
|
|
50
|
+
}
|
|
51
|
+
return response.json();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
AssistantCloudAPI
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=AssistantCloudAPI.mjs.map
|