@opengeni/react 1.1.0 → 1.2.0

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.
Files changed (45) hide show
  1. package/dist/{chunk-6TROCOEK.js → chunk-4OTO7KBK.js} +774 -731
  2. package/dist/chunk-4OTO7KBK.js.map +1 -0
  3. package/dist/{chunk-RLUSC2WA.js → chunk-5F4WR7X7.js} +2 -1
  4. package/dist/chunk-5F4WR7X7.js.map +1 -0
  5. package/dist/{chunk-EN3YTHKR.js → chunk-CY7WK5FD.js} +2 -2
  6. package/dist/{chunk-26ZNDDLZ.js → chunk-LNIRAOA3.js} +27 -8
  7. package/dist/chunk-LNIRAOA3.js.map +1 -0
  8. package/dist/{chunk-DO544OSV.js → chunk-RC6BZ44Q.js} +4 -3
  9. package/dist/chunk-RC6BZ44Q.js.map +1 -0
  10. package/dist/{chunk-WGXVEJO5.js → chunk-SGKD2OCN.js} +5 -5
  11. package/dist/chunk-SGKD2OCN.js.map +1 -0
  12. package/dist/{chunk-JIQYUGVL.js → chunk-X34BSY2R.js} +3 -3
  13. package/dist/components/model-mark.d.ts +3 -3
  14. package/dist/composer.js +4 -4
  15. package/dist/index.js +7 -7
  16. package/dist/{latest-question-HTRIS4KJ.js → latest-question-YTOBHCWR.js} +2 -2
  17. package/dist/{model-policy-picker-menu-M54ISBMN.js → model-policy-picker-menu-DXHUL73H.js} +4 -4
  18. package/dist/model-policy.d.ts +1 -0
  19. package/dist/model-policy.js +1 -1
  20. package/dist/realtime.js +2 -2
  21. package/dist/session-ui.js +6 -6
  22. package/dist/session.js +2 -2
  23. package/dist/timeline/genie-loading.d.ts +3 -1
  24. package/dist/timeline/startup-dispatch-details.d.ts +5 -0
  25. package/dist/timeline/types.d.ts +5 -1
  26. package/package.json +3 -3
  27. package/src/components/model-mark.tsx +16 -5
  28. package/src/components/model-policy-picker-menu.tsx +2 -2
  29. package/src/components/model-policy-picker.tsx +11 -3
  30. package/src/components/session-conversation.tsx +3 -0
  31. package/src/model-policy.ts +9 -0
  32. package/src/timeline/activity-rail.tsx +14 -4
  33. package/src/timeline/genie-loading.tsx +27 -16
  34. package/src/timeline/projection.ts +7 -3
  35. package/src/timeline/startup-dispatch-details.tsx +36 -0
  36. package/src/timeline/types.ts +5 -0
  37. package/dist/chunk-26ZNDDLZ.js.map +0 -1
  38. package/dist/chunk-6TROCOEK.js.map +0 -1
  39. package/dist/chunk-DO544OSV.js.map +0 -1
  40. package/dist/chunk-RLUSC2WA.js.map +0 -1
  41. package/dist/chunk-WGXVEJO5.js.map +0 -1
  42. /package/dist/{chunk-EN3YTHKR.js.map → chunk-CY7WK5FD.js.map} +0 -0
  43. /package/dist/{chunk-JIQYUGVL.js.map → chunk-X34BSY2R.js.map} +0 -0
  44. /package/dist/{latest-question-HTRIS4KJ.js.map → latest-question-YTOBHCWR.js.map} +0 -0
  45. /package/dist/{model-policy-picker-menu-M54ISBMN.js.map → model-policy-picker-menu-DXHUL73H.js.map} +0 -0
@@ -28,11 +28,11 @@ import {
28
28
  useSessionControl,
29
29
  useSessionEvents,
30
30
  useTurnQueue
31
- } from "./chunk-JIQYUGVL.js";
31
+ } from "./chunk-X34BSY2R.js";
32
32
  import {
33
33
  buildTimeline,
34
34
  groupTimeline
35
- } from "./chunk-DO544OSV.js";
35
+ } from "./chunk-RC6BZ44Q.js";
36
36
  import {
37
37
  mcpToolLeaf,
38
38
  toolDisplayName
@@ -99,7 +99,7 @@ import {
99
99
  StopButton,
100
100
  Surface,
101
101
  useChatComposerController
102
- } from "./chunk-EN3YTHKR.js";
102
+ } from "./chunk-CY7WK5FD.js";
103
103
  import {
104
104
  useComposer
105
105
  } from "./chunk-RSI7XYXL.js";
@@ -112,11 +112,11 @@ import {
112
112
  } from "./chunk-BRM6FVZA.js";
113
113
  import {
114
114
  ModelPolicyPicker
115
- } from "./chunk-26ZNDDLZ.js";
115
+ } from "./chunk-LNIRAOA3.js";
116
116
  import {
117
117
  projectPickerRows,
118
118
  sortPickerRows
119
- } from "./chunk-RLUSC2WA.js";
119
+ } from "./chunk-5F4WR7X7.js";
120
120
  import {
121
121
  formatBytes,
122
122
  formatClockTime,
@@ -4072,7 +4072,8 @@ function GenieLoading({
4072
4072
  startedAt,
4073
4073
  phase = "preparing",
4074
4074
  onShowDetails,
4075
- detailsOpen = false
4075
+ detailsOpen = false,
4076
+ notice
4076
4077
  }) {
4077
4078
  const options = useContext4(GenieLoadingOptionsContext);
4078
4079
  const waiting = phase === "waiting";
@@ -4083,15 +4084,16 @@ function GenieLoading({
4083
4084
  const [slow, setSlow] = useState7(false);
4084
4085
  useEffect5(() => {
4085
4086
  const update = () => {
4086
- setShowDetails(Date.now() - Date.parse(startedAt) >= 15e3);
4087
- setSlow(Date.now() - Date.parse(startedAt) >= 3e4);
4087
+ setShowDetails(Date.now() - Date.parse(startedAt) >= 3e4);
4088
+ setSlow(Date.now() - Date.parse(startedAt) >= 6e4);
4088
4089
  if (!document.hidden) setPhrase(Math.floor(Math.random() * phrases.length));
4089
4090
  };
4090
4091
  update();
4091
4092
  const timer = window.setInterval(update, 5e3);
4092
4093
  return () => window.clearInterval(timer);
4093
4094
  }, [startedAt, phrases]);
4094
- if (options?.render) return options.render({ startedAt, phase, detailsOpen, onShowDetails });
4095
+ if (options?.render && !notice)
4096
+ return options.render({ startedAt, phase, detailsOpen, onShowDetails });
4095
4097
  return /* @__PURE__ */ jsxs6("div", { className: "og-genie-loading", children: [
4096
4098
  /* @__PURE__ */ jsx8(
4097
4099
  "div",
@@ -4107,9 +4109,18 @@ function GenieLoading({
4107
4109
  }
4108
4110
  ),
4109
4111
  /* @__PURE__ */ jsxs6("div", { className: "og-genie-copy", children: [
4110
- /* @__PURE__ */ jsx8("span", { className: "sr-only", role: "status", children: slow ? options?.messages?.slowStatus ?? (waiting ? "Waiting for a response. Taking longer than usual." : "Preparing your task. Taking longer than usual.") : options?.messages?.status ?? (waiting ? "Waiting for a response." : "Preparing your task.") }),
4111
- /* @__PURE__ */ jsx8("span", { className: "og-genie-phrase", "aria-hidden": "true", children: slow ? options?.messages?.slowText ?? (waiting ? "Still waiting for a response\u2026" : "A little longer than usual\u2026") : phrases[phrase % phrases.length] }, slow ? "slow" : phrase),
4112
- showDetails || detailsOpen ? /* @__PURE__ */ jsxs6(
4112
+ /* @__PURE__ */ jsx8("span", { className: "sr-only", role: "status", children: notice ?? (slow ? options?.messages?.slowStatus ?? (waiting ? "Waiting for a response. Taking longer than usual." : "Preparing your task. Taking longer than usual.") : options?.messages?.status ?? (waiting ? "Waiting for a response." : "Preparing your task.")) }),
4113
+ /* @__PURE__ */ jsx8(
4114
+ "span",
4115
+ {
4116
+ className: "og-genie-phrase",
4117
+ style: notice ? { animation: "none" } : void 0,
4118
+ "aria-hidden": "true",
4119
+ children: notice ?? (slow ? options?.messages?.slowText ?? (waiting ? "Still waiting for a response\u2026" : "A little longer than usual\u2026") : phrases[phrase % phrases.length])
4120
+ },
4121
+ notice ?? (slow ? "slow" : phrase)
4122
+ ),
4123
+ showDetails || detailsOpen || notice ? /* @__PURE__ */ jsxs6(
4113
4124
  "button",
4114
4125
  {
4115
4126
  type: "button",
@@ -4126,6 +4137,32 @@ function GenieLoading({
4126
4137
  ] });
4127
4138
  }
4128
4139
 
4140
+ // src/timeline/startup-dispatch-details.tsx
4141
+ import { useEffect as useEffect6, useState as useState8 } from "react";
4142
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
4143
+ function StartupDispatchDetails({ wait }) {
4144
+ const [now, setNow] = useState8(Date.now);
4145
+ useEffect6(() => {
4146
+ const timer = setInterval(() => setNow(Date.now()), 15e3);
4147
+ return () => clearInterval(timer);
4148
+ }, []);
4149
+ const next = wait?.nextAttemptAt ? new Date(wait.nextAttemptAt) : null;
4150
+ return /* @__PURE__ */ jsxs7("div", { className: "text-og-xs text-og-fg-muted", "data-og-startup-dispatch-details": "", children: [
4151
+ /* @__PURE__ */ jsx9("p", { children: "Your messages are saved. No agent turn is running yet." }),
4152
+ /* @__PURE__ */ jsx9("p", { children: wait?.state === "pending" && next ? next.getTime() <= now ? "Automatic start retry is due." : `Automatic start retry at ${next.toLocaleTimeString(void 0, { hour: "2-digit", minute: "2-digit" })}.` : wait?.state === "acknowledged" ? "The start request was accepted; a worker has not started the turn yet." : "Start confirmation is unavailable." }),
4153
+ wait && wait.attempts > 0 ? /* @__PURE__ */ jsxs7("p", { children: [
4154
+ wait.attempts,
4155
+ " dispatch attempt",
4156
+ wait.attempts === 1 ? "" : "s",
4157
+ "."
4158
+ ] }) : null,
4159
+ wait?.lastError ? /* @__PURE__ */ jsxs7("p", { className: "max-h-32 overflow-y-auto whitespace-pre-wrap break-words", children: [
4160
+ "Last recorded dispatch error: ",
4161
+ wait.lastError
4162
+ ] }) : null
4163
+ ] });
4164
+ }
4165
+
4129
4166
  // src/timeline/activity-rail.tsx
4130
4167
  import { ArrowRightIcon, BotIcon, BrainCircuitIcon as BrainCircuitIcon3, MessageSquareTextIcon } from "lucide-react";
4131
4168
  import {
@@ -4135,13 +4172,13 @@ import {
4135
4172
  useContext as useContext7,
4136
4173
  useLayoutEffect,
4137
4174
  useRef as useRef5,
4138
- useState as useState8
4175
+ useState as useState9
4139
4176
  } from "react";
4140
4177
  import { jsx as rowJsx, jsxs as rowJsxs } from "react/jsx-runtime";
4141
4178
 
4142
4179
  // src/timeline/entrance.tsx
4143
4180
  import { createContext as createContext4, useContext as useContext5, useRef as useRef4 } from "react";
4144
- import { jsx as jsx9 } from "react/jsx-runtime";
4181
+ import { jsx as jsx10 } from "react/jsx-runtime";
4145
4182
  var EntranceAnimationContext = createContext4(true);
4146
4183
  var EntranceAnimationLiveContext = createContext4(true);
4147
4184
  function EntranceAnimationProvider({
@@ -4150,7 +4187,7 @@ function EntranceAnimationProvider({
4150
4187
  children
4151
4188
  }) {
4152
4189
  const mountedValue = useRef4(value).current;
4153
- return /* @__PURE__ */ jsx9(EntranceAnimationContext.Provider, { value: mountedValue, children: /* @__PURE__ */ jsx9(EntranceAnimationLiveContext.Provider, { value: liveValue, children }) });
4190
+ return /* @__PURE__ */ jsx10(EntranceAnimationContext.Provider, { value: mountedValue, children: /* @__PURE__ */ jsx10(EntranceAnimationLiveContext.Provider, { value: liveValue, children }) });
4154
4191
  }
4155
4192
  function useEntranceAnimationLive() {
4156
4193
  return useContext5(EntranceAnimationLiveContext);
@@ -4170,7 +4207,7 @@ function useSeenActivityIds() {
4170
4207
  }
4171
4208
 
4172
4209
  // src/timeline/activity-rail.tsx
4173
- import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
4210
+ import { Fragment as Fragment3, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
4174
4211
  var LazyFleetDecisionRow = lazy2(() => import("./fleet-decision-row-YZ3ZKWMM.js"));
4175
4212
  var LazyPlatformActivityRow = lazy2(() => import("./platform-activity-row-627BFZ46.js"));
4176
4213
  function familyOf(item) {
@@ -4192,8 +4229,9 @@ function ActivityRail({
4192
4229
  }) {
4193
4230
  const debug = useStartupDetails();
4194
4231
  const reducedMotion = useReducedMotion();
4195
- const [detailsOpen, setDetailsOpen] = useState8(false);
4232
+ const [detailsOpen, setDetailsOpen] = useState9(false);
4196
4233
  const phases = items.filter((item) => item.kind === "startup-phase");
4234
+ const dispatch = phases.find((item) => item.dispatchWait !== void 0);
4197
4235
  const hasWork = items.some(
4198
4236
  (item) => item.kind !== "startup-phase" && (item.kind !== "reasoning" || item.text.trim().length > 0)
4199
4237
  );
@@ -4208,10 +4246,10 @@ function ActivityRail({
4208
4246
  const visibleItems = debug || detailsOpen ? items : items.filter(
4209
4247
  (item) => item.kind === "startup-phase" ? item.status === "failed" || item.status === "cancelled" : item.kind !== "reasoning" || item.text.trim().length > 0
4210
4248
  );
4211
- const startedAt = phases.reduce(
4212
- (first, item) => item.startedAt < first ? item.startedAt : first,
4213
- phases[0]?.startedAt ?? ""
4214
- );
4249
+ const startedAt = phases.reduce((first, item) => {
4250
+ const start = item.loadingStartedAt ?? item.startedAt;
4251
+ return start < first ? start : first;
4252
+ }, phases[0]?.startedAt ?? "");
4215
4253
  const enterMounted = useEntranceAnimation();
4216
4254
  const enterLive = useEntranceAnimationLive();
4217
4255
  const seenIds = useSeenActivityIds();
@@ -4237,7 +4275,7 @@ function ActivityRail({
4237
4275
  }
4238
4276
  }
4239
4277
  });
4240
- return /* @__PURE__ */ jsxs7(
4278
+ return /* @__PURE__ */ jsxs8(
4241
4279
  "div",
4242
4280
  {
4243
4281
  className: cn(
@@ -4252,7 +4290,7 @@ function ActivityRail({
4252
4290
  className
4253
4291
  ),
4254
4292
  children: [
4255
- /* @__PURE__ */ jsx10(AnimatePresence, { initial: false, children: loading && !debug ? /* @__PURE__ */ jsx10(
4293
+ /* @__PURE__ */ jsx11(AnimatePresence, { initial: false, children: loading && !debug ? /* @__PURE__ */ jsx11(
4256
4294
  motion.div,
4257
4295
  {
4258
4296
  initial: { opacity: 0 },
@@ -4267,10 +4305,11 @@ function ActivityRail({
4267
4305
  opacity: { duration: reducedMotion ? 0 : 0.16 }
4268
4306
  },
4269
4307
  style: { overflow: "hidden" },
4270
- children: /* @__PURE__ */ jsx10(
4308
+ children: /* @__PURE__ */ jsx11(
4271
4309
  GenieLoading,
4272
4310
  {
4273
4311
  startedAt,
4312
+ notice: dispatch?.dispatchWait?.lastError ? "Unable to start yet. Your messages are saved." : void 0,
4274
4313
  phase: responsePending ? "waiting" : "preparing",
4275
4314
  detailsOpen,
4276
4315
  onShowDetails: () => setDetailsOpen((open) => !open)
@@ -4279,7 +4318,7 @@ function ActivityRail({
4279
4318
  },
4280
4319
  "startup"
4281
4320
  ) : null }),
4282
- detailsOpen && !debug && !loading ? /* @__PURE__ */ jsx10(
4321
+ detailsOpen && !debug && !loading ? /* @__PURE__ */ jsx11(
4283
4322
  "button",
4284
4323
  {
4285
4324
  type: "button",
@@ -4288,6 +4327,7 @@ function ActivityRail({
4288
4327
  children: "Hide startup details"
4289
4328
  }
4290
4329
  ) : null,
4330
+ dispatch && (detailsOpen || debug) ? /* @__PURE__ */ jsx11(StartupDispatchDetails, { wait: dispatch.dispatchWait ?? null }) : null,
4291
4331
  visibleItems.map((item, index) => {
4292
4332
  const newFamily = index > 0 && familyOf(item) !== familyOf(visibleItems[index - 1]);
4293
4333
  const row = renderActivity(
@@ -4298,7 +4338,7 @@ function ActivityRail({
4298
4338
  loadRetainedScreenshot,
4299
4339
  loadRetainedArtifact
4300
4340
  );
4301
- return /* @__PURE__ */ jsx10(
4341
+ return /* @__PURE__ */ jsx11(
4302
4342
  "div",
4303
4343
  {
4304
4344
  "data-og-timeline-row-anchor": "",
@@ -4318,16 +4358,16 @@ var ActivityNoteTextContext = createContext6(null);
4318
4358
  function ActivityNoteRow({ item }) {
4319
4359
  const renderText = useContext7(ActivityNoteTextContext);
4320
4360
  if (!item.text.trim()) return null;
4321
- return /* @__PURE__ */ jsxs7("div", { className: "flex items-start gap-2 px-1.5 py-1.5", "data-og-activity-note": "", children: [
4322
- /* @__PURE__ */ jsx10("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
4323
- /* @__PURE__ */ jsx10(MessageSquareTextIcon, { "aria-hidden": true, className: "mt-1 size-3.5 shrink-0 text-og-fg-subtle" }),
4324
- /* @__PURE__ */ jsx10(
4361
+ return /* @__PURE__ */ jsxs8("div", { className: "flex items-start gap-2 px-1.5 py-1.5", "data-og-activity-note": "", children: [
4362
+ /* @__PURE__ */ jsx11("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
4363
+ /* @__PURE__ */ jsx11(MessageSquareTextIcon, { "aria-hidden": true, className: "mt-1 size-3.5 shrink-0 text-og-fg-subtle" }),
4364
+ /* @__PURE__ */ jsx11(
4325
4365
  "div",
4326
4366
  {
4327
4367
  className: "min-w-0 flex-1 text-og-sm text-og-fg-muted",
4328
4368
  "data-og-search-item": item.id,
4329
4369
  "data-og-annotation-source-key": item.annotationSource?.eventId,
4330
- children: renderText ? renderText(item.text, item) : /* @__PURE__ */ jsx10(Markdown, { streaming: item.streaming, children: item.text })
4370
+ children: renderText ? renderText(item.text, item) : /* @__PURE__ */ jsx11(Markdown, { streaming: item.streaming, children: item.text })
4331
4371
  }
4332
4372
  )
4333
4373
  ] });
@@ -4340,7 +4380,7 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
4340
4380
  case "reasoning":
4341
4381
  case "sandbox":
4342
4382
  case "startup-phase":
4343
- return /* @__PURE__ */ jsx10(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx10(
4383
+ return /* @__PURE__ */ jsx11(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx11(
4344
4384
  LazyPlatformActivityRow,
4345
4385
  {
4346
4386
  item,
@@ -4355,7 +4395,7 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
4355
4395
  ) });
4356
4396
  case "tool-call": {
4357
4397
  const Renderer = toolRegistry.resolve(item);
4358
- return /* @__PURE__ */ jsx10(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx10(
4398
+ return /* @__PURE__ */ jsx11(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx11(
4359
4399
  Renderer,
4360
4400
  {
4361
4401
  item,
@@ -4365,9 +4405,9 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
4365
4405
  ) });
4366
4406
  }
4367
4407
  case "worker":
4368
- return /* @__PURE__ */ jsx10(WorkerRow, { item, onOpenSession });
4408
+ return /* @__PURE__ */ jsx11(WorkerRow, { item, onOpenSession });
4369
4409
  case "knowledge":
4370
- return /* @__PURE__ */ jsx10(
4410
+ return /* @__PURE__ */ jsx11(
4371
4411
  KnowledgeReceiptRow,
4372
4412
  {
4373
4413
  outcome: item.outcome,
@@ -4378,11 +4418,11 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
4378
4418
  }
4379
4419
  );
4380
4420
  case "memory":
4381
- return /* @__PURE__ */ jsx10(MemoryRow, { item, onMemoryClick });
4421
+ return /* @__PURE__ */ jsx11(MemoryRow, { item, onMemoryClick });
4382
4422
  case "agent-message":
4383
- return /* @__PURE__ */ jsx10(ActivityNoteRow, { item });
4423
+ return /* @__PURE__ */ jsx11(ActivityNoteRow, { item });
4384
4424
  case "fleet-decision":
4385
- return /* @__PURE__ */ jsx10(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx10(
4425
+ return /* @__PURE__ */ jsx11(Suspense2, { fallback: null, children: /* @__PURE__ */ jsx11(
4386
4426
  LazyFleetDecisionRow,
4387
4427
  {
4388
4428
  item,
@@ -4412,37 +4452,37 @@ function MemoryRow({
4412
4452
  const superseded = corrected && Boolean(item.replacementPreview);
4413
4453
  const targetId = corrected ? item.replacementMemoryId ?? item.memoryId : item.memoryId;
4414
4454
  const deepLink = Boolean(onMemoryClick);
4415
- return /* @__PURE__ */ jsxs7(
4455
+ return /* @__PURE__ */ jsxs8(
4416
4456
  ActivityDisclosure,
4417
4457
  {
4418
- icon: /* @__PURE__ */ jsx10(BrainCircuitIcon3, { className: "size-3.5" }),
4458
+ icon: /* @__PURE__ */ jsx11(BrainCircuitIcon3, { className: "size-3.5" }),
4419
4459
  iconTone: "muted",
4420
- title: /* @__PURE__ */ jsxs7("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
4421
- /* @__PURE__ */ jsx10("span", { className: "shrink-0", children: corrected ? "Updated memory" : "Saved to memory" }),
4422
- kindLabel ? /* @__PURE__ */ jsx10("span", { className: "shrink-0 rounded-og-xs bg-og-surface-2 px-1.5 py-px text-og-xs font-normal leading-tight text-og-fg-subtle", children: kindLabel }) : null
4460
+ title: /* @__PURE__ */ jsxs8("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
4461
+ /* @__PURE__ */ jsx11("span", { className: "shrink-0", children: corrected ? "Updated memory" : "Saved to memory" }),
4462
+ kindLabel ? /* @__PURE__ */ jsx11("span", { className: "shrink-0 rounded-og-xs bg-og-surface-2 px-1.5 py-px text-og-xs font-normal leading-tight text-og-fg-subtle", children: kindLabel }) : null
4423
4463
  ] }),
4424
4464
  preview: superseded ? item.replacementPreview : item.preview,
4425
4465
  children: [
4426
4466
  superseded ? (
4427
4467
  // The correction as a before → after: the old memory struck through and
4428
4468
  // dimmed, the new text in the ordinary body weight below it.
4429
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-1.5", children: [
4430
- /* @__PURE__ */ jsx10("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
4431
- /* @__PURE__ */ jsx10("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
4469
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1.5", children: [
4470
+ /* @__PURE__ */ jsx11("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
4471
+ /* @__PURE__ */ jsx11("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
4432
4472
  ] })
4433
4473
  ) : corrected && item.action === "updated" ? (
4434
4474
  // Edited in place, no replacement record: the memory is still live, so
4435
4475
  // show its current text — NOT the archived treatment.
4436
- /* @__PURE__ */ jsxs7(Fragment3, { children: [
4437
- /* @__PURE__ */ jsx10("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
4438
- /* @__PURE__ */ jsx10(BodyNote, { tone: "muted", children: "Updated in place." })
4476
+ /* @__PURE__ */ jsxs8(Fragment3, { children: [
4477
+ /* @__PURE__ */ jsx11("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
4478
+ /* @__PURE__ */ jsx11(BodyNote, { tone: "muted", children: "Updated in place." })
4439
4479
  ] })
4440
4480
  ) : corrected ? (
4441
4481
  // A correction with no replacement (and not an in-place update) archived the record.
4442
- /* @__PURE__ */ jsx10(BodyNote, { tone: "muted", children: "Archived." })
4443
- ) : /* @__PURE__ */ jsx10("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
4444
- item.deduped ? /* @__PURE__ */ jsx10(BodyNote, { tone: "muted", children: "Merged into an existing memory." }) : null,
4445
- deepLink ? /* @__PURE__ */ jsxs7(
4482
+ /* @__PURE__ */ jsx11(BodyNote, { tone: "muted", children: "Archived." })
4483
+ ) : /* @__PURE__ */ jsx11("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
4484
+ item.deduped ? /* @__PURE__ */ jsx11(BodyNote, { tone: "muted", children: "Merged into an existing memory." }) : null,
4485
+ deepLink ? /* @__PURE__ */ jsxs8(
4446
4486
  "button",
4447
4487
  {
4448
4488
  type: "button",
@@ -4453,7 +4493,7 @@ function MemoryRow({
4453
4493
  ),
4454
4494
  children: [
4455
4495
  "View in memory",
4456
- /* @__PURE__ */ jsx10(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
4496
+ /* @__PURE__ */ jsx11(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
4457
4497
  ]
4458
4498
  }
4459
4499
  ) : null
@@ -4471,10 +4511,10 @@ function WorkerRow({
4471
4511
  const cancelled = item.status === "cancelled";
4472
4512
  const title = item.action === "spawn" ? running ? "Spawning worker" : failed ? "Worker spawn failed" : cancelled ? "Worker interrupted" : "Worker spawned" : running ? "Messaging worker" : failed ? "Worker message failed" : cancelled ? "Worker interrupted" : "Worker messaged";
4473
4513
  if (compact) {
4474
- return /* @__PURE__ */ jsx10(
4514
+ return /* @__PURE__ */ jsx11(
4475
4515
  ActivityDisclosure,
4476
4516
  {
4477
- icon: /* @__PURE__ */ jsx10(BotIcon, { className: "size-3.5" }),
4517
+ icon: /* @__PURE__ */ jsx11(BotIcon, { className: "size-3.5" }),
4478
4518
  title,
4479
4519
  preview: item.prompt,
4480
4520
  running
@@ -4483,11 +4523,11 @@ function WorkerRow({
4483
4523
  }
4484
4524
  const sessionId = item.workerSessionId;
4485
4525
  const deepLink = Boolean(sessionId) && Boolean(onOpenSession) && !failed && !cancelled;
4486
- const inner = /* @__PURE__ */ jsxs7(Fragment3, { children: [
4487
- /* @__PURE__ */ jsx10("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
4488
- /* @__PURE__ */ jsx10("span", { className: cn("mt-px shrink-0", failed ? "text-og-status-failed" : "text-og-accent"), children: /* @__PURE__ */ jsx10(BotIcon, { className: "size-3.5" }) }),
4489
- /* @__PURE__ */ jsxs7("div", { className: "min-w-0 flex-1", children: [
4490
- /* @__PURE__ */ jsx10(
4526
+ const inner = /* @__PURE__ */ jsxs8(Fragment3, { children: [
4527
+ /* @__PURE__ */ jsx11("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
4528
+ /* @__PURE__ */ jsx11("span", { className: cn("mt-px shrink-0", failed ? "text-og-status-failed" : "text-og-accent"), children: /* @__PURE__ */ jsx11(BotIcon, { className: "size-3.5" }) }),
4529
+ /* @__PURE__ */ jsxs8("div", { className: "min-w-0 flex-1", children: [
4530
+ /* @__PURE__ */ jsx11(
4491
4531
  "span",
4492
4532
  {
4493
4533
  className: cn(
@@ -4497,16 +4537,16 @@ function WorkerRow({
4497
4537
  children: title
4498
4538
  }
4499
4539
  ),
4500
- item.prompt ? /* @__PURE__ */ jsx10("p", { className: "mt-0.5 truncate text-og-sm text-og-fg-muted", children: truncate(item.prompt, 140) }) : null,
4501
- failed && item.failure ? /* @__PURE__ */ jsxs7("div", { className: "mt-1 min-w-0 text-og-sm text-og-status-failed", children: [
4502
- /* @__PURE__ */ jsx10("p", { className: "font-og-mono text-og-xs", children: item.failure.code }),
4503
- /* @__PURE__ */ jsx10("p", { className: "mt-0.5 break-words", children: item.failure.message })
4540
+ item.prompt ? /* @__PURE__ */ jsx11("p", { className: "mt-0.5 truncate text-og-sm text-og-fg-muted", children: truncate(item.prompt, 140) }) : null,
4541
+ failed && item.failure ? /* @__PURE__ */ jsxs8("div", { className: "mt-1 min-w-0 text-og-sm text-og-status-failed", children: [
4542
+ /* @__PURE__ */ jsx11("p", { className: "font-og-mono text-og-xs", children: item.failure.code }),
4543
+ /* @__PURE__ */ jsx11("p", { className: "mt-0.5 break-words", children: item.failure.message })
4504
4544
  ] }) : null
4505
4545
  ] }),
4506
- failed ? /* @__PURE__ */ jsxs7("span", { className: "inline-flex shrink-0 self-center items-center gap-1.5 font-og-mono text-og-xs leading-none text-og-status-failed", children: [
4507
- /* @__PURE__ */ jsx10("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
4546
+ failed ? /* @__PURE__ */ jsxs8("span", { className: "inline-flex shrink-0 self-center items-center gap-1.5 font-og-mono text-og-xs leading-none text-og-status-failed", children: [
4547
+ /* @__PURE__ */ jsx11("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
4508
4548
  "failed"
4509
- ] }) : cancelled ? /* @__PURE__ */ jsx10("span", { className: "og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle", children: "interrupted" }) : deepLink ? /* @__PURE__ */ jsx10(
4549
+ ] }) : cancelled ? /* @__PURE__ */ jsx11("span", { className: "og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle", children: "interrupted" }) : deepLink ? /* @__PURE__ */ jsx11(
4510
4550
  ArrowRightIcon,
4511
4551
  {
4512
4552
  "aria-hidden": true,
@@ -4515,7 +4555,7 @@ function WorkerRow({
4515
4555
  ) : null
4516
4556
  ] });
4517
4557
  if (deepLink && sessionId && onOpenSession) {
4518
- return /* @__PURE__ */ jsx10(
4558
+ return /* @__PURE__ */ jsx11(
4519
4559
  "button",
4520
4560
  {
4521
4561
  type: "button",
@@ -4529,7 +4569,7 @@ function WorkerRow({
4529
4569
  }
4530
4570
  );
4531
4571
  }
4532
- return /* @__PURE__ */ jsx10("div", { className: "flex items-start gap-2 px-1.5 py-1.5", children: inner });
4572
+ return /* @__PURE__ */ jsx11("div", { className: "flex items-start gap-2 px-1.5 py-1.5", children: inner });
4533
4573
  }
4534
4574
 
4535
4575
  // src/timeline/turn-summary.tsx
@@ -4538,11 +4578,11 @@ import {
4538
4578
  Component,
4539
4579
  createContext as createContext8,
4540
4580
  useContext as useContext9,
4541
- useEffect as useEffect6,
4581
+ useEffect as useEffect7,
4542
4582
  useLayoutEffect as useLayoutEffect2,
4543
4583
  useMemo as useMemo2,
4544
4584
  useRef as useRef6,
4545
- useState as useState9
4585
+ useState as useState10
4546
4586
  } from "react";
4547
4587
  import { Collapsible } from "radix-ui";
4548
4588
 
@@ -4564,7 +4604,7 @@ function inheritFoldRestingState(memory, targetKey, sourceKeys) {
4564
4604
  }
4565
4605
 
4566
4606
  // src/timeline/turn-summary.tsx
4567
- import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
4607
+ import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
4568
4608
  var TurnSettleChromeContext = createContext8(false);
4569
4609
  function useTurnSettleOpen() {
4570
4610
  return useContext9(TurnSettleChromeContext);
@@ -4604,20 +4644,20 @@ function TurnSummary({
4604
4644
  const remembered = foldKey !== void 0 ? foldMemory?.get(foldKey) : void 0;
4605
4645
  const restingOpen = remembered === "closed" ? false : remembered === "open" ? true : defaultOpen ?? forcedDefaultOpen ?? false;
4606
4646
  const initialSettle = Boolean(settleFold) && !restingOpen && remembered === void 0;
4607
- const [settling, setSettling] = useState9(initialSettle);
4608
- const [open, setOpen] = useState9(initialSettle ? true : restingOpen);
4647
+ const [settling, setSettling] = useState10(initialSettle);
4648
+ const [open, setOpen] = useState10(initialSettle ? true : restingOpen);
4609
4649
  const reportOpen = useRef6(onOpenStateChange);
4610
4650
  reportOpen.current = onOpenStateChange;
4611
4651
  useLayoutEffect2(() => {
4612
4652
  reportOpen.current?.(open);
4613
4653
  }, [open]);
4614
4654
  const readerOwnsOpen = useRef6(remembered !== void 0);
4615
- useEffect6(() => {
4655
+ useEffect7(() => {
4616
4656
  if (status && defaultOpen && remembered === void 0 && !readerOwnsOpen.current) setOpen(true);
4617
4657
  }, [status, defaultOpen, remembered]);
4618
- const [settlePhase, setSettlePhase] = useState9(initialSettle);
4619
- const [nestSuppressLatch, setNestSuppressLatch] = useState9(initialSettle);
4620
- const [expandReady, setExpandReady] = useState9(!initialSettle);
4658
+ const [settlePhase, setSettlePhase] = useState10(initialSettle);
4659
+ const [nestSuppressLatch, setNestSuppressLatch] = useState10(initialSettle);
4660
+ const [expandReady, setExpandReady] = useState10(!initialSettle);
4621
4661
  const settleTimerRef = useRef6(null);
4622
4662
  const settleCloseDoneRef = useRef6(null);
4623
4663
  const nestLatchClearRef = useRef6(null);
@@ -4671,7 +4711,7 @@ function TurnSummary({
4671
4711
  }, SETTLE_FOLD_BEAT_MS);
4672
4712
  };
4673
4713
  const mountSettleRef = useRef6(initialSettle);
4674
- useEffect6(() => {
4714
+ useEffect7(() => {
4675
4715
  if (mountSettleRef.current) {
4676
4716
  armSettleCollapse();
4677
4717
  }
@@ -4680,7 +4720,7 @@ function TurnSummary({
4680
4720
  settleArmedRef.current = false;
4681
4721
  };
4682
4722
  }, []);
4683
- useEffect6(() => {
4723
+ useEffect7(() => {
4684
4724
  const was = settleFoldSeenRef.current;
4685
4725
  settleFoldSeenRef.current = Boolean(settleFold);
4686
4726
  if (!was && settleFold) {
@@ -4690,7 +4730,7 @@ function TurnSummary({
4690
4730
  armSettleCollapse();
4691
4731
  }
4692
4732
  }, [settleFold]);
4693
- useEffect6(() => {
4733
+ useEffect7(() => {
4694
4734
  if (!searchReveal) return;
4695
4735
  clearSettleTimers();
4696
4736
  settleArmedRef.current = false;
@@ -4726,7 +4766,7 @@ function TurnSummary({
4726
4766
  }
4727
4767
  };
4728
4768
  const enter = useEntranceAnimation();
4729
- const [allowEnterAnimation] = useState9(
4769
+ const [allowEnterAnimation] = useState10(
4730
4770
  () => Boolean(enter && !bare && !initialSettle && !restingOpen)
4731
4771
  );
4732
4772
  const context = useMemo2(
@@ -4766,8 +4806,8 @@ function TurnSummary({
4766
4806
  const copyable = Boolean(
4767
4807
  copyText && copyText.trim().length > 0 && !bare && !liveShell && !open && !settlePhase
4768
4808
  );
4769
- return /* @__PURE__ */ jsx11(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs8("div", { className: cn(copyable && "group/copy relative"), children: [
4770
- /* @__PURE__ */ jsxs8(
4809
+ return /* @__PURE__ */ jsx12(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs9("div", { className: cn(copyable && "group/copy relative"), children: [
4810
+ /* @__PURE__ */ jsxs9(
4771
4811
  Collapsible.Root,
4772
4812
  {
4773
4813
  "data-og-work-section": bare ? void 0 : "",
@@ -4775,7 +4815,7 @@ function TurnSummary({
4775
4815
  onOpenChange,
4776
4816
  className: allowEnterAnimation && !liveShell ? "animate-og-enter" : void 0,
4777
4817
  children: [
4778
- /* @__PURE__ */ jsxs8(
4818
+ /* @__PURE__ */ jsxs9(
4779
4819
  Collapsible.Trigger,
4780
4820
  {
4781
4821
  "data-og-work-header": bare ? "nested" : "outer",
@@ -4805,7 +4845,7 @@ function TurnSummary({
4805
4845
  status && copyable && "max-sm:pr-10"
4806
4846
  ),
4807
4847
  children: [
4808
- /* @__PURE__ */ jsx11(
4848
+ /* @__PURE__ */ jsx12(
4809
4849
  ChevronRightIcon,
4810
4850
  {
4811
4851
  className: cn(
@@ -4814,7 +4854,7 @@ function TurnSummary({
4814
4854
  )
4815
4855
  }
4816
4856
  ),
4817
- status || outcome === "complete" || !outcome && (liveHeader || context.settled) ? null : /* @__PURE__ */ jsx11(
4857
+ status || outcome === "complete" || !outcome && (liveHeader || context.settled) ? null : /* @__PURE__ */ jsx12(
4818
4858
  "span",
4819
4859
  {
4820
4860
  className: cn(
@@ -4822,10 +4862,10 @@ function TurnSummary({
4822
4862
  bare ? "size-3.5" : "size-5",
4823
4863
  outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle"
4824
4864
  ),
4825
- children: outcome === "failed" ? /* @__PURE__ */ jsx11(TriangleAlertIcon, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx11(CircleSlashIcon, { className: "size-3" }) : /* @__PURE__ */ jsx11("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
4865
+ children: outcome === "failed" ? /* @__PURE__ */ jsx12(TriangleAlertIcon, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx12(CircleSlashIcon, { className: "size-3" }) : /* @__PURE__ */ jsx12("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
4826
4866
  }
4827
4867
  ),
4828
- /* @__PURE__ */ jsxs8(
4868
+ /* @__PURE__ */ jsxs9(
4829
4869
  "span",
4830
4870
  {
4831
4871
  className: cn(
@@ -4835,23 +4875,23 @@ function TurnSummary({
4835
4875
  ),
4836
4876
  children: [
4837
4877
  statusLine,
4838
- liveHeader && !open && !status ? liveHeader : facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx11(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs8(Fragment4, { children: [
4878
+ liveHeader && !open && !status ? liveHeader : facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx12(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs9(Fragment4, { children: [
4839
4879
  index > 0 || statusLine ? " \xB7 " : null,
4840
- /* @__PURE__ */ jsxs8("span", { "aria-label": result.ariaLabel, title: result.title, children: [
4841
- result.icon ? /* @__PURE__ */ jsx11("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
4880
+ /* @__PURE__ */ jsxs9("span", { "aria-label": result.ariaLabel, title: result.title, children: [
4881
+ result.icon ? /* @__PURE__ */ jsx12("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
4842
4882
  result.content
4843
4883
  ] })
4844
4884
  ] }) }, facet.id)),
4845
- outcome === "failed" && failureText ? /* @__PURE__ */ jsxs8("span", { className: "text-og-status-failed", children: [
4885
+ outcome === "failed" && failureText ? /* @__PURE__ */ jsxs9("span", { className: "text-og-status-failed", children: [
4846
4886
  " \xB7 ",
4847
4887
  failureText
4848
4888
  ] }) : null,
4849
- outcome === "cancelled" ? /* @__PURE__ */ jsx11("span", { className: "text-og-fg-subtle", children: " \xB7 interrupted" }) : null
4889
+ outcome === "cancelled" ? /* @__PURE__ */ jsx12("span", { className: "text-og-fg-subtle", children: " \xB7 interrupted" }) : null
4850
4890
  ]
4851
4891
  }
4852
4892
  ),
4853
- status?.kind === "worked" ? /* @__PURE__ */ jsx11("span", { "aria-hidden": true, className: "ml-1 h-px min-w-0 flex-1 bg-og-border" }) : null,
4854
- status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? /* @__PURE__ */ jsx11(
4893
+ status?.kind === "worked" ? /* @__PURE__ */ jsx12("span", { "aria-hidden": true, className: "ml-1 h-px min-w-0 flex-1 bg-og-border" }) : null,
4894
+ status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? /* @__PURE__ */ jsx12(
4855
4895
  ShrinkIcon,
4856
4896
  {
4857
4897
  className: "size-3.5 shrink-0",
@@ -4864,17 +4904,17 @@ function TurnSummary({
4864
4904
  status && !open && status.preview ? (
4865
4905
  // Readable progress under the status line; the line above stays
4866
4906
  // the one disclosure control, so a click here is a mouse shortcut.
4867
- /* @__PURE__ */ jsx11(
4907
+ /* @__PURE__ */ jsx12(
4868
4908
  "div",
4869
4909
  {
4870
4910
  "data-og-exchange-preview": "",
4871
4911
  className: "flex min-w-0 cursor-pointer flex-col gap-0.5 pb-1 pl-6",
4872
4912
  onClick: () => onOpenChange(true),
4873
- children: status.preview ? /* @__PURE__ */ jsx11("div", { className: "min-w-0", children: status.preview }) : null
4913
+ children: status.preview ? /* @__PURE__ */ jsx12("div", { className: "min-w-0", children: status.preview }) : null
4874
4914
  }
4875
4915
  )
4876
4916
  ) : null,
4877
- /* @__PURE__ */ jsx11(
4917
+ /* @__PURE__ */ jsx12(
4878
4918
  Collapsible.Content,
4879
4919
  {
4880
4920
  ...nestSuppressLatch ? { forceMount: true } : {},
@@ -4885,38 +4925,38 @@ function TurnSummary({
4885
4925
  // Auto-close: slow settle. Manual close (settlePhase cleared): fast.
4886
4926
  settlePhase ? "data-[state=closed]:animate-og-settle-collapse" : "data-[state=closed]:animate-og-collapse"
4887
4927
  ),
4888
- children: /* @__PURE__ */ jsx11("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
4928
+ children: /* @__PURE__ */ jsx12("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
4889
4929
  }
4890
4930
  )
4891
4931
  ]
4892
4932
  }
4893
4933
  ),
4894
- copyable ? /* @__PURE__ */ jsx11("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx11("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx11(CopyButton, { text: copyText, label: "Copy turn", reveal: "group-hover" }) }) }) : null
4934
+ copyable ? /* @__PURE__ */ jsx12("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx12("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx12(CopyButton, { text: copyText, label: "Copy turn", reveal: "group-hover" }) }) }) : null
4895
4935
  ] }) });
4896
4936
  }
4897
4937
  function turnSummaryStatusLine(status) {
4898
4938
  if (status.kind === "worked") {
4899
- return status.durationMs !== void 0 && Number.isFinite(status.durationMs) && status.durationMs >= 1e3 ? /* @__PURE__ */ jsxs8("span", { "data-og-exchange-status": "worked", children: [
4939
+ return status.durationMs !== void 0 && Number.isFinite(status.durationMs) && status.durationMs >= 1e3 ? /* @__PURE__ */ jsxs9("span", { "data-og-exchange-status": "worked", children: [
4900
4940
  status.label ?? "Worked for",
4901
4941
  " ",
4902
4942
  formatElapsed(status.durationMs)
4903
4943
  ] }) : null;
4904
4944
  }
4905
4945
  const label = status.label ?? (status.kind === "working" ? "Working" : "Waiting");
4906
- return /* @__PURE__ */ jsxs8("span", { "data-og-exchange-status": status.kind, children: [
4907
- /* @__PURE__ */ jsx11("span", { className: status.kind === "working" ? "og-shimmer-text" : void 0, children: label }),
4908
- status.since ? /* @__PURE__ */ jsx11(LiveElapsed, { since: status.since }) : null
4946
+ return /* @__PURE__ */ jsxs9("span", { "data-og-exchange-status": status.kind, children: [
4947
+ /* @__PURE__ */ jsx12("span", { className: status.kind === "working" ? "og-shimmer-text" : void 0, children: label }),
4948
+ status.since ? /* @__PURE__ */ jsx12(LiveElapsed, { since: status.since }) : null
4909
4949
  ] });
4910
4950
  }
4911
4951
  function LiveElapsed({ since }) {
4912
4952
  const startedAt = Date.parse(since);
4913
- const [now, setNow] = useState9(() => Date.now());
4914
- useEffect6(() => {
4953
+ const [now, setNow] = useState10(() => Date.now());
4954
+ useEffect7(() => {
4915
4955
  const timer = setInterval(() => setNow(Date.now()), 1e3);
4916
4956
  return () => clearInterval(timer);
4917
4957
  }, []);
4918
4958
  if (!Number.isFinite(startedAt)) return null;
4919
- return /* @__PURE__ */ jsx11("span", { className: "tabular-nums", children: ` \xB7 ${formatElapsed(Math.max(0, now - startedAt))}` });
4959
+ return /* @__PURE__ */ jsx12("span", { className: "tabular-nums", children: ` \xB7 ${formatElapsed(Math.max(0, now - startedAt))}` });
4920
4960
  }
4921
4961
  function formatElapsed(durationMs) {
4922
4962
  const totalSeconds = Math.max(0, Math.floor(durationMs / 1e3));
@@ -5092,9 +5132,9 @@ import {
5092
5132
  useId as useId3,
5093
5133
  useLayoutEffect as useLayoutEffect3,
5094
5134
  useRef as useRef7,
5095
- useState as useState10
5135
+ useState as useState11
5096
5136
  } from "react";
5097
- import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
5137
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
5098
5138
  var FALLBACK_LINE_THRESHOLD = 12;
5099
5139
  var FALLBACK_TEXT_THRESHOLD = 900;
5100
5140
  var FALLBACK_UNBROKEN_THRESHOLD = 260;
@@ -5237,7 +5277,7 @@ function UserMessageDisclosureProvider({
5237
5277
  value,
5238
5278
  children
5239
5279
  }) {
5240
- return /* @__PURE__ */ jsx12(UserMessageDisclosureContext.Provider, { value, children });
5280
+ return /* @__PURE__ */ jsx13(UserMessageDisclosureContext.Provider, { value, children });
5241
5281
  }
5242
5282
  function userMessageLikelyNeedsDisclosure(text) {
5243
5283
  const lines = text.split(/\r?\n/);
@@ -5251,7 +5291,7 @@ function UserMessageBody({
5251
5291
  disclosureLabels
5252
5292
  }) {
5253
5293
  const disclosure = useContext10(UserMessageDisclosureContext);
5254
- const [expanded, setExpanded] = useState10(
5294
+ const [expanded, setExpanded] = useState11(
5255
5295
  () => disclosure?.expandedByMessageId.get(messageId) ?? false
5256
5296
  );
5257
5297
  const searchReveal = useTimelineSearchReveal();
@@ -5399,7 +5439,7 @@ function UserMessageBody({
5399
5439
  disclosure?.expandedByMessageId.set(messageId, next);
5400
5440
  setExpanded(next);
5401
5441
  };
5402
- return /* @__PURE__ */ jsxs9(
5442
+ return /* @__PURE__ */ jsxs10(
5403
5443
  "div",
5404
5444
  {
5405
5445
  ref: rootRef,
@@ -5408,7 +5448,7 @@ function UserMessageBody({
5408
5448
  "data-og-expanded": expanded ? "true" : "false",
5409
5449
  className: cn("relative min-w-0", className),
5410
5450
  children: [
5411
- /* @__PURE__ */ jsx12(
5451
+ /* @__PURE__ */ jsx13(
5412
5452
  "span",
5413
5453
  {
5414
5454
  ref: thresholdRef,
@@ -5416,7 +5456,7 @@ function UserMessageBody({
5416
5456
  className: "pointer-events-none absolute h-56 w-0 invisible sm:h-72"
5417
5457
  }
5418
5458
  ),
5419
- /* @__PURE__ */ jsxs9(
5459
+ /* @__PURE__ */ jsxs10(
5420
5460
  "div",
5421
5461
  {
5422
5462
  ref: clipRef,
@@ -5424,7 +5464,7 @@ function UserMessageBody({
5424
5464
  "data-og-user-message-clip": "",
5425
5465
  className: cn("relative min-w-0", collapsed && "max-h-56 overflow-hidden sm:max-h-72"),
5426
5466
  children: [
5427
- /* @__PURE__ */ jsx12(
5467
+ /* @__PURE__ */ jsx13(
5428
5468
  "div",
5429
5469
  {
5430
5470
  ref: contentRef,
@@ -5433,7 +5473,7 @@ function UserMessageBody({
5433
5473
  children
5434
5474
  }
5435
5475
  ),
5436
- /* @__PURE__ */ jsx12(
5476
+ /* @__PURE__ */ jsx13(
5437
5477
  "span",
5438
5478
  {
5439
5479
  ref: fadeRef,
@@ -5446,7 +5486,7 @@ function UserMessageBody({
5446
5486
  ]
5447
5487
  }
5448
5488
  ),
5449
- /* @__PURE__ */ jsx12(
5489
+ /* @__PURE__ */ jsx13(
5450
5490
  "button",
5451
5491
  {
5452
5492
  ref: disclosureControlRef,
@@ -5466,8 +5506,8 @@ function UserMessageBody({
5466
5506
  }
5467
5507
 
5468
5508
  // src/components/generated-video-player.tsx
5469
- import { useEffect as useEffect7, useState as useState11 } from "react";
5470
- import { jsx as jsx13 } from "react/jsx-runtime";
5509
+ import { useEffect as useEffect8, useState as useState12 } from "react";
5510
+ import { jsx as jsx14 } from "react/jsx-runtime";
5471
5511
  function GeneratedVideoPlayer({
5472
5512
  receipt,
5473
5513
  loadPlaybackSource,
@@ -5475,9 +5515,9 @@ function GeneratedVideoPlayer({
5475
5515
  label = "Generated video"
5476
5516
  }) {
5477
5517
  const formatError = useErrorMessage();
5478
- const [retry, setRetry] = useState11(0);
5479
- const [state, setState] = useState11({ kind: "loading" });
5480
- useEffect7(() => {
5518
+ const [retry, setRetry] = useState12(0);
5519
+ const [state, setState] = useState12({ kind: "loading" });
5520
+ useEffect8(() => {
5481
5521
  const controller = new AbortController();
5482
5522
  setState({ kind: "loading" });
5483
5523
  void loadPlaybackSource(receipt.artifact.artifactId, controller.signal).then(
@@ -5495,7 +5535,7 @@ function GeneratedVideoPlayer({
5495
5535
  return () => controller.abort();
5496
5536
  }, [loadPlaybackSource, receipt.artifact.artifactId, retry, formatError]);
5497
5537
  if (state.kind === "loading") {
5498
- return /* @__PURE__ */ jsx13(
5538
+ return /* @__PURE__ */ jsx14(
5499
5539
  "div",
5500
5540
  {
5501
5541
  "aria-label": `Loading ${label.toLowerCase()}`,
@@ -5507,7 +5547,7 @@ function GeneratedVideoPlayer({
5507
5547
  );
5508
5548
  }
5509
5549
  if (state.kind === "error") {
5510
- return /* @__PURE__ */ jsx13(
5550
+ return /* @__PURE__ */ jsx14(
5511
5551
  "div",
5512
5552
  {
5513
5553
  role: "status",
@@ -5519,7 +5559,7 @@ function GeneratedVideoPlayer({
5519
5559
  }
5520
5560
  );
5521
5561
  }
5522
- return /* @__PURE__ */ jsx13(
5562
+ return /* @__PURE__ */ jsx14(
5523
5563
  "video",
5524
5564
  {
5525
5565
  "aria-label": label,
@@ -5541,7 +5581,7 @@ function GeneratedVideoPlayer({
5541
5581
  }
5542
5582
 
5543
5583
  // src/components/session-status.tsx
5544
- import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
5584
+ import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
5545
5585
  var SESSION_STATUS_META = {
5546
5586
  queued: {
5547
5587
  label: "Queued",
@@ -5594,7 +5634,7 @@ var SESSION_STATUS_META = {
5594
5634
  };
5595
5635
  function SessionStatus({ status, label, size = "md", className }) {
5596
5636
  const meta = SESSION_STATUS_META[status];
5597
- return /* @__PURE__ */ jsxs10(
5637
+ return /* @__PURE__ */ jsxs11(
5598
5638
  "span",
5599
5639
  {
5600
5640
  "data-status": status,
@@ -5605,7 +5645,7 @@ function SessionStatus({ status, label, size = "md", className }) {
5605
5645
  className
5606
5646
  ),
5607
5647
  children: [
5608
- /* @__PURE__ */ jsx14(StatusDot, { status, className: size === "sm" ? "size-1" : "size-1.5" }),
5648
+ /* @__PURE__ */ jsx15(StatusDot, { status, className: size === "sm" ? "size-1" : "size-1.5" }),
5609
5649
  label ?? meta.label
5610
5650
  ]
5611
5651
  }
@@ -5613,7 +5653,7 @@ function SessionStatus({ status, label, size = "md", className }) {
5613
5653
  }
5614
5654
  function StatusDot({ status, className }) {
5615
5655
  const meta = SESSION_STATUS_META[status];
5616
- return /* @__PURE__ */ jsx14(
5656
+ return /* @__PURE__ */ jsx15(
5617
5657
  "span",
5618
5658
  {
5619
5659
  className: cn(
@@ -5621,7 +5661,7 @@ function StatusDot({ status, className }) {
5621
5661
  meta.dotClassName,
5622
5662
  className
5623
5663
  ),
5624
- children: meta.pulse ? /* @__PURE__ */ jsx14("span", { className: cn("absolute inset-0 animate-og-pulse rounded-full", meta.dotClassName) }) : null
5664
+ children: meta.pulse ? /* @__PURE__ */ jsx15("span", { className: cn("absolute inset-0 animate-og-pulse rounded-full", meta.dotClassName) }) : null
5625
5665
  }
5626
5666
  );
5627
5667
  }
@@ -5629,8 +5669,8 @@ function StatusDot({ status, className }) {
5629
5669
  // src/timeline/rolling-activity.tsx
5630
5670
  import { AnimatePresence as AnimatePresence2, motion as motion2, useReducedMotion as useReducedMotion2 } from "motion/react";
5631
5671
  import { WrenchIcon as WrenchIcon2 } from "lucide-react";
5632
- import { Suspense as Suspense3, useEffect as useEffect8, useState as useState12 } from "react";
5633
- import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
5672
+ import { Suspense as Suspense3, useEffect as useEffect9, useState as useState13 } from "react";
5673
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
5634
5674
  function RollingActivity({
5635
5675
  items,
5636
5676
  toolRegistry = defaultToolRegistry,
@@ -5638,8 +5678,8 @@ function RollingActivity({
5638
5678
  showCount = true
5639
5679
  }) {
5640
5680
  const reduced = useReducedMotion2();
5641
- const [mounted, setMounted] = useState12(false);
5642
- useEffect8(() => setMounted(true), []);
5681
+ const [mounted, setMounted] = useState13(false);
5682
+ useEffect9(() => setMounted(true), []);
5643
5683
  const work = items.filter(
5644
5684
  (item2) => item2.kind !== "startup-phase" && item2.kind !== "agent-message"
5645
5685
  );
@@ -5652,18 +5692,18 @@ function RollingActivity({
5652
5692
  0,
5653
5693
  work.findIndex((entry) => entry.id === item.id)
5654
5694
  );
5655
- const fallback2 = /* @__PURE__ */ jsxs11("span", { className: "og-rolling-label", children: [
5656
- /* @__PURE__ */ jsx15(WrenchIcon2, { className: "size-3.5" }),
5657
- /* @__PURE__ */ jsx15("span", { children: item.kind === "tool-call" ? toolDisplayName(item.name, item.display) : "Working" })
5695
+ const fallback2 = /* @__PURE__ */ jsxs12("span", { className: "og-rolling-label", children: [
5696
+ /* @__PURE__ */ jsx16(WrenchIcon2, { className: "size-3.5" }),
5697
+ /* @__PURE__ */ jsx16("span", { children: item.kind === "tool-call" ? toolDisplayName(item.name, item.display) : "Working" })
5658
5698
  ] });
5659
- return /* @__PURE__ */ jsxs11(
5699
+ return /* @__PURE__ */ jsxs12(
5660
5700
  "span",
5661
5701
  {
5662
5702
  className: "og-rolling-status",
5663
5703
  "data-running": active.some((entry) => entry.id === item.id) ? "true" : void 0,
5664
5704
  children: [
5665
- /* @__PURE__ */ jsx15("span", { className: "sr-only", children: item.kind === "tool-call" ? toolDisplayName(item.name, item.display) : item.kind === "reasoning" ? "Thinking" : "Working" }),
5666
- /* @__PURE__ */ jsx15("span", { className: "og-rolling-window", "aria-hidden": "true", children: /* @__PURE__ */ jsx15(AnimatePresence2, { initial: false, mode: "sync", children: /* @__PURE__ */ jsx15(
5705
+ /* @__PURE__ */ jsx16("span", { className: "sr-only", children: item.kind === "tool-call" ? toolDisplayName(item.name, item.display) : item.kind === "reasoning" ? "Thinking" : "Working" }),
5706
+ /* @__PURE__ */ jsx16("span", { className: "og-rolling-window", "aria-hidden": "true", children: /* @__PURE__ */ jsx16(AnimatePresence2, { initial: false, mode: "sync", children: /* @__PURE__ */ jsx16(
5667
5707
  motion2.span,
5668
5708
  {
5669
5709
  className: "og-rolling-face",
@@ -5677,18 +5717,18 @@ function RollingActivity({
5677
5717
  y: reduced ? 0 : -24
5678
5718
  },
5679
5719
  transition: { duration: reduced ? 0 : 0.4, ease: [0.22, 1, 0.36, 1] },
5680
- children: /* @__PURE__ */ jsx15(CompactActivityContext.Provider, { value: true, children: /* @__PURE__ */ jsx15(Suspense3, { fallback: fallback2, children: renderActivity(item, toolRegistry, void 0, void 0, void 0, void 0) }) })
5720
+ children: /* @__PURE__ */ jsx16(CompactActivityContext.Provider, { value: true, children: /* @__PURE__ */ jsx16(Suspense3, { fallback: fallback2, children: renderActivity(item, toolRegistry, void 0, void 0, void 0, void 0) }) })
5681
5721
  },
5682
5722
  item.id
5683
5723
  ) }) }),
5684
- showCount && earlierCount > 0 ? /* @__PURE__ */ jsx15("span", { className: "og-rolling-count", children: `+${earlierCount} earlier` }) : null
5724
+ showCount && earlierCount > 0 ? /* @__PURE__ */ jsx16("span", { className: "og-rolling-count", children: `+${earlierCount} earlier` }) : null
5685
5725
  ]
5686
5726
  }
5687
5727
  );
5688
5728
  }
5689
5729
 
5690
5730
  // src/components/child-session-link.tsx
5691
- import { jsx as jsx16 } from "react/jsx-runtime";
5731
+ import { jsx as jsx17 } from "react/jsx-runtime";
5692
5732
  function ChildSessionLink({
5693
5733
  kind,
5694
5734
  sourceId,
@@ -5697,7 +5737,7 @@ function ChildSessionLink({
5697
5737
  if (!onOpenSession || !kind.startsWith("child_") || !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(sourceId)) {
5698
5738
  return null;
5699
5739
  }
5700
- return /* @__PURE__ */ jsx16(
5740
+ return /* @__PURE__ */ jsx17(
5701
5741
  "button",
5702
5742
  {
5703
5743
  type: "button",
@@ -5765,11 +5805,11 @@ import {
5765
5805
  memo,
5766
5806
  useCallback as useCallback3,
5767
5807
  useContext as useContext12,
5768
- useEffect as useEffect9,
5808
+ useEffect as useEffect10,
5769
5809
  useLayoutEffect as useLayoutEffect5,
5770
5810
  useMemo as useMemo5,
5771
5811
  useRef as useRef9,
5772
- useState as useState14
5812
+ useState as useState15
5773
5813
  } from "react";
5774
5814
 
5775
5815
  // src/components/timeline-anchor.tsx
@@ -5852,11 +5892,11 @@ function timelineAnchorCorrection(scroller, anchors) {
5852
5892
  }
5853
5893
 
5854
5894
  // src/components/timeline-reading-progress.ts
5855
- import { useCallback as useCallback2, useLayoutEffect as useLayoutEffect4, useMemo as useMemo3, useRef as useRef8, useState as useState13 } from "react";
5895
+ import { useCallback as useCallback2, useLayoutEffect as useLayoutEffect4, useMemo as useMemo3, useRef as useRef8, useState as useState14 } from "react";
5856
5896
  function useReadingProgress(projected, pinned, scroller) {
5857
5897
  const following = pinned && !timelineHasReader(scroller);
5858
5898
  const previous = useRef8([]);
5859
- const [released, setReleased] = useState13(() => /* @__PURE__ */ new Set());
5899
+ const [released, setReleased] = useState14(() => /* @__PURE__ */ new Set());
5860
5900
  const groups = useMemo3(() => {
5861
5901
  if (following) return projected;
5862
5902
  const key = (group) => group.kind === "item" ? group.item.id : group.id;
@@ -6329,7 +6369,7 @@ function machineInputSummaryIsUseful(kind, cleanedSummary) {
6329
6369
  // src/timeline/allowance-exhausted-row.tsx
6330
6370
  import { GaugeIcon } from "lucide-react";
6331
6371
  import { createContext as createContext10, useContext as useContext11, useMemo as useMemo4 } from "react";
6332
- import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
6372
+ import { Fragment as Fragment5, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
6333
6373
  var AllowancePresentationContext = createContext10({
6334
6374
  render: void 0,
6335
6375
  labels: allowanceLabels()
@@ -6340,13 +6380,13 @@ function AllowancePresentationProvider({
6340
6380
  children
6341
6381
  }) {
6342
6382
  const value = useMemo4(() => ({ render, labels: allowanceLabels(labels) }), [render, labels]);
6343
- return /* @__PURE__ */ jsx17(AllowancePresentationContext.Provider, { value, children });
6383
+ return /* @__PURE__ */ jsx18(AllowancePresentationContext.Provider, { value, children });
6344
6384
  }
6345
6385
  function AllowanceExhaustedRow({ refusal }) {
6346
6386
  const { render, labels } = useContext11(AllowancePresentationContext);
6347
6387
  const enter = useEntranceAnimation();
6348
6388
  const workspace = refusal.scope === "workspace";
6349
- const defaultRow = /* @__PURE__ */ jsxs12(
6389
+ const defaultRow = /* @__PURE__ */ jsxs13(
6350
6390
  "div",
6351
6391
  {
6352
6392
  className: cn(
@@ -6356,13 +6396,13 @@ function AllowanceExhaustedRow({ refusal }) {
6356
6396
  role: "status",
6357
6397
  "data-og-allowance-exhausted": refusal.scope,
6358
6398
  children: [
6359
- /* @__PURE__ */ jsx17(GaugeIcon, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-og-status-waiting" }),
6360
- /* @__PURE__ */ jsxs12("div", { className: "min-w-0 flex-1", children: [
6361
- /* @__PURE__ */ jsx17("p", { className: "font-medium", children: workspace ? labels.workspaceLimitReachedTitle : labels.memberLimitReachedTitle }),
6362
- /* @__PURE__ */ jsxs12("p", { className: "mt-0.5 text-og-fg-muted", children: [
6399
+ /* @__PURE__ */ jsx18(GaugeIcon, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-og-status-waiting" }),
6400
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
6401
+ /* @__PURE__ */ jsx18("p", { className: "font-medium", children: workspace ? labels.workspaceLimitReachedTitle : labels.memberLimitReachedTitle }),
6402
+ /* @__PURE__ */ jsxs13("p", { className: "mt-0.5 text-og-fg-muted", children: [
6363
6403
  workspace ? labels.workspaceRemedy : labels.memberRemedy,
6364
6404
  " ",
6365
- /* @__PURE__ */ jsx17(
6405
+ /* @__PURE__ */ jsx18(
6366
6406
  "span",
6367
6407
  {
6368
6408
  title: refusal.resetsAt ? formatAllowanceInstant(refusal.resetsAt) : void 0,
@@ -6375,11 +6415,11 @@ function AllowanceExhaustedRow({ refusal }) {
6375
6415
  ]
6376
6416
  }
6377
6417
  );
6378
- return /* @__PURE__ */ jsx17(Fragment5, { children: render?.(refusal, { labels, defaultRow }) ?? defaultRow });
6418
+ return /* @__PURE__ */ jsx18(Fragment5, { children: render?.(refusal, { labels, defaultRow }) ?? defaultRow });
6379
6419
  }
6380
6420
 
6381
6421
  // src/components/message-timeline.tsx
6382
- import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
6422
+ import { Fragment as Fragment6, jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
6383
6423
  var TimelineAnnotationSelection = lazy3(() => import("./timeline-annotation-selection-DMLMM2TX.js"));
6384
6424
  var TimelineAnnotationMarkers = lazy3(() => import("./timeline-annotation-markers-GNDHTGBD.js"));
6385
6425
  var PIN_THRESHOLD_PX = 48;
@@ -6566,7 +6606,7 @@ function MessageTimeline({
6566
6606
  () => renderMessageText ? (text, item) => renderMessageText(text, item, {
6567
6607
  searchTarget: searchItem?.id === item.id ? searchTarget ?? null : null
6568
6608
  }) : (text, item) => {
6569
- const body = /* @__PURE__ */ jsx18(
6609
+ const body = /* @__PURE__ */ jsx19(
6570
6610
  Markdown,
6571
6611
  {
6572
6612
  searchTarget: searchItem?.id === item.id ? searchTarget : null,
@@ -6575,7 +6615,7 @@ function MessageTimeline({
6575
6615
  children: text
6576
6616
  }
6577
6617
  );
6578
- return item.kind === "user-message" ? /* @__PURE__ */ jsx18(UserMessageBody, { messageId: item.id, text, children: body }) : body;
6618
+ return item.kind === "user-message" ? /* @__PURE__ */ jsx19(UserMessageBody, { messageId: item.id, text, children: body }) : body;
6579
6619
  },
6580
6620
  [renderInteractiveBlock, renderMessageText, searchItem?.id, searchTarget]
6581
6621
  );
@@ -6586,9 +6626,9 @@ function MessageTimeline({
6586
6626
  newerScopeRef.current = newerBoundaryKey;
6587
6627
  const newerAttemptRef = useRef9(null);
6588
6628
  const newerRetryButtonRef = useRef9(null);
6589
- const [newerRetryPending, setNewerRetryPending] = useState14(false);
6590
- const [newerFailure, setNewerFailure] = useState14(null);
6591
- useEffect9(() => {
6629
+ const [newerRetryPending, setNewerRetryPending] = useState15(false);
6630
+ const [newerFailure, setNewerFailure] = useState15(null);
6631
+ useEffect10(() => {
6592
6632
  newerScopeRef.current = newerBoundaryKey;
6593
6633
  newerAttemptRef.current = null;
6594
6634
  setNewerFailure(null);
@@ -6640,7 +6680,7 @@ function MessageTimeline({
6640
6680
  settlementAnimationRef.current = null;
6641
6681
  }, []);
6642
6682
  const olderPageBudgetRef = useRef9(0);
6643
- const [olderDemand, setOlderDemand] = useState14(0);
6683
+ const [olderDemand, setOlderDemand] = useState15(0);
6644
6684
  const readableTurns = turnSummary?.rolling === true;
6645
6685
  const projectedGroups = useMemo5(
6646
6686
  () => groupTimeline(resolvedItems, { readableTurns }),
@@ -6660,33 +6700,33 @@ function MessageTimeline({
6660
6700
  const topSentinelRef = useRef9(null);
6661
6701
  const bottomSentinelRef = useRef9(null);
6662
6702
  const previousBulkFirstKeyRef = useRef9(void 0);
6663
- const [pinned, setPinned] = useState14(true);
6703
+ const [pinned, setPinned] = useState15(true);
6664
6704
  const { groups: allGroups, release: releaseProgress } = useReadingProgress(
6665
6705
  projectedGroups,
6666
6706
  autoFollow && pinned && !hasNewer,
6667
6707
  scrollRef.current
6668
6708
  );
6669
- const [canSkipTipCatchup, setCanSkipTipCatchup] = useState14(false);
6709
+ const [canSkipTipCatchup, setCanSkipTipCatchup] = useState15(false);
6670
6710
  const canSkipTipCatchupRef = useRef9(false);
6671
- const [bulkActive, setBulkActive] = useState14(true);
6711
+ const [bulkActive, setBulkActive] = useState15(true);
6672
6712
  const olderPrefetchArmedRef = useRef9(false);
6673
- const [olderPrefetchArmed, setOlderPrefetchArmed] = useState14(false);
6713
+ const [olderPrefetchArmed, setOlderPrefetchArmed] = useState15(false);
6674
6714
  const olderLoadAttemptRef = useRef9(null);
6675
- const [underfillSettledAttempt, setUnderfillSettledAttempt] = useState14(
6715
+ const [underfillSettledAttempt, setUnderfillSettledAttempt] = useState15(
6676
6716
  null
6677
6717
  );
6678
6718
  const underfillRetryReadyRef = useRef9(false);
6679
6719
  const resizeFollowRafRef = useRef9(null);
6680
6720
  const questionNavFrameRef = useRef9(null);
6681
- const [questionNav, setQuestionNav] = useState14(null);
6721
+ const [questionNav, setQuestionNav] = useState15(null);
6682
6722
  const questionNavMinViewportRef = useRef9(questionNavMinViewportHeight);
6683
6723
  questionNavMinViewportRef.current = questionNavMinViewportHeight;
6684
6724
  const scheduleQuestionNavRef = useRef9(() => {
6685
6725
  });
6686
- const [awayFromTip, setAwayFromTip] = useState14(false);
6726
+ const [awayFromTip, setAwayFromTip] = useState15(false);
6687
6727
  const jumpPillShown = autoFollow && (!pinned && awayFromTip || hasNewer || canSkipTipCatchup);
6688
6728
  const firstGroupKey = allGroups[0] ? timelineGroupKey(allGroups[0]) : null;
6689
- const [revealed, setRevealed] = useState14(resolvedItems[0]?.id === "c");
6729
+ const [revealed, setRevealed] = useState15(resolvedItems[0]?.id === "c");
6690
6730
  const pinnedRef = useRef9(true);
6691
6731
  const hasNewerRef = useRef9(hasNewer);
6692
6732
  hasNewerRef.current = hasNewer;
@@ -6706,7 +6746,7 @@ function MessageTimeline({
6706
6746
  const pendingReaderLeaveRef = useRef9(false);
6707
6747
  const leaveFallbackRafRef = useRef9(null);
6708
6748
  const foldMemoryRef = useRef9(/* @__PURE__ */ new Map());
6709
- const [openLiveFolds, setOpenLiveFolds] = useState14(() => /* @__PURE__ */ new Set());
6749
+ const [openLiveFolds, setOpenLiveFolds] = useState15(() => /* @__PURE__ */ new Set());
6710
6750
  const openLiveFoldsRef = useRef9(openLiveFolds);
6711
6751
  const liveNoteIdsByWorkRef = useRef9(/* @__PURE__ */ new Map());
6712
6752
  const liveFoldMotionRef = useRef9(null);
@@ -6843,7 +6883,7 @@ function MessageTimeline({
6843
6883
  fold.frame = requestFrame(step);
6844
6884
  setOpenLiveFolds(next);
6845
6885
  }, []);
6846
- useEffect9(
6886
+ useEffect10(
6847
6887
  () => () => {
6848
6888
  liveFoldMotionRef.current?.finish();
6849
6889
  },
@@ -6969,7 +7009,7 @@ function MessageTimeline({
6969
7009
  setOlderPrefetchArmed(true);
6970
7010
  }
6971
7011
  }, [autoFollow, applyPinned, clearPendingReaderLeave, clearReaderIntent, stopFollow]);
6972
- useEffect9(() => {
7012
+ useEffect10(() => {
6973
7013
  if (!readableTurns) return;
6974
7014
  const node = scrollRef.current;
6975
7015
  if (!node) return;
@@ -7239,7 +7279,7 @@ function MessageTimeline({
7239
7279
  });
7240
7280
  }, [readableTurns]);
7241
7281
  scheduleQuestionNavRef.current = scheduleQuestionNav;
7242
- useEffect9(
7282
+ useEffect10(
7243
7283
  () => () => {
7244
7284
  if (questionNavFrameRef.current != null) {
7245
7285
  cancelFrame(questionNavFrameRef.current);
@@ -7365,8 +7405,8 @@ function MessageTimeline({
7365
7405
  [applyCanSkipTipCatchup, cancelLeaveFallback, stopFollow, syncScrollBaseline, writeScrollTop]
7366
7406
  );
7367
7407
  driveFollowRef.current = driveFollow;
7368
- useEffect9(() => stopFollow, [stopFollow]);
7369
- useEffect9(() => () => cancelLeaveFallback(), [cancelLeaveFallback]);
7408
+ useEffect10(() => stopFollow, [stopFollow]);
7409
+ useEffect10(() => () => cancelLeaveFallback(), [cancelLeaveFallback]);
7370
7410
  useLayoutEffect5(() => {
7371
7411
  const node = scrollRef.current;
7372
7412
  if (!node) {
@@ -7585,7 +7625,7 @@ function MessageTimeline({
7585
7625
  seenActivityIdsRef.current.clear();
7586
7626
  applyPinned(true);
7587
7627
  }, [allGroups.length, revealed, applyPinned, clearReaderIntent]);
7588
- useEffect9(() => {
7628
+ useEffect10(() => {
7589
7629
  const node = scrollRef.current;
7590
7630
  if (node) {
7591
7631
  requestOlderIfUnderfilled(node);
@@ -7600,7 +7640,7 @@ function MessageTimeline({
7600
7640
  const frame = requestFrame(() => setBulkActive(false));
7601
7641
  return () => cancelFrame(frame);
7602
7642
  }, [bulkRender, firstGroupKey]);
7603
- useEffect9(() => {
7643
+ useEffect10(() => {
7604
7644
  const root = scrollRef.current;
7605
7645
  const target = topSentinelRef.current;
7606
7646
  if (!root || !target || !olderPrefetchArmed || !hasOlder || loadingOlder || !onLoadOlder || typeof IntersectionObserver === "undefined") {
@@ -7651,7 +7691,7 @@ function MessageTimeline({
7651
7691
  onLoadOlder,
7652
7692
  requestOlderIfUnderfilled
7653
7693
  ]);
7654
- useEffect9(() => {
7694
+ useEffect10(() => {
7655
7695
  const root = scrollRef.current;
7656
7696
  const target = bottomSentinelRef.current;
7657
7697
  if (!root || !target || !hasNewer || loadingNewer || !onLoadNewer || typeof IntersectionObserver === "undefined") {
@@ -7668,7 +7708,7 @@ function MessageTimeline({
7668
7708
  observer.observe(target);
7669
7709
  return () => observer.disconnect();
7670
7710
  }, [hasNewer, loadingNewer, onLoadNewer, requestNewer, firstGroupKey]);
7671
- useEffect9(() => {
7711
+ useEffect10(() => {
7672
7712
  const node = scrollRef.current;
7673
7713
  const inner = node?.firstElementChild;
7674
7714
  if (!node || !inner || typeof ResizeObserver === "undefined") {
@@ -7706,7 +7746,7 @@ function MessageTimeline({
7706
7746
  }
7707
7747
  };
7708
7748
  }, [autoFollow, driveFollow, requestOlderIfUnderfilled, snapToBottom]);
7709
- useEffect9(() => {
7749
+ useEffect10(() => {
7710
7750
  if (searchTargetRef.current) return;
7711
7751
  if (hasNewer) {
7712
7752
  stopFollow();
@@ -7862,18 +7902,18 @@ function MessageTimeline({
7862
7902
  }
7863
7903
  releasePinAfterScrollSettled(node);
7864
7904
  };
7865
- const timeline = /* @__PURE__ */ jsx18(
7905
+ const timeline = /* @__PURE__ */ jsx19(
7866
7906
  AllowancePresentationProvider,
7867
7907
  {
7868
7908
  render: renderAllowanceExhausted,
7869
7909
  labels: allowanceExhaustedLabels,
7870
- children: /* @__PURE__ */ jsx18(LightboxProvider, { children: /* @__PURE__ */ jsx18(FoldMemoryProvider, { value: foldMemoryRef.current, children: /* @__PURE__ */ jsx18(LiveNoteFoldContext.Provider, { value: reportLiveFold, children: /* @__PURE__ */ jsx18(SeenActivityIdsProvider, { value: seenActivityIdsRef.current, children: /* @__PURE__ */ jsx18(TimelineComputeLabelProvider, { value: computeLabel ?? null, children: /* @__PURE__ */ jsx18(EntranceAnimationProvider, { value: false, children: /* @__PURE__ */ jsx18(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsx18(TimelineAnnotationSourceRootContext.Provider, { value: scrollRef, children: /* @__PURE__ */ jsxs13(
7910
+ children: /* @__PURE__ */ jsx19(LightboxProvider, { children: /* @__PURE__ */ jsx19(FoldMemoryProvider, { value: foldMemoryRef.current, children: /* @__PURE__ */ jsx19(LiveNoteFoldContext.Provider, { value: reportLiveFold, children: /* @__PURE__ */ jsx19(SeenActivityIdsProvider, { value: seenActivityIdsRef.current, children: /* @__PURE__ */ jsx19(TimelineComputeLabelProvider, { value: computeLabel ?? null, children: /* @__PURE__ */ jsx19(EntranceAnimationProvider, { value: false, children: /* @__PURE__ */ jsx19(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsx19(TimelineAnnotationSourceRootContext.Provider, { value: scrollRef, children: /* @__PURE__ */ jsxs14(
7871
7911
  "div",
7872
7912
  {
7873
7913
  className: cn("og-root relative flex min-h-0 flex-col", className),
7874
7914
  style: { "--og-work-header-top": "-4rem" },
7875
7915
  children: [
7876
- onAnnotate ? /* @__PURE__ */ jsx18(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx18(
7916
+ onAnnotate ? /* @__PURE__ */ jsx19(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx19(
7877
7917
  TimelineAnnotationSelection,
7878
7918
  {
7879
7919
  rootRef: scrollRef,
@@ -7881,7 +7921,7 @@ function MessageTimeline({
7881
7921
  onAnnotate
7882
7922
  }
7883
7923
  ) }) : null,
7884
- /* @__PURE__ */ jsx18(
7924
+ /* @__PURE__ */ jsx19(
7885
7925
  "div",
7886
7926
  {
7887
7927
  ref: scrollRef,
@@ -7948,7 +7988,7 @@ function MessageTimeline({
7948
7988
  "min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 pt-16 pb-6 sm:px-6 outline-hidden",
7949
7989
  autoFollow && pinned && !hasNewer ? "[overflow-anchor:none]" : "[overflow-anchor:auto]"
7950
7990
  ),
7951
- children: /* @__PURE__ */ jsx18(
7991
+ children: /* @__PURE__ */ jsx19(
7952
7992
  TimelineBeforeLayout,
7953
7993
  {
7954
7994
  capture: () => {
@@ -7958,11 +7998,11 @@ function MessageTimeline({
7958
7998
  readingAnchorRef.current = !pinnedRef.current && scrollRef.current ? captureTimelineAnchor(scrollRef.current) : null;
7959
7999
  settlementRef.current = readableTurns && autoFollow && pinnedRef.current && revealedRef.current && !hasNewer && !pendingReaderLeaveRef.current && !disclosureKeepsUnpinnedRef.current && !prefersReducedMotion() && scrollRef.current ? captureTimelineSettlement(scrollRef.current, groups) : null;
7960
8000
  },
7961
- children: /* @__PURE__ */ jsxs13("div", { className: "relative mx-auto flex w-full max-w-3xl flex-col gap-5", children: [
7962
- /* @__PURE__ */ jsx18(AnimatePresence3, { children: loadingOlder || loadingOldest || hasOlder && onJumpToStart && olderPrefetchArmed || underfillRetryReady ? (
8001
+ children: /* @__PURE__ */ jsxs14("div", { className: "relative mx-auto flex w-full max-w-3xl flex-col gap-5", children: [
8002
+ /* @__PURE__ */ jsx19(AnimatePresence3, { children: loadingOlder || loadingOldest || hasOlder && onJumpToStart && olderPrefetchArmed || underfillRetryReady ? (
7963
8003
  // Reserved top gutter: controls scroll with history and cannot
7964
8004
  // cover a disclosure. Visibility never changes content height.
7965
- /* @__PURE__ */ jsxs13(
8005
+ /* @__PURE__ */ jsxs14(
7966
8006
  motion3.div,
7967
8007
  {
7968
8008
  initial: { opacity: 0, y: -6 },
@@ -7973,8 +8013,8 @@ function MessageTimeline({
7973
8013
  "aria-live": "polite",
7974
8014
  className: "pointer-events-none absolute inset-x-0 -top-11 z-10 flex justify-center",
7975
8015
  children: [
7976
- loadingOlder || loadingOldest ? /* @__PURE__ */ jsx18("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx18("span", { className: "og-shimmer-text", children: loadingOldest ? "Jumping to start\u2026" : "Loading earlier activity\u2026" }) }) : null,
7977
- hasOlder && !loadingOlder && !loadingOldest && (underfillRetryReady || onJumpToStart) ? /* @__PURE__ */ jsx18(
8016
+ loadingOlder || loadingOldest ? /* @__PURE__ */ jsx19("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx19("span", { className: "og-shimmer-text", children: loadingOldest ? "Jumping to start\u2026" : "Loading earlier activity\u2026" }) }) : null,
8017
+ hasOlder && !loadingOlder && !loadingOldest && (underfillRetryReady || onJumpToStart) ? /* @__PURE__ */ jsx19(
7978
8018
  "button",
7979
8019
  {
7980
8020
  type: "button",
@@ -8021,13 +8061,13 @@ function MessageTimeline({
8021
8061
  }
8022
8062
  )
8023
8063
  ) : null }),
8024
- !groups.length ? emptyState ?? /* @__PURE__ */ jsx18("p", { className: "py-10 text-center text-og-menu text-og-fg-subtle", children: "No activity yet." }) : null,
8064
+ !groups.length ? emptyState ?? /* @__PURE__ */ jsx19("p", { className: "py-10 text-center text-og-menu text-og-fg-subtle", children: "No activity yet." }) : null,
8025
8065
  hasOlder && olderPrefetchArmed ? (
8026
8066
  // Overlaid, not a layout row: mounting/unmounting the sentinel
8027
8067
  // must never shift content (that shift was itself a wobble).
8028
8068
  // End at the scroll origin above the pt-16 gutter so the
8029
8069
  // observer and scrollTop cooldown share the same 400px band.
8030
- /* @__PURE__ */ jsx18(
8070
+ /* @__PURE__ */ jsx19(
8031
8071
  "div",
8032
8072
  {
8033
8073
  ref: topSentinelRef,
@@ -8039,11 +8079,11 @@ function MessageTimeline({
8039
8079
  )
8040
8080
  ) : null,
8041
8081
  groups.map(({ group, key, entranceEnabled }, index) => {
8042
- return /* @__PURE__ */ jsx18(
8082
+ return /* @__PURE__ */ jsx19(
8043
8083
  TimelineSearchRevealContext.Provider,
8044
8084
  {
8045
8085
  value: searchItem && timelineGroupItemIds(group).includes(searchItem.id) ? searchRevealKey : null,
8046
- children: /* @__PURE__ */ jsx18(
8086
+ children: /* @__PURE__ */ jsx19(
8047
8087
  TimelineGroupEntry,
8048
8088
  {
8049
8089
  groupKey: key,
@@ -8062,18 +8102,18 @@ function MessageTimeline({
8062
8102
  key
8063
8103
  );
8064
8104
  }),
8065
- groups.length > 0 && trailingState ? /* @__PURE__ */ jsx18("div", { "data-og-timeline-trailing-state": "", children: trailingState }) : null,
8066
- hasNewer && newerFailure?.key === newerBoundaryKey ? /* @__PURE__ */ jsxs13(
8105
+ groups.length > 0 && trailingState ? /* @__PURE__ */ jsx19("div", { "data-og-timeline-trailing-state": "", children: trailingState }) : null,
8106
+ hasNewer && newerFailure?.key === newerBoundaryKey ? /* @__PURE__ */ jsxs14(
8067
8107
  "div",
8068
8108
  {
8069
8109
  "data-og-newer-error": "",
8070
8110
  className: "flex flex-col items-center gap-2 px-4 py-3 text-center text-og-menu text-og-fg-muted",
8071
8111
  children: [
8072
- /* @__PURE__ */ jsxs13("p", { role: "status", className: "max-w-prose [overflow-wrap:anywhere]", children: [
8112
+ /* @__PURE__ */ jsxs14("p", { role: "status", className: "max-w-prose [overflow-wrap:anywhere]", children: [
8073
8113
  "Couldn\u2019t load later activity. ",
8074
8114
  newerFailure.message
8075
8115
  ] }),
8076
- /* @__PURE__ */ jsx18(
8116
+ /* @__PURE__ */ jsx19(
8077
8117
  "button",
8078
8118
  {
8079
8119
  ref: newerRetryButtonRef,
@@ -8089,7 +8129,7 @@ function MessageTimeline({
8089
8129
  ]
8090
8130
  }
8091
8131
  ) : null,
8092
- hasNewer ? /* @__PURE__ */ jsx18(
8132
+ hasNewer ? /* @__PURE__ */ jsx19(
8093
8133
  "div",
8094
8134
  {
8095
8135
  ref: bottomSentinelRef,
@@ -8104,7 +8144,7 @@ function MessageTimeline({
8104
8144
  )
8105
8145
  }
8106
8146
  ),
8107
- draftAnnotations && draftAnnotations.length > 0 ? /* @__PURE__ */ jsx18(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx18(
8147
+ draftAnnotations && draftAnnotations.length > 0 ? /* @__PURE__ */ jsx19(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx19(
8108
8148
  TimelineAnnotationMarkers,
8109
8149
  {
8110
8150
  rootRef: scrollRef,
@@ -8112,7 +8152,7 @@ function MessageTimeline({
8112
8152
  onSelect: onDraftAnnotationSelect
8113
8153
  }
8114
8154
  ) }) : null,
8115
- /* @__PURE__ */ jsx18(
8155
+ /* @__PURE__ */ jsx19(
8116
8156
  "div",
8117
8157
  {
8118
8158
  "data-og-timeline-nav": "top",
@@ -8120,7 +8160,7 @@ function MessageTimeline({
8120
8160
  "pointer-events-none absolute inset-x-0 z-10 flex justify-center",
8121
8161
  questionNav?.belowHeader ? "top-10 pointer-coarse:top-13" : "top-3"
8122
8162
  ),
8123
- children: /* @__PURE__ */ jsx18(AnimatePresence3, { children: questionNav ? /* @__PURE__ */ jsxs13(
8163
+ children: /* @__PURE__ */ jsx19(AnimatePresence3, { children: questionNav ? /* @__PURE__ */ jsxs14(
8124
8164
  motion3.button,
8125
8165
  {
8126
8166
  ...NAV_FADE,
@@ -8131,32 +8171,32 @@ function MessageTimeline({
8131
8171
  onClick: () => jumpToQuestion(questionNav.key),
8132
8172
  className: NAV_BUTTON_CLASS,
8133
8173
  children: [
8134
- /* @__PURE__ */ jsx18(ArrowUpIcon, { "aria-hidden": true, className: "size-4" }),
8135
- /* @__PURE__ */ jsx18("span", { className: "sr-only", children: "Back to your message" })
8174
+ /* @__PURE__ */ jsx19(ArrowUpIcon, { "aria-hidden": true, className: "size-4" }),
8175
+ /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Back to your message" })
8136
8176
  ]
8137
8177
  },
8138
8178
  "question-nav"
8139
8179
  ) : null })
8140
8180
  }
8141
8181
  ),
8142
- /* @__PURE__ */ jsx18(
8182
+ /* @__PURE__ */ jsx19(
8143
8183
  "div",
8144
8184
  {
8145
8185
  "data-og-timeline-nav": "bottom",
8146
8186
  className: "pointer-events-none absolute inset-x-0 bottom-3 z-10 flex flex-col items-center gap-2",
8147
- children: /* @__PURE__ */ jsxs13(AnimatePresence3, { children: [
8148
- loadingNewer ? /* @__PURE__ */ jsx18(
8187
+ children: /* @__PURE__ */ jsxs14(AnimatePresence3, { children: [
8188
+ loadingNewer ? /* @__PURE__ */ jsx19(
8149
8189
  motion3.div,
8150
8190
  {
8151
8191
  ...NAV_FADE,
8152
8192
  "data-og-loading-newer": "",
8153
8193
  "aria-live": "polite",
8154
8194
  className: "flex max-w-full justify-center",
8155
- children: /* @__PURE__ */ jsx18("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx18("span", { className: "og-shimmer-text", children: "Loading later activity\u2026" }) })
8195
+ children: /* @__PURE__ */ jsx19("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx19("span", { className: "og-shimmer-text", children: "Loading later activity\u2026" }) })
8156
8196
  },
8157
8197
  "loading-newer"
8158
8198
  ) : null,
8159
- jumpPillShown ? /* @__PURE__ */ jsxs13(
8199
+ jumpPillShown ? /* @__PURE__ */ jsxs14(
8160
8200
  motion3.button,
8161
8201
  {
8162
8202
  ...NAV_FADE,
@@ -8199,8 +8239,8 @@ function MessageTimeline({
8199
8239
  },
8200
8240
  className: NAV_BUTTON_CLASS,
8201
8241
  children: [
8202
- /* @__PURE__ */ jsx18(ArrowDownIcon, { "aria-hidden": true, className: "size-4" }),
8203
- /* @__PURE__ */ jsx18("span", { className: "sr-only", children: "Jump to latest" })
8242
+ /* @__PURE__ */ jsx19(ArrowDownIcon, { "aria-hidden": true, className: "size-4" }),
8243
+ /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Jump to latest" })
8204
8244
  ]
8205
8245
  },
8206
8246
  "jump-to-latest"
@@ -8213,7 +8253,7 @@ function MessageTimeline({
8213
8253
  ) }) }) }) }) }) }) }) })
8214
8254
  }
8215
8255
  );
8216
- return /* @__PURE__ */ jsx18(OpenGeniLinkProvider, { resolveLink, children: timeline });
8256
+ return /* @__PURE__ */ jsx19(OpenGeniLinkProvider, { resolveLink, children: timeline });
8217
8257
  }
8218
8258
  function timelineGroupsRenderEqual(previous, next) {
8219
8259
  try {
@@ -8301,17 +8341,17 @@ var TimelineGroupRenderBoundary = class extends Component3 {
8301
8341
  }
8302
8342
  render() {
8303
8343
  if (this.state.failed) {
8304
- return /* @__PURE__ */ jsxs13(
8344
+ return /* @__PURE__ */ jsxs14(
8305
8345
  "div",
8306
8346
  {
8307
8347
  "data-testid": "timeline-group-render-error",
8308
8348
  role: "status",
8309
8349
  className: "flex items-start gap-2 rounded-lg border border-og-border bg-og-surface-muted px-3 py-2 text-og-menu text-og-fg-muted",
8310
8350
  children: [
8311
- /* @__PURE__ */ jsx18(TriangleAlertIcon2, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0" }),
8312
- /* @__PURE__ */ jsxs13("div", { children: [
8313
- /* @__PURE__ */ jsx18("p", { className: "font-medium text-og-fg", children: "Timeline item unavailable" }),
8314
- /* @__PURE__ */ jsx18("p", { children: "This item could not be displayed. The rest of the conversation is still available." })
8351
+ /* @__PURE__ */ jsx19(TriangleAlertIcon2, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0" }),
8352
+ /* @__PURE__ */ jsxs14("div", { children: [
8353
+ /* @__PURE__ */ jsx19("p", { className: "font-medium text-og-fg", children: "Timeline item unavailable" }),
8354
+ /* @__PURE__ */ jsx19("p", { children: "This item could not be displayed. The rest of the conversation is still available." })
8315
8355
  ] })
8316
8356
  ]
8317
8357
  }
@@ -8333,7 +8373,7 @@ var TimelineGroupEntry = memo(function TimelineGroupEntry2({
8333
8373
  const reducedMotion = useReducedMotion3();
8334
8374
  const { behavior, userMessageDisclosureContext } = context;
8335
8375
  const contextCompactionCount = group.kind === "turn" ? group.contextCompactionCount ?? 0 : group.kind === "activity" && nextGroup?.kind === "item" && nextGroup.item.kind === "context-compaction" && nextGroup.item.phase === "compacted" ? 1 : 0;
8336
- const content = /* @__PURE__ */ jsx18(ActivityNoteTextContext.Provider, { value: behavior.renderMessageText ?? null, children: /* @__PURE__ */ jsx18(
8376
+ const content = /* @__PURE__ */ jsx19(ActivityNoteTextContext.Provider, { value: behavior.renderMessageText ?? null, children: /* @__PURE__ */ jsx19(
8337
8377
  TimelineGroupView,
8338
8378
  {
8339
8379
  ...behavior,
@@ -8344,7 +8384,7 @@ var TimelineGroupEntry = memo(function TimelineGroupEntry2({
8344
8384
  contextCompactionCount: contextCompactionCount > 0 ? contextCompactionCount : void 0
8345
8385
  }
8346
8386
  ) });
8347
- return /* @__PURE__ */ jsx18(GenieLoadingOptionsContext.Provider, { value: behavior.genieLoading, children: /* @__PURE__ */ jsx18(
8387
+ return /* @__PURE__ */ jsx19(GenieLoadingOptionsContext.Provider, { value: behavior.genieLoading, children: /* @__PURE__ */ jsx19(
8348
8388
  "div",
8349
8389
  {
8350
8390
  "data-og-timeline-group-anchor": "",
@@ -8356,7 +8396,7 @@ var TimelineGroupEntry = memo(function TimelineGroupEntry2({
8356
8396
  "aria-hidden": noteFolded || void 0,
8357
8397
  inert: noteFolded || void 0,
8358
8398
  className: noteFolded ? "-mt-5 h-0 overflow-hidden opacity-0 [overflow-anchor:none]" : void 0,
8359
- children: /* @__PURE__ */ jsx18(EntranceAnimationProvider, { value: entranceEnabled, liveValue: liveEntranceEnabled, children: /* @__PURE__ */ jsx18(TimelineGroupRenderBoundary, { resetKeys: [group, behavior], children: /* @__PURE__ */ jsx18(UserMessageDisclosureProvider, { value: userMessageDisclosureContext, children: group.kind === "item" ? /* @__PURE__ */ jsx18("div", { children: content }) : /* @__PURE__ */ jsx18(AnimatePresence3, { initial: false, children: /* @__PURE__ */ jsx18(
8399
+ children: /* @__PURE__ */ jsx19(EntranceAnimationProvider, { value: entranceEnabled, liveValue: liveEntranceEnabled, children: /* @__PURE__ */ jsx19(TimelineGroupRenderBoundary, { resetKeys: [group, behavior], children: /* @__PURE__ */ jsx19(UserMessageDisclosureProvider, { value: userMessageDisclosureContext, children: group.kind === "item" ? /* @__PURE__ */ jsx19("div", { children: content }) : /* @__PURE__ */ jsx19(AnimatePresence3, { initial: false, children: /* @__PURE__ */ jsx19(
8360
8400
  motion3.div,
8361
8401
  {
8362
8402
  initial: false,
@@ -8423,7 +8463,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8423
8463
  (item) => item.kind === "startup-phase" || item.kind === "reasoning" && !item.text.trim()
8424
8464
  ) && !phases.some((item) => item.status === "failed" || item.status === "cancelled");
8425
8465
  if (preparing) {
8426
- return /* @__PURE__ */ jsx18(
8466
+ return /* @__PURE__ */ jsx19(
8427
8467
  ActivityRail,
8428
8468
  {
8429
8469
  items: group.items,
@@ -8441,7 +8481,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8441
8481
  const status = end ? { kind: "worked", durationMs: durationBetween(group.work.startedAt, end) } : group.work.waiting ? { kind: "waiting", ...group.work.waiting } : {
8442
8482
  kind: "working",
8443
8483
  since: group.work.startedAt,
8444
- preview: containsPresentedImage ? void 0 : /* @__PURE__ */ jsx18(
8484
+ preview: containsPresentedImage ? void 0 : /* @__PURE__ */ jsx19(
8445
8485
  RollingActivity,
8446
8486
  {
8447
8487
  items: group.items,
@@ -8453,7 +8493,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8453
8493
  return (
8454
8494
  // Marks this work row for the live-note fold (list keys can be carried
8455
8495
  // over from an earlier row, so they are not the work id).
8456
- /* @__PURE__ */ jsx18("div", { className: "contents", "data-og-work-id": group.id, children: /* @__PURE__ */ jsx18(
8496
+ /* @__PURE__ */ jsx19("div", { className: "contents", "data-og-work-id": group.id, children: /* @__PURE__ */ jsx19(
8457
8497
  TurnSummary,
8458
8498
  {
8459
8499
  items: group.items,
@@ -8465,7 +8505,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8465
8505
  facets: turnSummary?.facets,
8466
8506
  contextCompactionCount: compactedLandmarkCount(group.work.details),
8467
8507
  onOpenStateChange: group.work.liveNoteIds?.length && reportLiveFold ? (open) => reportLiveFold(group.id, open) : void 0,
8468
- children: /* @__PURE__ */ jsx18(TurnRailFrame, { compact: true, children: renderFoldedGroups(
8508
+ children: /* @__PURE__ */ jsx19(TurnRailFrame, { compact: true, children: renderFoldedGroups(
8469
8509
  group.work.details,
8470
8510
  {
8471
8511
  renderMessageActions,
@@ -8491,7 +8531,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8491
8531
  if (!startupDetails && !insideTurn && !group.outcome && group.items.every(
8492
8532
  (item) => item.kind === "startup-phase" || item.kind === "reasoning" && !item.text.trim()
8493
8533
  )) {
8494
- return /* @__PURE__ */ jsx18(
8534
+ return /* @__PURE__ */ jsx19(
8495
8535
  ActivityRail,
8496
8536
  {
8497
8537
  items: group.items,
@@ -8506,7 +8546,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8506
8546
  );
8507
8547
  }
8508
8548
  if (turnSummary?.rolling && insideTurn && !startupDetails && !hasRememberedImageFold && group.items.filter((item) => item.kind !== "startup-phase").length === 1) {
8509
- return /* @__PURE__ */ jsx18(
8549
+ return /* @__PURE__ */ jsx19(
8510
8550
  ActivityRail,
8511
8551
  {
8512
8552
  items: group.items,
@@ -8525,7 +8565,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8525
8565
  const singleThought = !startupDetails && visibleActivity.length === 1 && visibleActivity[0]?.kind === "reasoning";
8526
8566
  const useNestedChip = nestClusterChips && (activityShouldFold || hasRememberedImageFold) && !singleThought;
8527
8567
  if (!useNestedChip) {
8528
- return /* @__PURE__ */ jsx18(
8568
+ return /* @__PURE__ */ jsx19(
8529
8569
  ActivityRail,
8530
8570
  {
8531
8571
  items: group.items,
@@ -8539,7 +8579,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8539
8579
  }
8540
8580
  );
8541
8581
  }
8542
- return /* @__PURE__ */ jsx18(
8582
+ return /* @__PURE__ */ jsx19(
8543
8583
  TurnSummary,
8544
8584
  {
8545
8585
  items: group.items,
@@ -8550,7 +8590,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8550
8590
  foldKey: group.id,
8551
8591
  facets: turnSummary?.facets,
8552
8592
  contextCompactionCount,
8553
- children: /* @__PURE__ */ jsx18(
8593
+ children: /* @__PURE__ */ jsx19(
8554
8594
  ActivityRail,
8555
8595
  {
8556
8596
  items: group.items,
@@ -8566,14 +8606,14 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8566
8606
  settleChrome ? "settle" : "rest"
8567
8607
  );
8568
8608
  }
8569
- return /* @__PURE__ */ jsx18(
8609
+ return /* @__PURE__ */ jsx19(
8570
8610
  TurnSummary,
8571
8611
  {
8572
8612
  items: group.items,
8573
8613
  outcome: group.outcome,
8574
8614
  failureText: group.failureText,
8575
8615
  defaultOpen: group.outcome === "failed" || containsPresentedImage || !turnSummary?.rolling && !activityShouldFold ? true : void 0,
8576
- liveHeader: turnSummary?.rolling && !containsPresentedImage && !group.outcome && !foldLiveCluster ? /* @__PURE__ */ jsx18(
8616
+ liveHeader: turnSummary?.rolling && !containsPresentedImage && !group.outcome && !foldLiveCluster ? /* @__PURE__ */ jsx19(
8577
8617
  RollingActivity,
8578
8618
  {
8579
8619
  items: group.items,
@@ -8585,7 +8625,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8585
8625
  facets: turnSummary?.facets,
8586
8626
  settleFold,
8587
8627
  contextCompactionCount,
8588
- children: /* @__PURE__ */ jsx18(FoldBody, { children: /* @__PURE__ */ jsx18(TurnRailFrame, { children: /* @__PURE__ */ jsx18(
8628
+ children: /* @__PURE__ */ jsx19(FoldBody, { children: /* @__PURE__ */ jsx19(TurnRailFrame, { children: /* @__PURE__ */ jsx19(
8589
8629
  ActivityRail,
8590
8630
  {
8591
8631
  items: group.items,
@@ -8607,7 +8647,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8607
8647
  (item) => item.kind === "startup-phase" && item.status === "complete"
8608
8648
  )
8609
8649
  ))
8610
- return /* @__PURE__ */ jsx18(ActivityRail, { items: activityItems, startupActive: false, bare: true });
8650
+ return /* @__PURE__ */ jsx19(ActivityRail, { items: activityItems, startupActive: false, bare: true });
8611
8651
  const turnCopyText = collectTurnCopyText(group.groups, trailingAgentText);
8612
8652
  const body = renderFoldedGroups(group.groups, {
8613
8653
  renderMessageActions,
@@ -8624,7 +8664,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8624
8664
  turnSummary
8625
8665
  });
8626
8666
  const durationMs = durationBetween(group.startedAt, group.endedAt);
8627
- return /* @__PURE__ */ jsx18(
8667
+ return /* @__PURE__ */ jsx19(
8628
8668
  TurnSummary,
8629
8669
  {
8630
8670
  items: activityItems,
@@ -8638,16 +8678,16 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8638
8678
  settleFold,
8639
8679
  copyText: insideTurn ? void 0 : turnCopyText,
8640
8680
  contextCompactionCount: contextCompactionCount ?? group.contextCompactionCount,
8641
- children: /* @__PURE__ */ jsx18(FoldBody, { children: insideTurn ? (
8681
+ children: /* @__PURE__ */ jsx19(FoldBody, { children: insideTurn ? (
8642
8682
  // A nested turn is already on an ancestor rail — its body just stacks
8643
8683
  // flush (the bare-node body already indents it), so no second rule.
8644
- /* @__PURE__ */ jsx18("div", { className: "flex flex-col gap-4", children: body })
8645
- ) : /* @__PURE__ */ jsx18(TurnRailFrame, { children: body }) })
8684
+ /* @__PURE__ */ jsx19("div", { className: "flex flex-col gap-4", children: body })
8685
+ ) : /* @__PURE__ */ jsx19(TurnRailFrame, { children: body }) })
8646
8686
  }
8647
8687
  );
8648
8688
  }
8649
8689
  case "item":
8650
- return /* @__PURE__ */ jsx18(
8690
+ return /* @__PURE__ */ jsx19(
8651
8691
  TimelineRow,
8652
8692
  {
8653
8693
  item: group.item,
@@ -8664,7 +8704,7 @@ var TimelineGroupView = memo(function TimelineGroupView2({
8664
8704
  });
8665
8705
  function renderFoldedGroups(groups, behavior, readableWork = false) {
8666
8706
  const nestClusters = foldableActivityClusterCount(groups) >= 2;
8667
- return groups.map((child, index) => /* @__PURE__ */ jsx18(
8707
+ return groups.map((child, index) => /* @__PURE__ */ jsx19(
8668
8708
  TimelineGroupRenderBoundary,
8669
8709
  {
8670
8710
  resetKeys: [
@@ -8682,13 +8722,13 @@ function renderFoldedGroups(groups, behavior, readableWork = false) {
8682
8722
  behavior.loadVideoArtifactPlayback,
8683
8723
  behavior.turnSummary
8684
8724
  ],
8685
- children: readableWork ? /* @__PURE__ */ jsx18(
8725
+ children: readableWork ? /* @__PURE__ */ jsx19(
8686
8726
  "div",
8687
8727
  {
8688
8728
  className: index > 0 && (child.kind !== "activity" || groups[index - 1]?.kind !== "activity") ? "mt-3" : void 0,
8689
- children: /* @__PURE__ */ jsx18(TimelineGroupView, { ...behavior, group: child, insideTurn: true, startupDismissed: true })
8729
+ children: /* @__PURE__ */ jsx19(TimelineGroupView, { ...behavior, group: child, insideTurn: true, startupDismissed: true })
8690
8730
  }
8691
- ) : /* @__PURE__ */ jsx18(TimelineGroupView, { ...behavior, group: child, insideTurn: true, nestClusterChips: nestClusters })
8731
+ ) : /* @__PURE__ */ jsx19(TimelineGroupView, { ...behavior, group: child, insideTurn: true, nestClusterChips: nestClusters })
8692
8732
  },
8693
8733
  timelineGroupKey(child)
8694
8734
  ));
@@ -8699,10 +8739,10 @@ function compactedLandmarkCount(groups) {
8699
8739
  ).length;
8700
8740
  }
8701
8741
  function FoldBody({ children }) {
8702
- return /* @__PURE__ */ jsx18(Fragment6, { children });
8742
+ return /* @__PURE__ */ jsx19(Fragment6, { children });
8703
8743
  }
8704
8744
  function TurnRailFrame({ children, compact = false }) {
8705
- return /* @__PURE__ */ jsx18(
8745
+ return /* @__PURE__ */ jsx19(
8706
8746
  "div",
8707
8747
  {
8708
8748
  className: cn(
@@ -8893,7 +8933,7 @@ function TimelineRow({
8893
8933
  }) {
8894
8934
  switch (item.kind) {
8895
8935
  case "user-message":
8896
- return /* @__PURE__ */ jsx18(
8936
+ return /* @__PURE__ */ jsx19(
8897
8937
  UserMessageRow,
8898
8938
  {
8899
8939
  item,
@@ -8902,9 +8942,9 @@ function TimelineRow({
8902
8942
  }
8903
8943
  );
8904
8944
  case "human-input":
8905
- return /* @__PURE__ */ jsx18(HumanInputConversationRow, { item });
8945
+ return /* @__PURE__ */ jsx19(HumanInputConversationRow, { item });
8906
8946
  case "agent-message":
8907
- return /* @__PURE__ */ jsx18(
8947
+ return /* @__PURE__ */ jsx19(
8908
8948
  AgentMessageRow,
8909
8949
  {
8910
8950
  item,
@@ -8913,13 +8953,13 @@ function TimelineRow({
8913
8953
  }
8914
8954
  );
8915
8955
  case "worker-completion":
8916
- return /* @__PURE__ */ jsx18(WorkerCompletionRow, { item, onOpenSession });
8956
+ return /* @__PURE__ */ jsx19(WorkerCompletionRow, { item, onOpenSession });
8917
8957
  case "session-status":
8918
- return /* @__PURE__ */ jsx18(SessionStatusRow, { item });
8958
+ return /* @__PURE__ */ jsx19(SessionStatusRow, { item });
8919
8959
  case "goal":
8920
- return /* @__PURE__ */ jsx18(GoalRow, { item });
8960
+ return /* @__PURE__ */ jsx19(GoalRow, { item });
8921
8961
  case "machine-input-batch":
8922
- return /* @__PURE__ */ jsx18(
8962
+ return /* @__PURE__ */ jsx19(
8923
8963
  MachineInputBatchRow,
8924
8964
  {
8925
8965
  item,
@@ -8928,11 +8968,11 @@ function TimelineRow({
8928
8968
  }
8929
8969
  );
8930
8970
  case "notice":
8931
- return /* @__PURE__ */ jsx18(NoticeRow, { item });
8971
+ return /* @__PURE__ */ jsx19(NoticeRow, { item });
8932
8972
  case "context-compaction":
8933
- return /* @__PURE__ */ jsx18(CompactionRow, { item });
8973
+ return /* @__PURE__ */ jsx19(CompactionRow, { item });
8934
8974
  case "auth-needed":
8935
- return renderAuthNeeded?.(item) ?? /* @__PURE__ */ jsx18(
8975
+ return renderAuthNeeded?.(item) ?? /* @__PURE__ */ jsx19(
8936
8976
  AuthNeededRow,
8937
8977
  {
8938
8978
  item,
@@ -8958,7 +8998,7 @@ function CompactionRow({ item }) {
8958
8998
  const title = item.phase === "started" ? "Compacting conversation history\u2026" : item.phase === "compacted" ? before && after ? `Conversation history compacted \xB7 ~${before} \u2192 ~${after} estimated history tokens` : "Conversation history compacted" : "Couldn\u2019t compact conversation history";
8959
8999
  const subtitle = item.phase === "compacted" ? "Chat history above is unchanged" : item.phase === "skipped" ? compactionSkipSubtitle(item.skipReason, item.providerRejection) : null;
8960
9000
  const pill = item.phase === "skipped" && item.skipReason === "summarization_failed" ? "border-og-status-failed/35 bg-og-status-failed/10 text-og-status-failed" : item.phase === "started" ? WAITING_PILL_CLASS : NEUTRAL_PILL;
8961
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs13(
9001
+ return /* @__PURE__ */ jsx19("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs14(
8962
9002
  "div",
8963
9003
  {
8964
9004
  className: cn(
@@ -8967,20 +9007,20 @@ function CompactionRow({ item }) {
8967
9007
  ),
8968
9008
  role: "status",
8969
9009
  children: [
8970
- /* @__PURE__ */ jsxs13("span", { className: "inline-flex max-w-full items-center gap-1.5", children: [
8971
- /* @__PURE__ */ jsx18(ShrinkIcon2, { className: "size-3.5 shrink-0" }),
8972
- /* @__PURE__ */ jsxs13("span", { className: "truncate", children: [
9010
+ /* @__PURE__ */ jsxs14("span", { className: "inline-flex max-w-full items-center gap-1.5", children: [
9011
+ /* @__PURE__ */ jsx19(ShrinkIcon2, { className: "size-3.5 shrink-0" }),
9012
+ /* @__PURE__ */ jsxs14("span", { className: "truncate", children: [
8973
9013
  title,
8974
9014
  trigger ? ` \xB7 ${trigger}` : ""
8975
9015
  ] })
8976
9016
  ] }),
8977
- subtitle ? /* @__PURE__ */ jsx18("span", { className: "truncate text-og-xs opacity-80", children: subtitle }) : null
9017
+ subtitle ? /* @__PURE__ */ jsx19("span", { className: "truncate text-og-xs opacity-80", children: subtitle }) : null
8978
9018
  ]
8979
9019
  }
8980
9020
  ) });
8981
9021
  }
8982
9022
  function MessageFooterTime({ occurredAt }) {
8983
- return /* @__PURE__ */ jsx18(
9023
+ return /* @__PURE__ */ jsx19(
8984
9024
  "time",
8985
9025
  {
8986
9026
  dateTime: occurredAt,
@@ -9000,28 +9040,28 @@ function UserMessageRow({
9000
9040
  }) {
9001
9041
  const enter = useEntranceAnimation();
9002
9042
  const deliveryFailed = item.delivery?.state === "failed";
9003
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "flex justify-end"), children: /* @__PURE__ */ jsxs13("div", { className: "flex max-w-[85%] min-w-0 flex-col items-end gap-1", children: [
9004
- /* @__PURE__ */ jsx18(
9043
+ return /* @__PURE__ */ jsx19("div", { className: cn(enter && "animate-og-enter", "flex justify-end"), children: /* @__PURE__ */ jsxs14("div", { className: "flex max-w-[85%] min-w-0 flex-col items-end gap-1", children: [
9044
+ /* @__PURE__ */ jsx19(
9005
9045
  CopyHoverFrame,
9006
9046
  {
9007
9047
  copyText: item.text || (item.annotations ?? []).map((annotation) => `${annotation.quote}
9008
9048
  ${annotation.note}`).join("\n\n"),
9009
9049
  label: "Copy message",
9010
9050
  className: "w-fit max-w-full min-w-0",
9011
- trailing: /* @__PURE__ */ jsxs13(Fragment6, { children: [
9051
+ trailing: /* @__PURE__ */ jsxs14(Fragment6, { children: [
9012
9052
  renderMessageActions?.(item),
9013
- /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt })
9053
+ /* @__PURE__ */ jsx19(MessageFooterTime, { occurredAt: item.occurredAt })
9014
9054
  ] }),
9015
- children: /* @__PURE__ */ jsxs13("div", { className: MESSAGE_BUBBLE_CLASS, children: [
9016
- item.text ? /* @__PURE__ */ jsx18(
9055
+ children: /* @__PURE__ */ jsxs14("div", { className: MESSAGE_BUBBLE_CLASS, children: [
9056
+ item.text ? /* @__PURE__ */ jsx19(
9017
9057
  "div",
9018
9058
  {
9019
9059
  "data-og-search-item": item.id,
9020
9060
  "data-og-annotation-source-key": item.annotationSource?.eventId,
9021
- children: renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx18(UserMessageBody, { messageId: item.id, text: item.text, children: /* @__PURE__ */ jsx18(Markdown, { children: item.text }) })
9061
+ children: renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx19(UserMessageBody, { messageId: item.id, text: item.text, children: /* @__PURE__ */ jsx19(Markdown, { children: item.text }) })
9022
9062
  }
9023
9063
  ) : null,
9024
- (item.annotations?.length ?? 0) > 0 ? /* @__PURE__ */ jsx18(
9064
+ (item.annotations?.length ?? 0) > 0 ? /* @__PURE__ */ jsx19(
9025
9065
  TimelineAnnotationCards,
9026
9066
  {
9027
9067
  annotations: item.annotations ?? [],
@@ -9031,18 +9071,18 @@ ${annotation.note}`).join("\n\n"),
9031
9071
  ] })
9032
9072
  }
9033
9073
  ),
9034
- deliveryFailed ? /* @__PURE__ */ jsxs13(
9074
+ deliveryFailed ? /* @__PURE__ */ jsxs14(
9035
9075
  "div",
9036
9076
  {
9037
9077
  role: "status",
9038
9078
  className: "flex max-w-full flex-col items-start gap-1 px-1 text-og-xs text-og-status-failed",
9039
9079
  children: [
9040
- /* @__PURE__ */ jsxs13("span", { className: "flex min-w-0 items-start gap-1", children: [
9041
- /* @__PURE__ */ jsx18(TriangleAlertIcon2, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
9042
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 break-words", children: item.delivery?.error || "Message not sent" })
9080
+ /* @__PURE__ */ jsxs14("span", { className: "flex min-w-0 items-start gap-1", children: [
9081
+ /* @__PURE__ */ jsx19(TriangleAlertIcon2, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
9082
+ /* @__PURE__ */ jsx19("span", { className: "min-w-0 break-words", children: item.delivery?.error || "Message not sent" })
9043
9083
  ] }),
9044
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-wrap items-center gap-2", children: [
9045
- item.delivery?.onEdit ? /* @__PURE__ */ jsx18(
9084
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-wrap items-center gap-2", children: [
9085
+ item.delivery?.onEdit ? /* @__PURE__ */ jsx19(
9046
9086
  "button",
9047
9087
  {
9048
9088
  type: "button",
@@ -9051,7 +9091,7 @@ ${annotation.note}`).join("\n\n"),
9051
9091
  children: "Edit message"
9052
9092
  }
9053
9093
  ) : null,
9054
- item.delivery?.onRetry ? /* @__PURE__ */ jsx18(
9094
+ item.delivery?.onRetry ? /* @__PURE__ */ jsx19(
9055
9095
  "button",
9056
9096
  {
9057
9097
  type: "button",
@@ -9060,7 +9100,7 @@ ${annotation.note}`).join("\n\n"),
9060
9100
  children: "Retry"
9061
9101
  }
9062
9102
  ) : null,
9063
- item.delivery?.onRemove ? /* @__PURE__ */ jsx18(
9103
+ item.delivery?.onRemove ? /* @__PURE__ */ jsx19(
9064
9104
  "button",
9065
9105
  {
9066
9106
  type: "button",
@@ -9083,26 +9123,26 @@ function HumanInputConversationRow({ item }) {
9083
9123
  );
9084
9124
  const settledLabel = item.response.outcome === "answered" ? "You answered" : item.response.outcome === "skipped" ? "Skipped" : item.response.outcome === "expired" ? "Expired" : "Cancelled";
9085
9125
  const copyText = humanInputConversationCopyText(item, settledLabel);
9086
- return /* @__PURE__ */ jsxs13(
9126
+ return /* @__PURE__ */ jsxs14(
9087
9127
  "div",
9088
9128
  {
9089
9129
  className: cn(enter && "animate-og-enter", "flex w-full flex-col gap-2.5"),
9090
9130
  "data-human-input-history": item.requestId,
9091
9131
  children: [
9092
- /* @__PURE__ */ jsxs13("div", { className: "flex max-w-[90%] items-start gap-3 rounded-og-lg rounded-bl-og-xs border border-og-border bg-og-surface-1 px-3.5 py-3 sm:max-w-[82%]", children: [
9093
- /* @__PURE__ */ jsx18("span", { className: "mt-0.5 inline-flex size-8 shrink-0 items-center justify-center rounded-og-md bg-og-status-waiting/10 text-og-status-waiting", children: /* @__PURE__ */ jsx18(MessageCircleQuestionIcon3, { "aria-hidden": "true", className: "size-4" }) }),
9094
- /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
9095
- /* @__PURE__ */ jsx18("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: "Agent asked" }),
9096
- /* @__PURE__ */ jsx18("div", { className: "mt-1.5 space-y-3", children: item.questions.length > 0 ? item.questions.map((question, index) => /* @__PURE__ */ jsxs13("div", { children: [
9097
- question.label ? /* @__PURE__ */ jsxs13("p", { className: "text-og-sm font-semibold text-og-fg", children: [
9098
- multipleQuestions ? /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9132
+ /* @__PURE__ */ jsxs14("div", { className: "flex max-w-[90%] items-start gap-3 rounded-og-lg rounded-bl-og-xs border border-og-border bg-og-surface-1 px-3.5 py-3 sm:max-w-[82%]", children: [
9133
+ /* @__PURE__ */ jsx19("span", { className: "mt-0.5 inline-flex size-8 shrink-0 items-center justify-center rounded-og-md bg-og-status-waiting/10 text-og-status-waiting", children: /* @__PURE__ */ jsx19(MessageCircleQuestionIcon3, { "aria-hidden": "true", className: "size-4" }) }),
9134
+ /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
9135
+ /* @__PURE__ */ jsx19("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: "Agent asked" }),
9136
+ /* @__PURE__ */ jsx19("div", { className: "mt-1.5 space-y-3", children: item.questions.length > 0 ? item.questions.map((question, index) => /* @__PURE__ */ jsxs14("div", { children: [
9137
+ question.label ? /* @__PURE__ */ jsxs14("p", { className: "text-og-sm font-semibold text-og-fg", children: [
9138
+ multipleQuestions ? /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9099
9139
  index + 1,
9100
9140
  "."
9101
9141
  ] }) : null,
9102
9142
  multipleQuestions ? " " : null,
9103
9143
  question.label
9104
9144
  ] }) : null,
9105
- /* @__PURE__ */ jsxs13(
9145
+ /* @__PURE__ */ jsxs14(
9106
9146
  "p",
9107
9147
  {
9108
9148
  className: cn(
@@ -9110,7 +9150,7 @@ function HumanInputConversationRow({ item }) {
9110
9150
  question.label && "mt-0.5 text-og-sm text-og-fg-muted"
9111
9151
  ),
9112
9152
  children: [
9113
- !question.label && multipleQuestions ? /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9153
+ !question.label && multipleQuestions ? /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9114
9154
  index + 1,
9115
9155
  "."
9116
9156
  ] }) : null,
@@ -9119,29 +9159,29 @@ function HumanInputConversationRow({ item }) {
9119
9159
  ]
9120
9160
  }
9121
9161
  )
9122
- ] }, question.id)) : /* @__PURE__ */ jsx18("p", { className: "text-og-sm text-og-fg-muted", children: "The agent requested structured input." }) })
9162
+ ] }, question.id)) : /* @__PURE__ */ jsx19("p", { className: "text-og-sm text-og-fg-muted", children: "The agent requested structured input." }) })
9123
9163
  ] })
9124
9164
  ] }),
9125
- /* @__PURE__ */ jsx18("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx18(
9165
+ /* @__PURE__ */ jsx19("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx19(
9126
9166
  CopyHoverFrame,
9127
9167
  {
9128
9168
  copyText,
9129
9169
  label: "Copy answer",
9130
9170
  className: "w-fit max-w-[90%] min-w-0 sm:max-w-[82%]",
9131
- trailing: /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt }),
9132
- children: /* @__PURE__ */ jsxs13("div", { className: MESSAGE_BUBBLE_CLASS, children: [
9133
- /* @__PURE__ */ jsx18("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: settledLabel }),
9134
- item.response.outcome === "answered" ? /* @__PURE__ */ jsx18("div", { className: "mt-1.5 space-y-3", children: item.answers.length > 0 ? item.answers.map((answer, answerIndex) => /* @__PURE__ */ jsxs13("div", { children: [
9135
- multipleQuestions ? /* @__PURE__ */ jsxs13("p", { className: "text-og-sm font-semibold text-og-fg", children: [
9136
- /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9171
+ trailing: /* @__PURE__ */ jsx19(MessageFooterTime, { occurredAt: item.occurredAt }),
9172
+ children: /* @__PURE__ */ jsxs14("div", { className: MESSAGE_BUBBLE_CLASS, children: [
9173
+ /* @__PURE__ */ jsx19("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: settledLabel }),
9174
+ item.response.outcome === "answered" ? /* @__PURE__ */ jsx19("div", { className: "mt-1.5 space-y-3", children: item.answers.length > 0 ? item.answers.map((answer, answerIndex) => /* @__PURE__ */ jsxs14("div", { children: [
9175
+ multipleQuestions ? /* @__PURE__ */ jsxs14("p", { className: "text-og-sm font-semibold text-og-fg", children: [
9176
+ /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
9137
9177
  questionNumberById.get(answer.questionId) ?? answerIndex + 1,
9138
9178
  "."
9139
9179
  ] }),
9140
9180
  " ",
9141
9181
  answer.label
9142
9182
  ] }) : null,
9143
- /* @__PURE__ */ jsx18("div", { className: cn("text-og-md text-og-fg", multipleQuestions && "mt-0.5"), children: answer.values.length > 1 ? /* @__PURE__ */ jsx18("ul", { className: "list-disc space-y-0.5 pl-5", children: answer.values.map((value) => /* @__PURE__ */ jsx18("li", { children: value }, `${answer.questionId}-${value}`)) }) : /* @__PURE__ */ jsx18("p", { children: answer.values[0] || "Answered" }) })
9144
- ] }, answer.questionId)) : /* @__PURE__ */ jsx18("p", { children: "Answered" }) }) : null
9183
+ /* @__PURE__ */ jsx19("div", { className: cn("text-og-md text-og-fg", multipleQuestions && "mt-0.5"), children: answer.values.length > 1 ? /* @__PURE__ */ jsx19("ul", { className: "list-disc space-y-0.5 pl-5", children: answer.values.map((value) => /* @__PURE__ */ jsx19("li", { children: value }, `${answer.questionId}-${value}`)) }) : /* @__PURE__ */ jsx19("p", { children: answer.values[0] || "Answered" }) })
9184
+ ] }, answer.questionId)) : /* @__PURE__ */ jsx19("p", { children: "Answered" }) }) : null
9145
9185
  ] })
9146
9186
  }
9147
9187
  ) })
@@ -9169,19 +9209,19 @@ function AgentMessageRow({
9169
9209
  renderMessageText
9170
9210
  }) {
9171
9211
  const enter = useEntranceAnimation();
9172
- const body = renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx18(Markdown, { streaming: item.streaming, children: item.text });
9173
- return /* @__PURE__ */ jsx18(
9212
+ const body = renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx19(Markdown, { streaming: item.streaming, children: item.text });
9213
+ return /* @__PURE__ */ jsx19(
9174
9214
  CopyHoverFrame,
9175
9215
  {
9176
9216
  copyText: item.text,
9177
9217
  label: "Copy message",
9178
9218
  align: "start",
9179
9219
  className: cn(enter && "animate-og-enter", "min-w-0 text-og-md leading-7 text-og-fg"),
9180
- trailing: item.streaming ? null : /* @__PURE__ */ jsxs13(Fragment6, { children: [
9220
+ trailing: item.streaming ? null : /* @__PURE__ */ jsxs14(Fragment6, { children: [
9181
9221
  renderMessageActions?.(item),
9182
- /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt })
9222
+ /* @__PURE__ */ jsx19(MessageFooterTime, { occurredAt: item.occurredAt })
9183
9223
  ] }),
9184
- children: /* @__PURE__ */ jsx18(
9224
+ children: /* @__PURE__ */ jsx19(
9185
9225
  "div",
9186
9226
  {
9187
9227
  "data-og-wide-table-message": "",
@@ -9230,7 +9270,7 @@ function WorkerCompletionRow({
9230
9270
  onOpenSession
9231
9271
  }) {
9232
9272
  const enter = useEntranceAnimation();
9233
- const [open, setOpen] = useState14(false);
9273
+ const [open, setOpen] = useState15(false);
9234
9274
  const meta = workerCompletionMeta(item);
9235
9275
  const Icon = meta.icon;
9236
9276
  const showPausedReason = item.childStatus !== "failed" && item.goalStatus === "paused" && !!item.pausedReason?.trim();
@@ -9240,17 +9280,17 @@ function WorkerCompletionRow({
9240
9280
  ...showPausedReason ? [{ label: "Paused because", value: item.pausedReason.trim(), muted: true }] : []
9241
9281
  ];
9242
9282
  const hasDetails = details.length > 0;
9243
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "min-w-0"), children: /* @__PURE__ */ jsxs13("div", { className: cn("flex flex-col gap-2 border-l-2 pl-3", meta.accentClass), children: [
9244
- /* @__PURE__ */ jsxs13("div", { className: "flex items-start gap-2.5", children: [
9245
- /* @__PURE__ */ jsx18("span", { className: cn("mt-0.5 shrink-0", meta.iconClass), children: /* @__PURE__ */ jsx18(Icon, { className: "size-4" }) }),
9246
- /* @__PURE__ */ jsx18("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs13("p", { className: "text-og-base leading-5 text-og-fg", children: [
9247
- /* @__PURE__ */ jsx18("span", { className: "font-medium", children: meta.label }),
9248
- item.goalText ? /* @__PURE__ */ jsxs13("span", { className: "text-og-fg-muted", children: [
9283
+ return /* @__PURE__ */ jsx19("div", { className: cn(enter && "animate-og-enter", "min-w-0"), children: /* @__PURE__ */ jsxs14("div", { className: cn("flex flex-col gap-2 border-l-2 pl-3", meta.accentClass), children: [
9284
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-start gap-2.5", children: [
9285
+ /* @__PURE__ */ jsx19("span", { className: cn("mt-0.5 shrink-0", meta.iconClass), children: /* @__PURE__ */ jsx19(Icon, { className: "size-4" }) }),
9286
+ /* @__PURE__ */ jsx19("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs14("p", { className: "text-og-base leading-5 text-og-fg", children: [
9287
+ /* @__PURE__ */ jsx19("span", { className: "font-medium", children: meta.label }),
9288
+ item.goalText ? /* @__PURE__ */ jsxs14("span", { className: "text-og-fg-muted", children: [
9249
9289
  " \xB7 ",
9250
9290
  truncate(item.goalText, 90)
9251
9291
  ] }) : null
9252
9292
  ] }) }),
9253
- item.childSessionId && onOpenSession ? /* @__PURE__ */ jsxs13(
9293
+ item.childSessionId && onOpenSession ? /* @__PURE__ */ jsxs14(
9254
9294
  "button",
9255
9295
  {
9256
9296
  type: "button",
@@ -9262,13 +9302,13 @@ function WorkerCompletionRow({
9262
9302
  ),
9263
9303
  children: [
9264
9304
  "View session",
9265
- /* @__PURE__ */ jsx18(ArrowRightIcon2, { className: "size-3.5" })
9305
+ /* @__PURE__ */ jsx19(ArrowRightIcon2, { className: "size-3.5" })
9266
9306
  ]
9267
9307
  }
9268
9308
  ) : null
9269
9309
  ] }),
9270
- hasDetails ? /* @__PURE__ */ jsxs13(Collapsible2.Root, { open, onOpenChange: setOpen, children: [
9271
- /* @__PURE__ */ jsx18(Collapsible2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs13(
9310
+ hasDetails ? /* @__PURE__ */ jsxs14(Collapsible2.Root, { open, onOpenChange: setOpen, children: [
9311
+ /* @__PURE__ */ jsx19(Collapsible2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs14(
9272
9312
  "button",
9273
9313
  {
9274
9314
  type: "button",
@@ -9277,14 +9317,14 @@ function WorkerCompletionRow({
9277
9317
  "outline-hidden transition-colors duration-150 hover:text-og-fg-muted focus-visible:ring-2 focus-visible:ring-og-accent"
9278
9318
  ),
9279
9319
  children: [
9280
- /* @__PURE__ */ jsx18(ChevronRightIcon2, { className: "size-3 transition-transform duration-150 ease-og-in-out group-data-[state=open]/wc:rotate-90" }),
9320
+ /* @__PURE__ */ jsx19(ChevronRightIcon2, { className: "size-3 transition-transform duration-150 ease-og-in-out group-data-[state=open]/wc:rotate-90" }),
9281
9321
  open ? "Hide details" : "Show details"
9282
9322
  ]
9283
9323
  }
9284
9324
  ) }),
9285
- /* @__PURE__ */ jsx18(Collapsible2.Content, { className: "overflow-hidden data-[state=closed]:animate-og-collapse data-[state=open]:animate-og-expand", children: /* @__PURE__ */ jsx18("div", { className: "ml-1 mt-1.5 flex flex-col gap-2.5", children: details.map((detail) => /* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
9286
- /* @__PURE__ */ jsx18("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: detail.label }),
9287
- /* @__PURE__ */ jsx18(
9325
+ /* @__PURE__ */ jsx19(Collapsible2.Content, { className: "overflow-hidden data-[state=closed]:animate-og-collapse data-[state=open]:animate-og-expand", children: /* @__PURE__ */ jsx19("div", { className: "ml-1 mt-1.5 flex flex-col gap-2.5", children: details.map((detail) => /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
9326
+ /* @__PURE__ */ jsx19("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: detail.label }),
9327
+ /* @__PURE__ */ jsx19(
9288
9328
  "p",
9289
9329
  {
9290
9330
  className: cn(
@@ -9303,7 +9343,7 @@ function SessionStatusRow({
9303
9343
  }) {
9304
9344
  const enter = useEntranceAnimation();
9305
9345
  const meta = SESSION_STATUS_META[item.status];
9306
- return /* @__PURE__ */ jsxs13(
9346
+ return /* @__PURE__ */ jsxs14(
9307
9347
  "div",
9308
9348
  {
9309
9349
  className: cn(
@@ -9312,15 +9352,15 @@ function SessionStatusRow({
9312
9352
  ),
9313
9353
  role: "status",
9314
9354
  children: [
9315
- /* @__PURE__ */ jsx18("span", { className: "h-px flex-1 bg-og-border" }),
9316
- /* @__PURE__ */ jsxs13("span", { className: "inline-flex items-center gap-1.5", children: [
9317
- item.resolvedAt ? null : /* @__PURE__ */ jsx18(StatusDot, { status: item.status, className: "size-1" }),
9355
+ /* @__PURE__ */ jsx19("span", { className: "h-px flex-1 bg-og-border" }),
9356
+ /* @__PURE__ */ jsxs14("span", { className: "inline-flex items-center gap-1.5", children: [
9357
+ item.resolvedAt ? null : /* @__PURE__ */ jsx19(StatusDot, { status: item.status, className: "size-1" }),
9318
9358
  item.resolvedAt ? "work resumed" : meta.label.toLowerCase(),
9319
9359
  " \xB7",
9320
9360
  " ",
9321
9361
  formatRelativeTime(item.resolvedAt ?? item.occurredAt)
9322
9362
  ] }),
9323
- /* @__PURE__ */ jsx18("span", { className: "h-px flex-1 bg-og-border" })
9363
+ /* @__PURE__ */ jsx19("span", { className: "h-px flex-1 bg-og-border" })
9324
9364
  ]
9325
9365
  }
9326
9366
  );
@@ -9358,7 +9398,7 @@ function goalMeta(action) {
9358
9398
  function GoalRow({ item }) {
9359
9399
  const enter = useEntranceAnimation();
9360
9400
  const { label, pill, icon: Icon } = goalMeta(item.action);
9361
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs13(
9401
+ return /* @__PURE__ */ jsx19("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs14(
9362
9402
  "span",
9363
9403
  {
9364
9404
  className: cn(
@@ -9366,8 +9406,8 @@ function GoalRow({ item }) {
9366
9406
  pill
9367
9407
  ),
9368
9408
  children: [
9369
- /* @__PURE__ */ jsx18(Icon, { className: "size-3.5 shrink-0" }),
9370
- /* @__PURE__ */ jsxs13("span", { className: "truncate", children: [
9409
+ /* @__PURE__ */ jsx19(Icon, { className: "size-3.5 shrink-0" }),
9410
+ /* @__PURE__ */ jsxs14("span", { className: "truncate", children: [
9371
9411
  label,
9372
9412
  item.text ? `: ${truncate(item.text, 90)}` : ""
9373
9413
  ] })
@@ -9384,7 +9424,7 @@ function MachineInputBatchRow({
9384
9424
  const label = machineInputBatchLabel(item.members);
9385
9425
  const single = item.members.length === 1 ? item.members[0] : null;
9386
9426
  if (single?.kind === "media_generation_result" && single.result) {
9387
- return /* @__PURE__ */ jsx18(
9427
+ return /* @__PURE__ */ jsx19(
9388
9428
  VideoGenerationResultRow,
9389
9429
  {
9390
9430
  result: single.result,
@@ -9394,15 +9434,15 @@ function MachineInputBatchRow({
9394
9434
  }
9395
9435
  const singleSummary = single ? cleanMachineInputSummary(single.summary) : "";
9396
9436
  const showCollapsedSummary = !item.compact && single != null && machineInputSummaryIsUseful(single.kind, singleSummary);
9397
- return /* @__PURE__ */ jsxs13("div", { className: cn(enter && "animate-og-enter", "flex flex-col items-center gap-1.5"), children: [
9398
- /* @__PURE__ */ jsxs13(
9437
+ return /* @__PURE__ */ jsxs14("div", { className: cn(enter && "animate-og-enter", "flex flex-col items-center gap-1.5"), children: [
9438
+ /* @__PURE__ */ jsxs14(
9399
9439
  "details",
9400
9440
  {
9401
9441
  className: "group w-full max-w-full",
9402
9442
  "data-og-machine-input-batch": "",
9403
9443
  title: `Received ${formatClockTime(item.occurredAt)}`,
9404
9444
  children: [
9405
- /* @__PURE__ */ jsx18("summary", { className: "flex cursor-pointer list-none justify-center [&::-webkit-details-marker]:hidden", children: /* @__PURE__ */ jsxs13(
9445
+ /* @__PURE__ */ jsx19("summary", { className: "flex cursor-pointer list-none justify-center [&::-webkit-details-marker]:hidden", children: /* @__PURE__ */ jsxs14(
9406
9446
  "span",
9407
9447
  {
9408
9448
  className: cn(
@@ -9410,23 +9450,23 @@ function MachineInputBatchRow({
9410
9450
  NEUTRAL_PILL
9411
9451
  ),
9412
9452
  children: [
9413
- /* @__PURE__ */ jsx18(
9453
+ /* @__PURE__ */ jsx19(
9414
9454
  ChevronRightIcon2,
9415
9455
  {
9416
9456
  "aria-hidden": true,
9417
9457
  className: "size-3.5 shrink-0 transition-transform group-open:rotate-90"
9418
9458
  }
9419
9459
  ),
9420
- /* @__PURE__ */ jsx18("span", { className: "truncate", children: label })
9460
+ /* @__PURE__ */ jsx19("span", { className: "truncate", children: label })
9421
9461
  ]
9422
9462
  }
9423
9463
  ) }),
9424
- /* @__PURE__ */ jsxs13("div", { className: "mx-auto mt-2 w-full max-w-lg space-y-2 border-t border-og-border/50 pt-2", children: [
9425
- /* @__PURE__ */ jsxs13("p", { className: "text-og-xs text-og-fg-subtle", children: [
9464
+ /* @__PURE__ */ jsxs14("div", { className: "mx-auto mt-2 w-full max-w-lg space-y-2 border-t border-og-border/50 pt-2", children: [
9465
+ /* @__PURE__ */ jsxs14("p", { className: "text-og-xs text-og-fg-subtle", children: [
9426
9466
  "Received ",
9427
- /* @__PURE__ */ jsx18("time", { dateTime: item.occurredAt, children: formatClockTime(item.occurredAt) })
9467
+ /* @__PURE__ */ jsx19("time", { dateTime: item.occurredAt, children: formatClockTime(item.occurredAt) })
9428
9468
  ] }),
9429
- item.members.map((member) => /* @__PURE__ */ jsx18(
9469
+ item.members.map((member) => /* @__PURE__ */ jsx19(
9430
9470
  MachineInputRow,
9431
9471
  {
9432
9472
  member,
@@ -9439,7 +9479,7 @@ function MachineInputBatchRow({
9439
9479
  ]
9440
9480
  }
9441
9481
  ),
9442
- showCollapsedSummary ? /* @__PURE__ */ jsx18("p", { className: "max-w-lg px-3 text-center text-og-xs leading-4 text-og-fg-subtle", children: truncate(singleSummary, 160) }) : null
9482
+ showCollapsedSummary ? /* @__PURE__ */ jsx19("p", { className: "max-w-lg px-3 text-center text-og-xs leading-4 text-og-fg-subtle", children: truncate(singleSummary, 160) }) : null
9443
9483
  ] });
9444
9484
  }
9445
9485
  function MachineInputRow({
@@ -9448,7 +9488,7 @@ function MachineInputRow({
9448
9488
  loadVideoArtifactPlayback
9449
9489
  }) {
9450
9490
  if (member.kind === "media_generation_result" && member.result) {
9451
- return /* @__PURE__ */ jsx18(
9491
+ return /* @__PURE__ */ jsx19(
9452
9492
  VideoGenerationResultRow,
9453
9493
  {
9454
9494
  result: member.result,
@@ -9459,16 +9499,16 @@ function MachineInputRow({
9459
9499
  }
9460
9500
  const source = readableMachineInputSource(member.sourceId);
9461
9501
  const summary = cleanMachineInputSummary(member.summary);
9462
- return /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 items-start gap-2.5", children: [
9463
- /* @__PURE__ */ jsx18("span", { className: "mt-2 size-1.5 shrink-0 rounded-full bg-og-fg-subtle", "aria-hidden": true }),
9464
- /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
9465
- /* @__PURE__ */ jsx18("span", { className: "text-og-control font-medium text-og-fg-muted", children: MACHINE_INPUT_META[member.kind] }),
9466
- source && /* @__PURE__ */ jsxs13("span", { className: "ml-1.5 text-og-control text-og-fg-subtle", children: [
9502
+ return /* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 items-start gap-2.5", children: [
9503
+ /* @__PURE__ */ jsx19("span", { className: "mt-2 size-1.5 shrink-0 rounded-full bg-og-fg-subtle", "aria-hidden": true }),
9504
+ /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
9505
+ /* @__PURE__ */ jsx19("span", { className: "text-og-control font-medium text-og-fg-muted", children: MACHINE_INPUT_META[member.kind] }),
9506
+ source && /* @__PURE__ */ jsxs14("span", { className: "ml-1.5 text-og-control text-og-fg-subtle", children: [
9467
9507
  "from ",
9468
9508
  source
9469
9509
  ] }),
9470
- summary ? /* @__PURE__ */ jsx18("p", { className: "mt-0.5 whitespace-pre-wrap break-words text-og-menu leading-5 text-og-fg", children: truncate(summary, 320) }) : null,
9471
- /* @__PURE__ */ jsx18(
9510
+ summary ? /* @__PURE__ */ jsx19("p", { className: "mt-0.5 whitespace-pre-wrap break-words text-og-menu leading-5 text-og-fg", children: truncate(summary, 320) }) : null,
9511
+ /* @__PURE__ */ jsx19(
9472
9512
  ChildSessionLink,
9473
9513
  {
9474
9514
  kind: member.kind,
@@ -9486,7 +9526,7 @@ function VideoGenerationResultRow({
9486
9526
  }) {
9487
9527
  const enter = useEntranceAnimation();
9488
9528
  if (result.status !== "ready") {
9489
- return /* @__PURE__ */ jsxs13(
9529
+ return /* @__PURE__ */ jsxs14(
9490
9530
  "div",
9491
9531
  {
9492
9532
  className: cn(
@@ -9494,18 +9534,18 @@ function VideoGenerationResultRow({
9494
9534
  "mx-auto w-full max-w-lg rounded-og-md border border-og-status-failed/30 bg-og-status-failed/5 px-3.5 py-3"
9495
9535
  ),
9496
9536
  children: [
9497
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2 text-og-sm font-medium text-og-status-failed", children: [
9498
- /* @__PURE__ */ jsx18(XCircleIcon, { "aria-hidden": true, className: "size-4" }),
9537
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 text-og-sm font-medium text-og-status-failed", children: [
9538
+ /* @__PURE__ */ jsx19(XCircleIcon, { "aria-hidden": true, className: "size-4" }),
9499
9539
  "Video generation failed"
9500
9540
  ] }),
9501
- /* @__PURE__ */ jsx18("p", { className: "mt-1 text-og-sm leading-5 text-og-fg-muted", children: result.boundedPublicReason })
9541
+ /* @__PURE__ */ jsx19("p", { className: "mt-1 text-og-sm leading-5 text-og-fg-muted", children: result.boundedPublicReason })
9502
9542
  ]
9503
9543
  }
9504
9544
  );
9505
9545
  }
9506
9546
  const { receipt } = result;
9507
9547
  const facts = receipt.video;
9508
- return /* @__PURE__ */ jsxs13(
9548
+ return /* @__PURE__ */ jsxs14(
9509
9549
  "section",
9510
9550
  {
9511
9551
  "aria-label": "Generated video",
@@ -9515,18 +9555,18 @@ function VideoGenerationResultRow({
9515
9555
  compact && "max-w-lg"
9516
9556
  ),
9517
9557
  children: [
9518
- loadVideoArtifactPlayback ? /* @__PURE__ */ jsx18(
9558
+ loadVideoArtifactPlayback ? /* @__PURE__ */ jsx19(
9519
9559
  GeneratedVideoPlayer,
9520
9560
  {
9521
9561
  receipt,
9522
9562
  loadPlaybackSource: loadVideoArtifactPlayback,
9523
9563
  className: "rounded-none border-0 shadow-none"
9524
9564
  }
9525
- ) : /* @__PURE__ */ jsx18("div", { className: "flex aspect-video items-center justify-center bg-og-surface-2 text-og-fg-subtle", children: /* @__PURE__ */ jsx18(PlayIcon, { "aria-hidden": true, className: "size-6" }) }),
9526
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between gap-4 px-3.5 py-2.5", children: [
9527
- /* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
9528
- /* @__PURE__ */ jsx18("p", { className: "text-og-sm font-medium text-og-fg", children: "Generated video" }),
9529
- /* @__PURE__ */ jsxs13("p", { className: "truncate text-og-xs text-og-fg-subtle", children: [
9565
+ ) : /* @__PURE__ */ jsx19("div", { className: "flex aspect-video items-center justify-center bg-og-surface-2 text-og-fg-subtle", children: /* @__PURE__ */ jsx19(PlayIcon, { "aria-hidden": true, className: "size-6" }) }),
9566
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-between gap-4 px-3.5 py-2.5", children: [
9567
+ /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
9568
+ /* @__PURE__ */ jsx19("p", { className: "text-og-sm font-medium text-og-fg", children: "Generated video" }),
9569
+ /* @__PURE__ */ jsxs14("p", { className: "truncate text-og-xs text-og-fg-subtle", children: [
9530
9570
  facts.width,
9531
9571
  "\xD7",
9532
9572
  facts.height,
@@ -9535,7 +9575,7 @@ function VideoGenerationResultRow({
9535
9575
  facts.hasAudio ? " \xB7 Audio" : ""
9536
9576
  ] })
9537
9577
  ] }),
9538
- /* @__PURE__ */ jsx18(CheckCircle2Icon, { "aria-label": "Ready", className: "size-4 shrink-0 text-og-status-success" })
9578
+ /* @__PURE__ */ jsx19(CheckCircle2Icon, { "aria-label": "Ready", className: "size-4 shrink-0 text-og-status-success" })
9539
9579
  ] })
9540
9580
  ]
9541
9581
  }
@@ -9546,33 +9586,33 @@ function formatVideoDuration(seconds) {
9546
9586
  }
9547
9587
  function NoticeRow({ item }) {
9548
9588
  const enter = useEntranceAnimation();
9549
- if (item.allowance) return /* @__PURE__ */ jsx18(AllowanceExhaustedRow, { refusal: item.allowance });
9589
+ if (item.allowance) return /* @__PURE__ */ jsx19(AllowanceExhaustedRow, { refusal: item.allowance });
9550
9590
  if (item.recordedOutcome) {
9551
- return /* @__PURE__ */ jsxs13(
9591
+ return /* @__PURE__ */ jsxs14(
9552
9592
  "details",
9553
9593
  {
9554
9594
  className: "group text-og-sm text-og-fg-muted",
9555
9595
  role: "note",
9556
9596
  "data-og-recorded-outcome": "wait",
9557
9597
  children: [
9558
- /* @__PURE__ */ jsxs13("summary", { className: "flex cursor-pointer list-none items-center gap-2 py-1 [&::-webkit-details-marker]:hidden", children: [
9559
- /* @__PURE__ */ jsx18(
9598
+ /* @__PURE__ */ jsxs14("summary", { className: "flex cursor-pointer list-none items-center gap-2 py-1 [&::-webkit-details-marker]:hidden", children: [
9599
+ /* @__PURE__ */ jsx19(
9560
9600
  ChevronRightIcon2,
9561
9601
  {
9562
9602
  "aria-hidden": true,
9563
9603
  className: "size-3.5 transition-transform group-open:rotate-90"
9564
9604
  }
9565
9605
  ),
9566
- /* @__PURE__ */ jsx18("span", { title: new Date(item.occurredAt).toLocaleString(), children: recordedWaitSummary(item) })
9606
+ /* @__PURE__ */ jsx19("span", { title: new Date(item.occurredAt).toLocaleString(), children: recordedWaitSummary(item) })
9567
9607
  ] }),
9568
- /* @__PURE__ */ jsx18("p", { className: "mt-1 whitespace-pre-wrap break-words pl-5 text-og-fg-muted", children: item.text })
9608
+ /* @__PURE__ */ jsx19("p", { className: "mt-1 whitespace-pre-wrap break-words pl-5 text-og-fg-muted", children: item.text })
9569
9609
  ]
9570
9610
  }
9571
9611
  );
9572
9612
  }
9573
9613
  const resolvedApproval = Boolean(item.resolvedAt && item.text.startsWith("Approval needed"));
9574
9614
  const tone = item.tone === "failed" ? "border-og-status-failed/35 bg-og-status-failed/10 text-og-status-failed" : item.tone === "waiting" && !item.resolvedAt ? WAITING_PILL_CLASS : NEUTRAL_PILL;
9575
- return /* @__PURE__ */ jsxs13(
9615
+ return /* @__PURE__ */ jsxs14(
9576
9616
  "div",
9577
9617
  {
9578
9618
  className: cn(
@@ -9582,20 +9622,20 @@ function NoticeRow({ item }) {
9582
9622
  ),
9583
9623
  role: "status",
9584
9624
  children: [
9585
- resolvedApproval ? /* @__PURE__ */ jsx18(CheckIcon2, { className: "mt-0.5 size-4 shrink-0 opacity-70", "aria-hidden": "true" }) : /* @__PURE__ */ jsx18(
9625
+ resolvedApproval ? /* @__PURE__ */ jsx19(CheckIcon2, { className: "mt-0.5 size-4 shrink-0 opacity-70", "aria-hidden": "true" }) : /* @__PURE__ */ jsx19(
9586
9626
  TriangleAlertIcon2,
9587
9627
  {
9588
9628
  className: cn("mt-0.5 size-4 shrink-0", item.tone === "cancelled" && "opacity-60")
9589
9629
  }
9590
9630
  ),
9591
- /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
9592
- /* @__PURE__ */ jsx18("span", { className: "whitespace-pre-wrap break-words", children: resolvedApproval ? "You responded to this approval." : item.text }),
9593
- item.details ? /* @__PURE__ */ jsxs13("details", { className: "mt-2 text-og-control", children: [
9594
- /* @__PURE__ */ jsx18("summary", { className: "cursor-pointer font-medium", children: item.details.label }),
9595
- /* @__PURE__ */ jsx18("pre", { className: "mt-2 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-og-sm bg-og-fg/5 p-2 font-mono", children: JSON.stringify(item.details.value, null, 2) })
9631
+ /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
9632
+ /* @__PURE__ */ jsx19("span", { className: "whitespace-pre-wrap break-words", children: resolvedApproval ? "You responded to this approval." : item.text }),
9633
+ item.details ? /* @__PURE__ */ jsxs14("details", { className: "mt-2 text-og-control", children: [
9634
+ /* @__PURE__ */ jsx19("summary", { className: "cursor-pointer font-medium", children: item.details.label }),
9635
+ /* @__PURE__ */ jsx19("pre", { className: "mt-2 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-og-sm bg-og-fg/5 p-2 font-mono", children: JSON.stringify(item.details.value, null, 2) })
9596
9636
  ] }) : null
9597
9637
  ] }),
9598
- item.action ? /* @__PURE__ */ jsx18(
9638
+ item.action ? /* @__PURE__ */ jsx19(
9599
9639
  "a",
9600
9640
  {
9601
9641
  className: "shrink-0 rounded-og-sm border border-current/25 px-2 py-1 text-og-control font-medium hover:bg-current/10",
@@ -9614,22 +9654,22 @@ function recordedWaitSummary(item) {
9614
9654
  const target = agents > 0 ? ` for ${agents} ${agents === 1 ? "agent" : "agents"}` : "";
9615
9655
  const waitedMs = item.waitEndedAt ? durationBetween(item.occurredAt, item.waitEndedAt) : void 0;
9616
9656
  if (waitedMs !== void 0) {
9617
- return /* @__PURE__ */ jsxs13(Fragment6, { children: [
9657
+ return /* @__PURE__ */ jsxs14(Fragment6, { children: [
9618
9658
  "Waited",
9619
9659
  target,
9620
9660
  " \xB7",
9621
9661
  " ",
9622
- /* @__PURE__ */ jsx18("time", { dateTime: `PT${Math.floor(waitedMs / 1e3)}S`, children: formatElapsed(waitedMs) })
9662
+ /* @__PURE__ */ jsx19("time", { dateTime: `PT${Math.floor(waitedMs / 1e3)}S`, children: formatElapsed(waitedMs) })
9623
9663
  ] });
9624
9664
  }
9625
9665
  const started = new Date(item.occurredAt);
9626
9666
  const sameDay = started.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
9627
- return /* @__PURE__ */ jsxs13(Fragment6, { children: [
9667
+ return /* @__PURE__ */ jsxs14(Fragment6, { children: [
9628
9668
  item.waitEndedAt ? "Waited" : "Waiting",
9629
9669
  target,
9630
9670
  " \xB7 since",
9631
9671
  " ",
9632
- /* @__PURE__ */ jsx18("time", { dateTime: item.occurredAt, children: sameDay ? formatClockTime(item.occurredAt) : started.toLocaleString(void 0, { dateStyle: "medium", timeStyle: "short" }) })
9672
+ /* @__PURE__ */ jsx19("time", { dateTime: item.occurredAt, children: sameDay ? formatClockTime(item.occurredAt) : started.toLocaleString(void 0, { dateStyle: "medium", timeStyle: "short" }) })
9633
9673
  ] });
9634
9674
  }
9635
9675
  function AuthNeededRow({
@@ -9638,8 +9678,8 @@ function AuthNeededRow({
9638
9678
  resolveProviderLogo
9639
9679
  }) {
9640
9680
  const enter = useEntranceAnimation();
9641
- const [busy, setBusy] = useState14(false);
9642
- const [failed, setFailed] = useState14(false);
9681
+ const [busy, setBusy] = useState15(false);
9682
+ const [failed, setFailed] = useState15(false);
9643
9683
  const recommendation = item.capability ?? null;
9644
9684
  const provider = recommendation?.name ?? (item.serverId === "codex_apps" ? "Codex Apps" : providerLabel(item.providerDomain));
9645
9685
  const unavailable = item.reason === "personal_authority_unavailable" || item.reason === "unsupported_auth" || item.reason === "resource_scope_unavailable";
@@ -9662,30 +9702,30 @@ function AuthNeededRow({
9662
9702
  setBusy(false);
9663
9703
  }
9664
9704
  };
9665
- return /* @__PURE__ */ jsxs13("div", { className: cn(enter && "animate-og-enter", "flex flex-col gap-2"), role: "status", children: [
9666
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-3 rounded-og-lg border border-og-border bg-og-surface-1 px-3.5 py-3 sm:flex-row sm:items-center", children: [
9667
- /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
9668
- /* @__PURE__ */ jsx18(
9705
+ return /* @__PURE__ */ jsxs14("div", { className: cn(enter && "animate-og-enter", "flex flex-col gap-2"), role: "status", children: [
9706
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-3 rounded-og-lg border border-og-border bg-og-surface-1 px-3.5 py-3 sm:flex-row sm:items-center", children: [
9707
+ /* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
9708
+ /* @__PURE__ */ jsx19(
9669
9709
  AuthProviderLogo,
9670
9710
  {
9671
9711
  src: resolveProviderLogo?.(item.providerDomain) ?? null,
9672
9712
  label: provider
9673
9713
  }
9674
9714
  ),
9675
- /* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
9676
- /* @__PURE__ */ jsx18("p", { className: "truncate text-og-md font-medium text-og-fg", children: title }),
9677
- /* @__PURE__ */ jsx18("p", { className: "line-clamp-2 text-og-sm text-og-fg-subtle", children: reasonLine }),
9678
- recommendation ? /* @__PURE__ */ jsxs13("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9715
+ /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
9716
+ /* @__PURE__ */ jsx19("p", { className: "truncate text-og-md font-medium text-og-fg", children: title }),
9717
+ /* @__PURE__ */ jsx19("p", { className: "line-clamp-2 text-og-sm text-og-fg-subtle", children: reasonLine }),
9718
+ recommendation ? /* @__PURE__ */ jsxs14("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9679
9719
  "Provider: ",
9680
9720
  item.providerDomain
9681
9721
  ] }) : null,
9682
- recommendation && recommendation.requiredVariables.length > 0 ? /* @__PURE__ */ jsxs13("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9722
+ recommendation && recommendation.requiredVariables.length > 0 ? /* @__PURE__ */ jsxs14("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9683
9723
  "Needs variables: ",
9684
9724
  recommendation.requiredVariables.join(", ")
9685
9725
  ] }) : null
9686
9726
  ] })
9687
9727
  ] }),
9688
- hostAuthorizationUrl ? /* @__PURE__ */ jsxs13(
9728
+ hostAuthorizationUrl ? /* @__PURE__ */ jsxs14(
9689
9729
  "a",
9690
9730
  {
9691
9731
  href: hostAuthorizationUrl,
@@ -9696,11 +9736,11 @@ function AuthNeededRow({
9696
9736
  "transition-colors hover:bg-og-primary-hover pointer-coarse:min-h-9"
9697
9737
  ),
9698
9738
  children: [
9699
- /* @__PURE__ */ jsx18(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9739
+ /* @__PURE__ */ jsx19(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9700
9740
  actionLabel
9701
9741
  ]
9702
9742
  }
9703
- ) : item.authoritySource !== "host" && !unavailable && onReconnect ? /* @__PURE__ */ jsxs13(
9743
+ ) : item.authoritySource !== "host" && !unavailable && onReconnect ? /* @__PURE__ */ jsxs14(
9704
9744
  "button",
9705
9745
  {
9706
9746
  type: "button",
@@ -9711,11 +9751,11 @@ function AuthNeededRow({
9711
9751
  "transition-colors hover:bg-og-primary-hover disabled:opacity-50 pointer-coarse:min-h-9"
9712
9752
  ),
9713
9753
  children: [
9714
- /* @__PURE__ */ jsx18(RefreshCwIcon, { className: cn("size-3.5", busy && "animate-og-spin"), "aria-hidden": true }),
9754
+ /* @__PURE__ */ jsx19(RefreshCwIcon, { className: cn("size-3.5", busy && "animate-og-spin"), "aria-hidden": true }),
9715
9755
  busy ? "Opening\u2026" : actionLabel
9716
9756
  ]
9717
9757
  }
9718
- ) : item.authoritySource !== "host" && !unavailable && item.authorizationUrl ? /* @__PURE__ */ jsxs13(
9758
+ ) : item.authoritySource !== "host" && !unavailable && item.authorizationUrl ? /* @__PURE__ */ jsxs14(
9719
9759
  "a",
9720
9760
  {
9721
9761
  href: item.authorizationUrl,
@@ -9726,14 +9766,14 @@ function AuthNeededRow({
9726
9766
  "transition-colors hover:bg-og-primary-hover pointer-coarse:min-h-9"
9727
9767
  ),
9728
9768
  children: [
9729
- /* @__PURE__ */ jsx18(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9769
+ /* @__PURE__ */ jsx19(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9730
9770
  actionLabel
9731
9771
  ]
9732
9772
  }
9733
9773
  ) : null
9734
9774
  ] }),
9735
- !unavailable ? /* @__PURE__ */ jsx18("p", { className: "px-1 text-og-xs text-og-fg-subtle", children: recommendation ? "No access has been granted. Review and confirm the provider before continuing." : `This tool call wasn't replayed. After ${missing ? "connecting" : "reconnecting"}, send a new message to try again.` }) : null,
9736
- failed ? /* @__PURE__ */ jsxs13("p", { className: "px-1 text-og-xs text-og-status-failed", children: [
9775
+ !unavailable ? /* @__PURE__ */ jsx19("p", { className: "px-1 text-og-xs text-og-fg-subtle", children: recommendation ? "No access has been granted. Review and confirm the provider before continuing." : `This tool call wasn't replayed. After ${missing ? "connecting" : "reconnecting"}, send a new message to try again.` }) : null,
9776
+ failed ? /* @__PURE__ */ jsxs14("p", { className: "px-1 text-og-xs text-og-status-failed", children: [
9737
9777
  "Couldn't start ",
9738
9778
  missing ? "connecting" : "reconnecting",
9739
9779
  " ",
@@ -9743,15 +9783,15 @@ function AuthNeededRow({
9743
9783
  ] });
9744
9784
  }
9745
9785
  function AuthProviderLogo({ src, label }) {
9746
- const [failed, setFailed] = useState14(false);
9747
- useEffect9(() => setFailed(false), [src]);
9786
+ const [failed, setFailed] = useState15(false);
9787
+ useEffect10(() => setFailed(false), [src]);
9748
9788
  const showImage = src && !failed;
9749
- return /* @__PURE__ */ jsx18(
9789
+ return /* @__PURE__ */ jsx19(
9750
9790
  "span",
9751
9791
  {
9752
9792
  className: "relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-og-md border border-og-border bg-og-surface-2 text-og-menu font-semibold text-og-fg-muted",
9753
9793
  "aria-hidden": true,
9754
- children: showImage ? /* @__PURE__ */ jsx18(
9794
+ children: showImage ? /* @__PURE__ */ jsx19(
9755
9795
  "img",
9756
9796
  {
9757
9797
  src,
@@ -9761,7 +9801,7 @@ function AuthProviderLogo({ src, label }) {
9761
9801
  className: "size-full object-contain p-1.5",
9762
9802
  onError: () => setFailed(true)
9763
9803
  }
9764
- ) : /* @__PURE__ */ jsx18("span", { children: monogram(label) })
9804
+ ) : /* @__PURE__ */ jsx19("span", { children: monogram(label) })
9765
9805
  }
9766
9806
  );
9767
9807
  }
@@ -9806,7 +9846,7 @@ function authReasonLine(reason) {
9806
9846
  // src/components/queue-surface.tsx
9807
9847
  import { Loader2Icon } from "lucide-react";
9808
9848
  import { lazy as lazy4, Suspense as Suspense5 } from "react";
9809
- import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
9849
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
9810
9850
  var loadQueueSurface = () => import("./queue-surface-implementation-ZHFI5JBP.js");
9811
9851
  var QueueSurface = createQueueSurface(loadQueueSurface);
9812
9852
  function createQueueSurface(loadImplementation) {
@@ -9817,21 +9857,21 @@ function createQueueSurface(loadImplementation) {
9817
9857
  const { queue } = props;
9818
9858
  if (queue.queue.length + queue.pendingInputs.length === 0) {
9819
9859
  if (!queue.stoppingPreviousAttempt && !queue.error && !queue.mutationError) return null;
9820
- return /* @__PURE__ */ jsx19(EmptyQueueStateSurface, { queue });
9860
+ return /* @__PURE__ */ jsx20(EmptyQueueStateSurface, { queue });
9821
9861
  }
9822
- return /* @__PURE__ */ jsx19(Suspense5, { fallback: /* @__PURE__ */ jsx19(QueueSurfaceFallback, {}), children: /* @__PURE__ */ jsx19(LazyQueueSurface, { ...props }) });
9862
+ return /* @__PURE__ */ jsx20(Suspense5, { fallback: /* @__PURE__ */ jsx20(QueueSurfaceFallback, {}), children: /* @__PURE__ */ jsx20(LazyQueueSurface, { ...props }) });
9823
9863
  };
9824
9864
  }
9825
9865
  function QueueSurfaceFallback() {
9826
- return /* @__PURE__ */ jsx19(
9866
+ return /* @__PURE__ */ jsx20(
9827
9867
  "div",
9828
9868
  {
9829
9869
  "aria-live": "polite",
9830
9870
  className: "og-root mx-auto mb-2 w-full max-w-3xl shrink-0 px-4 sm:px-6",
9831
9871
  "data-testid": "queue-surface-loading",
9832
9872
  role: "status",
9833
- children: /* @__PURE__ */ jsx19("div", { className: "overflow-hidden rounded-lg border border-border bg-surface/80 shadow-sm", children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 px-3 py-2 text-og-control text-fg-muted pointer-coarse:min-h-[44px]", children: [
9834
- /* @__PURE__ */ jsx19(
9873
+ children: /* @__PURE__ */ jsx20("div", { className: "overflow-hidden rounded-lg border border-border bg-surface/80 shadow-sm", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 px-3 py-2 text-og-control text-fg-muted pointer-coarse:min-h-[44px]", children: [
9874
+ /* @__PURE__ */ jsx20(
9835
9875
  Loader2Icon,
9836
9876
  {
9837
9877
  "aria-hidden": "true",
@@ -9902,7 +9942,7 @@ import { LayoutGroup, motion as motion4 } from "motion/react";
9902
9942
  import {
9903
9943
  useImperativeHandle
9904
9944
  } from "react";
9905
- import { Fragment as Fragment7, jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
9945
+ import { Fragment as Fragment7, jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
9906
9946
  function ChatComposer({
9907
9947
  composer,
9908
9948
  responsiveBasis,
@@ -9964,15 +10004,15 @@ function ChatComposer({
9964
10004
  useImperativeHandle(focusRef, () => ({ focusInput: controller.focusInput }), [
9965
10005
  controller.focusInput
9966
10006
  ]);
9967
- return /* @__PURE__ */ jsx20(Fragment7, { children: /* @__PURE__ */ jsxs15(Root, { controller, responsiveBasis, className, children: [
9968
- /* @__PURE__ */ jsxs15(Frame, { children: [
9969
- /* @__PURE__ */ jsx20(CommandPalette, {}),
9970
- /* @__PURE__ */ jsxs15(Surface, { className: surfaceClassName, children: [
9971
- /* @__PURE__ */ jsx20(PausedState, {}),
9972
- /* @__PURE__ */ jsx20(RestoredResources, {}),
9973
- /* @__PURE__ */ jsx20(Attachments, {}),
10007
+ return /* @__PURE__ */ jsx21(Fragment7, { children: /* @__PURE__ */ jsxs16(Root, { controller, responsiveBasis, className, children: [
10008
+ /* @__PURE__ */ jsxs16(Frame, { children: [
10009
+ /* @__PURE__ */ jsx21(CommandPalette, {}),
10010
+ /* @__PURE__ */ jsxs16(Surface, { className: surfaceClassName, children: [
10011
+ /* @__PURE__ */ jsx21(PausedState, {}),
10012
+ /* @__PURE__ */ jsx21(RestoredResources, {}),
10013
+ /* @__PURE__ */ jsx21(Attachments, {}),
9974
10014
  header,
9975
- composer.annotations && composer.annotations.length > 0 && composer.updateAnnotation && composer.removeAnnotation ? /* @__PURE__ */ jsx20("div", { className: "px-3.5 pt-2 md:px-4", children: /* @__PURE__ */ jsx20(
10015
+ composer.annotations && composer.annotations.length > 0 && composer.updateAnnotation && composer.removeAnnotation ? /* @__PURE__ */ jsx21("div", { className: "px-3.5 pt-2 md:px-4", children: /* @__PURE__ */ jsx21(
9976
10016
  TimelineAnnotationsChip,
9977
10017
  {
9978
10018
  annotations: composer.annotations,
@@ -9984,21 +10024,21 @@ function ChatComposer({
9984
10024
  onCommit: controller.focusInput
9985
10025
  }
9986
10026
  ) }) : null,
9987
- /* @__PURE__ */ jsx20(Input, { ...inputProps, placeholder, autoFocus }),
9988
- controller.confirmState ? /* @__PURE__ */ jsx20(Confirmation, {}) : footer !== void 0 ? footer : /* @__PURE__ */ jsx20(
10027
+ /* @__PURE__ */ jsx21(Input, { ...inputProps, placeholder, autoFocus }),
10028
+ controller.confirmState ? /* @__PURE__ */ jsx21(Confirmation, {}) : footer !== void 0 ? footer : /* @__PURE__ */ jsx21(
9989
10029
  Footer,
9990
10030
  {
9991
10031
  "data-og-stack-actions": stackActions ? "" : void 0,
9992
10032
  className: stackActions ? "max-sm:flex-nowrap sm:flex-wrap" : void 0,
9993
- children: /* @__PURE__ */ jsxs15(LayoutGroup, { id: "og-composer-footer", children: [
9994
- hasControls ? /* @__PURE__ */ jsxs15(
10033
+ children: /* @__PURE__ */ jsxs16(LayoutGroup, { id: "og-composer-footer", children: [
10034
+ hasControls ? /* @__PURE__ */ jsxs16(
9995
10035
  Controls,
9996
10036
  {
9997
10037
  className: stackActions ? "min-w-0 max-sm:flex-1 sm:w-auto" : void 0,
9998
10038
  children: [
9999
10039
  controlsLeading,
10000
- /* @__PURE__ */ jsx20(AttachButton, { className: attachButtonClassName }),
10001
- transcription ? /* @__PURE__ */ jsx20(
10040
+ /* @__PURE__ */ jsx21(AttachButton, { className: attachButtonClassName }),
10041
+ transcription ? /* @__PURE__ */ jsx21(
10002
10042
  ComposerTranscriptionControl,
10003
10043
  {
10004
10044
  ...transcription,
@@ -10006,13 +10046,13 @@ function ChatComposer({
10006
10046
  className: [transcription.className, transcriptionClassName].filter(Boolean).join(" ")
10007
10047
  }
10008
10048
  ) : null,
10009
- models ? /* @__PURE__ */ jsx20(
10049
+ models ? /* @__PURE__ */ jsx21(
10010
10050
  motion4.span,
10011
10051
  {
10012
10052
  layout: true,
10013
10053
  transition: { duration: 0.36, ease: [0.22, 1, 0.36, 1] },
10014
10054
  className: "inline-flex min-w-0",
10015
- children: /* @__PURE__ */ jsx20(
10055
+ children: /* @__PURE__ */ jsx21(
10016
10056
  ModelPicker,
10017
10057
  {
10018
10058
  models,
@@ -10022,7 +10062,7 @@ function ChatComposer({
10022
10062
  )
10023
10063
  }
10024
10064
  ) : null,
10025
- controlsStart ? /* @__PURE__ */ jsx20(
10065
+ controlsStart ? /* @__PURE__ */ jsx21(
10026
10066
  motion4.span,
10027
10067
  {
10028
10068
  layout: true,
@@ -10033,16 +10073,16 @@ function ChatComposer({
10033
10073
  ) : null
10034
10074
  ]
10035
10075
  }
10036
- ) : /* @__PURE__ */ jsx20(Hint, { children: hint }),
10037
- /* @__PURE__ */ jsxs15(
10076
+ ) : /* @__PURE__ */ jsx21(Hint, { children: hint }),
10077
+ /* @__PURE__ */ jsxs16(
10038
10078
  Actions,
10039
10079
  {
10040
10080
  className: stackActions ? "max-sm:shrink-0 sm:w-auto sm:justify-end" : void 0,
10041
10081
  children: [
10042
10082
  actionsStart,
10043
- /* @__PURE__ */ jsx20(PauseButton, {}),
10044
- /* @__PURE__ */ jsx20(StopButton, {}),
10045
- /* @__PURE__ */ jsx20(SendButton, {})
10083
+ /* @__PURE__ */ jsx21(PauseButton, {}),
10084
+ /* @__PURE__ */ jsx21(StopButton, {}),
10085
+ /* @__PURE__ */ jsx21(SendButton, {})
10046
10086
  ]
10047
10087
  }
10048
10088
  )
@@ -10051,8 +10091,8 @@ function ChatComposer({
10051
10091
  )
10052
10092
  ] })
10053
10093
  ] }),
10054
- /* @__PURE__ */ jsx20(Help, {}),
10055
- /* @__PURE__ */ jsx20(Status, {})
10094
+ /* @__PURE__ */ jsx21(Help, {}),
10095
+ /* @__PURE__ */ jsx21(Status, {})
10056
10096
  ] }) });
10057
10097
  }
10058
10098
 
@@ -10078,8 +10118,8 @@ import {
10078
10118
  TargetIcon as TargetIcon3
10079
10119
  } from "lucide-react";
10080
10120
  import { AnimatePresence as AnimatePresence4, motion as motion5, useReducedMotion as useReducedMotion4 } from "motion/react";
10081
- import { useEffect as useEffect10, useId as useId4, useMemo as useMemo6, useRef as useRef10, useState as useState15 } from "react";
10082
- import { Fragment as Fragment8, jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
10121
+ import { useEffect as useEffect11, useId as useId4, useMemo as useMemo6, useRef as useRef10, useState as useState16 } from "react";
10122
+ import { Fragment as Fragment8, jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
10083
10123
  var GOAL_LABEL = {
10084
10124
  pursuing: "Pursuing",
10085
10125
  waiting: "Waiting",
@@ -10215,8 +10255,8 @@ function formatCoarseElapsed(ms) {
10215
10255
  }
10216
10256
  function useLiveElapsed(startIso, live, endIso) {
10217
10257
  const start = startIso ? Date.parse(startIso) : Number.NaN;
10218
- const [now, setNow] = useState15(() => Date.now());
10219
- useEffect10(() => {
10258
+ const [now, setNow] = useState16(() => Date.now());
10259
+ useEffect11(() => {
10220
10260
  if (!live) return;
10221
10261
  const id = setInterval(() => setNow(Date.now()), 1e3);
10222
10262
  return () => clearInterval(id);
@@ -10289,7 +10329,7 @@ function SessionChrome({
10289
10329
  onActiveChange
10290
10330
  }) {
10291
10331
  const formatError = useErrorMessage();
10292
- const [activityRequested, setActivityOpen] = useState15(
10332
+ const [activityRequested, setActivityOpen] = useState16(
10293
10333
  Boolean(defaultActive && ["incoming", "agents", "commands"].includes(defaultActive))
10294
10334
  );
10295
10335
  const reactId = useId4();
@@ -10319,7 +10359,7 @@ function SessionChrome({
10319
10359
  queue.queue,
10320
10360
  queue.mutationFor
10321
10361
  );
10322
- const [activeUncontrolled, setActiveUncontrolled] = useState15(
10362
+ const [activeUncontrolled, setActiveUncontrolled] = useState16(
10323
10363
  () => sessionChromeInitialActive({
10324
10364
  defaultActive,
10325
10365
  authoritativeQueuedCount: initialAuthoritativeQueuedCount
@@ -10330,13 +10370,13 @@ function SessionChrome({
10330
10370
  const openedQueueTargetRef = useRef10(null);
10331
10371
  const focusedQueueTargetRef = useRef10(null);
10332
10372
  const queueTargetKey = queueFocusTarget ? `${queueFocusTarget.turnId}:${queueFocusTarget.requestId}` : null;
10333
- useEffect10(() => {
10373
+ useEffect11(() => {
10334
10374
  if (!queueTargetKey || openedQueueTargetRef.current === queueTargetKey) return;
10335
10375
  openedQueueTargetRef.current = queueTargetKey;
10336
10376
  if (activeControlled === void 0) setActiveUncontrolled("queue");
10337
10377
  onActiveChange?.("queue");
10338
10378
  }, [queueTargetKey, activeControlled, onActiveChange]);
10339
- useEffect10(() => {
10379
+ useEffect11(() => {
10340
10380
  if (!queueFocusTarget || active !== "queue" || focusedQueueTargetRef.current === queueTargetKey)
10341
10381
  return;
10342
10382
  const root = rootRef.current;
@@ -10389,7 +10429,7 @@ function SessionChrome({
10389
10429
  tone: incoming.some(
10390
10430
  (item) => item.classification === "action_required" || item.classification === "failure"
10391
10431
  ) ? "waiting" : "neutral",
10392
- icon: /* @__PURE__ */ jsx21(InboxIcon, { className: "size-3" })
10432
+ icon: /* @__PURE__ */ jsx22(InboxIcon, { className: "size-3" })
10393
10433
  });
10394
10434
  }
10395
10435
  const queuedCount = queuedTurns.length + optimisticQueued.length;
@@ -10406,7 +10446,7 @@ function SessionChrome({
10406
10446
  label: queueProblem ? queuedCount > 0 ? `${queuedCount} queued \xB7 needs attention` : "Queue needs attention" : allVoiceRequests ? queuedCount === 1 ? "Voice request queued" : `${queuedCount} voice requests queued` : onlyVoiceHandoff ? "Voice handoff queued" : `${queuedCount} queued prompt${queuedCount === 1 ? "" : "s"}`,
10407
10447
  ...detail ? { detail } : {},
10408
10448
  tone: queueProblem ? "waiting" : "neutral",
10409
- icon: queueProblem ? /* @__PURE__ */ jsx21(TriangleAlertIcon3, { className: "size-3" }) : voiceOnly ? /* @__PURE__ */ jsx21(AudioLinesIcon, { className: "size-3" }) : /* @__PURE__ */ jsx21(ListOrderedIcon, { className: "size-3" })
10449
+ icon: queueProblem ? /* @__PURE__ */ jsx22(TriangleAlertIcon3, { className: "size-3" }) : voiceOnly ? /* @__PURE__ */ jsx22(AudioLinesIcon, { className: "size-3" }) : /* @__PURE__ */ jsx22(ListOrderedIcon, { className: "size-3" })
10410
10450
  });
10411
10451
  }
10412
10452
  if (record && goalState) {
@@ -10418,7 +10458,7 @@ function SessionChrome({
10418
10458
  detail: elapsed ? `${elapsed} \xB7 ${record.text}` : record.text,
10419
10459
  ...explanation ? { title: explanation } : {},
10420
10460
  tone: waiting ? "waiting" : goalState === "pursuing" || goalState === "scheduled" ? "accent" : "neutral",
10421
- icon: /* @__PURE__ */ jsx21(TargetIcon3, { className: "size-3" })
10461
+ icon: /* @__PURE__ */ jsx22(TargetIcon3, { className: "size-3" })
10422
10462
  });
10423
10463
  }
10424
10464
  if (agentsSignal && agentsSignal.count > 0) {
@@ -10428,7 +10468,7 @@ function SessionChrome({
10428
10468
  label: `${agentsSignal.count} agent${agentsSignal.count === 1 ? "" : "s"}`,
10429
10469
  ...detail ? { detail } : {},
10430
10470
  tone: agentsSignal.tone ?? "neutral",
10431
- icon: /* @__PURE__ */ jsx21(BotIcon3, { className: "size-3" })
10471
+ icon: /* @__PURE__ */ jsx22(BotIcon3, { className: "size-3" })
10432
10472
  });
10433
10473
  }
10434
10474
  if (commandsCount > 0 || active === "commands" && hasCommandsPanel) {
@@ -10436,7 +10476,7 @@ function SessionChrome({
10436
10476
  id: "commands",
10437
10477
  label: commandsCount > 0 ? `${commandsCount} command${commandsCount === 1 ? "" : "s"}` : "Commands",
10438
10478
  tone: commandsCount > 0 ? "running" : "neutral",
10439
- icon: /* @__PURE__ */ jsx21(TerminalIcon2, { className: "size-3" })
10479
+ icon: /* @__PURE__ */ jsx22(TerminalIcon2, { className: "size-3" })
10440
10480
  });
10441
10481
  }
10442
10482
  return rows;
@@ -10456,8 +10496,8 @@ function SessionChrome({
10456
10496
  ]);
10457
10497
  const optimisticQueueKeys = optimisticQueued.map((message) => message.clientEventId).join(",");
10458
10498
  const previousOptimisticQueueKeys = useRef10(optimisticQueueKeys);
10459
- const [queueArrivalNonce, setQueueArrivalNonce] = useState15(0);
10460
- useEffect10(() => {
10499
+ const [queueArrivalNonce, setQueueArrivalNonce] = useState16(0);
10500
+ useEffect11(() => {
10461
10501
  const previous = new Set(previousOptimisticQueueKeys.current.split(",").filter(Boolean));
10462
10502
  const arrived = optimisticQueued.some((message) => !previous.has(message.clientEventId));
10463
10503
  previousOptimisticQueueKeys.current = optimisticQueueKeys;
@@ -10468,13 +10508,13 @@ function SessionChrome({
10468
10508
  }
10469
10509
  }, [active, activeControlled, optimisticQueueKeys, optimisticQueued]);
10470
10510
  const queueOccupied = queuedTurns.length > 0 || optimisticQueued.length > 0;
10471
- useEffect10(() => {
10511
+ useEffect11(() => {
10472
10512
  if (queueOccupied) return;
10473
10513
  queueOfferAdmissionSuppressedRef.current = false;
10474
10514
  queueOfferDismissedSessionIdsRef.current.clear();
10475
10515
  }, [queueOccupied]);
10476
10516
  const queueOfferSuppressed = queueOfferAdmissionSuppressedRef.current || occupancySessionId != null && queueOfferDismissedSessionIdsRef.current.has(occupancySessionId);
10477
- useEffect10(() => {
10517
+ useEffect11(() => {
10478
10518
  if (!sessionChromeShouldOfferQueue({
10479
10519
  controlled: activeControlled !== void 0,
10480
10520
  active,
@@ -10495,28 +10535,28 @@ function SessionChrome({
10495
10535
  queueOfferSuppressed,
10496
10536
  queuedTurns.length
10497
10537
  ]);
10498
- const [replaceDraftFor, setReplaceDraftFor] = useState15(null);
10538
+ const [replaceDraftFor, setReplaceDraftFor] = useState16(null);
10499
10539
  const chipRefs = useRef10({});
10500
10540
  const railRef = useRef10(null);
10501
- const [pill, setPill] = useState15({ left: 0, top: 0, width: 0, height: 0, opacity: 0 });
10541
+ const [pill, setPill] = useState16({ left: 0, top: 0, width: 0, height: 0, opacity: 0 });
10502
10542
  const signalIds = signals.map((signal) => signal.id).join(",");
10503
- useEffect10(() => {
10543
+ useEffect11(() => {
10504
10544
  if (!signals.some((signal) => ["incoming", "agents", "commands"].includes(signal.id)))
10505
10545
  setActivityOpen(false);
10506
10546
  }, [signals]);
10507
- useEffect10(() => {
10547
+ useEffect11(() => {
10508
10548
  if (active && !signalIds.split(",").includes(active)) {
10509
10549
  if (activeControlled === void 0) setActiveUncontrolled(null);
10510
10550
  onActiveChange?.(null);
10511
10551
  }
10512
10552
  }, [active, activeControlled, onActiveChange, signalIds]);
10513
- useEffect10(() => {
10553
+ useEffect11(() => {
10514
10554
  if (active !== "queue" || !replaceDraftFor) return;
10515
10555
  if (!queuedTurns.some((turn) => turn.id === replaceDraftFor)) {
10516
10556
  setReplaceDraftFor(null);
10517
10557
  }
10518
10558
  }, [active, queuedTurns, replaceDraftFor]);
10519
- useEffect10(() => {
10559
+ useEffect11(() => {
10520
10560
  const rail = railRef.current;
10521
10561
  const measure = () => {
10522
10562
  if (!rail || !active) {
@@ -10556,14 +10596,14 @@ function SessionChrome({
10556
10596
  const shellDuration = reduceMotion ? 0 : 0.22;
10557
10597
  const crossfadeDuration = reduceMotion ? 0 : 0.18;
10558
10598
  const ease = [0.22, 1, 0.36, 1];
10559
- const panelBody = active === "incoming" ? /* @__PURE__ */ jsx21(
10599
+ const panelBody = active === "incoming" ? /* @__PURE__ */ jsx22(
10560
10600
  IncomingPanel,
10561
10601
  {
10562
10602
  inputs: incoming,
10563
10603
  onDismiss: onDismissIncoming,
10564
10604
  onOpenSession
10565
10605
  }
10566
- ) : active === "queue" ? /* @__PURE__ */ jsx21(
10606
+ ) : active === "queue" ? /* @__PURE__ */ jsx22(
10567
10607
  QueuePanel,
10568
10608
  {
10569
10609
  turns: queuedTurns,
@@ -10621,8 +10661,8 @@ function SessionChrome({
10621
10661
  void queue.moveTurn(turnId, beforeTurnId);
10622
10662
  } : void 0
10623
10663
  }
10624
- ) : active === "goal" && record && goalState && goal ? /* @__PURE__ */ jsx21(GoalPanel, { goal, state: goalState, elapsed, readOnly }) : active === "commands" ? /* @__PURE__ */ jsx21("div", { "data-og-session-chrome-panel": "commands", children: commandsPanel }) : active === "agents" ? /* @__PURE__ */ jsx21("div", { "data-og-session-chrome-panel": "agents", children: agentsPanel ?? /* @__PURE__ */ jsx21("p", { className: "text-og-xs text-og-fg-muted", children: "No agent details." }) }) : null;
10625
- return /* @__PURE__ */ jsx21(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsx21(
10664
+ ) : active === "goal" && record && goalState && goal ? /* @__PURE__ */ jsx22(GoalPanel, { goal, state: goalState, elapsed, readOnly }) : active === "commands" ? /* @__PURE__ */ jsx22("div", { "data-og-session-chrome-panel": "commands", children: commandsPanel }) : active === "agents" ? /* @__PURE__ */ jsx22("div", { "data-og-session-chrome-panel": "agents", children: agentsPanel ?? /* @__PURE__ */ jsx22("p", { className: "text-og-xs text-og-fg-muted", children: "No agent details." }) }) : null;
10665
+ return /* @__PURE__ */ jsx22(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsx22(
10626
10666
  "div",
10627
10667
  {
10628
10668
  className: cn("og-session-chrome og-root w-full", className),
@@ -10630,7 +10670,7 @@ function SessionChrome({
10630
10670
  ref: rootRef,
10631
10671
  "data-og-session-chrome": "",
10632
10672
  "data-og-session-chrome-open": open ? "true" : "false",
10633
- children: /* @__PURE__ */ jsxs16(
10673
+ children: /* @__PURE__ */ jsxs17(
10634
10674
  "div",
10635
10675
  {
10636
10676
  className: cn(
@@ -10646,7 +10686,7 @@ function SessionChrome({
10646
10686
  transitionTimingFunction: "var(--_og-session-chrome-ease)"
10647
10687
  },
10648
10688
  children: [
10649
- /* @__PURE__ */ jsx21(
10689
+ /* @__PURE__ */ jsx22(
10650
10690
  "div",
10651
10691
  {
10652
10692
  className: "relative",
@@ -10656,7 +10696,7 @@ function SessionChrome({
10656
10696
  paddingLeft: "var(--og-session-chrome-rail-pad)",
10657
10697
  paddingRight: "var(--og-session-chrome-rail-pad)"
10658
10698
  },
10659
- children: /* @__PURE__ */ jsxs16(
10699
+ children: /* @__PURE__ */ jsxs17(
10660
10700
  "div",
10661
10701
  {
10662
10702
  ref: railRef,
@@ -10665,7 +10705,7 @@ function SessionChrome({
10665
10705
  gap: "10px"
10666
10706
  },
10667
10707
  children: [
10668
- /* @__PURE__ */ jsx21(
10708
+ /* @__PURE__ */ jsx22(
10669
10709
  motion5.div,
10670
10710
  {
10671
10711
  "aria-hidden": true,
@@ -10687,7 +10727,7 @@ function SessionChrome({
10687
10727
  ),
10688
10728
  signals.filter((signal) => !["incoming", "agents", "commands"].includes(signal.id)).map((signal) => {
10689
10729
  const selected = active === signal.id;
10690
- return /* @__PURE__ */ jsxs16(
10730
+ return /* @__PURE__ */ jsxs17(
10691
10731
  "div",
10692
10732
  {
10693
10733
  role: "group",
@@ -10698,7 +10738,7 @@ function SessionChrome({
10698
10738
  selected && "bg-og-surface-3"
10699
10739
  ),
10700
10740
  children: [
10701
- /* @__PURE__ */ jsxs16(
10741
+ /* @__PURE__ */ jsxs17(
10702
10742
  "button",
10703
10743
  {
10704
10744
  type: "button",
@@ -10727,7 +10767,7 @@ function SessionChrome({
10727
10767
  paddingInline: "var(--og-session-chrome-chip-pad-x)"
10728
10768
  },
10729
10769
  children: [
10730
- signal.id === "queue" && queueArrivalNonce > 0 && !reduceMotion ? /* @__PURE__ */ jsx21(
10770
+ signal.id === "queue" && queueArrivalNonce > 0 && !reduceMotion ? /* @__PURE__ */ jsx22(
10731
10771
  motion5.span,
10732
10772
  {
10733
10773
  "aria-hidden": "true",
@@ -10739,26 +10779,26 @@ function SessionChrome({
10739
10779
  },
10740
10780
  queueArrivalNonce
10741
10781
  ) : null,
10742
- /* @__PURE__ */ jsx21("span", { className: cn("shrink-0", toneClass(signal.tone, selected)), children: signal.icon }),
10743
- /* @__PURE__ */ jsxs16("span", { className: cn("font-medium text-og-fg", "min-w-0 truncate"), children: [
10782
+ /* @__PURE__ */ jsx22("span", { className: cn("shrink-0", toneClass(signal.tone, selected)), children: signal.icon }),
10783
+ /* @__PURE__ */ jsxs17("span", { className: cn("font-medium text-og-fg", "min-w-0 truncate"), children: [
10744
10784
  signal.id === "goal" ? "Goal \xB7 " : null,
10745
10785
  signal.id === "goal" ? goalState === "pursuing" ? "Running" : signal.label : signal.id === "queue" ? queue.error || queue.mutationError ? signal.label : `${queuedTurns.length + optimisticQueued.length} queued` : signal.label
10746
10786
  ] })
10747
10787
  ]
10748
10788
  }
10749
10789
  ),
10750
- signal.id === "goal" && goal && record && !readOnly ? /* @__PURE__ */ jsxs16("div", { className: "flex shrink-0 items-center pr-1 pl-0.5", children: [
10751
- record.status === "active" || record.status === "paused" ? /* @__PURE__ */ jsx21(
10790
+ signal.id === "goal" && goal && record && !readOnly ? /* @__PURE__ */ jsxs17("div", { className: "flex shrink-0 items-center pr-1 pl-0.5", children: [
10791
+ record.status === "active" || record.status === "paused" ? /* @__PURE__ */ jsx22(
10752
10792
  IconAction,
10753
10793
  {
10754
10794
  label: record.status === "paused" ? "Resume goal" : "Pause goal",
10755
10795
  tip: record.status === "paused" ? "Resume goal" : "Pause goal",
10756
10796
  disabled: goal.updating,
10757
10797
  onClick: () => void (record.status === "paused" ? goal.resume() : goal.pause("Paused from session chrome")),
10758
- children: goal.updating ? /* @__PURE__ */ jsx21(Loader2Icon2, { className: "size-3 animate-og-spin" }) : record.status === "paused" ? /* @__PURE__ */ jsx21(PlayIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx21(PauseIcon2, { className: "size-3" })
10798
+ children: goal.updating ? /* @__PURE__ */ jsx22(Loader2Icon2, { className: "size-3 animate-og-spin" }) : record.status === "paused" ? /* @__PURE__ */ jsx22(PlayIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx22(PauseIcon2, { className: "size-3" })
10759
10799
  }
10760
10800
  ) : null,
10761
- /* @__PURE__ */ jsx21(
10801
+ /* @__PURE__ */ jsx22(
10762
10802
  IconAction,
10763
10803
  {
10764
10804
  label: "Clear goal",
@@ -10766,10 +10806,10 @@ function SessionChrome({
10766
10806
  danger: true,
10767
10807
  disabled: goal.updating,
10768
10808
  onClick: () => void goal.deleteGoal(),
10769
- children: /* @__PURE__ */ jsx21(Trash2Icon2, { className: "size-3" })
10809
+ children: /* @__PURE__ */ jsx22(Trash2Icon2, { className: "size-3" })
10770
10810
  }
10771
10811
  )
10772
- ] }) : signal.id === "queue" && canMutateQueue && queuedTurns[0] ? /* @__PURE__ */ jsx21("div", { className: "flex shrink-0 items-center pr-1 pl-0.5", children: /* @__PURE__ */ jsx21(
10812
+ ] }) : signal.id === "queue" && canMutateQueue && queuedTurns[0] ? /* @__PURE__ */ jsx22("div", { className: "flex shrink-0 items-center pr-1 pl-0.5", children: /* @__PURE__ */ jsx22(
10773
10813
  IconAction,
10774
10814
  {
10775
10815
  label: "Steer first queued message",
@@ -10778,7 +10818,7 @@ function SessionChrome({
10778
10818
  tip: QUEUE_STEER_TIP,
10779
10819
  disabled: queue.mutating || Boolean(queue.mutationFor(queuedTurns[0].id)),
10780
10820
  onClick: () => void queue.steerTurn(queuedTurns[0].id),
10781
- children: /* @__PURE__ */ jsx21(CornerDownRightIcon, { className: "size-3" })
10821
+ children: /* @__PURE__ */ jsx22(CornerDownRightIcon, { className: "size-3" })
10782
10822
  }
10783
10823
  ) }) : null
10784
10824
  ]
@@ -10786,7 +10826,7 @@ function SessionChrome({
10786
10826
  signal.id
10787
10827
  );
10788
10828
  }),
10789
- signals.some((signal) => ["incoming", "agents", "commands"].includes(signal.id)) ? /* @__PURE__ */ jsxs16(
10829
+ signals.some((signal) => ["incoming", "agents", "commands"].includes(signal.id)) ? /* @__PURE__ */ jsxs17(
10790
10830
  "button",
10791
10831
  {
10792
10832
  type: "button",
@@ -10808,27 +10848,27 @@ function SessionChrome({
10808
10848
  activityOpen ? "bg-og-surface-3 text-og-fg" : "text-og-fg-muted hover:bg-og-surface-2 hover:text-og-fg"
10809
10849
  ),
10810
10850
  children: [
10811
- /* @__PURE__ */ jsx21(ActivityIcon, { className: "size-3.5" }),
10812
- /* @__PURE__ */ jsx21("span", { className: "sr-only", children: "Activity" }),
10813
- commandsCount > 0 ? /* @__PURE__ */ jsxs16(Fragment8, { children: [
10814
- /* @__PURE__ */ jsx21(
10851
+ /* @__PURE__ */ jsx22(ActivityIcon, { className: "size-3.5" }),
10852
+ /* @__PURE__ */ jsx22("span", { className: "sr-only", children: "Activity" }),
10853
+ commandsCount > 0 ? /* @__PURE__ */ jsxs17(Fragment8, { children: [
10854
+ /* @__PURE__ */ jsx22(
10815
10855
  "span",
10816
10856
  {
10817
10857
  "aria-hidden": "true",
10818
10858
  className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-fg-muted motion-reduce:animate-none"
10819
10859
  }
10820
10860
  ),
10821
- /* @__PURE__ */ jsxs16("span", { id: `${panelId}-commands-count`, children: [
10861
+ /* @__PURE__ */ jsxs17("span", { id: `${panelId}-commands-count`, children: [
10822
10862
  commandsCount,
10823
10863
  " command",
10824
10864
  commandsCount === 1 ? "" : "s"
10825
10865
  ] })
10826
10866
  ] }) : null,
10827
- incoming.length > 0 ? /* @__PURE__ */ jsx21("span", { className: "size-1.5 rounded-full bg-og-accent" }) : null
10867
+ incoming.length > 0 ? /* @__PURE__ */ jsx22("span", { className: "size-1.5 rounded-full bg-og-accent" }) : null
10828
10868
  ]
10829
10869
  }
10830
10870
  ) : null,
10831
- stopping ? /* @__PURE__ */ jsxs16(
10871
+ stopping ? /* @__PURE__ */ jsxs17(
10832
10872
  "span",
10833
10873
  {
10834
10874
  role: "status",
@@ -10836,7 +10876,7 @@ function SessionChrome({
10836
10876
  className: "inline-flex min-h-[var(--og-session-chrome-chip-min-height)] items-center gap-1.5 px-1.5 text-og-xs text-og-fg-muted",
10837
10877
  "data-testid": "session-chrome-stopping",
10838
10878
  children: [
10839
- /* @__PURE__ */ jsx21(
10879
+ /* @__PURE__ */ jsx22(
10840
10880
  Loader2Icon2,
10841
10881
  {
10842
10882
  "aria-hidden": "true",
@@ -10852,7 +10892,7 @@ function SessionChrome({
10852
10892
  )
10853
10893
  }
10854
10894
  ),
10855
- /* @__PURE__ */ jsx21(AnimatePresence4, { initial: false, children: activityOpen ? /* @__PURE__ */ jsx21(
10895
+ /* @__PURE__ */ jsx22(AnimatePresence4, { initial: false, children: activityOpen ? /* @__PURE__ */ jsx22(
10856
10896
  motion5.div,
10857
10897
  {
10858
10898
  initial: { height: 0, opacity: 0 },
@@ -10860,7 +10900,7 @@ function SessionChrome({
10860
10900
  exit: { height: 0, opacity: 0 },
10861
10901
  transition: { duration: shellDuration, ease },
10862
10902
  style: { overflow: "hidden" },
10863
- children: /* @__PURE__ */ jsx21("div", { className: "mt-1 flex items-center gap-1 rounded-t-og-lg bg-og-surface-2/50 px-2 py-1", children: signals.filter((signal) => ["incoming", "agents", "commands"].includes(signal.id)).map((signal) => /* @__PURE__ */ jsxs16(
10903
+ children: /* @__PURE__ */ jsx22("div", { className: "mt-1 flex items-center gap-1 rounded-t-og-lg bg-og-surface-2/50 px-2 py-1", children: signals.filter((signal) => ["incoming", "agents", "commands"].includes(signal.id)).map((signal) => /* @__PURE__ */ jsxs17(
10864
10904
  "button",
10865
10905
  {
10866
10906
  type: "button",
@@ -10882,11 +10922,11 @@ function SessionChrome({
10882
10922
  },
10883
10923
  "activity-tabs"
10884
10924
  ) : null }),
10885
- goal?.mutationError ? /* @__PURE__ */ jsxs16("p", { role: "alert", className: "px-3 pb-2 text-og-xs text-og-danger", children: [
10925
+ goal?.mutationError ? /* @__PURE__ */ jsxs17("p", { role: "alert", className: "px-3 pb-2 text-og-xs text-og-danger", children: [
10886
10926
  "Goal action not confirmed. ",
10887
10927
  formatError(goal.mutationError)
10888
10928
  ] }) : null,
10889
- /* @__PURE__ */ jsx21(
10929
+ /* @__PURE__ */ jsx22(
10890
10930
  "div",
10891
10931
  {
10892
10932
  id: panelId,
@@ -10902,7 +10942,7 @@ function SessionChrome({
10902
10942
  transitionDuration: "var(--og-session-chrome-duration)",
10903
10943
  transitionTimingFunction: "var(--_og-session-chrome-ease)"
10904
10944
  },
10905
- children: /* @__PURE__ */ jsx21("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxs16(
10945
+ children: /* @__PURE__ */ jsx22("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxs17(
10906
10946
  "div",
10907
10947
  {
10908
10948
  className: cn(
@@ -10915,7 +10955,7 @@ function SessionChrome({
10915
10955
  paddingBlock: "var(--og-session-chrome-panel-pad-y)"
10916
10956
  },
10917
10957
  children: [
10918
- /* @__PURE__ */ jsx21(AnimatePresence4, { initial: false, children: active && active !== "commands" && panelBody ? /* @__PURE__ */ jsx21(
10958
+ /* @__PURE__ */ jsx22(AnimatePresence4, { initial: false, children: active && active !== "commands" && panelBody ? /* @__PURE__ */ jsx22(
10919
10959
  motion5.div,
10920
10960
  {
10921
10961
  "data-og-session-chrome-panel-frame": active,
@@ -10933,7 +10973,7 @@ function SessionChrome({
10933
10973
  },
10934
10974
  active
10935
10975
  ) : null }),
10936
- active === "commands" ? /* @__PURE__ */ jsx21(
10976
+ active === "commands" ? /* @__PURE__ */ jsx22(
10937
10977
  motion5.div,
10938
10978
  {
10939
10979
  initial: reduceMotion ? false : { opacity: 0 },
@@ -10959,20 +10999,20 @@ function IncomingPanel({
10959
10999
  onDismiss,
10960
11000
  onOpenSession
10961
11001
  }) {
10962
- return /* @__PURE__ */ jsxs16("div", { children: [
10963
- /* @__PURE__ */ jsx21("p", { className: "mb-2 text-og-xs text-og-fg-subtle", children: "Waiting to be included in an agent turn." }),
10964
- /* @__PURE__ */ jsx21(
11002
+ return /* @__PURE__ */ jsxs17("div", { children: [
11003
+ /* @__PURE__ */ jsx22("p", { className: "mb-2 text-og-xs text-og-fg-subtle", children: "Waiting to be included in an agent turn." }),
11004
+ /* @__PURE__ */ jsx22(
10965
11005
  "ul",
10966
11006
  {
10967
11007
  className: "flex flex-col gap-0.5",
10968
11008
  "aria-label": "Incoming updates",
10969
11009
  "data-og-session-chrome-panel": "incoming",
10970
- children: inputs.map((input) => /* @__PURE__ */ jsxs16(
11010
+ children: inputs.map((input) => /* @__PURE__ */ jsxs17(
10971
11011
  "li",
10972
11012
  {
10973
11013
  className: "group flex items-start gap-1.5 rounded-og-sm px-1.5 py-1 transition-colors hover:bg-[var(--_og-session-chrome-row-hover)]",
10974
11014
  children: [
10975
- /* @__PURE__ */ jsx21(
11015
+ /* @__PURE__ */ jsx22(
10976
11016
  "span",
10977
11017
  {
10978
11018
  className: cn(
@@ -10982,9 +11022,9 @@ function IncomingPanel({
10982
11022
  children: pendingKindLabel(input.kind)
10983
11023
  }
10984
11024
  ),
10985
- /* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
10986
- /* @__PURE__ */ jsx21("p", { className: "break-words text-og-xs leading-4 text-og-fg", children: input.summary }),
10987
- /* @__PURE__ */ jsx21(
11025
+ /* @__PURE__ */ jsxs17("div", { className: "min-w-0 flex-1", children: [
11026
+ /* @__PURE__ */ jsx22("p", { className: "break-words text-og-xs leading-4 text-og-fg", children: input.summary }),
11027
+ /* @__PURE__ */ jsx22(
10988
11028
  ChildSessionLink,
10989
11029
  {
10990
11030
  kind: input.kind,
@@ -10993,14 +11033,14 @@ function IncomingPanel({
10993
11033
  }
10994
11034
  )
10995
11035
  ] }),
10996
- onDismiss ? /* @__PURE__ */ jsx21("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100 max-sm:opacity-100", children: /* @__PURE__ */ jsx21(
11036
+ onDismiss ? /* @__PURE__ */ jsx22("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100 max-sm:opacity-100", children: /* @__PURE__ */ jsx22(
10997
11037
  IconAction,
10998
11038
  {
10999
11039
  label: `Dismiss incoming ${pendingKindLabel(input.kind)}`,
11000
11040
  tip: "Dismiss",
11001
11041
  onClick: () => onDismiss(input.id),
11002
11042
  danger: true,
11003
- children: /* @__PURE__ */ jsx21(Trash2Icon2, { className: "size-3" })
11043
+ children: /* @__PURE__ */ jsx22(Trash2Icon2, { className: "size-3" })
11004
11044
  }
11005
11045
  ) }) : null
11006
11046
  ]
@@ -11033,10 +11073,10 @@ function QueuePanel({
11033
11073
  }) {
11034
11074
  const reduceMotion = useReducedMotion4();
11035
11075
  const turnIdsKey = turns.map((turn) => turn.id).join(",");
11036
- const [interactiveTurnIds, setInteractiveTurnIds] = useState15(
11076
+ const [interactiveTurnIds, setInteractiveTurnIds] = useState16(
11037
11077
  () => /* @__PURE__ */ new Set()
11038
11078
  );
11039
- useEffect10(() => {
11079
+ useEffect11(() => {
11040
11080
  const visibleTurnIds = new Set(turnIdsKey ? turnIdsKey.split(",") : []);
11041
11081
  setInteractiveTurnIds((current) => {
11042
11082
  const retained = new Set([...current].filter((turnId) => visibleTurnIds.has(turnId)));
@@ -11049,7 +11089,7 @@ function QueuePanel({
11049
11089
  );
11050
11090
  return () => clearTimeout(timer);
11051
11091
  }, [reduceMotion, turnIdsKey]);
11052
- return /* @__PURE__ */ jsxs16(
11092
+ return /* @__PURE__ */ jsxs17(
11053
11093
  "ol",
11054
11094
  {
11055
11095
  className: "flex flex-col gap-0.5",
@@ -11065,52 +11105,52 @@ function QueuePanel({
11065
11105
  const beforeDown = index < turns.length - 1 ? turns[index + 2]?.id ?? null : null;
11066
11106
  const showActions = !readOnly && (onEdit || onSteer || onRemove || onMove);
11067
11107
  const confirmingReplace = replaceDraftFor === turn.id;
11068
- return /* @__PURE__ */ jsxs16(
11108
+ return /* @__PURE__ */ jsxs17(
11069
11109
  "li",
11070
11110
  {
11071
11111
  "data-queue-turn-id": turn.id,
11072
11112
  tabIndex: -1,
11073
11113
  className: "group flex flex-col gap-1 rounded-og-sm px-1.5 py-1 transition-colors hover:bg-[var(--_og-session-chrome-row-hover)]",
11074
11114
  children: [
11075
- /* @__PURE__ */ jsxs16("div", { className: "flex items-start gap-1.5", children: [
11076
- voice ? /* @__PURE__ */ jsx21(
11115
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-start gap-1.5", children: [
11116
+ voice ? /* @__PURE__ */ jsx22(
11077
11117
  AudioLinesIcon,
11078
11118
  {
11079
11119
  "aria-hidden": "true",
11080
11120
  className: "mt-0.5 size-3 shrink-0 text-og-accent"
11081
11121
  }
11082
- ) : /* @__PURE__ */ jsx21("span", { className: "mt-px shrink-0 font-og-mono text-[10px] leading-4 text-og-fg-subtle", children: index + 1 }),
11083
- /* @__PURE__ */ jsx21(
11122
+ ) : /* @__PURE__ */ jsx22("span", { className: "mt-px shrink-0 font-og-mono text-[10px] leading-4 text-og-fg-subtle", children: index + 1 }),
11123
+ /* @__PURE__ */ jsx22(
11084
11124
  CompactQueueItemContent,
11085
11125
  {
11086
11126
  text: presentation.text,
11087
11127
  annotations: turn.annotations ?? []
11088
11128
  }
11089
11129
  ),
11090
- showActions ? /* @__PURE__ */ jsxs16("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100 max-sm:opacity-100", children: [
11091
- onMove && turns.length > 1 ? /* @__PURE__ */ jsxs16(Fragment8, { children: [
11092
- /* @__PURE__ */ jsx21(
11130
+ showActions ? /* @__PURE__ */ jsxs17("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100 max-sm:opacity-100", children: [
11131
+ onMove && turns.length > 1 ? /* @__PURE__ */ jsxs17(Fragment8, { children: [
11132
+ /* @__PURE__ */ jsx22(
11093
11133
  IconAction,
11094
11134
  {
11095
11135
  label: `Move queued prompt ${index + 1} up`,
11096
11136
  tip: "Move up",
11097
11137
  disabled: settling || pending !== null || index === 0,
11098
11138
  onClick: () => onMove(turn.id, beforeUp),
11099
- children: /* @__PURE__ */ jsx21(ArrowUpIcon2, { className: "size-3" })
11139
+ children: /* @__PURE__ */ jsx22(ArrowUpIcon2, { className: "size-3" })
11100
11140
  }
11101
11141
  ),
11102
- /* @__PURE__ */ jsx21(
11142
+ /* @__PURE__ */ jsx22(
11103
11143
  IconAction,
11104
11144
  {
11105
11145
  label: `Move queued prompt ${index + 1} down`,
11106
11146
  tip: "Move down",
11107
11147
  disabled: settling || pending !== null || index >= turns.length - 1,
11108
11148
  onClick: () => onMove(turn.id, beforeDown),
11109
- children: /* @__PURE__ */ jsx21(ArrowDownIcon2, { className: "size-3" })
11149
+ children: /* @__PURE__ */ jsx22(ArrowDownIcon2, { className: "size-3" })
11110
11150
  }
11111
11151
  )
11112
11152
  ] }) : null,
11113
- onSteer ? /* @__PURE__ */ jsx21(
11153
+ onSteer ? /* @__PURE__ */ jsx22(
11114
11154
  IconAction,
11115
11155
  {
11116
11156
  label: `Steer queued prompt ${index + 1}`,
@@ -11119,20 +11159,20 @@ function QueuePanel({
11119
11159
  tip: QUEUE_STEER_TIP,
11120
11160
  disabled: settling || pending !== null,
11121
11161
  onClick: () => onSteer(turn.id),
11122
- children: pending === "steer" ? /* @__PURE__ */ jsx21(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx21(CornerDownRightIcon, { className: "size-3" })
11162
+ children: pending === "steer" ? /* @__PURE__ */ jsx22(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx22(CornerDownRightIcon, { className: "size-3" })
11123
11163
  }
11124
11164
  ) : null,
11125
- onEdit ? /* @__PURE__ */ jsx21(
11165
+ onEdit ? /* @__PURE__ */ jsx22(
11126
11166
  IconAction,
11127
11167
  {
11128
11168
  label: `Edit queued prompt ${index + 1}`,
11129
11169
  tip: QUEUE_EDIT_TIP,
11130
11170
  disabled: settling || pending !== null,
11131
11171
  onClick: () => onEdit(turn),
11132
- children: pending === "edit" ? /* @__PURE__ */ jsx21(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx21(PencilIcon, { className: "size-3" })
11172
+ children: pending === "edit" ? /* @__PURE__ */ jsx22(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx22(PencilIcon, { className: "size-3" })
11133
11173
  }
11134
11174
  ) : null,
11135
- onRemove ? /* @__PURE__ */ jsx21(
11175
+ onRemove ? /* @__PURE__ */ jsx22(
11136
11176
  IconAction,
11137
11177
  {
11138
11178
  label: `Remove queued prompt ${index + 1}`,
@@ -11140,16 +11180,16 @@ function QueuePanel({
11140
11180
  disabled: settling || pending !== null,
11141
11181
  onClick: () => onRemove(turn.id),
11142
11182
  danger: true,
11143
- children: pending === "delete" ? /* @__PURE__ */ jsx21(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx21(Trash2Icon2, { className: "size-3" })
11183
+ children: pending === "delete" ? /* @__PURE__ */ jsx22(Loader2Icon2, { className: "size-3 animate-og-spin" }) : /* @__PURE__ */ jsx22(Trash2Icon2, { className: "size-3" })
11144
11184
  }
11145
11185
  ) : null
11146
11186
  ] }) : null
11147
11187
  ] }),
11148
- confirmingReplace ? /* @__PURE__ */ jsxs16("div", { className: "rounded-og-sm border border-og-status-waiting/30 bg-og-status-waiting/10 p-2 text-og-xs text-og-fg", children: [
11149
- /* @__PURE__ */ jsx21("p", { children: "Your composer already has a draft. Replace it with this queued prompt?" }),
11150
- /* @__PURE__ */ jsx21("p", { className: "mt-0.5 text-og-fg-muted", children: "The current draft will be permanently discarded; this queued prompt is preserved until you confirm." }),
11151
- /* @__PURE__ */ jsxs16("div", { className: "mt-2 flex justify-end gap-1.5", children: [
11152
- /* @__PURE__ */ jsx21(
11188
+ confirmingReplace ? /* @__PURE__ */ jsxs17("div", { className: "rounded-og-sm border border-og-status-waiting/30 bg-og-status-waiting/10 p-2 text-og-xs text-og-fg", children: [
11189
+ /* @__PURE__ */ jsx22("p", { children: "Your composer already has a draft. Replace it with this queued prompt?" }),
11190
+ /* @__PURE__ */ jsx22("p", { className: "mt-0.5 text-og-fg-muted", children: "The current draft will be permanently discarded; this queued prompt is preserved until you confirm." }),
11191
+ /* @__PURE__ */ jsxs17("div", { className: "mt-2 flex justify-end gap-1.5", children: [
11192
+ /* @__PURE__ */ jsx22(
11153
11193
  "button",
11154
11194
  {
11155
11195
  type: "button",
@@ -11158,7 +11198,7 @@ function QueuePanel({
11158
11198
  children: "Keep current draft"
11159
11199
  }
11160
11200
  ),
11161
- /* @__PURE__ */ jsx21(
11201
+ /* @__PURE__ */ jsx22(
11162
11202
  "button",
11163
11203
  {
11164
11204
  type: "button",
@@ -11174,7 +11214,7 @@ function QueuePanel({
11174
11214
  turn.id
11175
11215
  );
11176
11216
  }),
11177
- /* @__PURE__ */ jsx21(AnimatePresence4, { initial: false, children: optimistic.map((message, index) => /* @__PURE__ */ jsxs16(
11217
+ /* @__PURE__ */ jsx22(AnimatePresence4, { initial: false, children: optimistic.map((message, index) => /* @__PURE__ */ jsxs17(
11178
11218
  motion5.li,
11179
11219
  {
11180
11220
  "aria-live": "polite",
@@ -11187,14 +11227,14 @@ function QueuePanel({
11187
11227
  message.state === "failed" ? "bg-og-danger/8 text-og-danger" : "bg-og-accent-soft/45"
11188
11228
  ),
11189
11229
  children: [
11190
- /* @__PURE__ */ jsx21("span", { className: "shrink-0 font-og-mono text-[10px] leading-4 text-og-fg-subtle", children: turns.length + index + 1 }),
11191
- /* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
11192
- /* @__PURE__ */ jsx21(CompactQueueItemContent, { text: message.text, annotations: message.annotations }),
11193
- message.state === "failed" && message.error ? /* @__PURE__ */ jsx21("p", { className: "break-words text-og-xs", children: message.error }) : null
11230
+ /* @__PURE__ */ jsx22("span", { className: "shrink-0 font-og-mono text-[10px] leading-4 text-og-fg-subtle", children: turns.length + index + 1 }),
11231
+ /* @__PURE__ */ jsxs17("div", { className: "min-w-0 flex-1", children: [
11232
+ /* @__PURE__ */ jsx22(CompactQueueItemContent, { text: message.text, annotations: message.annotations }),
11233
+ message.state === "failed" && message.error ? /* @__PURE__ */ jsx22("p", { className: "break-words text-og-xs", children: message.error }) : null
11194
11234
  ] }),
11195
- /* @__PURE__ */ jsx21("span", { className: "sr-only", children: message.state === "failed" ? message.outcomeUnknown ? "Not confirmed" : "Message not sent" : message.state === "sending" ? "Placing in queue" : "Queued" }),
11196
- message.state === "failed" ? /* @__PURE__ */ jsxs16("div", { className: "flex shrink-0 items-center gap-1 text-[10px]", children: [
11197
- message.retryable !== false && onRetryOptimistic ? /* @__PURE__ */ jsx21(
11235
+ /* @__PURE__ */ jsx22("span", { className: "sr-only", children: message.state === "failed" ? message.outcomeUnknown ? "Not confirmed" : "Message not sent" : message.state === "sending" ? "Placing in queue" : "Queued" }),
11236
+ message.state === "failed" ? /* @__PURE__ */ jsxs17("div", { className: "flex shrink-0 items-center gap-1 text-[10px]", children: [
11237
+ message.retryable !== false && onRetryOptimistic ? /* @__PURE__ */ jsx22(
11198
11238
  "button",
11199
11239
  {
11200
11240
  type: "button",
@@ -11203,7 +11243,7 @@ function QueuePanel({
11203
11243
  children: "Retry"
11204
11244
  }
11205
11245
  ) : null,
11206
- message.retryable === false && onRestoreOptimistic ? /* @__PURE__ */ jsx21(
11246
+ message.retryable === false && onRestoreOptimistic ? /* @__PURE__ */ jsx22(
11207
11247
  "button",
11208
11248
  {
11209
11249
  type: "button",
@@ -11212,36 +11252,36 @@ function QueuePanel({
11212
11252
  children: "Edit message"
11213
11253
  }
11214
11254
  ) : null,
11215
- onRemoveOptimistic ? /* @__PURE__ */ jsx21(
11255
+ onRemoveOptimistic ? /* @__PURE__ */ jsx22(
11216
11256
  "button",
11217
11257
  {
11218
11258
  type: "button",
11219
11259
  "aria-label": "Dismiss unconfirmed queued prompt",
11220
11260
  className: "rounded-og-sm p-1 text-og-fg-muted hover:bg-og-surface-2 hover:text-og-fg pointer-coarse:min-h-11 pointer-coarse:min-w-11",
11221
11261
  onClick: () => onRemoveOptimistic(message.clientEventId),
11222
- children: /* @__PURE__ */ jsx21(XIcon2, { className: "size-3" })
11262
+ children: /* @__PURE__ */ jsx22(XIcon2, { className: "size-3" })
11223
11263
  }
11224
11264
  ) : null
11225
- ] }) : message.state === "sending" ? /* @__PURE__ */ jsx21(
11265
+ ] }) : message.state === "sending" ? /* @__PURE__ */ jsx22(
11226
11266
  Loader2Icon2,
11227
11267
  {
11228
11268
  "aria-hidden": "true",
11229
11269
  className: "size-3 shrink-0 animate-og-spin text-og-accent motion-reduce:animate-none"
11230
11270
  }
11231
- ) : /* @__PURE__ */ jsx21(CheckIcon3, { "aria-hidden": "true", className: "size-3 shrink-0 text-og-accent" })
11271
+ ) : /* @__PURE__ */ jsx22(CheckIcon3, { "aria-hidden": "true", className: "size-3 shrink-0 text-og-accent" })
11232
11272
  ]
11233
11273
  },
11234
11274
  message.clientEventId
11235
11275
  )) }),
11236
- loadError ? /* @__PURE__ */ jsxs16(
11276
+ loadError ? /* @__PURE__ */ jsxs17(
11237
11277
  "li",
11238
11278
  {
11239
11279
  role: "alert",
11240
11280
  className: "flex items-center gap-1.5 rounded-og-sm bg-og-danger/8 px-1.5 py-1 text-og-xs text-og-danger",
11241
11281
  children: [
11242
- /* @__PURE__ */ jsx21(TriangleAlertIcon3, { className: "size-3 shrink-0" }),
11243
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 flex-1", children: "Queue unavailable." }),
11244
- /* @__PURE__ */ jsx21(
11282
+ /* @__PURE__ */ jsx22(TriangleAlertIcon3, { className: "size-3 shrink-0" }),
11283
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 flex-1", children: "Queue unavailable." }),
11284
+ /* @__PURE__ */ jsx22(
11245
11285
  "button",
11246
11286
  {
11247
11287
  type: "button",
@@ -11253,15 +11293,15 @@ function QueuePanel({
11253
11293
  ]
11254
11294
  }
11255
11295
  ) : null,
11256
- mutationError ? /* @__PURE__ */ jsxs16(
11296
+ mutationError ? /* @__PURE__ */ jsxs17(
11257
11297
  "li",
11258
11298
  {
11259
11299
  role: "alert",
11260
11300
  className: "flex items-center gap-1.5 rounded-og-sm bg-og-danger/8 px-1.5 py-1 text-og-xs text-og-danger",
11261
11301
  children: [
11262
- /* @__PURE__ */ jsx21(TriangleAlertIcon3, { className: "size-3 shrink-0" }),
11263
- /* @__PURE__ */ jsx21("span", { className: "min-w-0 flex-1", children: "Not confirmed. Check the queue before retrying." }),
11264
- /* @__PURE__ */ jsx21(
11302
+ /* @__PURE__ */ jsx22(TriangleAlertIcon3, { className: "size-3 shrink-0" }),
11303
+ /* @__PURE__ */ jsx22("span", { className: "min-w-0 flex-1", children: "Not confirmed. Check the queue before retrying." }),
11304
+ /* @__PURE__ */ jsx22(
11265
11305
  "button",
11266
11306
  {
11267
11307
  type: "button",
@@ -11282,9 +11322,9 @@ function CompactQueueItemContent({
11282
11322
  annotations
11283
11323
  }) {
11284
11324
  const content = queueItemContent(text, annotations.length);
11285
- return /* @__PURE__ */ jsxs16("div", { className: "flex min-w-0 flex-1 items-center gap-1.5", children: [
11286
- content === "text" ? /* @__PURE__ */ jsx21("p", { className: "min-w-0 flex-1 truncate text-og-xs leading-4 text-og-fg", children: text }) : content === "unavailable" ? /* @__PURE__ */ jsx21("p", { className: "min-w-0 flex-1 truncate text-og-xs leading-4 text-og-fg-muted italic", children: QUEUE_ITEM_CONTENT_UNAVAILABLE }) : null,
11287
- annotations.length > 0 ? /* @__PURE__ */ jsx21(TimelineAnnotationsChip, { annotations, className: "shrink-0", compact: true }) : null
11325
+ return /* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-1 items-center gap-1.5", children: [
11326
+ content === "text" ? /* @__PURE__ */ jsx22("p", { className: "min-w-0 flex-1 truncate text-og-xs leading-4 text-og-fg", children: text }) : content === "unavailable" ? /* @__PURE__ */ jsx22("p", { className: "min-w-0 flex-1 truncate text-og-xs leading-4 text-og-fg-muted italic", children: QUEUE_ITEM_CONTENT_UNAVAILABLE }) : null,
11327
+ annotations.length > 0 ? /* @__PURE__ */ jsx22(TimelineAnnotationsChip, { annotations, className: "shrink-0", compact: true }) : null
11288
11328
  ] });
11289
11329
  }
11290
11330
  function GoalPanel({
@@ -11298,26 +11338,26 @@ function GoalPanel({
11298
11338
  if (!record) return null;
11299
11339
  const canToggle = !readOnly && (record.status === "active" || record.status === "paused");
11300
11340
  const explanation = sessionChromeGoalPillExplanation(state, record);
11301
- return /* @__PURE__ */ jsxs16("div", { className: "space-y-1.5", "data-og-session-chrome-panel": "goal", children: [
11302
- /* @__PURE__ */ jsxs16("div", { className: "flex flex-wrap items-center gap-1.5 text-[10px] font-medium uppercase tracking-wider text-og-fg-subtle", children: [
11303
- /* @__PURE__ */ jsx21("span", { children: sessionChromeGoalPillLabel(state, record) }),
11304
- elapsed ? /* @__PURE__ */ jsxs16("span", { className: "tabular-nums normal-case tracking-normal text-og-fg-muted", children: [
11341
+ return /* @__PURE__ */ jsxs17("div", { className: "space-y-1.5", "data-og-session-chrome-panel": "goal", children: [
11342
+ /* @__PURE__ */ jsxs17("div", { className: "flex flex-wrap items-center gap-1.5 text-[10px] font-medium uppercase tracking-wider text-og-fg-subtle", children: [
11343
+ /* @__PURE__ */ jsx22("span", { children: sessionChromeGoalPillLabel(state, record) }),
11344
+ elapsed ? /* @__PURE__ */ jsxs17("span", { className: "tabular-nums normal-case tracking-normal text-og-fg-muted", children: [
11305
11345
  "\xB7 Created ",
11306
11346
  elapsed,
11307
11347
  " ago"
11308
11348
  ] }) : null,
11309
- /* @__PURE__ */ jsxs16("span", { className: "normal-case tracking-normal text-og-fg-muted", children: [
11349
+ /* @__PURE__ */ jsxs17("span", { className: "normal-case tracking-normal text-og-fg-muted", children: [
11310
11350
  "\xB7 v",
11311
11351
  record.version
11312
11352
  ] })
11313
11353
  ] }),
11314
- /* @__PURE__ */ jsx21("p", { className: "text-og-sm leading-5 text-og-fg", children: record.text }),
11315
- record.successCriteria ? /* @__PURE__ */ jsxs16("p", { className: "text-og-xs leading-4 text-og-fg-muted", children: [
11316
- /* @__PURE__ */ jsx21("span", { className: "font-medium text-og-fg", children: "Done when" }),
11354
+ /* @__PURE__ */ jsx22("p", { className: "text-og-sm leading-5 text-og-fg", children: record.text }),
11355
+ record.successCriteria ? /* @__PURE__ */ jsxs17("p", { className: "text-og-xs leading-4 text-og-fg-muted", children: [
11356
+ /* @__PURE__ */ jsx22("span", { className: "font-medium text-og-fg", children: "Done when" }),
11317
11357
  " ",
11318
11358
  record.successCriteria
11319
11359
  ] }) : null,
11320
- explanation ? /* @__PURE__ */ jsx21(
11360
+ explanation ? /* @__PURE__ */ jsx22(
11321
11361
  "p",
11322
11362
  {
11323
11363
  "data-og-session-chrome-goal-explanation": true,
@@ -11325,20 +11365,20 @@ function GoalPanel({
11325
11365
  children: explanation
11326
11366
  }
11327
11367
  ) : null,
11328
- record.continuation?.lastError ? /* @__PURE__ */ jsx21("p", { className: "rounded-og-sm bg-og-status-waiting/10 px-1.5 py-1 text-og-xs leading-4 text-og-status-waiting", children: formatError(record.continuation.lastError) }) : null,
11329
- /* @__PURE__ */ jsxs16("div", { className: "flex flex-wrap items-center justify-between gap-1.5 pt-0.5", children: [
11330
- /* @__PURE__ */ jsxs16("div", { className: "flex flex-wrap gap-1 text-[10px] text-og-fg-muted", children: [
11331
- /* @__PURE__ */ jsxs16("span", { className: "rounded bg-og-surface-3/70 px-1 py-px", children: [
11368
+ record.continuation?.lastError ? /* @__PURE__ */ jsx22("p", { className: "rounded-og-sm bg-og-status-waiting/10 px-1.5 py-1 text-og-xs leading-4 text-og-status-waiting", children: formatError(record.continuation.lastError) }) : null,
11369
+ /* @__PURE__ */ jsxs17("div", { className: "flex flex-wrap items-center justify-between gap-1.5 pt-0.5", children: [
11370
+ /* @__PURE__ */ jsxs17("div", { className: "flex flex-wrap gap-1 text-[10px] text-og-fg-muted", children: [
11371
+ /* @__PURE__ */ jsxs17("span", { className: "rounded bg-og-surface-3/70 px-1 py-px", children: [
11332
11372
  record.autoContinuations,
11333
11373
  " consecutive unattended continues"
11334
11374
  ] }),
11335
- /* @__PURE__ */ jsxs16("span", { className: "rounded bg-og-surface-3/70 px-1 py-px", children: [
11375
+ /* @__PURE__ */ jsxs17("span", { className: "rounded bg-og-surface-3/70 px-1 py-px", children: [
11336
11376
  record.noProgressStreak,
11337
11377
  " stalled"
11338
11378
  ] })
11339
11379
  ] }),
11340
- !readOnly ? /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-0.5", children: [
11341
- canToggle ? /* @__PURE__ */ jsxs16(
11380
+ !readOnly ? /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-0.5", children: [
11381
+ canToggle ? /* @__PURE__ */ jsxs17(
11342
11382
  "button",
11343
11383
  {
11344
11384
  type: "button",
@@ -11346,12 +11386,12 @@ function GoalPanel({
11346
11386
  onClick: () => void (record.status === "paused" ? goal.resume() : goal.pause("Paused from session chrome")),
11347
11387
  className: "inline-flex h-6 items-center gap-1 rounded-og-sm px-1.5 text-og-xs font-medium text-og-fg-muted outline-hidden transition-colors hover:bg-og-surface-3/70 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:opacity-50",
11348
11388
  children: [
11349
- goal.updating ? /* @__PURE__ */ jsx21(Loader2Icon2, { className: "size-3 animate-og-spin" }) : record.status === "paused" ? /* @__PURE__ */ jsx21(PlayIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx21(PauseIcon2, { className: "size-3" }),
11389
+ goal.updating ? /* @__PURE__ */ jsx22(Loader2Icon2, { className: "size-3 animate-og-spin" }) : record.status === "paused" ? /* @__PURE__ */ jsx22(PlayIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx22(PauseIcon2, { className: "size-3" }),
11350
11390
  record.status === "paused" ? "Resume" : "Pause"
11351
11391
  ]
11352
11392
  }
11353
11393
  ) : null,
11354
- /* @__PURE__ */ jsxs16(
11394
+ /* @__PURE__ */ jsxs17(
11355
11395
  "button",
11356
11396
  {
11357
11397
  type: "button",
@@ -11359,7 +11399,7 @@ function GoalPanel({
11359
11399
  onClick: () => void goal.deleteGoal(),
11360
11400
  className: "inline-flex h-6 items-center gap-1 rounded-og-sm px-1.5 text-og-xs font-medium text-og-fg-subtle outline-hidden transition-colors hover:bg-og-surface-3/70 hover:text-og-danger focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:opacity-50",
11361
11401
  children: [
11362
- /* @__PURE__ */ jsx21(Trash2Icon2, { className: "size-3" }),
11402
+ /* @__PURE__ */ jsx22(Trash2Icon2, { className: "size-3" }),
11363
11403
  "Clear"
11364
11404
  ]
11365
11405
  }
@@ -11368,9 +11408,9 @@ function GoalPanel({
11368
11408
  ] })
11369
11409
  ] });
11370
11410
  }
11371
- var QUEUE_STEER_TIP = /* @__PURE__ */ jsxs16("span", { className: "flex flex-col gap-0.5 text-left", children: [
11372
- /* @__PURE__ */ jsx21("span", { className: "font-medium", children: "Steer" }),
11373
- /* @__PURE__ */ jsx21("span", { className: "opacity-80", children: "Interrupt the current turn and send this message now" })
11411
+ var QUEUE_STEER_TIP = /* @__PURE__ */ jsxs17("span", { className: "flex flex-col gap-0.5 text-left", children: [
11412
+ /* @__PURE__ */ jsx22("span", { className: "font-medium", children: "Steer" }),
11413
+ /* @__PURE__ */ jsx22("span", { className: "opacity-80", children: "Interrupt the current turn and send this message now" })
11374
11414
  ] });
11375
11415
  var QUEUE_EDIT_TIP = "Edit in composer";
11376
11416
  var QUEUE_DELETE_TIP = "Delete this queued prompt";
@@ -11384,8 +11424,8 @@ function IconAction({
11384
11424
  danger,
11385
11425
  children
11386
11426
  }) {
11387
- return /* @__PURE__ */ jsxs16(Tooltip, { children: [
11388
- /* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
11427
+ return /* @__PURE__ */ jsxs17(Tooltip, { children: [
11428
+ /* @__PURE__ */ jsx22(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs17(
11389
11429
  "button",
11390
11430
  {
11391
11431
  type: "button",
@@ -11407,7 +11447,7 @@ function IconAction({
11407
11447
  ]
11408
11448
  }
11409
11449
  ) }),
11410
- /* @__PURE__ */ jsx21(TooltipContent, { side: "top", children: tip })
11450
+ /* @__PURE__ */ jsx22(TooltipContent, { side: "top", children: tip })
11411
11451
  ] });
11412
11452
  }
11413
11453
 
@@ -11417,16 +11457,16 @@ import {
11417
11457
  lazy as lazy5,
11418
11458
  Suspense as Suspense6,
11419
11459
  useCallback as useCallback5,
11420
- useEffect as useEffect13,
11460
+ useEffect as useEffect14,
11421
11461
  useMemo as useMemo8,
11422
11462
  useRef as useRef11,
11423
- useState as useState18
11463
+ useState as useState19
11424
11464
  } from "react";
11425
11465
 
11426
11466
  // src/components/session-proxy-scope.tsx
11427
11467
  import { OpenGeniBrowserClient } from "@opengeni/sdk/browser";
11428
- import { useEffect as useEffect11, useMemo as useMemo7, useState as useState16 } from "react";
11429
- import { jsx as jsx22 } from "react/jsx-runtime";
11468
+ import { useEffect as useEffect12, useMemo as useMemo7, useState as useState17 } from "react";
11469
+ import { jsx as jsx23 } from "react/jsx-runtime";
11430
11470
  function SessionProxyScope({
11431
11471
  baseUrl,
11432
11472
  workspaceId,
@@ -11436,10 +11476,10 @@ function SessionProxyScope({
11436
11476
  () => new OpenGeniBrowserClient({ baseUrl, apiContract: "compatible" }),
11437
11477
  [baseUrl]
11438
11478
  );
11439
- const [state, setState] = useState16(
11479
+ const [state, setState] = useState17(
11440
11480
  workspaceId ? { status: "ready", workspaceId } : { status: "loading" }
11441
11481
  );
11442
- useEffect11(() => {
11482
+ useEffect12(() => {
11443
11483
  if (workspaceId) {
11444
11484
  setState({ status: "ready", workspaceId });
11445
11485
  return;
@@ -11469,16 +11509,16 @@ function SessionProxyScope({
11469
11509
  };
11470
11510
  }, [client, workspaceId]);
11471
11511
  if (state.status === "error") {
11472
- return /* @__PURE__ */ jsx22("div", { role: "alert", className: "og-root p-3 text-og-sm text-og-danger", "data-og-proxy-error": "", children: state.message });
11512
+ return /* @__PURE__ */ jsx23("div", { role: "alert", className: "og-root p-3 text-og-sm text-og-danger", "data-og-proxy-error": "", children: state.message });
11473
11513
  }
11474
11514
  if (state.status === "loading") {
11475
- return /* @__PURE__ */ jsx22("div", { className: "og-root", "aria-busy": "true", "data-og-proxy-loading": "" });
11515
+ return /* @__PURE__ */ jsx23("div", { className: "og-root", "aria-busy": "true", "data-og-proxy-loading": "" });
11476
11516
  }
11477
- return /* @__PURE__ */ jsx22(OpenGeniProvider, { client, workspaceId: state.workspaceId, children });
11517
+ return /* @__PURE__ */ jsx23(OpenGeniProvider, { client, workspaceId: state.workspaceId, children });
11478
11518
  }
11479
11519
 
11480
11520
  // src/lib/host-theme.ts
11481
- import { useLayoutEffect as useLayoutEffect6, useEffect as useEffect12, useState as useState17 } from "react";
11521
+ import { useLayoutEffect as useLayoutEffect6, useEffect as useEffect13, useState as useState18 } from "react";
11482
11522
  var HOST_THEME_ROOT_ATTRIBUTE = "data-og-host-theme";
11483
11523
  var HOST_THEME_ATTRIBUTES = [
11484
11524
  "data-theme",
@@ -11706,7 +11746,7 @@ function hostSurfaceStyle(theme, background) {
11706
11746
  }
11707
11747
  return style;
11708
11748
  }
11709
- var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect12 : useLayoutEffect6;
11749
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect13 : useLayoutEffect6;
11710
11750
  function designedTheme(overrides) {
11711
11751
  for (const token of ["--og-color-fg", "--og-color-bg", "--og-color-canvas"]) {
11712
11752
  const value = overrides[token];
@@ -11756,7 +11796,7 @@ function resolveHostThemeState(element, preference, surface) {
11756
11796
  function useHostTheme(ref, options) {
11757
11797
  const preference = options.theme ?? "auto";
11758
11798
  const surface = options.surface ?? "host";
11759
- const [state, setState] = useState17({ theme: preference === "auto" ? void 0 : preference, inherited: false, style: null });
11799
+ const [state, setState] = useState18({ theme: preference === "auto" ? void 0 : preference, inherited: false, style: null });
11760
11800
  useIsomorphicLayoutEffect(() => {
11761
11801
  const element = ref.current;
11762
11802
  if (!element || typeof window === "undefined") return;
@@ -11818,19 +11858,19 @@ function useHostTheme(ref, options) {
11818
11858
  }
11819
11859
 
11820
11860
  // src/components/session-conversation.tsx
11821
- import { Fragment as Fragment9, jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
11861
+ import { Fragment as Fragment9, jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
11822
11862
  var DEFAULT_CONVERSATION_LABELS = {
11823
11863
  retry: "Retry",
11824
11864
  tryAgain: "Try again"
11825
11865
  };
11826
11866
  function SessionConversation({ baseUrl, ...props }) {
11827
- if (baseUrl === void 0) return /* @__PURE__ */ jsx23(RetryingConversation, { ...props });
11867
+ if (baseUrl === void 0) return /* @__PURE__ */ jsx24(RetryingConversation, { ...props });
11828
11868
  const { client: _client, workspaceId, ...rest } = props;
11829
- return /* @__PURE__ */ jsx23(SessionProxyScope, { baseUrl, workspaceId, children: /* @__PURE__ */ jsx23(RetryingConversation, { ...rest }) });
11869
+ return /* @__PURE__ */ jsx24(SessionProxyScope, { baseUrl, workspaceId, children: /* @__PURE__ */ jsx24(RetryingConversation, { ...rest }) });
11830
11870
  }
11831
11871
  function RetryingConversation(props) {
11832
- const [attempt, setAttempt] = useState18(0);
11833
- return /* @__PURE__ */ jsx23(
11872
+ const [attempt, setAttempt] = useState19(0);
11873
+ return /* @__PURE__ */ jsx24(
11834
11874
  Conversation,
11835
11875
  {
11836
11876
  ...props,
@@ -11941,7 +11981,7 @@ function Conversation({
11941
11981
  if (feed.error) void feed.jumpToLatest();
11942
11982
  };
11943
11983
  const running = status === "running" || status === "recovering" || status === "waiting_capacity";
11944
- return /* @__PURE__ */ jsxs17(
11984
+ return /* @__PURE__ */ jsxs18(
11945
11985
  "div",
11946
11986
  {
11947
11987
  className: cn(
@@ -11954,15 +11994,15 @@ function Conversation({
11954
11994
  "data-og-host-theme": "",
11955
11995
  "data-og-conversation": "",
11956
11996
  children: [
11957
- error && !loadFailed ? /* @__PURE__ */ jsxs17(
11997
+ error && !loadFailed ? /* @__PURE__ */ jsxs18(
11958
11998
  "div",
11959
11999
  {
11960
12000
  role: "alert",
11961
12001
  className: "mx-auto flex w-full max-w-3xl shrink-0 items-center gap-3 rounded-og-md border border-og-status-failed/30 bg-og-status-failed/10 px-3 py-2 text-og-sm text-og-fg",
11962
12002
  "data-og-conversation-error": "",
11963
12003
  children: [
11964
- /* @__PURE__ */ jsx23("span", { className: "min-w-0 flex-1", children: formatError(error) }),
11965
- /* @__PURE__ */ jsx23(
12004
+ /* @__PURE__ */ jsx24("span", { className: "min-w-0 flex-1", children: formatError(error) }),
12005
+ /* @__PURE__ */ jsx24(
11966
12006
  "button",
11967
12007
  {
11968
12008
  type: "button",
@@ -11974,15 +12014,15 @@ function Conversation({
11974
12014
  ]
11975
12015
  }
11976
12016
  ) : null,
11977
- loadFailed ? /* @__PURE__ */ jsxs17(
12017
+ loadFailed ? /* @__PURE__ */ jsxs18(
11978
12018
  "div",
11979
12019
  {
11980
12020
  role: "alert",
11981
12021
  className: "flex min-h-0 flex-1 flex-col items-center justify-center gap-3 px-6 text-center",
11982
12022
  "data-og-conversation-error": "",
11983
12023
  children: [
11984
- /* @__PURE__ */ jsx23("p", { className: "max-w-sm text-og-base text-og-fg-muted", children: formatError(feed.error) }),
11985
- /* @__PURE__ */ jsx23(
12024
+ /* @__PURE__ */ jsx24("p", { className: "max-w-sm text-og-base text-og-fg-muted", children: formatError(feed.error) }),
12025
+ /* @__PURE__ */ jsx24(
11986
12026
  "button",
11987
12027
  {
11988
12028
  type: "button",
@@ -11993,7 +12033,7 @@ function Conversation({
11993
12033
  )
11994
12034
  ]
11995
12035
  }
11996
- ) : /* @__PURE__ */ jsx23(
12036
+ ) : /* @__PURE__ */ jsx24(
11997
12037
  MessageTimeline,
11998
12038
  {
11999
12039
  renderMessageText,
@@ -12023,14 +12063,14 @@ function Conversation({
12023
12063
  questionNavMinViewportHeight: 320
12024
12064
  }
12025
12065
  ),
12026
- importedArchive ? /* @__PURE__ */ jsx23("p", { className: "shrink-0 px-4 py-2 text-center text-sm text-og-muted", role: "status", children: "Archived conversation \xB7 Read only" }) : /* @__PURE__ */ jsxs17(Fragment9, { children: [
12027
- /* @__PURE__ */ jsxs17(
12066
+ importedArchive ? /* @__PURE__ */ jsx24("p", { className: "shrink-0 px-4 py-2 text-center text-sm text-og-muted", role: "status", children: "Archived conversation \xB7 Read only" }) : /* @__PURE__ */ jsxs18(Fragment9, { children: [
12067
+ /* @__PURE__ */ jsxs18(
12028
12068
  "div",
12029
12069
  {
12030
12070
  className: "relative z-20 min-h-0 max-h-[40%] shrink-0 overflow-y-auto empty:hidden",
12031
12071
  "data-og-conversation-inputs": "",
12032
12072
  children: [
12033
- approvals.length > 0 && !terminal ? /* @__PURE__ */ jsx23(
12073
+ approvals.length > 0 && !terminal ? /* @__PURE__ */ jsx24(
12034
12074
  ApprovalSurface,
12035
12075
  {
12036
12076
  className: "mx-auto max-w-3xl",
@@ -12045,7 +12085,7 @@ function Conversation({
12045
12085
  error: control.error
12046
12086
  }
12047
12087
  ) : null,
12048
- /* @__PURE__ */ jsx23(
12088
+ /* @__PURE__ */ jsx24(
12049
12089
  HumanInputSurface,
12050
12090
  {
12051
12091
  className: "mx-auto max-w-3xl",
@@ -12060,7 +12100,7 @@ function Conversation({
12060
12100
  decisionButtons: true
12061
12101
  }
12062
12102
  ),
12063
- terminal ? /* @__PURE__ */ jsx23(SessionChrome, { queue, sessionStatus: status, readOnly: true }) : /* @__PURE__ */ jsx23(
12103
+ terminal ? /* @__PURE__ */ jsx24(SessionChrome, { queue, sessionStatus: status, readOnly: true }) : /* @__PURE__ */ jsx24(
12064
12104
  SessionChrome,
12065
12105
  {
12066
12106
  queue,
@@ -12072,12 +12112,12 @@ function Conversation({
12072
12112
  ]
12073
12113
  }
12074
12114
  ),
12075
- /* @__PURE__ */ jsx23(
12115
+ /* @__PURE__ */ jsx24(
12076
12116
  "div",
12077
12117
  {
12078
12118
  className: "relative z-20 mx-auto w-full max-w-3xl shrink-0",
12079
12119
  "data-og-conversation-composer": "",
12080
- children: /* @__PURE__ */ jsx23(
12120
+ children: /* @__PURE__ */ jsx24(
12081
12121
  ChatComposer,
12082
12122
  {
12083
12123
  runControl: "stop",
@@ -12086,7 +12126,7 @@ function Conversation({
12086
12126
  composer,
12087
12127
  attachments: uploadsEnabled ? files : void 0,
12088
12128
  disabled: terminal || composerProps?.disabled,
12089
- controlsStart: composerProps?.controlsStart ?? (showModelPicker && composer.policy && /* @__PURE__ */ jsx23(
12129
+ controlsStart: composerProps?.controlsStart ?? (showModelPicker && composer.policy && /* @__PURE__ */ jsx24(
12090
12130
  ModelPolicyPicker,
12091
12131
  {
12092
12132
  groupPresentation: modelPickerProps?.groupPresentation,
@@ -12099,6 +12139,9 @@ function Conversation({
12099
12139
  error: catalog.error?.message,
12100
12140
  disabled: terminal,
12101
12141
  sessionKey: sessionId,
12142
+ onOpenChange: (open) => {
12143
+ if (open) void catalog.refresh();
12144
+ },
12102
12145
  onModelChange: (model) => composer.setModel?.(model),
12103
12146
  onEffortChange: (effort) => composer.setReasoningEffort?.(effort),
12104
12147
  onLatencyModeChange: (mode) => composer.setLatencyMode?.(mode)
@@ -12140,17 +12183,17 @@ function useDefaultInteractiveBlock(client, workspaceId, sessionId) {
12140
12183
  };
12141
12184
  }, [client, sessionId]);
12142
12185
  return useCallback5(
12143
- (block) => /* @__PURE__ */ jsx23(Suspense6, { fallback: /* @__PURE__ */ jsx23("span", { role: "status", children: "Loading preview\u2026" }), children: /* @__PURE__ */ jsx23(LazyChatInteractiveBlock, { workspaceId, client: scoped, ...block }) }),
12186
+ (block) => /* @__PURE__ */ jsx24(Suspense6, { fallback: /* @__PURE__ */ jsx24("span", { role: "status", children: "Loading preview\u2026" }), children: /* @__PURE__ */ jsx24(LazyChatInteractiveBlock, { workspaceId, client: scoped, ...block }) }),
12144
12187
  [scoped, workspaceId]
12145
12188
  );
12146
12189
  }
12147
12190
  function useClientConfigFlags(client) {
12148
- const [flags, setFlags] = useState18({
12191
+ const [flags, setFlags] = useState19({
12149
12192
  uploads: false,
12150
12193
  modelSelection: false,
12151
12194
  sandboxFiles: false
12152
12195
  });
12153
- useEffect13(() => {
12196
+ useEffect14(() => {
12154
12197
  let live = true;
12155
12198
  client.getClientConfig().then(
12156
12199
  (config) => {
@@ -12173,7 +12216,7 @@ function useClientConfigFlags(client) {
12173
12216
  }
12174
12217
 
12175
12218
  // src/hooks/use-workspace-sessions.ts
12176
- import { useCallback as useCallback6, useEffect as useEffect14, useRef as useRef12 } from "react";
12219
+ import { useCallback as useCallback6, useEffect as useEffect15, useRef as useRef12 } from "react";
12177
12220
  function useWorkspaceSessions(options = {}) {
12178
12221
  const { client, workspaceId } = useOpenGeni(options);
12179
12222
  const projection = options.projection;
@@ -12209,7 +12252,7 @@ function useWorkspaceSessions(options = {}) {
12209
12252
  ].join("\0");
12210
12253
  const previousQueryKey = useRef12(queryKey);
12211
12254
  const queryKeyTransition = previousQueryKey.current !== queryKey;
12212
- useEffect14(() => {
12255
+ useEffect15(() => {
12213
12256
  previousQueryKey.current = queryKey;
12214
12257
  }, [queryKey]);
12215
12258
  const load = useCallback6(
@@ -12294,8 +12337,8 @@ function useWorkspaceSessions(options = {}) {
12294
12337
  // src/components/session-list.tsx
12295
12338
  import { deriveSessionDisplayTitle } from "@opengeni/sdk";
12296
12339
  import { ArchiveIcon, PencilIcon as PencilIcon2, PlusIcon } from "lucide-react";
12297
- import { useEffect as useEffect15, useRef as useRef13, useState as useState19 } from "react";
12298
- import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
12340
+ import { useEffect as useEffect16, useRef as useRef13, useState as useState20 } from "react";
12341
+ import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
12299
12342
  var DEFAULT_LABELS = {
12300
12343
  heading: "Chats",
12301
12344
  newChat: "New chat",
@@ -12324,7 +12367,7 @@ function SessionList({
12324
12367
  const labels = { ...DEFAULT_LABELS, ...labelOverrides };
12325
12368
  const scope = { client, workspaceId };
12326
12369
  const context = useOpenGeni(scope);
12327
- const [limit, setLimit] = useState19(pageSize);
12370
+ const [limit, setLimit] = useState20(pageSize);
12328
12371
  const list = useWorkspaceSessions({
12329
12372
  ...scope,
12330
12373
  parentSessionId: null,
@@ -12334,14 +12377,14 @@ function SessionList({
12334
12377
  });
12335
12378
  const refresh = list.refresh;
12336
12379
  const firstRefreshKey = useRef13(refreshKey);
12337
- useEffect15(() => {
12380
+ useEffect16(() => {
12338
12381
  if (Object.is(refreshKey, firstRefreshKey.current)) return;
12339
12382
  firstRefreshKey.current = refreshKey;
12340
12383
  void refresh();
12341
12384
  }, [refresh, refreshKey]);
12342
- const [editing, setEditing] = useState19(null);
12343
- const [busy, setBusy] = useState19(null);
12344
- const [error, setError] = useState19(null);
12385
+ const [editing, setEditing] = useState20(null);
12386
+ const [busy, setBusy] = useState20(null);
12387
+ const [error, setError] = useState20(null);
12345
12388
  const formatError = useErrorMessage();
12346
12389
  const archiveClient = context.client;
12347
12390
  const canArchive = archive && typeof archiveClient.updateSessionArchive === "function";
@@ -12376,16 +12419,16 @@ function SessionList({
12376
12419
  onArchived?.(session.id);
12377
12420
  });
12378
12421
  const sessions = list.sessions;
12379
- return /* @__PURE__ */ jsxs18(
12422
+ return /* @__PURE__ */ jsxs19(
12380
12423
  "nav",
12381
12424
  {
12382
12425
  className: cn("flex min-h-0 min-w-0 flex-col gap-1 text-og-fg", className),
12383
12426
  "aria-label": labels.heading,
12384
12427
  "data-og-session-list": "",
12385
12428
  children: [
12386
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between gap-2 px-2 pb-1 pt-2", children: [
12387
- /* @__PURE__ */ jsx24("h2", { className: "text-og-sm font-semibold text-og-fg-muted", children: labels.heading }),
12388
- onNewChat ? /* @__PURE__ */ jsxs18(
12429
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between gap-2 px-2 pb-1 pt-2", children: [
12430
+ /* @__PURE__ */ jsx25("h2", { className: "text-og-sm font-semibold text-og-fg-muted", children: labels.heading }),
12431
+ onNewChat ? /* @__PURE__ */ jsxs19(
12389
12432
  "button",
12390
12433
  {
12391
12434
  type: "button",
@@ -12393,22 +12436,22 @@ function SessionList({
12393
12436
  className: "inline-flex items-center gap-1 rounded-md px-2 py-1 text-og-control text-og-fg hover:bg-og-surface-2",
12394
12437
  "data-og-new-chat": "",
12395
12438
  children: [
12396
- /* @__PURE__ */ jsx24(PlusIcon, { className: "size-3.5", "aria-hidden": true }),
12439
+ /* @__PURE__ */ jsx25(PlusIcon, { className: "size-3.5", "aria-hidden": true }),
12397
12440
  labels.newChat
12398
12441
  ]
12399
12442
  }
12400
12443
  ) : null
12401
12444
  ] }),
12402
- error || list.error ? /* @__PURE__ */ jsx24("p", { role: "alert", className: "px-2 text-og-xs text-og-status-failed", children: formatError(error ? error.cause : list.error) }) : null,
12403
- /* @__PURE__ */ jsxs18("ul", { className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-1 pb-2", children: [
12404
- list.loading && sessions.length === 0 ? /* @__PURE__ */ jsx24("li", { className: "px-2 py-2 text-og-xs text-og-fg-subtle", children: labels.loading }) : null,
12405
- !list.loading && !list.error && sessions.length === 0 ? /* @__PURE__ */ jsx24("li", { className: "px-2 py-2 text-og-xs text-og-fg-subtle", children: labels.empty }) : null,
12445
+ error || list.error ? /* @__PURE__ */ jsx25("p", { role: "alert", className: "px-2 text-og-xs text-og-status-failed", children: formatError(error ? error.cause : list.error) }) : null,
12446
+ /* @__PURE__ */ jsxs19("ul", { className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-1 pb-2", children: [
12447
+ list.loading && sessions.length === 0 ? /* @__PURE__ */ jsx25("li", { className: "px-2 py-2 text-og-xs text-og-fg-subtle", children: labels.loading }) : null,
12448
+ !list.loading && !list.error && sessions.length === 0 ? /* @__PURE__ */ jsx25("li", { className: "px-2 py-2 text-og-xs text-og-fg-subtle", children: labels.empty }) : null,
12406
12449
  sessions.map((session) => {
12407
12450
  const selected = session.id === selectedSessionId;
12408
12451
  const title = deriveSessionDisplayTitle(session);
12409
12452
  if (editing?.id === session.id) {
12410
- return /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsxs18("form", { onSubmit: saveTitle, className: "flex items-center gap-1 px-1 py-1", children: [
12411
- /* @__PURE__ */ jsx24(
12453
+ return /* @__PURE__ */ jsx25("li", { children: /* @__PURE__ */ jsxs19("form", { onSubmit: saveTitle, className: "flex items-center gap-1 px-1 py-1", children: [
12454
+ /* @__PURE__ */ jsx25(
12412
12455
  "input",
12413
12456
  {
12414
12457
  "aria-label": labels.rename,
@@ -12422,7 +12465,7 @@ function SessionList({
12422
12465
  className: "min-w-0 flex-1 rounded-md border border-og-border bg-og-bg px-2 py-1 text-og-sm text-og-fg"
12423
12466
  }
12424
12467
  ),
12425
- /* @__PURE__ */ jsx24(
12468
+ /* @__PURE__ */ jsx25(
12426
12469
  "button",
12427
12470
  {
12428
12471
  type: "submit",
@@ -12432,8 +12475,8 @@ function SessionList({
12432
12475
  )
12433
12476
  ] }) }, session.id);
12434
12477
  }
12435
- return /* @__PURE__ */ jsxs18("li", { className: "group relative", children: [
12436
- /* @__PURE__ */ jsxs18(
12478
+ return /* @__PURE__ */ jsxs19("li", { className: "group relative", children: [
12479
+ /* @__PURE__ */ jsxs19(
12437
12480
  "button",
12438
12481
  {
12439
12482
  type: "button",
@@ -12446,36 +12489,36 @@ function SessionList({
12446
12489
  ),
12447
12490
  "data-og-session-row": "",
12448
12491
  children: [
12449
- /* @__PURE__ */ jsx24("span", { className: "w-full truncate pr-12 text-og-sm text-og-fg", children: title }),
12450
- /* @__PURE__ */ jsx24("span", { className: "text-og-xs text-og-fg-subtle", children: formatRelativeTime(session.updatedAt) })
12492
+ /* @__PURE__ */ jsx25("span", { className: "w-full truncate pr-12 text-og-sm text-og-fg", children: title }),
12493
+ /* @__PURE__ */ jsx25("span", { className: "text-og-xs text-og-fg-subtle", children: formatRelativeTime(session.updatedAt) })
12451
12494
  ]
12452
12495
  }
12453
12496
  ),
12454
- /* @__PURE__ */ jsxs18("span", { className: "absolute right-1 top-1.5 hidden gap-0.5 group-focus-within:flex group-hover:flex", children: [
12455
- rename ? /* @__PURE__ */ jsx24(
12497
+ /* @__PURE__ */ jsxs19("span", { className: "absolute right-1 top-1.5 hidden gap-0.5 group-focus-within:flex group-hover:flex", children: [
12498
+ rename ? /* @__PURE__ */ jsx25(
12456
12499
  "button",
12457
12500
  {
12458
12501
  type: "button",
12459
12502
  "aria-label": `${labels.rename}: ${title}`,
12460
12503
  onClick: () => setEditing({ id: session.id, title: session.title ?? title }),
12461
12504
  className: "rounded p-1 text-og-fg-subtle hover:bg-og-surface-3 hover:text-og-fg",
12462
- children: /* @__PURE__ */ jsx24(PencilIcon2, { className: "size-3.5", "aria-hidden": true })
12505
+ children: /* @__PURE__ */ jsx25(PencilIcon2, { className: "size-3.5", "aria-hidden": true })
12463
12506
  }
12464
12507
  ) : null,
12465
- canArchive ? /* @__PURE__ */ jsx24(
12508
+ canArchive ? /* @__PURE__ */ jsx25(
12466
12509
  "button",
12467
12510
  {
12468
12511
  type: "button",
12469
12512
  "aria-label": `${labels.archive}: ${title}`,
12470
12513
  onClick: () => archiveSession(session),
12471
12514
  className: "rounded p-1 text-og-fg-subtle hover:bg-og-surface-3 hover:text-og-fg",
12472
- children: /* @__PURE__ */ jsx24(ArchiveIcon, { className: "size-3.5", "aria-hidden": true })
12515
+ children: /* @__PURE__ */ jsx25(ArchiveIcon, { className: "size-3.5", "aria-hidden": true })
12473
12516
  }
12474
12517
  ) : null
12475
12518
  ] })
12476
12519
  ] }, session.id);
12477
12520
  }),
12478
- list.nextCursor ? /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsx24(
12521
+ list.nextCursor ? /* @__PURE__ */ jsx25("li", { children: /* @__PURE__ */ jsx25(
12479
12522
  "button",
12480
12523
  {
12481
12524
  type: "button",
@@ -12492,8 +12535,8 @@ function SessionList({
12492
12535
 
12493
12536
  // src/components/open-geni-chat.tsx
12494
12537
  import { ArrowUpIcon as ArrowUpIcon3, LoaderCircleIcon, MenuIcon, XIcon as XIcon3 } from "lucide-react";
12495
- import { useCallback as useCallback7, useRef as useRef14, useState as useState20 } from "react";
12496
- import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
12538
+ import { useCallback as useCallback7, useRef as useRef14, useState as useState21 } from "react";
12539
+ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
12497
12540
  var DEFAULT_LABELS2 = {
12498
12541
  openChats: "Open chats",
12499
12542
  closeChats: "Close chats",
@@ -12503,9 +12546,9 @@ var DEFAULT_LABELS2 = {
12503
12546
  newChatUnavailable: "New chats are not enabled for this product."
12504
12547
  };
12505
12548
  function OpenGeniChat({ baseUrl, ...props }) {
12506
- if (baseUrl === void 0) return /* @__PURE__ */ jsx25(Chat, { ...props });
12549
+ if (baseUrl === void 0) return /* @__PURE__ */ jsx26(Chat, { ...props });
12507
12550
  const { client: _client, workspaceId, ...rest } = props;
12508
- return /* @__PURE__ */ jsx25(SessionProxyScope, { baseUrl, workspaceId, children: /* @__PURE__ */ jsx25(Chat, { ...rest }) });
12551
+ return /* @__PURE__ */ jsx26(SessionProxyScope, { baseUrl, workspaceId, children: /* @__PURE__ */ jsx26(Chat, { ...rest }) });
12509
12552
  }
12510
12553
  function Chat({
12511
12554
  client,
@@ -12526,10 +12569,10 @@ function Chat({
12526
12569
  const labels = { ...DEFAULT_LABELS2, ...labelOverrides };
12527
12570
  const scope = { client, workspaceId };
12528
12571
  const context = useOpenGeni(scope);
12529
- const [uncontrolled, setUncontrolled] = useState20(defaultSessionId);
12572
+ const [uncontrolled, setUncontrolled] = useState21(defaultSessionId);
12530
12573
  const selected = controlledSessionId !== void 0 ? controlledSessionId : uncontrolled;
12531
- const [drawerOpen, setDrawerOpen] = useState20(false);
12532
- const [listRevision, setListRevision] = useState20(0);
12574
+ const [drawerOpen, setDrawerOpen] = useState21(false);
12575
+ const [listRevision, setListRevision] = useState21(0);
12533
12576
  const root = useRef14(null);
12534
12577
  const hostTheme = useHostTheme(root, { theme, surface });
12535
12578
  const select = useCallback7(
@@ -12553,7 +12596,7 @@ function Chat({
12553
12596
  },
12554
12597
  [context.client, context.workspaceId, createSession, labels.newChatUnavailable]
12555
12598
  );
12556
- const list = /* @__PURE__ */ jsx25(
12599
+ const list = /* @__PURE__ */ jsx26(
12557
12600
  SessionList,
12558
12601
  {
12559
12602
  ...scope,
@@ -12569,7 +12612,7 @@ function Chat({
12569
12612
  className: "h-full"
12570
12613
  }
12571
12614
  );
12572
- return /* @__PURE__ */ jsxs19(
12615
+ return /* @__PURE__ */ jsxs20(
12573
12616
  "div",
12574
12617
  {
12575
12618
  ref: root,
@@ -12582,7 +12625,7 @@ function Chat({
12582
12625
  "data-og-host-theme": "",
12583
12626
  "data-og-chat": "",
12584
12627
  children: [
12585
- /* @__PURE__ */ jsx25(
12628
+ /* @__PURE__ */ jsx26(
12586
12629
  "aside",
12587
12630
  {
12588
12631
  className: "og-chat-sidebar min-h-0 w-64 shrink-0 flex-col border-r border-og-border",
@@ -12590,21 +12633,21 @@ function Chat({
12590
12633
  children: list
12591
12634
  }
12592
12635
  ),
12593
- drawerOpen ? /* @__PURE__ */ jsxs19("div", { className: "og-chat-drawer absolute inset-0 z-30 flex", "data-og-chat-drawer": "", children: [
12594
- /* @__PURE__ */ jsxs19("div", { className: "flex h-full w-[min(20rem,85%)] flex-col border-r border-og-border bg-og-bg shadow-og-lg", children: [
12595
- /* @__PURE__ */ jsx25("div", { className: "flex justify-end p-1", children: /* @__PURE__ */ jsx25(
12636
+ drawerOpen ? /* @__PURE__ */ jsxs20("div", { className: "og-chat-drawer absolute inset-0 z-30 flex", "data-og-chat-drawer": "", children: [
12637
+ /* @__PURE__ */ jsxs20("div", { className: "flex h-full w-[min(20rem,85%)] flex-col border-r border-og-border bg-og-bg shadow-og-lg", children: [
12638
+ /* @__PURE__ */ jsx26("div", { className: "flex justify-end p-1", children: /* @__PURE__ */ jsx26(
12596
12639
  "button",
12597
12640
  {
12598
12641
  type: "button",
12599
12642
  "aria-label": labels.closeChats,
12600
12643
  onClick: () => setDrawerOpen(false),
12601
12644
  className: "rounded p-1.5 text-og-fg-muted hover:bg-og-surface-2",
12602
- children: /* @__PURE__ */ jsx25(XIcon3, { className: "size-4", "aria-hidden": true })
12645
+ children: /* @__PURE__ */ jsx26(XIcon3, { className: "size-4", "aria-hidden": true })
12603
12646
  }
12604
12647
  ) }),
12605
- /* @__PURE__ */ jsx25("div", { className: "min-h-0 flex-1", children: list })
12648
+ /* @__PURE__ */ jsx26("div", { className: "min-h-0 flex-1", children: list })
12606
12649
  ] }),
12607
- /* @__PURE__ */ jsx25(
12650
+ /* @__PURE__ */ jsx26(
12608
12651
  "button",
12609
12652
  {
12610
12653
  type: "button",
@@ -12614,9 +12657,9 @@ function Chat({
12614
12657
  }
12615
12658
  )
12616
12659
  ] }) : null,
12617
- /* @__PURE__ */ jsxs19("main", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: [
12618
- /* @__PURE__ */ jsxs19("div", { className: "og-chat-menu flex items-center gap-2 px-2 py-1", children: [
12619
- /* @__PURE__ */ jsx25(
12660
+ /* @__PURE__ */ jsxs20("main", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: [
12661
+ /* @__PURE__ */ jsxs20("div", { className: "og-chat-menu flex items-center gap-2 px-2 py-1", children: [
12662
+ /* @__PURE__ */ jsx26(
12620
12663
  "button",
12621
12664
  {
12622
12665
  type: "button",
@@ -12625,12 +12668,12 @@ function Chat({
12625
12668
  onClick: () => setDrawerOpen(true),
12626
12669
  className: "rounded p-1.5 text-og-fg-muted hover:bg-og-surface-2",
12627
12670
  "data-og-chat-menu": "",
12628
- children: /* @__PURE__ */ jsx25(MenuIcon, { className: "size-4", "aria-hidden": true })
12671
+ children: /* @__PURE__ */ jsx26(MenuIcon, { className: "size-4", "aria-hidden": true })
12629
12672
  }
12630
12673
  ),
12631
- /* @__PURE__ */ jsx25("span", { className: "text-og-sm font-semibold text-og-fg-muted", children: labels.heading })
12674
+ /* @__PURE__ */ jsx26("span", { className: "text-og-sm font-semibold text-og-fg-muted", children: labels.heading })
12632
12675
  ] }),
12633
- /* @__PURE__ */ jsx25("div", { className: "og-chat-main min-h-0 flex-1 px-3 pb-3 pt-1", children: selected ? /* @__PURE__ */ jsx25(
12676
+ /* @__PURE__ */ jsx26("div", { className: "og-chat-main min-h-0 flex-1 px-3 pb-3 pt-1", children: selected ? /* @__PURE__ */ jsx26(
12634
12677
  SessionConversation,
12635
12678
  {
12636
12679
  ...conversationProps,
@@ -12638,7 +12681,7 @@ function Chat({
12638
12681
  sessionId: selected,
12639
12682
  height: "100%"
12640
12683
  }
12641
- ) : /* @__PURE__ */ jsx25(
12684
+ ) : /* @__PURE__ */ jsx26(
12642
12685
  NewChat,
12643
12686
  {
12644
12687
  labels,
@@ -12659,9 +12702,9 @@ function NewChat({
12659
12702
  create,
12660
12703
  onCreated
12661
12704
  }) {
12662
- const [text, setText] = useState20("");
12663
- const [sending, setSending] = useState20(false);
12664
- const [error, setError] = useState20(null);
12705
+ const [text, setText] = useState21("");
12706
+ const [sending, setSending] = useState21(false);
12707
+ const [error, setError] = useState21(null);
12665
12708
  const formatError = useErrorMessage();
12666
12709
  const idempotencyKey = useRef14(crypto.randomUUID());
12667
12710
  const submit = async (event) => {
@@ -12681,16 +12724,16 @@ function NewChat({
12681
12724
  setSending(false);
12682
12725
  }
12683
12726
  };
12684
- return /* @__PURE__ */ jsxs19(
12727
+ return /* @__PURE__ */ jsxs20(
12685
12728
  "form",
12686
12729
  {
12687
12730
  onSubmit: (event) => void submit(event),
12688
12731
  className: "mx-auto box-border flex h-full w-full max-w-3xl flex-col gap-4 p-3",
12689
12732
  "data-og-new-chat-composer": "",
12690
12733
  children: [
12691
- /* @__PURE__ */ jsx25("div", { "aria-hidden": true, className: "min-h-0 flex-[2]" }),
12692
- labels.newChatTitle ? /* @__PURE__ */ jsx25("p", { className: "text-center text-og-md font-medium text-og-fg", children: labels.newChatTitle }) : null,
12693
- /* @__PURE__ */ jsxs19(
12734
+ /* @__PURE__ */ jsx26("div", { "aria-hidden": true, className: "min-h-0 flex-[2]" }),
12735
+ labels.newChatTitle ? /* @__PURE__ */ jsx26("p", { className: "text-center text-og-md font-medium text-og-fg", children: labels.newChatTitle }) : null,
12736
+ /* @__PURE__ */ jsxs20(
12694
12737
  "div",
12695
12738
  {
12696
12739
  className: cn(
@@ -12699,7 +12742,7 @@ function NewChat({
12699
12742
  "focus-within:border-og-accent/50 focus-within:shadow-og-glow"
12700
12743
  ),
12701
12744
  children: [
12702
- /* @__PURE__ */ jsx25(
12745
+ /* @__PURE__ */ jsx26(
12703
12746
  "textarea",
12704
12747
  {
12705
12748
  value: text,
@@ -12717,7 +12760,7 @@ function NewChat({
12717
12760
  className: "min-h-12 flex-1 resize-none bg-transparent py-1 text-og-composer text-og-fg outline-hidden placeholder:text-og-fg-subtle md:text-og-composer-wide"
12718
12761
  }
12719
12762
  ),
12720
- /* @__PURE__ */ jsx25(
12763
+ /* @__PURE__ */ jsx26(
12721
12764
  "button",
12722
12765
  {
12723
12766
  type: "submit",
@@ -12729,17 +12772,17 @@ function NewChat({
12729
12772
  "transition-[background-color,transform,opacity] duration-150 ease-og-spring",
12730
12773
  "hover:bg-og-primary-hover active:scale-95 disabled:cursor-not-allowed disabled:opacity-50"
12731
12774
  ),
12732
- children: sending ? /* @__PURE__ */ jsx25(LoaderCircleIcon, { className: "size-4 animate-og-spin", "aria-hidden": true }) : /* @__PURE__ */ jsx25(ArrowUpIcon3, { className: "size-4", "aria-hidden": true })
12775
+ children: sending ? /* @__PURE__ */ jsx26(LoaderCircleIcon, { className: "size-4 animate-og-spin", "aria-hidden": true }) : /* @__PURE__ */ jsx26(ArrowUpIcon3, { className: "size-4", "aria-hidden": true })
12733
12776
  }
12734
12777
  )
12735
12778
  ]
12736
12779
  }
12737
12780
  ),
12738
- error ? /* @__PURE__ */ jsx25("p", { role: "alert", className: "text-center text-og-sm text-og-status-failed", children: formatError(
12781
+ error ? /* @__PURE__ */ jsx26("p", { role: "alert", className: "text-center text-og-sm text-og-status-failed", children: formatError(
12739
12782
  error.cause,
12740
12783
  error.cause instanceof Error && error.cause.message === labels.newChatUnavailable ? labels.newChatUnavailable : void 0
12741
12784
  ) }) : null,
12742
- /* @__PURE__ */ jsx25("div", { "aria-hidden": true, className: "min-h-0 flex-[3]" })
12785
+ /* @__PURE__ */ jsx26("div", { "aria-hidden": true, className: "min-h-0 flex-[3]" })
12743
12786
  ]
12744
12787
  }
12745
12788
  );
@@ -12747,15 +12790,15 @@ function NewChat({
12747
12790
 
12748
12791
  // src/components/session-commands-panel.tsx
12749
12792
  import { ChevronRightIcon as ChevronRightIcon3, Loader2Icon as Loader2Icon3, SquareIcon } from "lucide-react";
12750
- import { useState as useState21 } from "react";
12751
- import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
12793
+ import { useState as useState22 } from "react";
12794
+ import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
12752
12795
  function SessionCommandsPanel({
12753
12796
  commands: state,
12754
12797
  readOnly = false
12755
12798
  }) {
12756
12799
  const formatError = useErrorMessage();
12757
- const [pending, setPending] = useState21(null);
12758
- const [error, setError] = useState21(null);
12800
+ const [pending, setPending] = useState22(null);
12801
+ const [error, setError] = useState22(null);
12759
12802
  const active = state.commands.filter(
12760
12803
  (command) => command.state === "running" || command.state === "stopping"
12761
12804
  );
@@ -12770,11 +12813,11 @@ function SessionCommandsPanel({
12770
12813
  setPending(null);
12771
12814
  }
12772
12815
  };
12773
- return /* @__PURE__ */ jsxs20("div", { className: "space-y-2 text-og-xs", "data-og-session-commands": "", children: [
12774
- state.loading && active.length === 0 ? /* @__PURE__ */ jsx26("p", { role: "status", className: "text-og-fg-muted", children: "Loading commands\u2026" }) : null,
12775
- state.error ? /* @__PURE__ */ jsxs20("div", { role: "alert", className: "flex items-center justify-between gap-2 text-og-danger", children: [
12776
- /* @__PURE__ */ jsx26("span", { children: "Commands unavailable." }),
12777
- /* @__PURE__ */ jsx26(
12816
+ return /* @__PURE__ */ jsxs21("div", { className: "space-y-2 text-og-xs", "data-og-session-commands": "", children: [
12817
+ state.loading && active.length === 0 ? /* @__PURE__ */ jsx27("p", { role: "status", className: "text-og-fg-muted", children: "Loading commands\u2026" }) : null,
12818
+ state.error ? /* @__PURE__ */ jsxs21("div", { role: "alert", className: "flex items-center justify-between gap-2 text-og-danger", children: [
12819
+ /* @__PURE__ */ jsx27("span", { children: "Commands unavailable." }),
12820
+ /* @__PURE__ */ jsx27(
12778
12821
  "button",
12779
12822
  {
12780
12823
  type: "button",
@@ -12784,18 +12827,18 @@ function SessionCommandsPanel({
12784
12827
  }
12785
12828
  )
12786
12829
  ] }) : null,
12787
- !state.loading && !state.error && active.length === 0 ? /* @__PURE__ */ jsx26("p", { role: "status", className: "text-og-fg-muted", children: "No background commands running." }) : null,
12788
- active.length > 0 ? /* @__PURE__ */ jsx26("ul", { className: "max-h-64 overflow-y-auto overscroll-contain divide-y divide-og-border/40", children: active.map((command) => /* @__PURE__ */ jsxs20("li", { className: "flex items-start gap-3 py-2 first:pt-0 last:pb-0", children: [
12789
- /* @__PURE__ */ jsxs20("div", { className: "min-w-0 flex-1", children: [
12790
- /* @__PURE__ */ jsxs20("details", { className: "group/command", children: [
12791
- /* @__PURE__ */ jsxs20(
12830
+ !state.loading && !state.error && active.length === 0 ? /* @__PURE__ */ jsx27("p", { role: "status", className: "text-og-fg-muted", children: "No background commands running." }) : null,
12831
+ active.length > 0 ? /* @__PURE__ */ jsx27("ul", { className: "max-h-64 overflow-y-auto overscroll-contain divide-y divide-og-border/40", children: active.map((command) => /* @__PURE__ */ jsxs21("li", { className: "flex items-start gap-3 py-2 first:pt-0 last:pb-0", children: [
12832
+ /* @__PURE__ */ jsxs21("div", { className: "min-w-0 flex-1", children: [
12833
+ /* @__PURE__ */ jsxs21("details", { className: "group/command", children: [
12834
+ /* @__PURE__ */ jsxs21(
12792
12835
  "summary",
12793
12836
  {
12794
12837
  className: "flex cursor-pointer list-none items-center gap-1.5 rounded-og-sm font-mono text-og-fg outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
12795
12838
  title: "Expand command",
12796
12839
  children: [
12797
- /* @__PURE__ */ jsx26(ChevronRightIcon3, { className: "size-3 shrink-0 text-og-fg-subtle transition-transform group-open/command:rotate-90" }),
12798
- /* @__PURE__ */ jsx26(
12840
+ /* @__PURE__ */ jsx27(ChevronRightIcon3, { className: "size-3 shrink-0 text-og-fg-subtle transition-transform group-open/command:rotate-90" }),
12841
+ /* @__PURE__ */ jsx27(
12799
12842
  "span",
12800
12843
  {
12801
12844
  className: "min-w-0 truncate",
@@ -12806,9 +12849,9 @@ function SessionCommandsPanel({
12806
12849
  ]
12807
12850
  }
12808
12851
  ),
12809
- /* @__PURE__ */ jsxs20("div", { className: "mt-2 space-y-1", children: [
12810
- /* @__PURE__ */ jsx26("p", { className: "whitespace-pre-wrap break-all font-mono text-og-fg-muted", children: command.commandText ?? (command.commandPreview || "Background command") }),
12811
- /* @__PURE__ */ jsxs20(
12852
+ /* @__PURE__ */ jsxs21("div", { className: "mt-2 space-y-1", children: [
12853
+ /* @__PURE__ */ jsx27("p", { className: "whitespace-pre-wrap break-all font-mono text-og-fg-muted", children: command.commandText ?? (command.commandPreview || "Background command") }),
12854
+ /* @__PURE__ */ jsxs21(
12812
12855
  "time",
12813
12856
  {
12814
12857
  className: "block text-og-fg-subtle",
@@ -12822,9 +12865,9 @@ function SessionCommandsPanel({
12822
12865
  )
12823
12866
  ] })
12824
12867
  ] }),
12825
- /* @__PURE__ */ jsx26("p", { className: "mt-1 text-og-fg-subtle", children: command.observationStatus === "unavailable" ? command.state === "stopping" ? "Stop requested \xB7 status unavailable" : "Command status unavailable" : command.state === "stopping" ? "Stopping\u2026" : "Running" })
12868
+ /* @__PURE__ */ jsx27("p", { className: "mt-1 text-og-fg-subtle", children: command.observationStatus === "unavailable" ? command.state === "stopping" ? "Stop requested \xB7 status unavailable" : "Command status unavailable" : command.state === "stopping" ? "Stopping\u2026" : "Running" })
12826
12869
  ] }),
12827
- !readOnly ? /* @__PURE__ */ jsxs20(
12870
+ !readOnly ? /* @__PURE__ */ jsxs21(
12828
12871
  "button",
12829
12872
  {
12830
12873
  type: "button",
@@ -12833,18 +12876,18 @@ function SessionCommandsPanel({
12833
12876
  onClick: () => void stop(command.id),
12834
12877
  className: "inline-flex min-h-7 shrink-0 items-center gap-1 rounded-og-sm px-2 text-og-fg-muted outline-hidden hover:bg-og-surface-3/70 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:opacity-50 pointer-coarse:min-h-11",
12835
12878
  children: [
12836
- pending === command.id || command.state === "stopping" ? /* @__PURE__ */ jsx26(Loader2Icon3, { className: "size-3 animate-og-spin motion-reduce:animate-none" }) : /* @__PURE__ */ jsx26(SquareIcon, { className: "size-3" }),
12879
+ pending === command.id || command.state === "stopping" ? /* @__PURE__ */ jsx27(Loader2Icon3, { className: "size-3 animate-og-spin motion-reduce:animate-none" }) : /* @__PURE__ */ jsx27(SquareIcon, { className: "size-3" }),
12837
12880
  "Stop"
12838
12881
  ]
12839
12882
  }
12840
12883
  ) : null
12841
12884
  ] }, command.id)) }) : null,
12842
- error ? /* @__PURE__ */ jsx26("p", { role: "alert", className: "text-og-danger", children: error }) : null
12885
+ error ? /* @__PURE__ */ jsx27("p", { role: "alert", className: "text-og-danger", children: error }) : null
12843
12886
  ] });
12844
12887
  }
12845
12888
 
12846
12889
  // src/hooks/use-session-background-commands.ts
12847
- import { useCallback as useCallback8, useEffect as useEffect16, useRef as useRef15 } from "react";
12890
+ import { useCallback as useCallback8, useEffect as useEffect17, useRef as useRef15 } from "react";
12848
12891
  function useSessionBackgroundCommands(sessionId, options = {}) {
12849
12892
  const { client, workspaceId } = useOpenGeni(options);
12850
12893
  const enabled = (options.enabled ?? true) && Boolean(sessionId);
@@ -12864,7 +12907,7 @@ function useSessionBackgroundCommands(sessionId, options = {}) {
12864
12907
  });
12865
12908
  const refresh = state.refresh;
12866
12909
  const generation = useRef15(0);
12867
- useEffect16(() => {
12910
+ useEffect17(() => {
12868
12911
  generation.current += 1;
12869
12912
  return () => {
12870
12913
  generation.current += 1;
@@ -12892,7 +12935,7 @@ function useSessionBackgroundCommands(sessionId, options = {}) {
12892
12935
  }
12893
12936
 
12894
12937
  // src/components/session-commands.tsx
12895
- import { jsx as jsx27 } from "react/jsx-runtime";
12938
+ import { jsx as jsx28 } from "react/jsx-runtime";
12896
12939
  function SessionCommands({
12897
12940
  sessionId,
12898
12941
  readOnly = false,
@@ -12902,11 +12945,11 @@ function SessionCommands({
12902
12945
  pollIntervalMs: 3e3,
12903
12946
  ...options
12904
12947
  });
12905
- return /* @__PURE__ */ jsx27(SessionCommandsPanel, { commands, readOnly });
12948
+ return /* @__PURE__ */ jsx28(SessionCommandsPanel, { commands, readOnly });
12906
12949
  }
12907
12950
 
12908
12951
  // src/timeline/startup-timings.tsx
12909
- import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
12952
+ import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
12910
12953
  var LABELS = {
12911
12954
  queue: "Worker queue",
12912
12955
  sandbox: "Sandbox",
@@ -12919,7 +12962,7 @@ var LABELS = {
12919
12962
  };
12920
12963
  function StartupTimings({ phases }) {
12921
12964
  if (!phases.length)
12922
- return /* @__PURE__ */ jsx28("p", { className: "text-og-sm text-og-fg-subtle", children: "No startup timings recorded yet." });
12965
+ return /* @__PURE__ */ jsx29("p", { className: "text-og-sm text-og-fg-subtle", children: "No startup timings recorded yet." });
12923
12966
  const byTurn = /* @__PURE__ */ new Map();
12924
12967
  for (const phase of phases) {
12925
12968
  const group = byTurn.get(phase.turnId) ?? [];
@@ -12934,9 +12977,9 @@ function StartupTimings({ phases }) {
12934
12977
  turnPhases[0].startedAt
12935
12978
  )
12936
12979
  })).sort((a, b) => b.startedAt.localeCompare(a.startedAt));
12937
- return /* @__PURE__ */ jsxs21("div", { className: "space-y-3", children: [
12938
- /* @__PURE__ */ jsx28("p", { className: "text-og-xs text-og-fg-subtle", children: "Each turn has its own startup. Phases can overlap; durations are not additive." }),
12939
- turns.map((turn, index) => /* @__PURE__ */ jsx28(
12980
+ return /* @__PURE__ */ jsxs22("div", { className: "space-y-3", children: [
12981
+ /* @__PURE__ */ jsx29("p", { className: "text-og-xs text-og-fg-subtle", children: "Each turn has its own startup. Phases can overlap; durations are not additive." }),
12982
+ turns.map((turn, index) => /* @__PURE__ */ jsx29(
12940
12983
  StartupTurn,
12941
12984
  {
12942
12985
  ...turn,
@@ -12953,53 +12996,53 @@ function StartupTurn({
12953
12996
  latest
12954
12997
  }) {
12955
12998
  const status = phases.some((phase) => phase.status === "failed") ? "Failed" : phases.some((phase) => phase.status === "running") ? "In progress" : phases.some((phase) => phase.status === "cancelled") ? "Interrupted" : "Ready";
12956
- return /* @__PURE__ */ jsxs21("details", { open: latest, className: "group border-b border-og-border pb-3", children: [
12957
- /* @__PURE__ */ jsxs21("summary", { className: "cursor-pointer rounded py-3 text-og-sm text-og-fg-muted focus-visible:outline-2 focus-visible:outline-og-accent", children: [
12958
- /* @__PURE__ */ jsx28("span", { className: "font-medium", children: turnId === null ? "Unassigned events" : latest ? "Latest turn" : "Earlier turn" }),
12959
- /* @__PURE__ */ jsx28("span", { className: "ml-2 text-og-xs text-og-fg-subtle", children: new Date(startedAt).toLocaleTimeString([], {
12999
+ return /* @__PURE__ */ jsxs22("details", { open: latest, className: "group border-b border-og-border pb-3", children: [
13000
+ /* @__PURE__ */ jsxs22("summary", { className: "cursor-pointer rounded py-3 text-og-sm text-og-fg-muted focus-visible:outline-2 focus-visible:outline-og-accent", children: [
13001
+ /* @__PURE__ */ jsx29("span", { className: "font-medium", children: turnId === null ? "Unassigned events" : latest ? "Latest turn" : "Earlier turn" }),
13002
+ /* @__PURE__ */ jsx29("span", { className: "ml-2 text-og-xs text-og-fg-subtle", children: new Date(startedAt).toLocaleTimeString([], {
12960
13003
  hour: "2-digit",
12961
13004
  minute: "2-digit",
12962
13005
  second: "2-digit"
12963
13006
  }) }),
12964
- /* @__PURE__ */ jsx28(
13007
+ /* @__PURE__ */ jsx29(
12965
13008
  "span",
12966
13009
  {
12967
13010
  className: status === "Failed" ? "ml-2 text-og-xs text-og-status-failed" : "ml-2 text-og-xs text-og-fg-subtle",
12968
13011
  children: status
12969
13012
  }
12970
13013
  ),
12971
- /* @__PURE__ */ jsx28("span", { className: "mt-1 block break-all pl-4 font-og-mono text-og-xs text-og-fg-subtle", children: turnId ?? "No turn ID recorded" })
13014
+ /* @__PURE__ */ jsx29("span", { className: "mt-1 block break-all pl-4 font-og-mono text-og-xs text-og-fg-subtle", children: turnId ?? "No turn ID recorded" })
12972
13015
  ] }),
12973
- /* @__PURE__ */ jsxs21("div", { className: "pb-2", children: [
12974
- /* @__PURE__ */ jsxs21("p", { className: "text-og-xs text-og-fg-subtle", children: [
13016
+ /* @__PURE__ */ jsxs22("div", { className: "pb-2", children: [
13017
+ /* @__PURE__ */ jsxs22("p", { className: "text-og-xs text-og-fg-subtle", children: [
12975
13018
  "Started ",
12976
- /* @__PURE__ */ jsx28("time", { dateTime: startedAt, children: new Date(startedAt).toLocaleString() })
13019
+ /* @__PURE__ */ jsx29("time", { dateTime: startedAt, children: new Date(startedAt).toLocaleString() })
12977
13020
  ] }),
12978
- /* @__PURE__ */ jsx28("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs21("table", { className: "w-full text-left text-og-xs", children: [
12979
- /* @__PURE__ */ jsxs21("caption", { className: "sr-only", children: [
13021
+ /* @__PURE__ */ jsx29("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs22("table", { className: "w-full text-left text-og-xs", children: [
13022
+ /* @__PURE__ */ jsxs22("caption", { className: "sr-only", children: [
12980
13023
  "Startup phases for ",
12981
13024
  turnId ?? "unassigned events"
12982
13025
  ] }),
12983
- /* @__PURE__ */ jsx28("thead", { children: /* @__PURE__ */ jsxs21("tr", { className: "border-b border-og-border text-og-fg-subtle", children: [
12984
- /* @__PURE__ */ jsx28("th", { scope: "col", className: "py-2 font-medium", children: "Phase" }),
12985
- /* @__PURE__ */ jsx28("th", { scope: "col", className: "px-3 py-2 font-medium", children: "Status" }),
12986
- /* @__PURE__ */ jsx28("th", { scope: "col", className: "py-2 text-right font-medium", children: "Duration" })
13026
+ /* @__PURE__ */ jsx29("thead", { children: /* @__PURE__ */ jsxs22("tr", { className: "border-b border-og-border text-og-fg-subtle", children: [
13027
+ /* @__PURE__ */ jsx29("th", { scope: "col", className: "py-2 font-medium", children: "Phase" }),
13028
+ /* @__PURE__ */ jsx29("th", { scope: "col", className: "px-3 py-2 font-medium", children: "Status" }),
13029
+ /* @__PURE__ */ jsx29("th", { scope: "col", className: "py-2 text-right font-medium", children: "Duration" })
12987
13030
  ] }) }),
12988
- /* @__PURE__ */ jsx28("tbody", { children: phases.map((phase) => /* @__PURE__ */ jsxs21(
13031
+ /* @__PURE__ */ jsx29("tbody", { children: phases.map((phase) => /* @__PURE__ */ jsxs22(
12989
13032
  "tr",
12990
13033
  {
12991
13034
  className: "border-b border-og-border/40",
12992
13035
  title: `Turn: ${phase.turnId ?? "unknown"} \xB7 Started: ${phase.startedAt}`,
12993
13036
  children: [
12994
- /* @__PURE__ */ jsx28("th", { scope: "row", className: "py-2.5 font-normal text-og-fg-muted", children: LABELS[phase.phase] }),
12995
- /* @__PURE__ */ jsx28(
13037
+ /* @__PURE__ */ jsx29("th", { scope: "row", className: "py-2.5 font-normal text-og-fg-muted", children: LABELS[phase.phase] }),
13038
+ /* @__PURE__ */ jsx29(
12996
13039
  "td",
12997
13040
  {
12998
13041
  className: `px-3 py-2.5 ${phase.status === "failed" ? "text-og-status-failed" : "text-og-fg-subtle"}`,
12999
13042
  children: phase.status === "running" ? "In progress" : phase.status
13000
13043
  }
13001
13044
  ),
13002
- /* @__PURE__ */ jsx28("td", { className: "py-2.5 text-right font-og-mono tabular-nums text-og-fg-muted", children: phase.durationMs === null ? "\u2014" : phase.durationMs < 1e3 ? `${Math.round(phase.durationMs)} ms` : `${(phase.durationMs / 1e3).toFixed(1)} s` })
13045
+ /* @__PURE__ */ jsx29("td", { className: "py-2.5 text-right font-og-mono tabular-nums text-og-fg-muted", children: phase.durationMs === null ? "\u2014" : phase.durationMs < 1e3 ? `${Math.round(phase.durationMs)} ms` : `${(phase.durationMs / 1e3).toFixed(1)} s` })
13003
13046
  ]
13004
13047
  },
13005
13048
  phase.id
@@ -13068,4 +13111,4 @@ export {
13068
13111
  SessionCommands,
13069
13112
  StartupTimings
13070
13113
  };
13071
- //# sourceMappingURL=chunk-6TROCOEK.js.map
13114
+ //# sourceMappingURL=chunk-4OTO7KBK.js.map