@assistant-ui/react-devtools 1.2.16 → 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.
@@ -92,7 +92,7 @@ const UnloadedConversation = (t0) => {
92
92
  return t3;
93
93
  };
94
94
  const ThreadTab = (t0) => {
95
- const $ = c(89);
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] !== hasConversationList || $[7] !== threadList) {
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
- t6 = [activeThreadId, setSelection];
147
- $[10] = activeThreadId;
148
- $[11] = setSelection;
149
- $[12] = t5;
150
- $[13] = t6;
125
+ t4 = [activeThreadId, setSelection];
126
+ $[5] = activeThreadId;
127
+ $[6] = setSelection;
128
+ $[7] = t3;
129
+ $[8] = t4;
151
130
  } else {
152
- t5 = $[12];
153
- t6 = $[13];
131
+ t3 = $[7];
132
+ t4 = $[8];
154
133
  }
155
- useEffect(t5, t6);
156
- let t7;
134
+ useEffect(t3, t4);
135
+ let t5;
157
136
  bb0: {
158
137
  if (!hasConversationList) {
159
- let t8;
160
- if ($[14] !== data.state) {
161
- t8 = resolveSingleThread(data.state);
162
- $[14] = data.state;
163
- $[15] = t8;
164
- } else t8 = $[15];
165
- t7 = t8;
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 t8;
169
- if ($[16] !== activeThreadId || $[17] !== data.state || $[18] !== snapshots || $[19] !== threadList) {
170
- t8 = resolveThreadForId(data.state, snapshots, activeThreadId, threadList);
171
- $[16] = activeThreadId;
172
- $[17] = data.state;
173
- $[18] = snapshots;
174
- $[19] = threadList;
175
- $[20] = t8;
176
- } else t8 = $[20];
177
- t7 = t8;
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 = t7;
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 t8;
184
- if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
185
- t8 = /* @__PURE__ */ jsx(CenteredMessage, { children: "No thread messages for this assistant instance." });
186
- $[21] = t8;
187
- } else t8 = $[21];
188
- return t8;
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] !== selectedMessage.id) {
192
- t8 = messageNodeId(selectedMessage.id);
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
- $[26] = activeNodeId;
211
- $[27] = activeThread;
212
- $[28] = setSelection;
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] !== t10 || $[31] !== t9) {
217
- t11 = {
218
- key: "transcript",
219
- header: t9,
220
- children: t10
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] !== selectedMessage) {
228
- t12 = messageDetailHeader(selectedMessage);
229
- $[33] = selectedMessage;
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] !== selectedMessage) {
234
- t13 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
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: [t11, t14]
232
+ columns: [t9, t12]
254
233
  });
255
- $[40] = t11;
256
- $[41] = t14;
257
- $[42] = t15;
258
- } else t15 = $[42];
259
- return t15;
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 t8;
263
- if ($[43] !== threadList) {
264
- t8 = conversationListHeader(threadList);
265
- $[43] = threadList;
266
- $[44] = t8;
267
- } else t8 = $[44];
268
- let t9;
269
- if ($[45] !== activeThreadId || $[46] !== snapshots || $[47] !== threadList) {
270
- t9 = /* @__PURE__ */ jsx(ConversationList, {
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
- $[45] = activeThreadId;
277
- $[46] = snapshots;
278
- $[47] = threadList;
279
- $[48] = t9;
280
- } else t9 = $[48];
281
- let t10;
282
- if ($[49] !== t8 || $[50] !== t9) {
283
- t10 = {
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: t8,
286
- children: t9
264
+ header: t6,
265
+ children: t7
287
266
  };
288
- $[49] = t8;
289
- $[50] = t9;
290
- $[51] = t10;
291
- } else t10 = $[51];
292
- let t11;
293
- if ($[52] !== activeThreadId || $[53] !== switchToThread) {
294
- t11 = {
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
- $[52] = activeThreadId;
302
- $[53] = switchToThread;
303
- $[54] = t11;
304
- } else t11 = $[54];
305
- let t12;
306
- if ($[55] !== t10 || $[56] !== t11) {
307
- t12 = /* @__PURE__ */ jsx(SplitLayout, {
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: [t10, t11]
288
+ columns: [t8, t9]
310
289
  });
311
- $[55] = t10;
312
- $[56] = t11;
313
- $[57] = t12;
314
- } else t12 = $[57];
315
- return t12;
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] !== selectedMessage.id) {
319
- t8 = messageNodeId(selectedMessage.id);
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
- $[62] = activeThreadId;
339
- $[63] = snapshots;
340
- $[64] = threadList;
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] !== t10 || $[67] !== t9) {
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
- $[71] = activeNodeId_0;
368
- $[72] = activeThread;
369
- $[73] = setSelection;
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] !== t12 || $[76] !== t13) {
374
- t14 = {
375
- key: "transcript",
376
- header: t12,
377
- children: t13
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] !== selectedMessage) {
385
- t15 = messageDetailHeader(selectedMessage);
386
- $[78] = selectedMessage;
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] !== selectedMessage) {
391
- t16 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
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
- t11,
412
- t14,
413
- t17
390
+ t9,
391
+ t12,
392
+ t15
414
393
  ]
415
394
  });
416
- $[85] = t11;
417
- $[86] = t14;
418
- $[87] = t17;
419
- $[88] = t18;
420
- } else t18 = $[88];
421
- return t18;
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":";;;;;;;;;;;;;AAiBA,MAAMoB,UAAU;AAChB,MAAMC,YAAY;AAElB,MAAMC,sBAAqBC,QAAAC,WAAAC,iBAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAAC,KAAA;EAMvB,IAAI,CAACN,UAAUA,OAAMO,SAASC,WAAY,GAAC;GAAEH,KAAO;GAAP,MAAAC;EAAY;EAAA,IAAAG;EAAA,IAAAN,EAAA,OAAAF,aAAAE,EAAA,OAAAH,OAAAO,UAAA;GAAA,IAAAG;GAAA,IAAAP,EAAA,OAAAF,WAAA;IAEvDS,MAAAC,YAAaxB,cAAcwB,QAAOC,EAAG,MAAMX;IAASE,EAAA,KAAAF;IAAAE,EAAA,KAAAO;GAAA,OAAAA,KAAAP,EAAA;GADxCM,KAAAT,OAAMO,SAASM,KAC3BH,EACF;GAACP,EAAA,KAAAF;GAAAE,EAAA,KAAAH,OAAAO;GAAAJ,EAAA,KAAAM;EAAA,OAAAA,KAAAN,EAAA;EACDE,KAAOS,MAASd,OAAMO,SAAUP,OAAMO,SAASC,SAAU;CAAI;CAL/D,MAAAO,kBAAwBV;CAMA,IAAAI;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAF,aAAAE,EAAA,OAAAD,gBAAAC,EAAA,OAAAH,QAAA;EAEdS,WAAA;GACR,IAAI,CAACT,UAAUA,OAAMO,SAASC,WAAY,KAAKP,cAAc,MAAI;GACjE,MAAAe,OAAahB,OAAMO,SAAUP,OAAMO,SAASC,SAAU;GACtDN,aAAaf,cAAc6B,KAAIJ,EAAG,CAAC;EAAC;EACnCF,KAAA;GAACV;GAAQC;GAAWC;EAAY;EAACC,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAD,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAJpC1B,UAAUgC,IAIPC,EAAiC;CAAC,OAE9BK;AAAe;AAGxB,MAAME,wBAAuBZ,OAAA;CAAA,MAAAF,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAc,gBAAAC,aAAAd;CAM7B,IAAAI;CAAA,IAAAN,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,GAAA;EAEGZ,KAAA,oBAAC,YAAD,EAAA,UAAY,oGAAD,CAAA;EAGEN,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAe,kBAAAf,EAAA,OAAAgB,UAAA;EACZT,KAAAQ,iBACC,oBAAC,eAAD;GAAwB,eAAMA,eAAeC,QAAQ;GAAG,UAAA;EAA1C,CAAA,IADf;EAIOhB,EAAA,KAAAe;EAAAf,EAAA,KAAAgB;EAAAhB,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAO,IAAA;EATVY,KAAA,qBAAA,OAAA;GAAe,WAAA;GAAf,UAAA,CACEb,IAICC,EAKG;;EAAAP,EAAA,KAAAO;EAAAP,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,OAVNmB;AAUM;AAGR,MAAaC,aAAYlB,OAAA;CAAA,MAAAF,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAoB,MAAAvB,WAAAC,cAAAgB,mBAAAb;CAKL,IAAAI;CAAA,IAAAN,EAAA,OAAAqB,KAAAC,MAAAC,SAAA;EAEXjB,KAAArB,uBAAuBoC,KAAIC,MAAMC,OAAQ;EAACvB,EAAA,KAAAqB,KAAAC,MAAAC;EAAAvB,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CADlD,MAAAwB,aACQlB;CAGR,MAAAmB,YAAkBJ,KAAIK;CAEtB,MAAAC,sBACEH,eAAe,QAAQA,WAAUI,UAAUvB,SAAU;CAAE,IAAAE;CAAA,IAAAP,EAAA,OAAAwB,YAAAK,gBAAA7B,EAAA,OAAAwB,YAAAI,WAAA;EAGvDrB,WAAMiB,YAAUK,gBAAkBL,YAAUI,UAAc,MAApD;EAA0D5B,EAAA,KAAAwB,YAAAK;EAAA7B,EAAA,KAAAwB,YAAAI;EAAA5B,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CADlE,MAAA,CAAA8B,gBAAAC,qBAA4CtD,SAC1C8B,EACF;CAAE,IAAAY;CAAA,IAAAa;CAAA,IAAAhC,EAAA,OAAA8B,kBAAA9B,EAAA,OAAA2B,uBAAA3B,EAAA,OAAAwB,YAAA;EAEQL,WAAA;GACR,IAAI,CAACQ,uBAAD,CAAyBH,YAAU;GAEvC,IAAIS,CADQ,GAAIT,WAAUI,WAAU,GAAKJ,WAAUU,iBAC/CD,CAAG,CAAAE,SAAUL,cAAc,GAAC;GAChCC,kBAAkBP,WAAUK,gBAAiBL,WAAUI,UAAU,MAA/C,EAAwD;EAAC;EAC1EI,KAAA;GAACL;GAAqBH;GAAYM;EAAc;EAAC9B,EAAA,KAAA8B;EAAA9B,EAAA,KAAA2B;EAAA3B,EAAA,KAAAwB;EAAAxB,EAAA,KAAAmB;EAAAnB,EAAA,KAAAgC;CAAA,OAAA;EAAAb,KAAAnB,EAAA;EAAAgC,KAAAhC,EAAA;CAAA;CALpD1B,UAAU6C,IAKPa,EAAiD;CAEpD,MAAAI,kBAAwB5D,OAAOsD,cAAc;CAAE,IAAAO;CAAA,IAAAC;CAAA,IAAAtC,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAD,cAAA;EACrCsC,WAAA;GACR,IAAID,gBAAeG,YAAaT,gBAAc;GAC9CM,gBAAeG,UAAWT;GAC1B/B,aAAa,IAAI;EAAC;EACjBuC,KAAA,CAACR,gBAAgB/B,YAAY;EAACC,EAAA,MAAA8B;EAAA9B,EAAA,MAAAD;EAAAC,EAAA,MAAAqC;EAAArC,EAAA,MAAAsC;CAAA,OAAA;EAAAD,KAAArC,EAAA;EAAAsC,KAAAtC,EAAA;CAAA;CAJjC1B,UAAU+D,IAIPC,EAA8B;CAAC,IAAAE;CAAArC,KAAA;EAGhC,IAAI,CAACwB,qBAAmB;GAAA,IAAAc;GAAA,IAAAzC,EAAA,QAAAqB,KAAAC,OAAA;IACfmB,KAAAvD,oBAAoBmC,KAAIC,KAAM;IAACtB,EAAA,MAAAqB,KAAAC;IAAAtB,EAAA,MAAAyC;GAAA,OAAAA,KAAAzC,EAAA;GAAtCwC,KAAOC;GAAP,MAAAtC;EAAuC;EACxC,IAAAsC;EAAA,IAAAzC,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAqB,KAAAC,SAAAtB,EAAA,QAAAyB,aAAAzB,EAAA,QAAAwB,YAAA;GACMiB,KAAAtD,mBACLkC,KAAIC,OACJG,WACAK,gBACAN,UACF;GAACxB,EAAA,MAAA8B;GAAA9B,EAAA,MAAAqB,KAAAC;GAAAtB,EAAA,MAAAyB;GAAAzB,EAAA,MAAAwB;GAAAxB,EAAA,MAAAyC;EAAA,OAAAA,KAAAzC,EAAA;EALDwC,KAAOC;CAKL;CATJ,MAAAC,eAAqBF;CAYrB,MAAA5B,kBAAwBhB,mBACtB8C,cACA5C,WACAC,YACF;CAEA,IAAI,CAAC4B,qBAAmB;EACtB,IAAI,CAACe,gBAAgBA,aAAYtC,SAASC,WAAY,GAAC;GAAA,IAAAoC;GAAA,IAAAzC,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,GAAA;IAEnDuB,KAAA,oBAAC,iBAAD,EAAA,UAAiB,kDAAD,CAAA;IAEEzC,EAAA,MAAAyC;GAAA,OAAAA,KAAAzC,EAAA;GAAA,OAFlByC;EAEkB;EAErB,IAAAA;EAAA,IAAAzC,EAAA,QAAAY,gBAAAH,IAAA;GAEoBgC,KAAAzD,cAAc4B,gBAAeH,EAAI;GAACT,EAAA,MAAAY,gBAAAH;GAAAT,EAAA,MAAAyC;EAAA,OAAAA,KAAAzC,EAAA;EAAvD,MAAA2C,eAAqBF;EAAmC,IAAAG;EAAA,IAAA5C,EAAA,QAAA0C,cAAA;GAQxCE,KAAA,oBAAC,kBAAD,EAA0BF,QAAAA,aAAY,CAAA;GAAI1C,EAAA,MAAA0C;GAAA1C,EAAA,MAAA4C;EAAA,OAAAA,KAAA5C,EAAA;EAAA,IAAA6C;EAAA,IAAA7C,EAAA,QAAA2C,gBAAA3C,EAAA,QAAA0C,gBAAA1C,EAAA,QAAAD,cAAA;GAEhD8C,MAAA,oBAAC,YAAD;IACUH,QAAAA;IACGC,WAAAA;IACD5C,UAAAA;GAAY,CAAA;GACtBC,EAAA,MAAA2C;GAAA3C,EAAA,MAAA0C;GAAA1C,EAAA,MAAAD;GAAAC,EAAA,MAAA6C;EAAA,OAAAA,MAAA7C,EAAA;EAAA,IAAA8C;EAAA,IAAA9C,EAAA,QAAA6C,OAAA7C,EAAA,QAAA4C,IAAA;GARNE,MAAA;IAAAC,KACO;IAAYC,QACTJ;IAA0CK,UAEhDJ;GAMJ;GAAC7C,EAAA,MAAA6C;GAAA7C,EAAA,MAAA4C;GAAA5C,EAAA,MAAA8C;EAAA,OAAAA,MAAA9C,EAAA;EAAA,IAAAkD;EAAA,IAAAlD,EAAA,QAAAY,iBAAA;GAGSsC,MAAAvE,oBAAoBiC,eAAgB;GAACZ,EAAA,MAAAY;GAAAZ,EAAA,MAAAkD;EAAA,OAAAA,MAAAlD,EAAA;EAAA,IAAAmD;EAAA,IAAAnD,EAAA,QAAAY,iBAAA;GACnCuC,MAAA,oBAAC,mBAAD,EAA4BvC,SAAAA,gBAAe,CAAA;GAAKZ,EAAA,MAAAY;GAAAZ,EAAA,MAAAmD;EAAA,OAAAA,MAAAnD,EAAA;EAAA,IAAAoD;EAAA,IAAApD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAmD,KAAA;GAH5DC,MAAA;IAAAL,KACO;IAAQC,QACLE;IAAqCD,UACnCE;GACZ;GAACnD,EAAA,MAAAkD;GAAAlD,EAAA,MAAAmD;GAAAnD,EAAA,MAAAoD;EAAA,OAAAA,MAAApD,EAAA;EAAA,IAAAqD;EAAA,IAAArD,EAAA,QAAA8C,OAAA9C,EAAA,QAAAoD,KAAA;GAlBLC,MAAA,oBAAC,aAAD;IACS3D,OAAAA;IACE,SAAA,CACPoD,KAWAM,GAIC;GACF,CAAA;GACDpD,EAAA,MAAA8C;GAAA9C,EAAA,MAAAoD;GAAApD,EAAA,MAAAqD;EAAA,OAAAA,MAAArD,EAAA;EAAA,OApBFqD;CAoBE;CAMN,IAAI,EAFWX,iBAAiB,QAAQA,aAAYtC,SAASC,SAAU,IAE5D;EAAA,IAAAoC;EAAA,IAAAzC,EAAA,QAAAwB,YAAA;GAOOiB,KAAA1D,uBAAuByC,UAAW;GAACxB,EAAA,MAAAwB;GAAAxB,EAAA,MAAAyC;EAAA,OAAAA,KAAAzC,EAAA;EAAA,IAAA4C;EAAA,IAAA5C,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAyB,aAAAzB,EAAA,QAAAwB,YAAA;GAEzCoB,KAAA,oBAAC,kBAAD;IACcpB;IACDC;IACCK,YAAAA;IACFC,UAAAA;GAAiB,CAAA;GAC3B/B,EAAA,MAAA8B;GAAA9B,EAAA,MAAAyB;GAAAzB,EAAA,MAAAwB;GAAAxB,EAAA,MAAA4C;EAAA,OAAAA,KAAA5C,EAAA;EAAA,IAAA6C;EAAA,IAAA7C,EAAA,QAAAyC,MAAAzC,EAAA,QAAA4C,IAAA;GATNC,MAAA;IAAAE,KACO;IAAeC,QACZP;IAAmCQ,UAEzCL;GAOJ;GAAC5C,EAAA,MAAAyC;GAAAzC,EAAA,MAAA4C;GAAA5C,EAAA,MAAA6C;EAAA,OAAAA,MAAA7C,EAAA;EAAA,IAAA8C;EAAA,IAAA9C,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAe,gBAAA;GACD+B,MAAA;IAAAC,KACO;IAAOE,UAEV,oBAAC,sBAAD;KACYnB,UAAAA;KACMf;IAAc,CAAA;GAGpC;GAACf,EAAA,MAAA8B;GAAA9B,EAAA,MAAAe;GAAAf,EAAA,MAAA8C;EAAA,OAAAA,MAAA9C,EAAA;EAAA,IAAAkD;EAAA,IAAAlD,EAAA,QAAA6C,OAAA7C,EAAA,QAAA8C,KAAA;GAvBLI,MAAA,oBAAC,aAAD;IACQ,OAAA;IACG,SAAA,CACPL,KAYAC,GAQC;GACF,CAAA;GACD9C,EAAA,MAAA6C;GAAA7C,EAAA,MAAA8C;GAAA9C,EAAA,MAAAkD;EAAA,OAAAA,MAAAlD,EAAA;EAAA,OAzBFkD;CAyBE;CAEL,IAAAT;CAAA,IAAAzC,EAAA,QAAAY,gBAAAH,IAAA;EAEoBgC,KAAAzD,cAAc4B,gBAAeH,EAAI;EAACT,EAAA,MAAAY,gBAAAH;EAAAT,EAAA,MAAAyC;CAAA,OAAAA,KAAAzC,EAAA;CAAvD,MAAAuD,iBAAqBd;CAAmC,IAAAG;CAAA,IAAA5C,EAAA,QAAAwB,YAAA;EAQxCoB,KAAA7D,uBAAuByC,UAAW;EAACxB,EAAA,MAAAwB;EAAAxB,EAAA,MAAA4C;CAAA,OAAAA,KAAA5C,EAAA;CAAA,IAAA6C;CAAA,IAAA7C,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAyB,aAAAzB,EAAA,QAAAwB,YAAA;EAEzCqB,MAAA,oBAAC,kBAAD;GACcrB;GACDC;GACCK,YAAAA;GACFC,UAAAA;EAAiB,CAAA;EAC3B/B,EAAA,MAAA8B;EAAA9B,EAAA,MAAAyB;EAAAzB,EAAA,MAAAwB;EAAAxB,EAAA,MAAA6C;CAAA,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,IAAA9C,EAAA,QAAA6C,OAAA7C,EAAA,QAAA4C,IAAA;EATNE,MAAA;GAAAC,KACO;GAAeC,QACZJ;GAAmCK,UAEzCJ;EAOJ;EAAC7C,EAAA,MAAA6C;EAAA7C,EAAA,MAAA4C;EAAA5C,EAAA,MAAA8C;CAAA,OAAAA,MAAA9C,EAAA;CAAA,IAAAkD;CAAA,IAAAlD,EAAA,QAAA0C,cAAA;EAGSQ,MAAA,oBAAC,kBAAD,EAA0BR,QAAAA,aAAY,CAAA;EAAK1C,EAAA,MAAA0C;EAAA1C,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;CAAA,IAAAnD,EAAA,QAAAuD,kBAAAvD,EAAA,QAAA0C,gBAAA1C,EAAA,QAAAD,cAAA;EAEjDoD,MAAA,oBAAC,YAAD;GACUT,QAAAA;GACGC,WAAAA;GACD5C,UAAAA;EAAY,CAAA;EACtBC,EAAA,MAAAuD;EAAAvD,EAAA,MAAA0C;EAAA1C,EAAA,MAAAD;EAAAC,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,IAAApD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAmD,KAAA;EARNC,MAAA;GAAAL,KACO;GAAYC,QACTE;GAA2CD,UAEjDE;EAMJ;EAACnD,EAAA,MAAAkD;EAAAlD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CAAA,IAAArD,EAAA,QAAAY,iBAAA;EAGSyC,MAAA1E,oBAAoBiC,eAAgB;EAACZ,EAAA,MAAAY;EAAAZ,EAAA,MAAAqD;CAAA,OAAAA,MAAArD,EAAA;CAAA,IAAAwD;CAAA,IAAAxD,EAAA,QAAAY,iBAAA;EACnC4C,MAAA,oBAAC,mBAAD,EAA4B5C,SAAAA,gBAAe,CAAA;EAAKZ,EAAA,MAAAY;EAAAZ,EAAA,MAAAwD;CAAA,OAAAA,MAAAxD,EAAA;CAAA,IAAAyD;CAAA,IAAAzD,EAAA,QAAAqD,OAAArD,EAAA,QAAAwD,KAAA;EAH5DC,MAAA;GAAAV,KACO;GAAQC,QACLK;GAAqCJ,UACnCO;EACZ;EAACxD,EAAA,MAAAqD;EAAArD,EAAA,MAAAwD;EAAAxD,EAAA,MAAAyD;CAAA,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,QAAA8C,OAAA9C,EAAA,QAAAoD,OAAApD,EAAA,QAAAyD,KAAA;EA9BLC,MAAA,oBAAC,aAAD;GACS/D,OAAAA;GACE,SAAA;IACPmD;IAYAM;IAWAK;GAIC;EACF,CAAA;EACDzD,EAAA,MAAA8C;EAAA9C,EAAA,MAAAoD;EAAApD,EAAA,MAAAyD;EAAAzD,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,OAhCF0D;AAgCE"}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.d.ts","names":[],"sources":["../../src/utils/serialization.ts"],"mappings":";;;cAIa,qBACX,gBACA,OAAA;cA+DW;;;;;;;;cAwCA,kBAAmB,gBAAgB;cAoBnC,oBAAqB;cAGrB,wBACX,SAAS,6BACR"}
1
+ {"version":3,"file":"serialization.d.ts","names":[],"sources":["../../src/utils/serialization.ts"],"mappings":";;;cAKa,qBACX,gBACA,OAAA;cA8FW;;;;;;;;cAwCA,kBAAmB,gBAAgB;cAoBnC,oBAAqB;cAGrB,wBACX,SAAS,6BACR"}