@assistant-ui/react-devtools 1.2.17 → 1.2.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.
|
@@ -4,12 +4,12 @@ import { useDevToolsClient } from "../data/useDevToolsClient.js";
|
|
|
4
4
|
import { CenteredMessage } from "../views/ui/CenteredMessage.js";
|
|
5
5
|
import { builtinPlugins } from "./registry.js";
|
|
6
6
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
7
|
-
import {
|
|
7
|
+
import { useState } from "@assistant-ui/tap/react-shim";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import clsx from "clsx";
|
|
10
10
|
//#region src/shell/DevToolsPanel.tsx
|
|
11
11
|
const DevToolsPanel = (t0) => {
|
|
12
|
-
const $ = c(
|
|
12
|
+
const $ = c(50);
|
|
13
13
|
const { plugins, theme: t1, onClose, client } = t0;
|
|
14
14
|
const theme = t1 === void 0 ? "light" : t1;
|
|
15
15
|
const resolvedClient = client ?? inProcessClient;
|
|
@@ -22,33 +22,18 @@ const DevToolsPanel = (t0) => {
|
|
|
22
22
|
} else t2 = $[0];
|
|
23
23
|
const [selectionByApi, setSelectionByApi] = useState(t2);
|
|
24
24
|
const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(selectedApiId, resolvedClient);
|
|
25
|
+
const resolvedApiId = selectedApiId !== null && apiIds.includes(selectedApiId) ? selectedApiId : apiIds[0] ?? null;
|
|
26
|
+
if (resolvedApiId !== selectedApiId) setSelectedApiId(resolvedApiId);
|
|
25
27
|
let t3;
|
|
28
|
+
if ($[1] !== plugins) {
|
|
29
|
+
t3 = [...builtinPlugins, ...plugins ?? []].sort(_temp);
|
|
30
|
+
$[1] = plugins;
|
|
31
|
+
$[2] = t3;
|
|
32
|
+
} else t3 = $[2];
|
|
33
|
+
const allPlugins = t3;
|
|
26
34
|
let t4;
|
|
27
|
-
if ($[
|
|
28
|
-
|
|
29
|
-
if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;
|
|
30
|
-
setSelectedApiId(apiIds[0] ?? null);
|
|
31
|
-
};
|
|
32
|
-
t4 = [apiIds, selectedApiId];
|
|
33
|
-
$[1] = apiIds;
|
|
34
|
-
$[2] = selectedApiId;
|
|
35
|
-
$[3] = t3;
|
|
36
|
-
$[4] = t4;
|
|
37
|
-
} else {
|
|
38
|
-
t3 = $[3];
|
|
39
|
-
t4 = $[4];
|
|
40
|
-
}
|
|
41
|
-
useEffect(t3, t4);
|
|
42
|
-
let t5;
|
|
43
|
-
if ($[5] !== plugins) {
|
|
44
|
-
t5 = [...builtinPlugins, ...plugins ?? []].sort(_temp);
|
|
45
|
-
$[5] = plugins;
|
|
46
|
-
$[6] = t5;
|
|
47
|
-
} else t5 = $[6];
|
|
48
|
-
const allPlugins = t5;
|
|
49
|
-
let t6;
|
|
50
|
-
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
51
|
-
t6 = (apiId, tabId, nodeId) => {
|
|
35
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
36
|
+
t4 = (apiId, tabId, nodeId) => {
|
|
52
37
|
setSelectionByApi((prev) => ({
|
|
53
38
|
...prev,
|
|
54
39
|
[apiId]: {
|
|
@@ -57,12 +42,12 @@ const DevToolsPanel = (t0) => {
|
|
|
57
42
|
}
|
|
58
43
|
}));
|
|
59
44
|
};
|
|
60
|
-
$[
|
|
61
|
-
} else
|
|
62
|
-
const setSelectionFor =
|
|
63
|
-
let
|
|
64
|
-
if ($[
|
|
65
|
-
|
|
45
|
+
$[3] = t4;
|
|
46
|
+
} else t4 = $[3];
|
|
47
|
+
const setSelectionFor = t4;
|
|
48
|
+
let t5;
|
|
49
|
+
if ($[4] !== allPlugins || $[5] !== clearEvents || $[6] !== selected || $[7] !== selectedApiId || $[8] !== theme) {
|
|
50
|
+
t5 = selected && selectedApiId !== null ? allPlugins.filter((plugin) => plugin.isAvailable ? plugin.isAvailable({
|
|
66
51
|
apiId: selectedApiId,
|
|
67
52
|
data: selected,
|
|
68
53
|
clearEvents,
|
|
@@ -70,25 +55,25 @@ const DevToolsPanel = (t0) => {
|
|
|
70
55
|
selection: null,
|
|
71
56
|
setSelection: _temp2
|
|
72
57
|
}) : true) : allPlugins;
|
|
73
|
-
$[
|
|
74
|
-
$[
|
|
75
|
-
$[
|
|
76
|
-
$[
|
|
77
|
-
$[
|
|
78
|
-
$[
|
|
79
|
-
} else
|
|
80
|
-
const visiblePlugins =
|
|
81
|
-
let
|
|
82
|
-
if ($[
|
|
83
|
-
|
|
84
|
-
$[
|
|
85
|
-
$[
|
|
86
|
-
$[
|
|
87
|
-
} else
|
|
88
|
-
const activePlugin =
|
|
89
|
-
let
|
|
90
|
-
if ($[
|
|
91
|
-
|
|
58
|
+
$[4] = allPlugins;
|
|
59
|
+
$[5] = clearEvents;
|
|
60
|
+
$[6] = selected;
|
|
61
|
+
$[7] = selectedApiId;
|
|
62
|
+
$[8] = theme;
|
|
63
|
+
$[9] = t5;
|
|
64
|
+
} else t5 = $[9];
|
|
65
|
+
const visiblePlugins = t5;
|
|
66
|
+
let t6;
|
|
67
|
+
if ($[10] !== activeTabId || $[11] !== visiblePlugins) {
|
|
68
|
+
t6 = visiblePlugins.find((plugin_0) => plugin_0.id === activeTabId) ?? visiblePlugins[0];
|
|
69
|
+
$[10] = activeTabId;
|
|
70
|
+
$[11] = visiblePlugins;
|
|
71
|
+
$[12] = t6;
|
|
72
|
+
} else t6 = $[12];
|
|
73
|
+
const activePlugin = t6;
|
|
74
|
+
let t7;
|
|
75
|
+
if ($[13] !== activePlugin || $[14] !== clearEvents || $[15] !== resolvedClient || $[16] !== selected || $[17] !== selectedApiId || $[18] !== selectionByApi || $[19] !== switchToThread || $[20] !== theme) {
|
|
76
|
+
t7 = selected && selectedApiId !== null && activePlugin ? {
|
|
92
77
|
apiId: selectedApiId,
|
|
93
78
|
data: selected,
|
|
94
79
|
clearEvents,
|
|
@@ -97,22 +82,22 @@ const DevToolsPanel = (t0) => {
|
|
|
97
82
|
setSelection: (nodeId_0) => setSelectionFor(selectedApiId, activePlugin.id, nodeId_0),
|
|
98
83
|
switchToThread: resolvedClient.switchToThread ? (threadId) => switchToThread(selectedApiId, threadId) : void 0
|
|
99
84
|
} : null;
|
|
100
|
-
$[
|
|
101
|
-
$[
|
|
102
|
-
$[
|
|
103
|
-
$[
|
|
104
|
-
$[
|
|
105
|
-
$[
|
|
106
|
-
$[
|
|
107
|
-
$[
|
|
108
|
-
$[
|
|
109
|
-
} else
|
|
110
|
-
const ctx =
|
|
111
|
-
let
|
|
112
|
-
if ($[
|
|
113
|
-
let
|
|
114
|
-
if ($[
|
|
115
|
-
|
|
85
|
+
$[13] = activePlugin;
|
|
86
|
+
$[14] = clearEvents;
|
|
87
|
+
$[15] = resolvedClient;
|
|
88
|
+
$[16] = selected;
|
|
89
|
+
$[17] = selectedApiId;
|
|
90
|
+
$[18] = selectionByApi;
|
|
91
|
+
$[19] = switchToThread;
|
|
92
|
+
$[20] = theme;
|
|
93
|
+
$[21] = t7;
|
|
94
|
+
} else t7 = $[21];
|
|
95
|
+
const ctx = t7;
|
|
96
|
+
let t8;
|
|
97
|
+
if ($[22] !== activePlugin?.id || $[23] !== visiblePlugins) {
|
|
98
|
+
let t9;
|
|
99
|
+
if ($[25] !== activePlugin?.id) {
|
|
100
|
+
t9 = (plugin_1) => {
|
|
116
101
|
const active = activePlugin?.id === plugin_1.id;
|
|
117
102
|
return /* @__PURE__ */ jsxs("button", {
|
|
118
103
|
type: "button",
|
|
@@ -121,26 +106,26 @@ const DevToolsPanel = (t0) => {
|
|
|
121
106
|
children: [plugin_1.label, active ? /* @__PURE__ */ jsx("span", { className: "bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full" }) : null]
|
|
122
107
|
}, plugin_1.id);
|
|
123
108
|
};
|
|
124
|
-
$[
|
|
125
|
-
$[
|
|
126
|
-
} else
|
|
127
|
-
|
|
128
|
-
$[
|
|
129
|
-
$[
|
|
130
|
-
$[
|
|
131
|
-
} else
|
|
132
|
-
let
|
|
133
|
-
if ($[
|
|
134
|
-
|
|
109
|
+
$[25] = activePlugin?.id;
|
|
110
|
+
$[26] = t9;
|
|
111
|
+
} else t9 = $[26];
|
|
112
|
+
t8 = visiblePlugins.map(t9);
|
|
113
|
+
$[22] = activePlugin?.id;
|
|
114
|
+
$[23] = visiblePlugins;
|
|
115
|
+
$[24] = t8;
|
|
116
|
+
} else t8 = $[24];
|
|
117
|
+
let t9;
|
|
118
|
+
if ($[27] !== t8) {
|
|
119
|
+
t9 = /* @__PURE__ */ jsx("div", {
|
|
135
120
|
className: "flex h-full items-center",
|
|
136
|
-
children:
|
|
121
|
+
children: t8
|
|
137
122
|
});
|
|
138
|
-
$[
|
|
139
|
-
$[
|
|
140
|
-
} else
|
|
141
|
-
let
|
|
142
|
-
if ($[
|
|
143
|
-
|
|
123
|
+
$[27] = t8;
|
|
124
|
+
$[28] = t9;
|
|
125
|
+
} else t9 = $[28];
|
|
126
|
+
let t10;
|
|
127
|
+
if ($[29] !== apiIds || $[30] !== selectedApiId) {
|
|
128
|
+
t10 = apiIds.length > 1 ? /* @__PURE__ */ jsx("select", {
|
|
144
129
|
value: selectedApiId ?? "",
|
|
145
130
|
onChange: (event) => {
|
|
146
131
|
const value = Number(event.target.value);
|
|
@@ -149,28 +134,28 @@ const DevToolsPanel = (t0) => {
|
|
|
149
134
|
className: "border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors",
|
|
150
135
|
children: apiIds.map(_temp3)
|
|
151
136
|
}) : null;
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
154
|
-
$[
|
|
155
|
-
} else
|
|
137
|
+
$[29] = apiIds;
|
|
138
|
+
$[30] = selectedApiId;
|
|
139
|
+
$[31] = t10;
|
|
140
|
+
} else t10 = $[31];
|
|
141
|
+
let t11;
|
|
142
|
+
if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
|
|
143
|
+
t11 = /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-emerald-500" });
|
|
144
|
+
$[32] = t11;
|
|
145
|
+
} else t11 = $[32];
|
|
146
|
+
const t12 = apiIds.length > 0 ? `${apiIds.length} instance${apiIds.length > 1 ? "s" : ""}` : "Waiting";
|
|
156
147
|
let t13;
|
|
157
|
-
if ($[
|
|
158
|
-
t13 = /* @__PURE__ */
|
|
159
|
-
$[36] = t13;
|
|
160
|
-
} else t13 = $[36];
|
|
161
|
-
const t14 = apiIds.length > 0 ? `${apiIds.length} instance${apiIds.length > 1 ? "s" : ""}` : "Waiting";
|
|
162
|
-
let t15;
|
|
163
|
-
if ($[37] !== t14) {
|
|
164
|
-
t15 = /* @__PURE__ */ jsxs("span", {
|
|
148
|
+
if ($[33] !== t12) {
|
|
149
|
+
t13 = /* @__PURE__ */ jsxs("span", {
|
|
165
150
|
className: "text-muted-foreground flex items-center gap-1.5 text-[11px]",
|
|
166
|
-
children: [
|
|
151
|
+
children: [t11, t12]
|
|
167
152
|
});
|
|
168
|
-
$[
|
|
169
|
-
$[
|
|
170
|
-
} else
|
|
171
|
-
let
|
|
172
|
-
if ($[
|
|
173
|
-
|
|
153
|
+
$[33] = t12;
|
|
154
|
+
$[34] = t13;
|
|
155
|
+
} else t13 = $[34];
|
|
156
|
+
let t14;
|
|
157
|
+
if ($[35] !== onClose) {
|
|
158
|
+
t14 = onClose ? /* @__PURE__ */ jsx("button", {
|
|
174
159
|
type: "button",
|
|
175
160
|
onClick: onClose,
|
|
176
161
|
"aria-label": "Close DevTools",
|
|
@@ -190,55 +175,55 @@ const DevToolsPanel = (t0) => {
|
|
|
190
175
|
})
|
|
191
176
|
})
|
|
192
177
|
}) : null;
|
|
193
|
-
$[
|
|
194
|
-
$[
|
|
195
|
-
} else
|
|
196
|
-
let
|
|
197
|
-
if ($[
|
|
198
|
-
|
|
178
|
+
$[35] = onClose;
|
|
179
|
+
$[36] = t14;
|
|
180
|
+
} else t14 = $[36];
|
|
181
|
+
let t15;
|
|
182
|
+
if ($[37] !== t10 || $[38] !== t13 || $[39] !== t14) {
|
|
183
|
+
t15 = /* @__PURE__ */ jsxs("div", {
|
|
199
184
|
className: "flex items-center gap-2 pe-1",
|
|
200
185
|
children: [
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
186
|
+
t10,
|
|
187
|
+
t13,
|
|
188
|
+
t14
|
|
204
189
|
]
|
|
205
190
|
});
|
|
206
|
-
$[
|
|
207
|
-
$[
|
|
208
|
-
$[
|
|
209
|
-
$[
|
|
210
|
-
} else
|
|
211
|
-
let
|
|
212
|
-
if ($[
|
|
213
|
-
|
|
191
|
+
$[37] = t10;
|
|
192
|
+
$[38] = t13;
|
|
193
|
+
$[39] = t14;
|
|
194
|
+
$[40] = t15;
|
|
195
|
+
} else t15 = $[40];
|
|
196
|
+
let t16;
|
|
197
|
+
if ($[41] !== t15 || $[42] !== t9) {
|
|
198
|
+
t16 = /* @__PURE__ */ jsxs("nav", {
|
|
214
199
|
className: "border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none",
|
|
215
|
-
children: [
|
|
200
|
+
children: [t9, t15]
|
|
216
201
|
});
|
|
217
|
-
$[
|
|
218
|
-
$[
|
|
219
|
-
$[
|
|
220
|
-
} else
|
|
221
|
-
let
|
|
222
|
-
if ($[
|
|
223
|
-
|
|
202
|
+
$[41] = t15;
|
|
203
|
+
$[42] = t9;
|
|
204
|
+
$[43] = t16;
|
|
205
|
+
} else t16 = $[43];
|
|
206
|
+
let t17;
|
|
207
|
+
if ($[44] !== activePlugin || $[45] !== ctx) {
|
|
208
|
+
t17 = /* @__PURE__ */ jsx("section", {
|
|
224
209
|
className: "bg-background min-h-0 flex-1 overflow-hidden",
|
|
225
210
|
children: ctx && activePlugin ? /* @__PURE__ */ jsx(activePlugin.Component, { ...ctx }) : /* @__PURE__ */ jsx(CenteredMessage, { children: "Waiting for assistant-ui instance..." })
|
|
226
211
|
});
|
|
227
|
-
$[
|
|
228
|
-
$[
|
|
229
|
-
$[
|
|
230
|
-
} else
|
|
231
|
-
let
|
|
232
|
-
if ($[
|
|
233
|
-
|
|
212
|
+
$[44] = activePlugin;
|
|
213
|
+
$[45] = ctx;
|
|
214
|
+
$[46] = t17;
|
|
215
|
+
} else t17 = $[46];
|
|
216
|
+
let t18;
|
|
217
|
+
if ($[47] !== t16 || $[48] !== t17) {
|
|
218
|
+
t18 = /* @__PURE__ */ jsxs("div", {
|
|
234
219
|
className: "text-foreground flex h-full flex-col text-[13px]",
|
|
235
|
-
children: [
|
|
220
|
+
children: [t16, t17]
|
|
236
221
|
});
|
|
237
|
-
$[
|
|
238
|
-
$[
|
|
239
|
-
$[
|
|
240
|
-
} else
|
|
241
|
-
return
|
|
222
|
+
$[47] = t16;
|
|
223
|
+
$[48] = t17;
|
|
224
|
+
$[49] = t18;
|
|
225
|
+
} else t18 = $[49];
|
|
226
|
+
return t18;
|
|
242
227
|
};
|
|
243
228
|
function _temp(a, b) {
|
|
244
229
|
return (a.order ?? 0) - (b.order ?? 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevToolsPanel.js","names":["c","_c","useCallback","useEffect","useMemo","useState","clsx","useDevToolsClient","inProcessClient","DevToolsClient","CenteredMessage","builtinPlugins","DevToolsPanelPlugin","DevToolsTabContext","DevToolsPanelProps","plugins","theme","onClose","client","DevToolsPanel","t0","$","t1","undefined","resolvedClient","selectedApiId","setSelectedApiId","activeTabId","setActiveTabId","t2","Symbol","for","selectionByApi","setSelectionByApi","apiIds","selected","clearEvents","switchToThread","t3","t4","includes","t5","sort","_temp","allPlugins","t6","apiId","tabId","nodeId","prev","setSelectionFor","t7","filter","plugin","isAvailable","data","selection","setSelection","_temp2","visiblePlugins","t8","find","plugin_0","id","activePlugin","t9","nodeId_0","threadId","ctx","t10","t11","plugin_1","active","label","map","t12","length","event","value","Number","target","isNaN","_temp3","t13","t14","t15","t16","t17","t18","t19","t20","a","b","order"],"sources":["../../src/shell/DevToolsPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { useDevToolsClient } from \"../data/useDevToolsClient\";\nimport { inProcessClient } from \"../data/createInProcessClient\";\nimport type { DevToolsClient } from \"../data/types\";\nimport { CenteredMessage } from \"../views/ui\";\nimport {\n builtinPlugins,\n type DevToolsPanelPlugin,\n type DevToolsTabContext,\n} from \"./registry\";\n\nexport interface DevToolsPanelProps {\n /** Additional inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[] | undefined;\n /** Resolved theme, used to style plugin content and the dark variant. */\n theme?: \"light\" | \"dark\";\n /** When provided, a close control is rendered at the end of the tab bar. */\n onClose?: (() => void) | undefined;\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient | undefined;\n}\n\nexport const DevToolsPanel = ({\n plugins,\n theme = \"light\",\n onClose,\n client,\n}: DevToolsPanelProps) => {\n const resolvedClient = client ?? inProcessClient;\n const [selectedApiId, setSelectedApiId] = useState<number | null>(null);\n const [activeTabId, setActiveTabId] = useState<string>(\"thread\");\n const [selectionByApi, setSelectionByApi] = useState<\n Record<number, Record<string, string | null>>\n >({});\n const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(\n selectedApiId,\n resolvedClient,\n );\n\n useEffect(() => {\n if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;\n setSelectedApiId(apiIds[0] ?? null);\n }, [apiIds, selectedApiId]);\n\n const allPlugins = useMemo(\n () =>\n [...builtinPlugins, ...(plugins ?? [])].sort(\n (a, b) => (a.order ?? 0) - (b.order ?? 0),\n ),\n [plugins],\n );\n\n const setSelectionFor = useCallback(\n (apiId: number, tabId: string, nodeId: string | null) => {\n setSelectionByApi((prev) => ({\n ...prev,\n [apiId]: { ...prev[apiId], [tabId]: nodeId },\n }));\n },\n [],\n );\n\n const visiblePlugins =\n selected && selectedApiId !== null\n ? allPlugins.filter((plugin) =>\n plugin.isAvailable\n ? plugin.isAvailable({\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: null,\n setSelection: () => {},\n })\n : true,\n )\n : allPlugins;\n\n const activePlugin =\n visiblePlugins.find((plugin) => plugin.id === activeTabId) ??\n visiblePlugins[0];\n\n const ctx: DevToolsTabContext | null =\n selected && selectedApiId !== null && activePlugin\n ? {\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,\n setSelection: (nodeId) =>\n setSelectionFor(selectedApiId, activePlugin.id, nodeId),\n switchToThread: resolvedClient.switchToThread\n ? (threadId) => switchToThread(selectedApiId, threadId)\n : undefined,\n }\n : null;\n\n return (\n <div className=\"text-foreground flex h-full flex-col text-[13px]\">\n <nav className=\"border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none\">\n <div className=\"flex h-full items-center\">\n {visiblePlugins.map((plugin) => {\n const active = activePlugin?.id === plugin.id;\n return (\n <button\n type=\"button\"\n key={plugin.id}\n onClick={() => setActiveTabId(plugin.id)}\n className={clsx(\n \"relative flex h-full items-center px-3 font-medium transition-colors\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {plugin.label}\n {active ? (\n <span className=\"bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-2 pe-1\">\n {apiIds.length > 1 ? (\n <select\n value={selectedApiId ?? \"\"}\n onChange={(event) => {\n const value = Number(event.target.value);\n setSelectedApiId(Number.isNaN(value) ? null : value);\n }}\n className=\"border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors\"\n >\n {apiIds.map((id) => (\n <option key={id} value={id}>\n API #{id}\n </option>\n ))}\n </select>\n ) : null}\n\n <span className=\"text-muted-foreground flex items-center gap-1.5 text-[11px]\">\n <span className=\"size-1.5 rounded-full bg-emerald-500\" />\n {apiIds.length > 0\n ? `${apiIds.length} instance${apiIds.length > 1 ? \"s\" : \"\"}`\n : \"Waiting\"}\n </span>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close DevTools\"\n className=\"text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M18 6 6 18M6 6l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n </nav>\n\n <section className=\"bg-background min-h-0 flex-1 overflow-hidden\">\n {ctx && activePlugin ? (\n <activePlugin.Component {...ctx} />\n ) : (\n <CenteredMessage>\n Waiting for assistant-ui instance...\n </CenteredMessage>\n )}\n </section>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevToolsPanel.js","names":["c","_c","useCallback","useMemo","useState","clsx","useDevToolsClient","inProcessClient","DevToolsClient","CenteredMessage","builtinPlugins","DevToolsPanelPlugin","DevToolsTabContext","DevToolsPanelProps","plugins","theme","onClose","client","DevToolsPanel","t0","$","t1","undefined","resolvedClient","selectedApiId","setSelectedApiId","activeTabId","setActiveTabId","t2","Symbol","for","selectionByApi","setSelectionByApi","apiIds","selected","clearEvents","switchToThread","resolvedApiId","includes","t3","sort","_temp","allPlugins","t4","apiId","tabId","nodeId","prev","setSelectionFor","t5","filter","plugin","isAvailable","data","selection","setSelection","_temp2","visiblePlugins","t6","find","plugin_0","id","activePlugin","t7","nodeId_0","threadId","ctx","t8","t9","plugin_1","active","label","map","t10","length","event","value","Number","target","isNaN","_temp3","t11","t12","t13","t14","t15","t16","t17","t18","a","b","order"],"sources":["../../src/shell/DevToolsPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { useDevToolsClient } from \"../data/useDevToolsClient\";\nimport { inProcessClient } from \"../data/createInProcessClient\";\nimport type { DevToolsClient } from \"../data/types\";\nimport { CenteredMessage } from \"../views/ui\";\nimport {\n builtinPlugins,\n type DevToolsPanelPlugin,\n type DevToolsTabContext,\n} from \"./registry\";\n\nexport interface DevToolsPanelProps {\n /** Additional inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[] | undefined;\n /** Resolved theme, used to style plugin content and the dark variant. */\n theme?: \"light\" | \"dark\";\n /** When provided, a close control is rendered at the end of the tab bar. */\n onClose?: (() => void) | undefined;\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient | undefined;\n}\n\nexport const DevToolsPanel = ({\n plugins,\n theme = \"light\",\n onClose,\n client,\n}: DevToolsPanelProps) => {\n const resolvedClient = client ?? inProcessClient;\n const [selectedApiId, setSelectedApiId] = useState<number | null>(null);\n const [activeTabId, setActiveTabId] = useState<string>(\"thread\");\n const [selectionByApi, setSelectionByApi] = useState<\n Record<number, Record<string, string | null>>\n >({});\n const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(\n selectedApiId,\n resolvedClient,\n );\n\n const resolvedApiId =\n selectedApiId !== null && apiIds.includes(selectedApiId)\n ? selectedApiId\n : (apiIds[0] ?? null);\n\n if (resolvedApiId !== selectedApiId) setSelectedApiId(resolvedApiId);\n\n const allPlugins = useMemo(\n () =>\n [...builtinPlugins, ...(plugins ?? [])].sort(\n (a, b) => (a.order ?? 0) - (b.order ?? 0),\n ),\n [plugins],\n );\n\n const setSelectionFor = useCallback(\n (apiId: number, tabId: string, nodeId: string | null) => {\n setSelectionByApi((prev) => ({\n ...prev,\n [apiId]: { ...prev[apiId], [tabId]: nodeId },\n }));\n },\n [],\n );\n\n const visiblePlugins =\n selected && selectedApiId !== null\n ? allPlugins.filter((plugin) =>\n plugin.isAvailable\n ? plugin.isAvailable({\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: null,\n setSelection: () => {},\n })\n : true,\n )\n : allPlugins;\n\n const activePlugin =\n visiblePlugins.find((plugin) => plugin.id === activeTabId) ??\n visiblePlugins[0];\n\n const ctx: DevToolsTabContext | null =\n selected && selectedApiId !== null && activePlugin\n ? {\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,\n setSelection: (nodeId) =>\n setSelectionFor(selectedApiId, activePlugin.id, nodeId),\n switchToThread: resolvedClient.switchToThread\n ? (threadId) => switchToThread(selectedApiId, threadId)\n : undefined,\n }\n : null;\n\n return (\n <div className=\"text-foreground flex h-full flex-col text-[13px]\">\n <nav className=\"border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none\">\n <div className=\"flex h-full items-center\">\n {visiblePlugins.map((plugin) => {\n const active = activePlugin?.id === plugin.id;\n return (\n <button\n type=\"button\"\n key={plugin.id}\n onClick={() => setActiveTabId(plugin.id)}\n className={clsx(\n \"relative flex h-full items-center px-3 font-medium transition-colors\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {plugin.label}\n {active ? (\n <span className=\"bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-2 pe-1\">\n {apiIds.length > 1 ? (\n <select\n value={selectedApiId ?? \"\"}\n onChange={(event) => {\n const value = Number(event.target.value);\n setSelectedApiId(Number.isNaN(value) ? null : value);\n }}\n className=\"border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors\"\n >\n {apiIds.map((id) => (\n <option key={id} value={id}>\n API #{id}\n </option>\n ))}\n </select>\n ) : null}\n\n <span className=\"text-muted-foreground flex items-center gap-1.5 text-[11px]\">\n <span className=\"size-1.5 rounded-full bg-emerald-500\" />\n {apiIds.length > 0\n ? `${apiIds.length} instance${apiIds.length > 1 ? \"s\" : \"\"}`\n : \"Waiting\"}\n </span>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close DevTools\"\n className=\"text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M18 6 6 18M6 6l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n </nav>\n\n <section className=\"bg-background min-h-0 flex-1 overflow-hidden\">\n {ctx && activePlugin ? (\n <activePlugin.Component {...ctx} />\n ) : (\n <CenteredMessage>\n Waiting for assistant-ui instance...\n </CenteredMessage>\n )}\n </section>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ const UnloadedConversation = (t0) => {
|
|
|
92
92
|
return t3;
|
|
93
93
|
};
|
|
94
94
|
const ThreadTab = (t0) => {
|
|
95
|
-
const $ = c(
|
|
95
|
+
const $ = c(84);
|
|
96
96
|
const { data, selection, setSelection, switchToThread } = t0;
|
|
97
97
|
let t1;
|
|
98
98
|
if ($[0] !== data.state.threads) {
|
|
@@ -111,314 +111,293 @@ const ThreadTab = (t0) => {
|
|
|
111
111
|
$[4] = t2;
|
|
112
112
|
} else t2 = $[4];
|
|
113
113
|
const [activeThreadId, setActiveThreadId] = useState(t2);
|
|
114
|
+
const resolvedThreadId = hasConversationList && threadList ? [...threadList.threadIds, ...threadList.archivedThreadIds].includes(activeThreadId) ? activeThreadId : threadList.mainThreadId ?? threadList.threadIds[0] ?? "" : activeThreadId;
|
|
115
|
+
if (resolvedThreadId !== activeThreadId) setActiveThreadId(resolvedThreadId);
|
|
116
|
+
const prevThreadIdRef = useRef(activeThreadId);
|
|
114
117
|
let t3;
|
|
115
118
|
let t4;
|
|
116
|
-
if ($[5] !== activeThreadId || $[6] !==
|
|
119
|
+
if ($[5] !== activeThreadId || $[6] !== setSelection) {
|
|
117
120
|
t3 = () => {
|
|
118
|
-
if (!hasConversationList || !threadList) return;
|
|
119
|
-
if ([...threadList.threadIds, ...threadList.archivedThreadIds].includes(activeThreadId)) return;
|
|
120
|
-
setActiveThreadId(threadList.mainThreadId ?? threadList.threadIds[0] ?? "");
|
|
121
|
-
};
|
|
122
|
-
t4 = [
|
|
123
|
-
hasConversationList,
|
|
124
|
-
threadList,
|
|
125
|
-
activeThreadId
|
|
126
|
-
];
|
|
127
|
-
$[5] = activeThreadId;
|
|
128
|
-
$[6] = hasConversationList;
|
|
129
|
-
$[7] = threadList;
|
|
130
|
-
$[8] = t3;
|
|
131
|
-
$[9] = t4;
|
|
132
|
-
} else {
|
|
133
|
-
t3 = $[8];
|
|
134
|
-
t4 = $[9];
|
|
135
|
-
}
|
|
136
|
-
useEffect(t3, t4);
|
|
137
|
-
const prevThreadIdRef = useRef(activeThreadId);
|
|
138
|
-
let t5;
|
|
139
|
-
let t6;
|
|
140
|
-
if ($[10] !== activeThreadId || $[11] !== setSelection) {
|
|
141
|
-
t5 = () => {
|
|
142
121
|
if (prevThreadIdRef.current === activeThreadId) return;
|
|
143
122
|
prevThreadIdRef.current = activeThreadId;
|
|
144
123
|
setSelection(null);
|
|
145
124
|
};
|
|
146
|
-
|
|
147
|
-
$[
|
|
148
|
-
$[
|
|
149
|
-
$[
|
|
150
|
-
$[
|
|
125
|
+
t4 = [activeThreadId, setSelection];
|
|
126
|
+
$[5] = activeThreadId;
|
|
127
|
+
$[6] = setSelection;
|
|
128
|
+
$[7] = t3;
|
|
129
|
+
$[8] = t4;
|
|
151
130
|
} else {
|
|
152
|
-
|
|
153
|
-
|
|
131
|
+
t3 = $[7];
|
|
132
|
+
t4 = $[8];
|
|
154
133
|
}
|
|
155
|
-
useEffect(
|
|
156
|
-
let
|
|
134
|
+
useEffect(t3, t4);
|
|
135
|
+
let t5;
|
|
157
136
|
bb0: {
|
|
158
137
|
if (!hasConversationList) {
|
|
159
|
-
let
|
|
160
|
-
if ($[
|
|
161
|
-
|
|
162
|
-
$[
|
|
163
|
-
$[
|
|
164
|
-
} else
|
|
165
|
-
|
|
138
|
+
let t6;
|
|
139
|
+
if ($[9] !== data.state) {
|
|
140
|
+
t6 = resolveSingleThread(data.state);
|
|
141
|
+
$[9] = data.state;
|
|
142
|
+
$[10] = t6;
|
|
143
|
+
} else t6 = $[10];
|
|
144
|
+
t5 = t6;
|
|
166
145
|
break bb0;
|
|
167
146
|
}
|
|
168
|
-
let
|
|
169
|
-
if ($[
|
|
170
|
-
|
|
171
|
-
$[
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
175
|
-
$[
|
|
176
|
-
} else
|
|
177
|
-
|
|
147
|
+
let t6;
|
|
148
|
+
if ($[11] !== activeThreadId || $[12] !== data.state || $[13] !== snapshots || $[14] !== threadList) {
|
|
149
|
+
t6 = resolveThreadForId(data.state, snapshots, activeThreadId, threadList);
|
|
150
|
+
$[11] = activeThreadId;
|
|
151
|
+
$[12] = data.state;
|
|
152
|
+
$[13] = snapshots;
|
|
153
|
+
$[14] = threadList;
|
|
154
|
+
$[15] = t6;
|
|
155
|
+
} else t6 = $[15];
|
|
156
|
+
t5 = t6;
|
|
178
157
|
}
|
|
179
|
-
const activeThread =
|
|
158
|
+
const activeThread = t5;
|
|
180
159
|
const selectedMessage = useSelectedMessage(activeThread, selection, setSelection);
|
|
181
160
|
if (!hasConversationList) {
|
|
182
161
|
if (!activeThread || activeThread.messages.length === 0) {
|
|
183
|
-
let
|
|
184
|
-
if ($[
|
|
185
|
-
|
|
186
|
-
$[
|
|
187
|
-
} else
|
|
188
|
-
return
|
|
162
|
+
let t6;
|
|
163
|
+
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
164
|
+
t6 = /* @__PURE__ */ jsx(CenteredMessage, { children: "No thread messages for this assistant instance." });
|
|
165
|
+
$[16] = t6;
|
|
166
|
+
} else t6 = $[16];
|
|
167
|
+
return t6;
|
|
189
168
|
}
|
|
169
|
+
let t6;
|
|
170
|
+
if ($[17] !== selectedMessage.id) {
|
|
171
|
+
t6 = messageNodeId(selectedMessage.id);
|
|
172
|
+
$[17] = selectedMessage.id;
|
|
173
|
+
$[18] = t6;
|
|
174
|
+
} else t6 = $[18];
|
|
175
|
+
const activeNodeId = t6;
|
|
176
|
+
let t7;
|
|
177
|
+
if ($[19] !== activeThread) {
|
|
178
|
+
t7 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
|
|
179
|
+
$[19] = activeThread;
|
|
180
|
+
$[20] = t7;
|
|
181
|
+
} else t7 = $[20];
|
|
190
182
|
let t8;
|
|
191
|
-
if ($[22] !==
|
|
192
|
-
t8 =
|
|
193
|
-
$[22] = selectedMessage.id;
|
|
194
|
-
$[23] = t8;
|
|
195
|
-
} else t8 = $[23];
|
|
196
|
-
const activeNodeId = t8;
|
|
197
|
-
let t9;
|
|
198
|
-
if ($[24] !== activeThread) {
|
|
199
|
-
t9 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
|
|
200
|
-
$[24] = activeThread;
|
|
201
|
-
$[25] = t9;
|
|
202
|
-
} else t9 = $[25];
|
|
203
|
-
let t10;
|
|
204
|
-
if ($[26] !== activeNodeId || $[27] !== activeThread || $[28] !== setSelection) {
|
|
205
|
-
t10 = /* @__PURE__ */ jsx(Transcript, {
|
|
183
|
+
if ($[21] !== activeNodeId || $[22] !== activeThread || $[23] !== setSelection) {
|
|
184
|
+
t8 = /* @__PURE__ */ jsx(Transcript, {
|
|
206
185
|
thread: activeThread,
|
|
207
186
|
selection: activeNodeId,
|
|
208
187
|
onSelect: setSelection
|
|
209
188
|
});
|
|
210
|
-
$[
|
|
211
|
-
$[
|
|
212
|
-
$[
|
|
189
|
+
$[21] = activeNodeId;
|
|
190
|
+
$[22] = activeThread;
|
|
191
|
+
$[23] = setSelection;
|
|
192
|
+
$[24] = t8;
|
|
193
|
+
} else t8 = $[24];
|
|
194
|
+
let t9;
|
|
195
|
+
if ($[25] !== t7 || $[26] !== t8) {
|
|
196
|
+
t9 = {
|
|
197
|
+
key: "transcript",
|
|
198
|
+
header: t7,
|
|
199
|
+
children: t8
|
|
200
|
+
};
|
|
201
|
+
$[25] = t7;
|
|
202
|
+
$[26] = t8;
|
|
203
|
+
$[27] = t9;
|
|
204
|
+
} else t9 = $[27];
|
|
205
|
+
let t10;
|
|
206
|
+
if ($[28] !== selectedMessage) {
|
|
207
|
+
t10 = messageDetailHeader(selectedMessage);
|
|
208
|
+
$[28] = selectedMessage;
|
|
213
209
|
$[29] = t10;
|
|
214
210
|
} else t10 = $[29];
|
|
215
211
|
let t11;
|
|
216
|
-
if ($[30] !==
|
|
217
|
-
t11 = {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
};
|
|
222
|
-
$[30] = t10;
|
|
223
|
-
$[31] = t9;
|
|
224
|
-
$[32] = t11;
|
|
225
|
-
} else t11 = $[32];
|
|
212
|
+
if ($[30] !== selectedMessage) {
|
|
213
|
+
t11 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
|
|
214
|
+
$[30] = selectedMessage;
|
|
215
|
+
$[31] = t11;
|
|
216
|
+
} else t11 = $[31];
|
|
226
217
|
let t12;
|
|
227
|
-
if ($[33] !==
|
|
228
|
-
t12 =
|
|
229
|
-
|
|
218
|
+
if ($[32] !== t10 || $[33] !== t11) {
|
|
219
|
+
t12 = {
|
|
220
|
+
key: "detail",
|
|
221
|
+
header: t10,
|
|
222
|
+
children: t11
|
|
223
|
+
};
|
|
224
|
+
$[32] = t10;
|
|
225
|
+
$[33] = t11;
|
|
230
226
|
$[34] = t12;
|
|
231
227
|
} else t12 = $[34];
|
|
232
228
|
let t13;
|
|
233
|
-
if ($[35] !==
|
|
234
|
-
t13 = /* @__PURE__ */ jsx(
|
|
235
|
-
$[35] = selectedMessage;
|
|
236
|
-
$[36] = t13;
|
|
237
|
-
} else t13 = $[36];
|
|
238
|
-
let t14;
|
|
239
|
-
if ($[37] !== t12 || $[38] !== t13) {
|
|
240
|
-
t14 = {
|
|
241
|
-
key: "detail",
|
|
242
|
-
header: t12,
|
|
243
|
-
children: t13
|
|
244
|
-
};
|
|
245
|
-
$[37] = t12;
|
|
246
|
-
$[38] = t13;
|
|
247
|
-
$[39] = t14;
|
|
248
|
-
} else t14 = $[39];
|
|
249
|
-
let t15;
|
|
250
|
-
if ($[40] !== t11 || $[41] !== t14) {
|
|
251
|
-
t15 = /* @__PURE__ */ jsx(SplitLayout, {
|
|
229
|
+
if ($[35] !== t12 || $[36] !== t9) {
|
|
230
|
+
t13 = /* @__PURE__ */ jsx(SplitLayout, {
|
|
252
231
|
sizes: TWO_COL,
|
|
253
|
-
columns: [
|
|
232
|
+
columns: [t9, t12]
|
|
254
233
|
});
|
|
255
|
-
$[
|
|
256
|
-
$[
|
|
257
|
-
$[
|
|
258
|
-
} else
|
|
259
|
-
return
|
|
234
|
+
$[35] = t12;
|
|
235
|
+
$[36] = t9;
|
|
236
|
+
$[37] = t13;
|
|
237
|
+
} else t13 = $[37];
|
|
238
|
+
return t13;
|
|
260
239
|
}
|
|
261
240
|
if (!(activeThread !== null && activeThread.messages.length > 0)) {
|
|
262
|
-
let
|
|
263
|
-
if ($[
|
|
264
|
-
|
|
265
|
-
$[
|
|
266
|
-
$[
|
|
267
|
-
} else
|
|
268
|
-
let
|
|
269
|
-
if ($[
|
|
270
|
-
|
|
241
|
+
let t6;
|
|
242
|
+
if ($[38] !== threadList) {
|
|
243
|
+
t6 = conversationListHeader(threadList);
|
|
244
|
+
$[38] = threadList;
|
|
245
|
+
$[39] = t6;
|
|
246
|
+
} else t6 = $[39];
|
|
247
|
+
let t7;
|
|
248
|
+
if ($[40] !== activeThreadId || $[41] !== snapshots || $[42] !== threadList) {
|
|
249
|
+
t7 = /* @__PURE__ */ jsx(ConversationList, {
|
|
271
250
|
threadList,
|
|
272
251
|
snapshots,
|
|
273
252
|
selectedId: activeThreadId,
|
|
274
253
|
onSelect: setActiveThreadId
|
|
275
254
|
});
|
|
276
|
-
$[
|
|
277
|
-
$[
|
|
278
|
-
$[
|
|
279
|
-
$[
|
|
280
|
-
} else
|
|
281
|
-
let
|
|
282
|
-
if ($[
|
|
283
|
-
|
|
255
|
+
$[40] = activeThreadId;
|
|
256
|
+
$[41] = snapshots;
|
|
257
|
+
$[42] = threadList;
|
|
258
|
+
$[43] = t7;
|
|
259
|
+
} else t7 = $[43];
|
|
260
|
+
let t8;
|
|
261
|
+
if ($[44] !== t6 || $[45] !== t7) {
|
|
262
|
+
t8 = {
|
|
284
263
|
key: "conversations",
|
|
285
|
-
header:
|
|
286
|
-
children:
|
|
264
|
+
header: t6,
|
|
265
|
+
children: t7
|
|
287
266
|
};
|
|
288
|
-
$[
|
|
289
|
-
$[
|
|
290
|
-
$[
|
|
291
|
-
} else
|
|
292
|
-
let
|
|
293
|
-
if ($[
|
|
294
|
-
|
|
267
|
+
$[44] = t6;
|
|
268
|
+
$[45] = t7;
|
|
269
|
+
$[46] = t8;
|
|
270
|
+
} else t8 = $[46];
|
|
271
|
+
let t9;
|
|
272
|
+
if ($[47] !== activeThreadId || $[48] !== switchToThread) {
|
|
273
|
+
t9 = {
|
|
295
274
|
key: "empty",
|
|
296
275
|
children: /* @__PURE__ */ jsx(UnloadedConversation, {
|
|
297
276
|
threadId: activeThreadId,
|
|
298
277
|
switchToThread
|
|
299
278
|
})
|
|
300
279
|
};
|
|
301
|
-
$[
|
|
302
|
-
$[
|
|
303
|
-
$[
|
|
304
|
-
} else
|
|
305
|
-
let
|
|
306
|
-
if ($[
|
|
307
|
-
|
|
280
|
+
$[47] = activeThreadId;
|
|
281
|
+
$[48] = switchToThread;
|
|
282
|
+
$[49] = t9;
|
|
283
|
+
} else t9 = $[49];
|
|
284
|
+
let t10;
|
|
285
|
+
if ($[50] !== t8 || $[51] !== t9) {
|
|
286
|
+
t10 = /* @__PURE__ */ jsx(SplitLayout, {
|
|
308
287
|
sizes: "clamp(12rem,26%,15rem)_minmax(0,1fr)",
|
|
309
|
-
columns: [
|
|
288
|
+
columns: [t8, t9]
|
|
310
289
|
});
|
|
311
|
-
$[
|
|
312
|
-
$[
|
|
313
|
-
$[
|
|
314
|
-
} else
|
|
315
|
-
return
|
|
290
|
+
$[50] = t8;
|
|
291
|
+
$[51] = t9;
|
|
292
|
+
$[52] = t10;
|
|
293
|
+
} else t10 = $[52];
|
|
294
|
+
return t10;
|
|
316
295
|
}
|
|
296
|
+
let t6;
|
|
297
|
+
if ($[53] !== selectedMessage.id) {
|
|
298
|
+
t6 = messageNodeId(selectedMessage.id);
|
|
299
|
+
$[53] = selectedMessage.id;
|
|
300
|
+
$[54] = t6;
|
|
301
|
+
} else t6 = $[54];
|
|
302
|
+
const activeNodeId_0 = t6;
|
|
303
|
+
let t7;
|
|
304
|
+
if ($[55] !== threadList) {
|
|
305
|
+
t7 = conversationListHeader(threadList);
|
|
306
|
+
$[55] = threadList;
|
|
307
|
+
$[56] = t7;
|
|
308
|
+
} else t7 = $[56];
|
|
317
309
|
let t8;
|
|
318
|
-
if ($[58] !==
|
|
319
|
-
t8 =
|
|
320
|
-
$[58] = selectedMessage.id;
|
|
321
|
-
$[59] = t8;
|
|
322
|
-
} else t8 = $[59];
|
|
323
|
-
const activeNodeId_0 = t8;
|
|
324
|
-
let t9;
|
|
325
|
-
if ($[60] !== threadList) {
|
|
326
|
-
t9 = conversationListHeader(threadList);
|
|
327
|
-
$[60] = threadList;
|
|
328
|
-
$[61] = t9;
|
|
329
|
-
} else t9 = $[61];
|
|
330
|
-
let t10;
|
|
331
|
-
if ($[62] !== activeThreadId || $[63] !== snapshots || $[64] !== threadList) {
|
|
332
|
-
t10 = /* @__PURE__ */ jsx(ConversationList, {
|
|
310
|
+
if ($[57] !== activeThreadId || $[58] !== snapshots || $[59] !== threadList) {
|
|
311
|
+
t8 = /* @__PURE__ */ jsx(ConversationList, {
|
|
333
312
|
threadList,
|
|
334
313
|
snapshots,
|
|
335
314
|
selectedId: activeThreadId,
|
|
336
315
|
onSelect: setActiveThreadId
|
|
337
316
|
});
|
|
338
|
-
$[
|
|
339
|
-
$[
|
|
340
|
-
$[
|
|
317
|
+
$[57] = activeThreadId;
|
|
318
|
+
$[58] = snapshots;
|
|
319
|
+
$[59] = threadList;
|
|
320
|
+
$[60] = t8;
|
|
321
|
+
} else t8 = $[60];
|
|
322
|
+
let t9;
|
|
323
|
+
if ($[61] !== t7 || $[62] !== t8) {
|
|
324
|
+
t9 = {
|
|
325
|
+
key: "conversations",
|
|
326
|
+
header: t7,
|
|
327
|
+
children: t8
|
|
328
|
+
};
|
|
329
|
+
$[61] = t7;
|
|
330
|
+
$[62] = t8;
|
|
331
|
+
$[63] = t9;
|
|
332
|
+
} else t9 = $[63];
|
|
333
|
+
let t10;
|
|
334
|
+
if ($[64] !== activeThread) {
|
|
335
|
+
t10 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
|
|
336
|
+
$[64] = activeThread;
|
|
341
337
|
$[65] = t10;
|
|
342
338
|
} else t10 = $[65];
|
|
343
339
|
let t11;
|
|
344
|
-
if ($[66] !==
|
|
345
|
-
t11 = {
|
|
346
|
-
key: "conversations",
|
|
347
|
-
header: t9,
|
|
348
|
-
children: t10
|
|
349
|
-
};
|
|
350
|
-
$[66] = t10;
|
|
351
|
-
$[67] = t9;
|
|
352
|
-
$[68] = t11;
|
|
353
|
-
} else t11 = $[68];
|
|
354
|
-
let t12;
|
|
355
|
-
if ($[69] !== activeThread) {
|
|
356
|
-
t12 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
|
|
357
|
-
$[69] = activeThread;
|
|
358
|
-
$[70] = t12;
|
|
359
|
-
} else t12 = $[70];
|
|
360
|
-
let t13;
|
|
361
|
-
if ($[71] !== activeNodeId_0 || $[72] !== activeThread || $[73] !== setSelection) {
|
|
362
|
-
t13 = /* @__PURE__ */ jsx(Transcript, {
|
|
340
|
+
if ($[66] !== activeNodeId_0 || $[67] !== activeThread || $[68] !== setSelection) {
|
|
341
|
+
t11 = /* @__PURE__ */ jsx(Transcript, {
|
|
363
342
|
thread: activeThread,
|
|
364
343
|
selection: activeNodeId_0,
|
|
365
344
|
onSelect: setSelection
|
|
366
345
|
});
|
|
367
|
-
$[
|
|
368
|
-
$[
|
|
369
|
-
$[
|
|
346
|
+
$[66] = activeNodeId_0;
|
|
347
|
+
$[67] = activeThread;
|
|
348
|
+
$[68] = setSelection;
|
|
349
|
+
$[69] = t11;
|
|
350
|
+
} else t11 = $[69];
|
|
351
|
+
let t12;
|
|
352
|
+
if ($[70] !== t10 || $[71] !== t11) {
|
|
353
|
+
t12 = {
|
|
354
|
+
key: "transcript",
|
|
355
|
+
header: t10,
|
|
356
|
+
children: t11
|
|
357
|
+
};
|
|
358
|
+
$[70] = t10;
|
|
359
|
+
$[71] = t11;
|
|
360
|
+
$[72] = t12;
|
|
361
|
+
} else t12 = $[72];
|
|
362
|
+
let t13;
|
|
363
|
+
if ($[73] !== selectedMessage) {
|
|
364
|
+
t13 = messageDetailHeader(selectedMessage);
|
|
365
|
+
$[73] = selectedMessage;
|
|
370
366
|
$[74] = t13;
|
|
371
367
|
} else t13 = $[74];
|
|
372
368
|
let t14;
|
|
373
|
-
if ($[75] !==
|
|
374
|
-
t14 = {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
};
|
|
379
|
-
$[75] = t12;
|
|
380
|
-
$[76] = t13;
|
|
381
|
-
$[77] = t14;
|
|
382
|
-
} else t14 = $[77];
|
|
369
|
+
if ($[75] !== selectedMessage) {
|
|
370
|
+
t14 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
|
|
371
|
+
$[75] = selectedMessage;
|
|
372
|
+
$[76] = t14;
|
|
373
|
+
} else t14 = $[76];
|
|
383
374
|
let t15;
|
|
384
|
-
if ($[78] !==
|
|
385
|
-
t15 =
|
|
386
|
-
|
|
375
|
+
if ($[77] !== t13 || $[78] !== t14) {
|
|
376
|
+
t15 = {
|
|
377
|
+
key: "detail",
|
|
378
|
+
header: t13,
|
|
379
|
+
children: t14
|
|
380
|
+
};
|
|
381
|
+
$[77] = t13;
|
|
382
|
+
$[78] = t14;
|
|
387
383
|
$[79] = t15;
|
|
388
384
|
} else t15 = $[79];
|
|
389
385
|
let t16;
|
|
390
|
-
if ($[80] !==
|
|
391
|
-
t16 = /* @__PURE__ */ jsx(
|
|
392
|
-
$[80] = selectedMessage;
|
|
393
|
-
$[81] = t16;
|
|
394
|
-
} else t16 = $[81];
|
|
395
|
-
let t17;
|
|
396
|
-
if ($[82] !== t15 || $[83] !== t16) {
|
|
397
|
-
t17 = {
|
|
398
|
-
key: "detail",
|
|
399
|
-
header: t15,
|
|
400
|
-
children: t16
|
|
401
|
-
};
|
|
402
|
-
$[82] = t15;
|
|
403
|
-
$[83] = t16;
|
|
404
|
-
$[84] = t17;
|
|
405
|
-
} else t17 = $[84];
|
|
406
|
-
let t18;
|
|
407
|
-
if ($[85] !== t11 || $[86] !== t14 || $[87] !== t17) {
|
|
408
|
-
t18 = /* @__PURE__ */ jsx(SplitLayout, {
|
|
386
|
+
if ($[80] !== t12 || $[81] !== t15 || $[82] !== t9) {
|
|
387
|
+
t16 = /* @__PURE__ */ jsx(SplitLayout, {
|
|
409
388
|
sizes: THREE_COL,
|
|
410
389
|
columns: [
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
390
|
+
t9,
|
|
391
|
+
t12,
|
|
392
|
+
t15
|
|
414
393
|
]
|
|
415
394
|
});
|
|
416
|
-
$[
|
|
417
|
-
$[
|
|
418
|
-
$[
|
|
419
|
-
$[
|
|
420
|
-
} else
|
|
421
|
-
return
|
|
395
|
+
$[80] = t12;
|
|
396
|
+
$[81] = t15;
|
|
397
|
+
$[82] = t9;
|
|
398
|
+
$[83] = t16;
|
|
399
|
+
} else t16 = $[83];
|
|
400
|
+
return t16;
|
|
422
401
|
};
|
|
423
402
|
//#endregion
|
|
424
403
|
export { ThreadTab };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadTab.js","names":["useEffect","useMemo","useRef","useState","MessageDetailBody","messageDetailHeader","ConversationList","Transcript","TranscriptHeader","conversationListHeader","messageNodeId","parseThreadListPreview","resolveSingleThread","resolveThreadForId","ThreadPreview","CenteredMessage","ControlButton","EmptyState","SplitLayout","DevToolsTabContext","TWO_COL","THREE_COL","useSelectedMessage","thread","selection","setSelection","$","_c","t0","bb0","messages","length","t1","t2","message","id","find","match","selectedMessage","last","UnloadedConversation","switchToThread","threadId","Symbol","for","t3","ThreadTab","data","state","threads","threadList","snapshots","threadSnapshots","hasConversationList","threadIds","mainThreadId","activeThreadId","setActiveThreadId","t4","ids","archivedThreadIds","includes","prevThreadIdRef","t5","t6","current","t7","t8","activeThread","activeNodeId","t9","t10","t11","key","header","children","t12","t13","t14","t15","loaded","activeNodeId_0","t16","t17","t18"],"sources":["../../../src/shell/tabs/ThreadTab.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageDetailBody, messageDetailHeader } from \"../../views/message\";\nimport {\n ConversationList,\n Transcript,\n TranscriptHeader,\n conversationListHeader,\n messageNodeId,\n parseThreadListPreview,\n resolveSingleThread,\n resolveThreadForId,\n} from \"../../views/thread\";\nimport type { ThreadPreview } from \"../../views/thread\";\nimport { CenteredMessage, ControlButton, EmptyState } from \"../../views/ui\";\nimport { SplitLayout } from \"../SplitLayout\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst TWO_COL = \"clamp(16rem,32%,22rem)_minmax(0,1fr)\";\nconst THREE_COL = \"clamp(12rem,26%,15rem)_clamp(14rem,32%,20rem)_minmax(0,1fr)\";\n\nconst useSelectedMessage = (\n thread: ThreadPreview | null,\n selection: string | null,\n setSelection: (nodeId: string | null) => void,\n) => {\n const selectedMessage = useMemo(() => {\n if (!thread || thread.messages.length === 0) return null;\n const match = thread.messages.find(\n (message) => messageNodeId(message.id) === selection,\n );\n return match ?? thread.messages[thread.messages.length - 1]!;\n }, [thread, selection]);\n\n useEffect(() => {\n if (!thread || thread.messages.length === 0 || selection !== null) return;\n const last = thread.messages[thread.messages.length - 1]!;\n setSelection(messageNodeId(last.id));\n }, [thread, selection, setSelection]);\n\n return selectedMessage;\n};\n\nconst UnloadedConversation = ({\n switchToThread,\n threadId,\n}: {\n switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;\n threadId: string;\n}) => (\n <div className=\"flex h-full flex-col items-center justify-center gap-3 p-6\">\n <EmptyState>\n This conversation has not been opened in the app yet, so its messages are\n not cached in DevTools.\n </EmptyState>\n {switchToThread ? (\n <ControlButton onClick={() => switchToThread(threadId)}>\n Load conversation\n </ControlButton>\n ) : null}\n </div>\n);\n\nexport const ThreadTab = ({\n data,\n selection,\n setSelection,\n switchToThread,\n}: DevToolsTabContext) => {\n const threadList = useMemo(\n () => parseThreadListPreview(data.state.threads),\n [data.state.threads],\n );\n const snapshots = data.threadSnapshots;\n\n const hasConversationList =\n threadList !== null && threadList.threadIds.length > 0;\n\n const [activeThreadId, setActiveThreadId] = useState<string>(\n () => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? \"\",\n );\n\n useEffect(() => {\n if (!hasConversationList || !threadList) return;\n const ids = [...threadList.threadIds, ...threadList.archivedThreadIds];\n if (ids.includes(activeThreadId)) return;\n setActiveThreadId(threadList.mainThreadId ?? threadList.threadIds[0] ?? \"\");\n }, [hasConversationList, threadList, activeThreadId]);\n\n const prevThreadIdRef = useRef(activeThreadId);\n useEffect(() => {\n if (prevThreadIdRef.current === activeThreadId) return;\n prevThreadIdRef.current = activeThreadId;\n setSelection(null);\n }, [activeThreadId, setSelection]);\n\n const activeThread = useMemo(() => {\n if (!hasConversationList) {\n return resolveSingleThread(data.state);\n }\n return resolveThreadForId(\n data.state,\n snapshots,\n activeThreadId,\n threadList,\n );\n }, [hasConversationList, data.state, snapshots, activeThreadId, threadList]);\n\n const selectedMessage = useSelectedMessage(\n activeThread,\n selection,\n setSelection,\n );\n\n if (!hasConversationList) {\n if (!activeThread || activeThread.messages.length === 0) {\n return (\n <CenteredMessage>\n No thread messages for this assistant instance.\n </CenteredMessage>\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={TWO_COL}\n columns={[\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread} />,\n children: (\n <Transcript\n thread={activeThread}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n }\n\n const loaded = activeThread !== null && activeThread.messages.length > 0;\n\n if (!loaded) {\n return (\n <SplitLayout\n sizes=\"clamp(12rem,26%,15rem)_minmax(0,1fr)\"\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"empty\",\n children: (\n <UnloadedConversation\n threadId={activeThreadId}\n switchToThread={switchToThread}\n />\n ),\n },\n ]}\n />\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={THREE_COL}\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread!} />,\n children: (\n <Transcript\n thread={activeThread!}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadTab.js","names":["useEffect","useMemo","useRef","useState","MessageDetailBody","messageDetailHeader","ConversationList","Transcript","TranscriptHeader","conversationListHeader","messageNodeId","parseThreadListPreview","resolveSingleThread","resolveThreadForId","ThreadPreview","CenteredMessage","ControlButton","EmptyState","SplitLayout","DevToolsTabContext","TWO_COL","THREE_COL","useSelectedMessage","thread","selection","setSelection","$","_c","t0","bb0","messages","length","t1","t2","message","id","find","match","selectedMessage","last","UnloadedConversation","switchToThread","threadId","Symbol","for","t3","ThreadTab","data","state","threads","threadList","snapshots","threadSnapshots","hasConversationList","threadIds","mainThreadId","activeThreadId","setActiveThreadId","resolvedThreadId","archivedThreadIds","includes","prevThreadIdRef","t4","current","t5","t6","activeThread","activeNodeId","t7","t8","t9","key","header","children","t10","t11","t12","t13","loaded","activeNodeId_0","t14","t15","t16"],"sources":["../../../src/shell/tabs/ThreadTab.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageDetailBody, messageDetailHeader } from \"../../views/message\";\nimport {\n ConversationList,\n Transcript,\n TranscriptHeader,\n conversationListHeader,\n messageNodeId,\n parseThreadListPreview,\n resolveSingleThread,\n resolveThreadForId,\n} from \"../../views/thread\";\nimport type { ThreadPreview } from \"../../views/thread\";\nimport { CenteredMessage, ControlButton, EmptyState } from \"../../views/ui\";\nimport { SplitLayout } from \"../SplitLayout\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst TWO_COL = \"clamp(16rem,32%,22rem)_minmax(0,1fr)\";\nconst THREE_COL = \"clamp(12rem,26%,15rem)_clamp(14rem,32%,20rem)_minmax(0,1fr)\";\n\nconst useSelectedMessage = (\n thread: ThreadPreview | null,\n selection: string | null,\n setSelection: (nodeId: string | null) => void,\n) => {\n const selectedMessage = useMemo(() => {\n if (!thread || thread.messages.length === 0) return null;\n const match = thread.messages.find(\n (message) => messageNodeId(message.id) === selection,\n );\n return match ?? thread.messages[thread.messages.length - 1]!;\n }, [thread, selection]);\n\n useEffect(() => {\n if (!thread || thread.messages.length === 0 || selection !== null) return;\n const last = thread.messages[thread.messages.length - 1]!;\n setSelection(messageNodeId(last.id));\n }, [thread, selection, setSelection]);\n\n return selectedMessage;\n};\n\nconst UnloadedConversation = ({\n switchToThread,\n threadId,\n}: {\n switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;\n threadId: string;\n}) => (\n <div className=\"flex h-full flex-col items-center justify-center gap-3 p-6\">\n <EmptyState>\n This conversation has not been opened in the app yet, so its messages are\n not cached in DevTools.\n </EmptyState>\n {switchToThread ? (\n <ControlButton onClick={() => switchToThread(threadId)}>\n Load conversation\n </ControlButton>\n ) : null}\n </div>\n);\n\nexport const ThreadTab = ({\n data,\n selection,\n setSelection,\n switchToThread,\n}: DevToolsTabContext) => {\n const threadList = useMemo(\n () => parseThreadListPreview(data.state.threads),\n [data.state.threads],\n );\n const snapshots = data.threadSnapshots;\n\n const hasConversationList =\n threadList !== null && threadList.threadIds.length > 0;\n\n const [activeThreadId, setActiveThreadId] = useState<string>(\n () => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? \"\",\n );\n\n const resolvedThreadId =\n hasConversationList && threadList\n ? [...threadList.threadIds, ...threadList.archivedThreadIds].includes(\n activeThreadId,\n )\n ? activeThreadId\n : (threadList.mainThreadId ?? threadList.threadIds[0] ?? \"\")\n : activeThreadId;\n\n if (resolvedThreadId !== activeThreadId) setActiveThreadId(resolvedThreadId);\n\n const prevThreadIdRef = useRef(activeThreadId);\n useEffect(() => {\n if (prevThreadIdRef.current === activeThreadId) return;\n prevThreadIdRef.current = activeThreadId;\n setSelection(null);\n }, [activeThreadId, setSelection]);\n\n const activeThread = useMemo(() => {\n if (!hasConversationList) {\n return resolveSingleThread(data.state);\n }\n return resolveThreadForId(\n data.state,\n snapshots,\n activeThreadId,\n threadList,\n );\n }, [hasConversationList, data.state, snapshots, activeThreadId, threadList]);\n\n const selectedMessage = useSelectedMessage(\n activeThread,\n selection,\n setSelection,\n );\n\n if (!hasConversationList) {\n if (!activeThread || activeThread.messages.length === 0) {\n return (\n <CenteredMessage>\n No thread messages for this assistant instance.\n </CenteredMessage>\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={TWO_COL}\n columns={[\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread} />,\n children: (\n <Transcript\n thread={activeThread}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n }\n\n const loaded = activeThread !== null && activeThread.messages.length > 0;\n\n if (!loaded) {\n return (\n <SplitLayout\n sizes=\"clamp(12rem,26%,15rem)_minmax(0,1fr)\"\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"empty\",\n children: (\n <UnloadedConversation\n threadId={activeThreadId}\n switchToThread={switchToThread}\n />\n ),\n },\n ]}\n />\n );\n }\n\n const activeNodeId = messageNodeId(selectedMessage!.id);\n\n return (\n <SplitLayout\n sizes={THREE_COL}\n columns={[\n {\n key: \"conversations\",\n header: conversationListHeader(threadList!),\n children: (\n <ConversationList\n threadList={threadList!}\n snapshots={snapshots}\n selectedId={activeThreadId}\n onSelect={setActiveThreadId}\n />\n ),\n },\n {\n key: \"transcript\",\n header: <TranscriptHeader thread={activeThread!} />,\n children: (\n <Transcript\n thread={activeThread!}\n selection={activeNodeId}\n onSelect={setSelection}\n />\n ),\n },\n {\n key: \"detail\",\n header: messageDetailHeader(selectedMessage!),\n children: <MessageDetailBody message={selectedMessage!} />,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/react-devtools",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.18",
|
|
4
4
|
"description": "React development tools for assistant-ui components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"assistant-ui",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@assistant-ui/react": "^0.15.0",
|
|
35
|
-
"@assistant-ui/tap": "^0.9.
|
|
35
|
+
"@assistant-ui/tap": "^0.9.17",
|
|
36
36
|
"@types/react": "*",
|
|
37
37
|
"@types/react-dom": "*",
|
|
38
38
|
"react": "^18 || ^19",
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@assistant-ui/react": "0.15.
|
|
51
|
-
"@assistant-ui/tap": "0.9.
|
|
52
|
-
"@assistant-ui/x-buildutils": "0.0.
|
|
50
|
+
"@assistant-ui/react": "0.15.19",
|
|
51
|
+
"@assistant-ui/tap": "0.9.17",
|
|
52
|
+
"@assistant-ui/x-buildutils": "0.0.26",
|
|
53
53
|
"@tailwindcss/cli": "^4.3.3",
|
|
54
|
-
"@types/node": "^26.4.
|
|
54
|
+
"@types/node": "^26.4.1",
|
|
55
55
|
"@types/react": "^19.2.18",
|
|
56
|
-
"@types/react-dom": "^19.2.
|
|
56
|
+
"@types/react-dom": "^19.2.7",
|
|
57
57
|
"react": "^19.2.8",
|
|
58
58
|
"react-dom": "^19.2.8",
|
|
59
59
|
"tailwindcss": "^4.3.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import { useDevToolsClient } from "../data/useDevToolsClient";
|
|
6
6
|
import { inProcessClient } from "../data/createInProcessClient";
|
|
@@ -40,10 +40,12 @@ export const DevToolsPanel = ({
|
|
|
40
40
|
resolvedClient,
|
|
41
41
|
);
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
const resolvedApiId =
|
|
44
|
+
selectedApiId !== null && apiIds.includes(selectedApiId)
|
|
45
|
+
? selectedApiId
|
|
46
|
+
: (apiIds[0] ?? null);
|
|
47
|
+
|
|
48
|
+
if (resolvedApiId !== selectedApiId) setSelectedApiId(resolvedApiId);
|
|
47
49
|
|
|
48
50
|
const allPlugins = useMemo(
|
|
49
51
|
() =>
|
|
@@ -79,12 +79,16 @@ export const ThreadTab = ({
|
|
|
79
79
|
() => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? "",
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
const resolvedThreadId =
|
|
83
|
+
hasConversationList && threadList
|
|
84
|
+
? [...threadList.threadIds, ...threadList.archivedThreadIds].includes(
|
|
85
|
+
activeThreadId,
|
|
86
|
+
)
|
|
87
|
+
? activeThreadId
|
|
88
|
+
: (threadList.mainThreadId ?? threadList.threadIds[0] ?? "")
|
|
89
|
+
: activeThreadId;
|
|
90
|
+
|
|
91
|
+
if (resolvedThreadId !== activeThreadId) setActiveThreadId(resolvedThreadId);
|
|
88
92
|
|
|
89
93
|
const prevThreadIdRef = useRef(activeThreadId);
|
|
90
94
|
useEffect(() => {
|