@opengeni/react 2.5.0-canary.1 → 3.0.0-canary.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 (70) hide show
  1. package/README.md +15 -0
  2. package/dist/accounts.d.ts +64 -0
  3. package/dist/accounts.js +746 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/{browser-viewer-GXUICIAG.js → browser-viewer-AEFHUYZK.js} +3 -3
  6. package/dist/{chunk-MXJGO7LE.js → chunk-D3UIAJKY.js} +52 -2
  7. package/dist/chunk-D3UIAJKY.js.map +1 -0
  8. package/dist/{chunk-QGBJ6GHG.js → chunk-ELIYWBZR.js} +4 -4
  9. package/dist/{chunk-6H6S5V4Z.js → chunk-HQVCKCLG.js} +758 -871
  10. package/dist/chunk-HQVCKCLG.js.map +1 -0
  11. package/dist/{chunk-T7VAYG2I.js → chunk-MZ2G2XBA.js} +54 -2
  12. package/dist/chunk-MZ2G2XBA.js.map +1 -0
  13. package/dist/{chunk-X4JAFD5R.js → chunk-OAM4WAAM.js} +4 -4
  14. package/dist/{chunk-KSDXER4X.js → chunk-RGALCTWO.js} +64 -15
  15. package/dist/chunk-RGALCTWO.js.map +1 -0
  16. package/dist/chunk-YFKJ7VZH.js +268 -0
  17. package/dist/chunk-YFKJ7VZH.js.map +1 -0
  18. package/dist/{chunk-ATQJEWCA.js → chunk-YJFGAFBD.js} +124 -50
  19. package/dist/chunk-YJFGAFBD.js.map +1 -0
  20. package/dist/components/composer.d.ts +8 -0
  21. package/dist/components/file-browser.d.ts +4 -1
  22. package/dist/components/sandbox-files.d.ts +4 -1
  23. package/dist/components/sandbox-workspace.d.ts +5 -0
  24. package/dist/composer.js +3 -3
  25. package/dist/{computer-viewer-ZOP4Q7A7.js → computer-viewer-FWEZISW4.js} +3 -3
  26. package/dist/embedded-session-client.d.ts +23 -0
  27. package/dist/file-node-visibility.d.ts +15 -0
  28. package/dist/hooks/use-file-attachments.d.ts +9 -2
  29. package/dist/human-input.d.ts +3 -1
  30. package/dist/index.d.ts +5 -1
  31. package/dist/index.js +139 -53
  32. package/dist/index.js.map +1 -1
  33. package/dist/interaction.js +3 -3
  34. package/dist/session-ui.js +4 -4
  35. package/dist/session.d.ts +2 -0
  36. package/dist/session.js +7 -5
  37. package/dist/timeline/index.d.ts +1 -0
  38. package/dist/timeline/screenshot-lightbox.d.ts +16 -1
  39. package/package.json +6 -2
  40. package/src/accounts.tsx +970 -0
  41. package/src/components/chat-composer.tsx +88 -84
  42. package/src/components/composer.tsx +61 -9
  43. package/src/components/file-browser.tsx +33 -20
  44. package/src/components/human-input-surface.tsx +10 -6
  45. package/src/components/message-timeline.tsx +37 -9
  46. package/src/components/sandbox-files.tsx +42 -2
  47. package/src/components/sandbox-workspace.tsx +10 -0
  48. package/src/embedded-session-client.ts +104 -0
  49. package/src/file-node-visibility.ts +66 -0
  50. package/src/hooks/use-composer.ts +64 -2
  51. package/src/hooks/use-file-attachments.ts +38 -6
  52. package/src/hooks/use-human-input.ts +31 -4
  53. package/src/human-input.ts +12 -1
  54. package/src/index.ts +12 -0
  55. package/src/session.ts +5 -0
  56. package/src/timeline/index.ts +1 -0
  57. package/src/timeline/screenshot-lightbox.tsx +93 -29
  58. package/styles/compiled.css +11 -1
  59. package/styles/tokens.css +3 -1
  60. package/dist/chunk-6H6S5V4Z.js.map +0 -1
  61. package/dist/chunk-ATQJEWCA.js.map +0 -1
  62. package/dist/chunk-FK6VG4LL.js +0 -90
  63. package/dist/chunk-FK6VG4LL.js.map +0 -1
  64. package/dist/chunk-KSDXER4X.js.map +0 -1
  65. package/dist/chunk-MXJGO7LE.js.map +0 -1
  66. package/dist/chunk-T7VAYG2I.js.map +0 -1
  67. /package/dist/{browser-viewer-GXUICIAG.js.map → browser-viewer-AEFHUYZK.js.map} +0 -0
  68. /package/dist/{chunk-QGBJ6GHG.js.map → chunk-ELIYWBZR.js.map} +0 -0
  69. /package/dist/{chunk-X4JAFD5R.js.map → chunk-OAM4WAAM.js.map} +0 -0
  70. /package/dist/{computer-viewer-ZOP4Q7A7.js.map → computer-viewer-FWEZISW4.js.map} +0 -0
@@ -2,23 +2,27 @@ import {
2
2
  buildTimeline,
3
3
  groupTimeline,
4
4
  invokeOlderHistoryLoaderWithReceiptCapture,
5
+ isActionableHumanInputRequest,
5
6
  mcpToolLeaf,
6
7
  toolDisplayName
7
- } from "./chunk-MXJGO7LE.js";
8
+ } from "./chunk-D3UIAJKY.js";
8
9
  import {
9
10
  EmptyQueueStateSurface,
10
11
  TimelineAnnotationsChip,
11
12
  requestQueueDraftEdit
12
13
  } from "./chunk-WSK7G5LE.js";
13
14
  import {
15
+ LightboxProvider,
14
16
  Tooltip,
15
17
  TooltipContent,
16
18
  TooltipProvider,
17
- TooltipTrigger
18
- } from "./chunk-FK6VG4LL.js";
19
+ TooltipTrigger,
20
+ useLightboxOptional
21
+ } from "./chunk-YFKJ7VZH.js";
19
22
  import {
20
- usePortalTokenStyle
21
- } from "./chunk-VZTQ73XT.js";
23
+ copyTextToClipboard,
24
+ tableElementToTsv
25
+ } from "./chunk-JVYQRRC4.js";
22
26
  import {
23
27
  formatBytes,
24
28
  formatClockTime,
@@ -30,10 +34,6 @@ import {
30
34
  import {
31
35
  cn
32
36
  } from "./chunk-22KP6LR5.js";
33
- import {
34
- copyTextToClipboard,
35
- tableElementToTsv
36
- } from "./chunk-JVYQRRC4.js";
37
37
 
38
38
  // src/components/queue-surface.tsx
39
39
  import { Loader2Icon } from "lucide-react";
@@ -1674,7 +1674,8 @@ function HumanInputSurface({
1674
1674
  }) {
1675
1675
  const batchTotalRef = useRef3(0);
1676
1676
  const ordered = useMemo2(() => {
1677
- return [...requests].sort((a, b) => {
1677
+ const now = Date.now();
1678
+ return requests.filter((request) => isActionableHumanInputRequest(request, now)).sort((a, b) => {
1678
1679
  const aAt = a.createdAt ? Date.parse(a.createdAt) : 0;
1679
1680
  const bAt = b.createdAt ? Date.parse(b.createdAt) : 0;
1680
1681
  if (aAt !== bAt) return aAt - bAt;
@@ -2221,147 +2222,16 @@ function useForcedDefaultOpen() {
2221
2222
  return useContext(DisclosureDefaultsContext);
2222
2223
  }
2223
2224
 
2224
- // src/timeline/screenshot-lightbox.tsx
2225
- import { DownloadIcon, XIcon as XIcon2 } from "lucide-react";
2226
- import { AnimatePresence as AnimatePresence2, motion as motion2 } from "motion/react";
2227
- import { createContext as createContext2, useCallback, useContext as useContext2, useMemo as useMemo3, useState as useState3 } from "react";
2228
- import { Dialog } from "radix-ui";
2229
- import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
2230
- var LightboxContext = createContext2(null);
2231
- function useLightbox() {
2232
- return useContext2(LightboxContext) ?? NOOP;
2233
- }
2234
- function useLightboxOptional() {
2235
- return useContext2(LightboxContext);
2236
- }
2237
- var NOOP = { open: () => {
2238
- } };
2239
- function LightboxProvider({ children }) {
2240
- const ancestor = useContext2(LightboxContext);
2241
- if (ancestor) {
2242
- return /* @__PURE__ */ jsx6(Fragment3, { children });
2243
- }
2244
- return /* @__PURE__ */ jsx6(LightboxRoot, { children });
2245
- }
2246
- function LightboxRoot({ children }) {
2247
- const [state, setState] = useState3(null);
2248
- const [tokenSource, setTokenSource] = useState3(null);
2249
- const portalStyle = usePortalTokenStyle(tokenSource);
2250
- const open = useCallback(
2251
- (src, caption, source, label = "Screenshot", downloadFilename) => {
2252
- setTokenSource(source ?? null);
2253
- setState({
2254
- src,
2255
- label,
2256
- ...caption ? { caption } : {},
2257
- ...downloadFilename ? { downloadFilename } : {}
2258
- });
2259
- },
2260
- []
2261
- );
2262
- const close = useCallback(() => {
2263
- setState(null);
2264
- setTokenSource(null);
2265
- }, []);
2266
- const controller = useMemo3(() => ({ open }), [open]);
2267
- return /* @__PURE__ */ jsxs4(LightboxContext.Provider, { value: controller, children: [
2268
- children,
2269
- /* @__PURE__ */ jsx6(Dialog.Root, { open: state !== null, onOpenChange: (next) => !next && close(), children: /* @__PURE__ */ jsx6(AnimatePresence2, { children: state !== null ? /* @__PURE__ */ jsxs4(Dialog.Portal, { forceMount: true, children: [
2270
- /* @__PURE__ */ jsx6(Dialog.Overlay, { asChild: true, forceMount: true, children: /* @__PURE__ */ jsx6(
2271
- motion2.div,
2272
- {
2273
- initial: { opacity: 0 },
2274
- animate: { opacity: 1 },
2275
- exit: { opacity: 0 },
2276
- transition: { duration: 0.15 },
2277
- className: "og-root fixed inset-0 z-50 bg-black/90 backdrop-blur-md",
2278
- style: portalStyle
2279
- }
2280
- ) }),
2281
- /* @__PURE__ */ jsx6(
2282
- Dialog.Content,
2283
- {
2284
- asChild: true,
2285
- forceMount: true,
2286
- "aria-label": state.label,
2287
- onOpenAutoFocus: (event) => event.preventDefault(),
2288
- children: /* @__PURE__ */ jsxs4(
2289
- motion2.div,
2290
- {
2291
- initial: { opacity: 0, scale: 0.98 },
2292
- animate: { opacity: 1, scale: 1 },
2293
- exit: { opacity: 0, scale: 0.98 },
2294
- transition: { duration: 0.18, ease: [0.16, 1, 0.3, 1] },
2295
- onClick: (event) => {
2296
- if (event.target === event.currentTarget) {
2297
- close();
2298
- }
2299
- },
2300
- className: "og-root fixed inset-0 z-50 flex items-center justify-center p-6 sm:p-12",
2301
- style: portalStyle,
2302
- children: [
2303
- /* @__PURE__ */ jsx6(Dialog.Title, { className: "sr-only", children: state.label }),
2304
- /* @__PURE__ */ jsx6(Dialog.Description, { className: "sr-only", children: state.caption ?? `Expanded ${state.label.toLowerCase()}` }),
2305
- /* @__PURE__ */ jsxs4("figure", { className: "m-0 flex max-h-full max-w-5xl flex-col items-center gap-3", children: [
2306
- /* @__PURE__ */ jsxs4("div", { className: "relative flex min-h-0 w-fit max-w-full", children: [
2307
- /* @__PURE__ */ jsx6(
2308
- "img",
2309
- {
2310
- src: state.src,
2311
- alt: state.caption ?? state.label,
2312
- className: "min-h-0 max-h-[82vh] w-auto max-w-full rounded-og-md border border-white/10 object-contain shadow-og-lg"
2313
- }
2314
- ),
2315
- /* @__PURE__ */ jsxs4("div", { className: "absolute -right-3 -top-3 flex items-center gap-2", children: [
2316
- state.downloadFilename ? /* @__PURE__ */ jsx6(
2317
- "a",
2318
- {
2319
- href: state.src,
2320
- download: state.downloadFilename,
2321
- className: cn(
2322
- "inline-flex size-9 items-center justify-center rounded-full",
2323
- "border border-white/15 bg-black/60 text-white/70 backdrop-blur",
2324
- "transition-colors hover:border-white/30 hover:text-white"
2325
- ),
2326
- "aria-label": `Download ${state.downloadFilename}`,
2327
- children: /* @__PURE__ */ jsx6(DownloadIcon, { className: "size-4" })
2328
- }
2329
- ) : null,
2330
- /* @__PURE__ */ jsx6(
2331
- Dialog.Close,
2332
- {
2333
- className: cn(
2334
- "inline-flex size-9 items-center justify-center rounded-full",
2335
- "border border-white/15 bg-black/60 text-white/70 backdrop-blur",
2336
- "transition-colors hover:border-white/30 hover:text-white"
2337
- ),
2338
- "aria-label": "Close",
2339
- children: /* @__PURE__ */ jsx6(XIcon2, { className: "size-4" })
2340
- }
2341
- )
2342
- ] })
2343
- ] }),
2344
- state.caption ? /* @__PURE__ */ jsx6("figcaption", { className: "max-w-2xl text-center font-og-mono text-og-xs text-white/55", children: state.caption }) : /* @__PURE__ */ jsx6("figcaption", { className: "font-og-mono text-og-xs uppercase tracking-[0.1em] text-white/35", children: "Esc or click outside to close" })
2345
- ] })
2346
- ]
2347
- }
2348
- )
2349
- }
2350
- )
2351
- ] }) : null }) })
2352
- ] });
2353
- }
2354
-
2355
2225
  // src/timeline/shared.tsx
2356
2226
  import { CameraIcon, CameraOffIcon, ChevronRightIcon } from "lucide-react";
2357
- import { createContext as createContext3, useContext as useContext3, useState as useState4 } from "react";
2358
- import { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
2359
- var ToolCallTruncationContext = createContext3(null);
2227
+ import { createContext as createContext2, useContext as useContext2, useState as useState3 } from "react";
2228
+ import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
2229
+ var ToolCallTruncationContext = createContext2(null);
2360
2230
  function ToolCallTruncationProvider({
2361
2231
  value,
2362
2232
  children
2363
2233
  }) {
2364
- return /* @__PURE__ */ jsx7(ToolCallTruncationContext.Provider, { value, children });
2234
+ return /* @__PURE__ */ jsx6(ToolCallTruncationContext.Provider, { value, children });
2365
2235
  }
2366
2236
  var ICON_TONE = {
2367
2237
  accent: "text-og-accent",
@@ -2387,8 +2257,8 @@ function ActivityDisclosure({
2387
2257
  const iconTone = failed && iconToneProp === "muted" ? "failed" : iconToneProp;
2388
2258
  const chip = chipProp ?? (failed ? { tone: "bad", text: "failed" } : cancelled ? { tone: "interrupted", text: "interrupted" } : void 0);
2389
2259
  const forcedDefaultOpen = useForcedDefaultOpen();
2390
- const [open, setOpen] = useState4(defaultOpen ?? forcedDefaultOpen ?? false);
2391
- const truncation = useContext3(ToolCallTruncationContext);
2260
+ const [open, setOpen] = useState3(defaultOpen ?? forcedDefaultOpen ?? false);
2261
+ const truncation = useContext2(ToolCallTruncationContext);
2392
2262
  const hasBody = expandable && (children != null || truncation != null);
2393
2263
  const previewVisible = preview != null && !open;
2394
2264
  const rowClass = cn(
@@ -2398,10 +2268,10 @@ function ActivityDisclosure({
2398
2268
  // 44px mobile minimum without loosening the dense desktop rail.
2399
2269
  "pointer-coarse:min-h-11 pointer-coarse:py-2.5"
2400
2270
  );
2401
- const inner = /* @__PURE__ */ jsxs5(Fragment4, { children: [
2402
- hasBody ? /* @__PURE__ */ jsx7(ChevronRightIcon, { className: "size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/disclosure:rotate-90" }) : /* @__PURE__ */ jsx7("span", { className: "size-3.5 shrink-0" }),
2403
- /* @__PURE__ */ jsx7("span", { className: cn("shrink-0", ICON_TONE[iconTone]), children: icon }),
2404
- /* @__PURE__ */ jsx7(
2271
+ const inner = /* @__PURE__ */ jsxs4(Fragment3, { children: [
2272
+ hasBody ? /* @__PURE__ */ jsx6(ChevronRightIcon, { className: "size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/disclosure:rotate-90" }) : /* @__PURE__ */ jsx6("span", { className: "size-3.5 shrink-0" }),
2273
+ /* @__PURE__ */ jsx6("span", { className: cn("shrink-0", ICON_TONE[iconTone]), children: icon }),
2274
+ /* @__PURE__ */ jsx6(
2405
2275
  "span",
2406
2276
  {
2407
2277
  className: cn(
@@ -2412,15 +2282,15 @@ function ActivityDisclosure({
2412
2282
  children: title
2413
2283
  }
2414
2284
  ),
2415
- previewVisible && !media ? /* @__PURE__ */ jsx7("span", { className: "min-w-0 flex-1 truncate text-og-sm text-og-fg-subtle", children: preview }) : /* @__PURE__ */ jsx7("span", { className: "flex-1" }),
2416
- media && !open ? /* @__PURE__ */ jsx7("span", { className: "ml-auto flex shrink-0 items-center gap-2 pl-2", children: media }) : chip && !open ? /* @__PURE__ */ jsx7("span", { className: "ml-auto shrink-0 pl-2", children: /* @__PURE__ */ jsx7(Chip, { chip }) }) : null
2285
+ previewVisible && !media ? /* @__PURE__ */ jsx6("span", { className: "min-w-0 flex-1 truncate text-og-sm text-og-fg-subtle", children: preview }) : /* @__PURE__ */ jsx6("span", { className: "flex-1" }),
2286
+ media && !open ? /* @__PURE__ */ jsx6("span", { className: "ml-auto flex shrink-0 items-center gap-2 pl-2", children: media }) : chip && !open ? /* @__PURE__ */ jsx6("span", { className: "ml-auto shrink-0 pl-2", children: /* @__PURE__ */ jsx6(Chip, { chip }) }) : null
2417
2287
  ] });
2418
2288
  const dataStatus = cancelled ? "cancelled" : failed ? "failed" : void 0;
2419
2289
  if (!hasBody) {
2420
- return /* @__PURE__ */ jsx7("div", { className: cn(rowClass, "cursor-default"), "data-status": dataStatus, children: inner });
2290
+ return /* @__PURE__ */ jsx6("div", { className: cn(rowClass, "cursor-default"), "data-status": dataStatus, children: inner });
2421
2291
  }
2422
- return /* @__PURE__ */ jsxs5("div", { children: [
2423
- /* @__PURE__ */ jsx7(
2292
+ return /* @__PURE__ */ jsxs4("div", { children: [
2293
+ /* @__PURE__ */ jsx6(
2424
2294
  "div",
2425
2295
  {
2426
2296
  role: "button",
@@ -2443,37 +2313,37 @@ function ActivityDisclosure({
2443
2313
  children: inner
2444
2314
  }
2445
2315
  ),
2446
- open ? /* @__PURE__ */ jsxs5("div", { className: "mb-2 ml-7 mt-1.5 flex flex-col gap-2 overflow-hidden animate-og-expand", children: [
2316
+ open ? /* @__PURE__ */ jsxs4("div", { className: "mb-2 ml-7 mt-1.5 flex flex-col gap-2 overflow-hidden animate-og-expand", children: [
2447
2317
  children,
2448
- truncation ? /* @__PURE__ */ jsx7(ToolCallTruncationNotice, { truncation }) : null
2318
+ truncation ? /* @__PURE__ */ jsx6(ToolCallTruncationNotice, { truncation }) : null
2449
2319
  ] }) : null
2450
2320
  ] });
2451
2321
  }
2452
2322
  function ToolCallTruncationNotice({ truncation }) {
2453
2323
  const fullEvidence = truncation.fullEvidence.available ? "retained" : truncation.fullEvidence.reason ?? "unavailable";
2454
- return /* @__PURE__ */ jsxs5("div", { "data-og-tool-output-truncation": "", className: "text-og-sm leading-5 text-og-fg-subtle", children: [
2324
+ return /* @__PURE__ */ jsxs4("div", { "data-og-tool-output-truncation": "", className: "text-og-sm leading-5 text-og-fg-subtle", children: [
2455
2325
  "Output bounded at ",
2456
- /* @__PURE__ */ jsx7("code", { className: "font-og-mono", children: truncation.surface }),
2326
+ /* @__PURE__ */ jsx6("code", { className: "font-og-mono", children: truncation.surface }),
2457
2327
  truncation.omittedBytes != null && truncation.omittedBytes > 0 ? ` \xB7 ${truncation.omittedBytes.toLocaleString()} bytes omitted` : null,
2458
2328
  " \xB7 reason ",
2459
- /* @__PURE__ */ jsx7("code", { className: "font-og-mono", children: truncation.reason }),
2329
+ /* @__PURE__ */ jsx6("code", { className: "font-og-mono", children: truncation.reason }),
2460
2330
  " \xB7 full evidence ",
2461
- /* @__PURE__ */ jsx7("code", { className: "font-og-mono", children: fullEvidence })
2331
+ /* @__PURE__ */ jsx6("code", { className: "font-og-mono", children: fullEvidence })
2462
2332
  ] });
2463
2333
  }
2464
2334
  function Chip({ chip }) {
2465
2335
  const base = "inline-flex items-center font-og-mono text-og-xs leading-none";
2466
2336
  const withText = chip.text ? "gap-1.5" : "gap-0";
2467
2337
  if (chip.tone === "bad") {
2468
- return /* @__PURE__ */ jsxs5("span", { className: cn(base, withText, "text-og-status-failed"), children: [
2469
- /* @__PURE__ */ jsx7("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
2338
+ return /* @__PURE__ */ jsxs4("span", { className: cn(base, withText, "text-og-status-failed"), children: [
2339
+ /* @__PURE__ */ jsx6("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
2470
2340
  chip.text
2471
2341
  ] });
2472
2342
  }
2473
2343
  if (chip.tone === "interrupted") {
2474
- return /* @__PURE__ */ jsx7("span", { className: cn(base, "text-og-fg-subtle og-cancelled-chip"), children: chip.text });
2344
+ return /* @__PURE__ */ jsx6("span", { className: cn(base, "text-og-fg-subtle og-cancelled-chip"), children: chip.text });
2475
2345
  }
2476
- return /* @__PURE__ */ jsx7("span", { className: cn(base, "text-og-fg-subtle"), children: chip.text });
2346
+ return /* @__PURE__ */ jsx6("span", { className: cn(base, "text-og-fg-subtle"), children: chip.text });
2477
2347
  }
2478
2348
  function TermBlock({
2479
2349
  command,
@@ -2483,14 +2353,14 @@ function TermBlock({
2483
2353
  tailLines = 12,
2484
2354
  failed
2485
2355
  }) {
2486
- const [full, setFull] = useState4(false);
2356
+ const [full, setFull] = useState3(false);
2487
2357
  const empty = output.trim() === "";
2488
2358
  const lines = output.split("\n");
2489
2359
  const big = lines.length > tailLines + 4;
2490
2360
  const shown = full || !big ? output : lines.slice(-tailLines).join("\n");
2491
2361
  const showMore = big && !full;
2492
2362
  const showHeader = command != null || workdir != null;
2493
- return /* @__PURE__ */ jsxs5(
2363
+ return /* @__PURE__ */ jsxs4(
2494
2364
  "div",
2495
2365
  {
2496
2366
  className: cn(
@@ -2498,16 +2368,16 @@ function TermBlock({
2498
2368
  failed ? "border-og-status-failed/50" : live ? "border-og-status-running/50" : "border-og-border"
2499
2369
  ),
2500
2370
  children: [
2501
- showHeader ? /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2 pb-1", children: [
2502
- /* @__PURE__ */ jsx7("span", { className: "select-none text-og-status-idle", children: "$" }),
2503
- command != null ? /* @__PURE__ */ jsx7("span", { className: "min-w-0 flex-1 truncate font-og-mono text-og-sm text-og-fg-muted", children: command }) : /* @__PURE__ */ jsx7("span", { className: "flex-1" }),
2504
- workdir ? /* @__PURE__ */ jsx7("span", { className: "shrink-0 font-og-mono text-og-xs text-og-fg-subtle", children: workdir }) : null
2371
+ showHeader ? /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 pb-1", children: [
2372
+ /* @__PURE__ */ jsx6("span", { className: "select-none text-og-status-idle", children: "$" }),
2373
+ command != null ? /* @__PURE__ */ jsx6("span", { className: "min-w-0 flex-1 truncate font-og-mono text-og-sm text-og-fg-muted", children: command }) : /* @__PURE__ */ jsx6("span", { className: "flex-1" }),
2374
+ workdir ? /* @__PURE__ */ jsx6("span", { className: "shrink-0 font-og-mono text-og-xs text-og-fg-subtle", children: workdir }) : null
2505
2375
  ] }) : null,
2506
- empty ? /* @__PURE__ */ jsx7("p", { className: "font-og-mono text-og-xs italic text-og-fg-subtle", children: "(no output)" }) : /* @__PURE__ */ jsxs5("pre", { className: "max-h-72 overflow-auto whitespace-pre-wrap break-all font-og-mono text-og-xs leading-5 text-og-fg-muted", children: [
2376
+ empty ? /* @__PURE__ */ jsx6("p", { className: "font-og-mono text-og-xs italic text-og-fg-subtle", children: "(no output)" }) : /* @__PURE__ */ jsxs4("pre", { className: "max-h-72 overflow-auto whitespace-pre-wrap break-all font-og-mono text-og-xs leading-5 text-og-fg-muted", children: [
2507
2377
  shown,
2508
- live ? /* @__PURE__ */ jsx7("span", { className: "ml-px inline-block h-[1em] w-[2px] translate-y-[2px] animate-og-blink bg-og-accent align-middle" }) : null
2378
+ live ? /* @__PURE__ */ jsx6("span", { className: "ml-px inline-block h-[1em] w-[2px] translate-y-[2px] animate-og-blink bg-og-accent align-middle" }) : null
2509
2379
  ] }),
2510
- showMore ? /* @__PURE__ */ jsxs5(
2380
+ showMore ? /* @__PURE__ */ jsxs4(
2511
2381
  "button",
2512
2382
  {
2513
2383
  type: "button",
@@ -2533,7 +2403,7 @@ function PayloadBlock({
2533
2403
  if (!text || text.trim() === "") {
2534
2404
  return null;
2535
2405
  }
2536
- return /* @__PURE__ */ jsxs5(
2406
+ return /* @__PURE__ */ jsxs4(
2537
2407
  "div",
2538
2408
  {
2539
2409
  className: cn(
@@ -2541,8 +2411,8 @@ function PayloadBlock({
2541
2411
  failed ? "border-og-status-failed/50" : "border-og-border"
2542
2412
  ),
2543
2413
  children: [
2544
- /* @__PURE__ */ jsx7("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: label }),
2545
- /* @__PURE__ */ jsx7(
2414
+ /* @__PURE__ */ jsx6("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: label }),
2415
+ /* @__PURE__ */ jsx6(
2546
2416
  "pre",
2547
2417
  {
2548
2418
  className: cn(
@@ -2561,13 +2431,13 @@ function BodyNote({
2561
2431
  tone
2562
2432
  }) {
2563
2433
  if (tone === "error") {
2564
- return /* @__PURE__ */ jsx7("div", { className: "border-l-2 border-og-status-failed/50 pl-3 font-og-mono text-og-xs leading-5 text-og-status-failed", children });
2434
+ return /* @__PURE__ */ jsx6("div", { className: "border-l-2 border-og-status-failed/50 pl-3 font-og-mono text-og-xs leading-5 text-og-status-failed", children });
2565
2435
  }
2566
- return /* @__PURE__ */ jsx7("p", { className: "px-0.5 text-og-sm italic leading-5 text-og-fg-subtle", children });
2436
+ return /* @__PURE__ */ jsx6("p", { className: "px-0.5 text-og-sm italic leading-5 text-og-fg-subtle", children });
2567
2437
  }
2568
2438
  var MEDIA_BOX = "h-7 w-[52px] shrink-0 rounded-og-xs border border-og-border";
2569
2439
  function MediaSkeleton() {
2570
- return /* @__PURE__ */ jsxs5(
2440
+ return /* @__PURE__ */ jsxs4(
2571
2441
  "span",
2572
2442
  {
2573
2443
  className: cn(
@@ -2575,14 +2445,14 @@ function MediaSkeleton() {
2575
2445
  "relative inline-flex items-center justify-center overflow-hidden bg-og-surface-2"
2576
2446
  ),
2577
2447
  children: [
2578
- /* @__PURE__ */ jsx7("span", { className: "absolute inset-0 animate-og-pulse bg-og-surface-3/50" }),
2579
- /* @__PURE__ */ jsx7(CameraIcon, { className: "relative size-3.5 text-og-fg-subtle" })
2448
+ /* @__PURE__ */ jsx6("span", { className: "absolute inset-0 animate-og-pulse bg-og-surface-3/50" }),
2449
+ /* @__PURE__ */ jsx6(CameraIcon, { className: "relative size-3.5 text-og-fg-subtle" })
2580
2450
  ]
2581
2451
  }
2582
2452
  );
2583
2453
  }
2584
2454
  function MediaEmpty() {
2585
- return /* @__PURE__ */ jsx7("span", { className: cn(MEDIA_BOX, "inline-flex items-center justify-center bg-og-bg"), children: /* @__PURE__ */ jsx7(CameraOffIcon, { className: "size-3.5 text-og-fg-subtle" }) });
2455
+ return /* @__PURE__ */ jsx6("span", { className: cn(MEDIA_BOX, "inline-flex items-center justify-center bg-og-bg"), children: /* @__PURE__ */ jsx6(CameraOffIcon, { className: "size-3.5 text-og-fg-subtle" }) });
2586
2456
  }
2587
2457
  function Thumbnail({
2588
2458
  src,
@@ -2593,11 +2463,11 @@ function Thumbnail({
2593
2463
  downloadFilename
2594
2464
  }) {
2595
2465
  const lightbox = useLightboxOptional();
2596
- const [failed, setFailed] = useState4(false);
2466
+ const [failed, setFailed] = useState3(false);
2597
2467
  if (failed) {
2598
- return /* @__PURE__ */ jsx7(MediaEmpty, {});
2468
+ return /* @__PURE__ */ jsx6(MediaEmpty, {});
2599
2469
  }
2600
- const img = /* @__PURE__ */ jsx7(
2470
+ const img = /* @__PURE__ */ jsx6(
2601
2471
  "img",
2602
2472
  {
2603
2473
  src,
@@ -2607,9 +2477,9 @@ function Thumbnail({
2607
2477
  }
2608
2478
  );
2609
2479
  if (!lightbox) {
2610
- return /* @__PURE__ */ jsx7("span", { className: cn(MEDIA_BOX, "inline-flex overflow-hidden bg-og-bg"), children: img });
2480
+ return /* @__PURE__ */ jsx6("span", { className: cn(MEDIA_BOX, "inline-flex overflow-hidden bg-og-bg"), children: img });
2611
2481
  }
2612
- return /* @__PURE__ */ jsx7(
2482
+ return /* @__PURE__ */ jsx6(
2613
2483
  "button",
2614
2484
  {
2615
2485
  type: "button",
@@ -2641,9 +2511,9 @@ function ScreenshotFigure({
2641
2511
  downloadFilename
2642
2512
  }) {
2643
2513
  const lightbox = useLightboxOptional();
2644
- const [failed, setFailed] = useState4(false);
2514
+ const [failed, setFailed] = useState3(false);
2645
2515
  const surface = "block w-full overflow-hidden rounded-og-md border border-og-border bg-og-bg";
2646
- const img = /* @__PURE__ */ jsx7(
2516
+ const img = /* @__PURE__ */ jsx6(
2647
2517
  "img",
2648
2518
  {
2649
2519
  src,
@@ -2652,8 +2522,8 @@ function ScreenshotFigure({
2652
2522
  className: "max-h-80 w-full object-contain"
2653
2523
  }
2654
2524
  );
2655
- return /* @__PURE__ */ jsxs5("figure", { className: "m-0 min-w-0", children: [
2656
- failed ? /* @__PURE__ */ jsx7("div", { className: "rounded-og-md border border-og-border bg-og-bg px-3 py-6 text-center font-og-mono text-og-xs text-og-fg-subtle", children: "image unavailable" }) : lightbox ? /* @__PURE__ */ jsx7(
2525
+ return /* @__PURE__ */ jsxs4("figure", { className: "m-0 min-w-0", children: [
2526
+ failed ? /* @__PURE__ */ jsx6("div", { className: "rounded-og-md border border-og-border bg-og-bg px-3 py-6 text-center font-og-mono text-og-xs text-og-fg-subtle", children: "image unavailable" }) : lightbox ? /* @__PURE__ */ jsx6(
2657
2527
  "button",
2658
2528
  {
2659
2529
  type: "button",
@@ -2662,8 +2532,8 @@ function ScreenshotFigure({
2662
2532
  "aria-label": expandLabel,
2663
2533
  children: img
2664
2534
  }
2665
- ) : /* @__PURE__ */ jsx7("div", { className: surface, children: img }),
2666
- caption ? /* @__PURE__ */ jsx7("figcaption", { className: "mt-1.5 font-og-mono text-og-xs text-og-fg-subtle", children: caption }) : null
2535
+ ) : /* @__PURE__ */ jsx6("div", { className: surface, children: img }),
2536
+ caption ? /* @__PURE__ */ jsx6("figcaption", { className: "mt-1.5 font-og-mono text-og-xs text-og-fg-subtle", children: caption }) : null
2667
2537
  ] });
2668
2538
  }
2669
2539
 
@@ -2701,9 +2571,9 @@ import {
2701
2571
  lazy as lazy2,
2702
2572
  Suspense as Suspense2,
2703
2573
  useEffect as useEffect4,
2704
- useState as useState5
2574
+ useState as useState4
2705
2575
  } from "react";
2706
- import { jsx as jsx8 } from "react/jsx-runtime";
2576
+ import { jsx as jsx7 } from "react/jsx-runtime";
2707
2577
  var LazyPatchDiff = lazy2(async () => {
2708
2578
  const mod = await import("@pierre/diffs/react");
2709
2579
  return { default: mod.PatchDiff };
@@ -2720,8 +2590,8 @@ function PierreDiff({
2720
2590
  overflow = "wrap",
2721
2591
  className
2722
2592
  }) {
2723
- const [failed, setFailed] = useState5(false);
2724
- const [forcedColors, setForcedColors] = useState5(false);
2593
+ const [failed, setFailed] = useState4(false);
2594
+ const [forcedColors, setForcedColors] = useState4(false);
2725
2595
  useEffect4(() => {
2726
2596
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
2727
2597
  const query2 = window.matchMedia("(forced-colors: active)");
@@ -2741,12 +2611,12 @@ function PierreDiff({
2741
2611
  };
2742
2612
  }, [plain]);
2743
2613
  if (plain || failed || forcedColors) {
2744
- return /* @__PURE__ */ jsx8(
2614
+ return /* @__PURE__ */ jsx7(
2745
2615
  "div",
2746
2616
  {
2747
2617
  className,
2748
2618
  "data-opengeni-plain-diff": forcedColors ? "forced-colors" : "fallback",
2749
- children: fallback ?? /* @__PURE__ */ jsx8(PlainPatch, { diff })
2619
+ children: fallback ?? /* @__PURE__ */ jsx7(PlainPatch, { diff })
2750
2620
  }
2751
2621
  );
2752
2622
  }
@@ -2780,7 +2650,7 @@ function PierreDiff({
2780
2650
  "--diffs-font-size": "var(--og-code-font-size)",
2781
2651
  "--diffs-line-height": "var(--og-code-line-height)"
2782
2652
  };
2783
- return /* @__PURE__ */ jsx8("div", { className: cn("min-w-0", className), "data-opengeni-pierre-diff": true, style: pierreVars, children: /* @__PURE__ */ jsx8(Suspense2, { fallback: loading ?? /* @__PURE__ */ jsx8(DiffSkeleton, {}), children: diff.map((file) => /* @__PURE__ */ jsx8("div", { className: "mb-2", children: /* @__PURE__ */ jsx8(
2653
+ return /* @__PURE__ */ jsx7("div", { className: cn("min-w-0", className), "data-opengeni-pierre-diff": true, style: pierreVars, children: /* @__PURE__ */ jsx7(Suspense2, { fallback: loading ?? /* @__PURE__ */ jsx7(DiffSkeleton, {}), children: diff.map((file) => /* @__PURE__ */ jsx7("div", { className: "mb-2", children: /* @__PURE__ */ jsx7(
2784
2654
  LazyPatchDiff,
2785
2655
  {
2786
2656
  patch: gitFileDiffToPatch(file),
@@ -2790,20 +2660,20 @@ function PierreDiff({
2790
2660
  ) }, file.path)) }) });
2791
2661
  }
2792
2662
  function DiffSkeleton() {
2793
- return /* @__PURE__ */ jsx8("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: "Loading diff\u2026" });
2663
+ return /* @__PURE__ */ jsx7("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: "Loading diff\u2026" });
2794
2664
  }
2795
2665
  function PlainPatch({ diff }) {
2796
2666
  if (diff.length === 0) {
2797
- return /* @__PURE__ */ jsx8("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: "No changes" });
2667
+ return /* @__PURE__ */ jsx7("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: "No changes" });
2798
2668
  }
2799
- return /* @__PURE__ */ jsx8("div", { className: "min-w-0", children: diff.map((file) => /* @__PURE__ */ jsx8(
2669
+ return /* @__PURE__ */ jsx7("div", { className: "min-w-0", children: diff.map((file) => /* @__PURE__ */ jsx7(
2800
2670
  "pre",
2801
2671
  {
2802
2672
  "aria-label": `Diff for ${file.path}`,
2803
2673
  className: "mb-2 overflow-auto whitespace-pre rounded-og-sm border border-og-border bg-og-bg/60 p-2.5 font-og-mono text-og-xs leading-5",
2804
2674
  role: "region",
2805
2675
  tabIndex: 0,
2806
- children: gitFileDiffToPatch(file).split("\n").map((line, index) => /* @__PURE__ */ jsx8(
2676
+ children: gitFileDiffToPatch(file).split("\n").map((line, index) => /* @__PURE__ */ jsx7(
2807
2677
  "span",
2808
2678
  {
2809
2679
  className: cn(
@@ -2829,7 +2699,7 @@ import {
2829
2699
  CalendarClockIcon,
2830
2700
  CameraIcon as CameraIcon2,
2831
2701
  CameraOffIcon as CameraOffIcon2,
2832
- DownloadIcon as DownloadIcon2,
2702
+ DownloadIcon,
2833
2703
  FileDiffIcon,
2834
2704
  FileSearchIcon,
2835
2705
  FolderGitIcon,
@@ -2854,23 +2724,23 @@ import {
2854
2724
  VideoIcon,
2855
2725
  WrenchIcon
2856
2726
  } from "lucide-react";
2857
- import { useEffect as useEffect6, useRef as useRef4, useState as useState8 } from "react";
2727
+ import { useEffect as useEffect6, useRef as useRef4, useState as useState7 } from "react";
2858
2728
 
2859
2729
  // src/timeline/compute-label.tsx
2860
- import { createContext as createContext4, useContext as useContext4 } from "react";
2861
- var TimelineComputeLabelContext = createContext4(null);
2730
+ import { createContext as createContext3, useContext as useContext3 } from "react";
2731
+ var TimelineComputeLabelContext = createContext3(null);
2862
2732
  var TimelineComputeLabelProvider = TimelineComputeLabelContext.Provider;
2863
2733
  function useTimelineComputeLabel() {
2864
- return useContext4(TimelineComputeLabelContext);
2734
+ return useContext3(TimelineComputeLabelContext);
2865
2735
  }
2866
2736
 
2867
2737
  // src/timeline/tool-diff.tsx
2868
- import { useState as useState7 } from "react";
2738
+ import { useState as useState6 } from "react";
2869
2739
 
2870
2740
  // src/lib/use-theme-type.ts
2871
- import { useEffect as useEffect5, useState as useState6 } from "react";
2741
+ import { useEffect as useEffect5, useState as useState5 } from "react";
2872
2742
  function useThemeType(forced) {
2873
- const [detected, setDetected] = useState6("dark");
2743
+ const [detected, setDetected] = useState5("dark");
2874
2744
  useEffect5(() => {
2875
2745
  if (forced || typeof document === "undefined") return;
2876
2746
  const read = () => {
@@ -2891,20 +2761,20 @@ function useThemeType(forced) {
2891
2761
  }
2892
2762
 
2893
2763
  // src/timeline/tool-diff.tsx
2894
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
2764
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
2895
2765
  function ToolDiff({ files }) {
2896
- const [layout, setLayout] = useState7("unified");
2766
+ const [layout, setLayout] = useState6("unified");
2897
2767
  const themeType = useThemeType(void 0);
2898
- return /* @__PURE__ */ jsxs6("div", { className: "min-w-0", children: [
2899
- /* @__PURE__ */ jsx9("div", { className: "mb-1.5 flex justify-end", children: /* @__PURE__ */ jsx9(LayoutToggle, { layout, onChange: setLayout }) }),
2900
- /* @__PURE__ */ jsx9(PierreDiff, { diff: files, layout, themeType })
2768
+ return /* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
2769
+ /* @__PURE__ */ jsx8("div", { className: "mb-1.5 flex justify-end", children: /* @__PURE__ */ jsx8(LayoutToggle, { layout, onChange: setLayout }) }),
2770
+ /* @__PURE__ */ jsx8(PierreDiff, { diff: files, layout, themeType })
2901
2771
  ] });
2902
2772
  }
2903
2773
  function LayoutToggle({
2904
2774
  layout,
2905
2775
  onChange
2906
2776
  }) {
2907
- return /* @__PURE__ */ jsx9("div", { className: "inline-flex items-center gap-px rounded-og-xs border border-og-border p-px", children: ["unified", "split"].map((value) => /* @__PURE__ */ jsx9(
2777
+ return /* @__PURE__ */ jsx8("div", { className: "inline-flex items-center gap-px rounded-og-xs border border-og-border p-px", children: ["unified", "split"].map((value) => /* @__PURE__ */ jsx8(
2908
2778
  "button",
2909
2779
  {
2910
2780
  type: "button",
@@ -2925,9 +2795,9 @@ function RawPatch({ diff }) {
2925
2795
  occurrences.set(line, occurrence);
2926
2796
  return { key: `${line}\0${occurrence}`, line };
2927
2797
  });
2928
- return /* @__PURE__ */ jsxs6("div", { className: "min-w-0", children: [
2929
- /* @__PURE__ */ jsx9("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: "raw patch (could not parse hunks)" }),
2930
- /* @__PURE__ */ jsx9("pre", { className: "max-h-72 overflow-auto border-l-2 border-og-border pl-3 font-og-mono text-og-xs leading-5", children: lines.map(({ key, line }) => /* @__PURE__ */ jsx9(
2798
+ return /* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
2799
+ /* @__PURE__ */ jsx8("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: "raw patch (could not parse hunks)" }),
2800
+ /* @__PURE__ */ jsx8("pre", { className: "max-h-72 overflow-auto border-l-2 border-og-border pl-3 font-og-mono text-og-xs leading-5", children: lines.map(({ key, line }) => /* @__PURE__ */ jsx8(
2931
2801
  "span",
2932
2802
  {
2933
2803
  className: cn(
@@ -2942,12 +2812,12 @@ function RawPatch({ diff }) {
2942
2812
  }
2943
2813
 
2944
2814
  // src/timeline/tool-renderers.tsx
2945
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
2815
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
2946
2816
  var ICON_SIZE = "size-3.5";
2947
2817
  function RunningPreview({ children }) {
2948
- return /* @__PURE__ */ jsxs7("span", { className: "inline-flex items-center gap-1.5", children: [
2949
- /* @__PURE__ */ jsx10("span", { className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-status-running" }),
2950
- /* @__PURE__ */ jsx10("span", { className: "min-w-0 truncate", children })
2818
+ return /* @__PURE__ */ jsxs6("span", { className: "inline-flex items-center gap-1.5", children: [
2819
+ /* @__PURE__ */ jsx9("span", { className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-status-running" }),
2820
+ /* @__PURE__ */ jsx9("span", { className: "min-w-0 truncate", children })
2951
2821
  ] });
2952
2822
  }
2953
2823
  function withComputePreview(label, preview) {
@@ -2965,46 +2835,46 @@ function ExecRenderer({ item }) {
2965
2835
  const title = `$ ${cmd}`;
2966
2836
  const computeLabel = useTimelineComputeLabel();
2967
2837
  if (item.status === "failed" && out === void 0) {
2968
- return /* @__PURE__ */ jsx10(
2838
+ return /* @__PURE__ */ jsx9(
2969
2839
  ActivityDisclosure,
2970
2840
  {
2971
- icon: /* @__PURE__ */ jsx10(TerminalIcon, { className: ICON_SIZE }),
2841
+ icon: /* @__PURE__ */ jsx9(TerminalIcon, { className: ICON_SIZE }),
2972
2842
  iconTone: "failed",
2973
2843
  title,
2974
2844
  titleMono: true,
2975
2845
  chip: { tone: "bad", text: "failed" },
2976
2846
  preview: withComputePreview(computeLabel, "output lost \u2014 NUL byte could not be stored"),
2977
- children: /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: "output contained a NUL byte and could not be stored; the turn failed on this tool's output insert \u2014 no output event ever arrived." })
2847
+ children: /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: "output contained a NUL byte and could not be stored; the turn failed on this tool's output insert \u2014 no output event ever arrived." })
2978
2848
  }
2979
2849
  );
2980
2850
  }
2981
2851
  if (item.status === "failed" && (out == null || out === "")) {
2982
- return /* @__PURE__ */ jsx10(
2852
+ return /* @__PURE__ */ jsx9(
2983
2853
  ActivityDisclosure,
2984
2854
  {
2985
- icon: /* @__PURE__ */ jsx10(TerminalIcon, { className: ICON_SIZE }),
2855
+ icon: /* @__PURE__ */ jsx9(TerminalIcon, { className: ICON_SIZE }),
2986
2856
  iconTone: "failed",
2987
2857
  title,
2988
2858
  titleMono: true,
2989
2859
  chip: { tone: "bad", text: "failed" },
2990
2860
  preview: withComputePreview(computeLabel, "tool call failed"),
2991
- children: /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: "the tool call failed with no output." })
2861
+ children: /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: "the tool call failed with no output." })
2992
2862
  }
2993
2863
  );
2994
2864
  }
2995
2865
  if (running) {
2996
2866
  const streamed = typeof out === "string" ? stripExecBanner(out) : "";
2997
2867
  const runningPreview = streamed ? `${streamed.split("\n").length} lines` : "running\u2026";
2998
- return /* @__PURE__ */ jsx10(
2868
+ return /* @__PURE__ */ jsx9(
2999
2869
  ActivityDisclosure,
3000
2870
  {
3001
- icon: /* @__PURE__ */ jsx10(TerminalIcon, { className: ICON_SIZE }),
2871
+ icon: /* @__PURE__ */ jsx9(TerminalIcon, { className: ICON_SIZE }),
3002
2872
  iconTone: "running",
3003
2873
  title,
3004
2874
  titleMono: true,
3005
2875
  running: true,
3006
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: withComputePreview(computeLabel, runningPreview) }),
3007
- children: /* @__PURE__ */ jsx10(TermBlock, { command: null, workdir, output: streamed, live: true })
2876
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: withComputePreview(computeLabel, runningPreview) }),
2877
+ children: /* @__PURE__ */ jsx9(TermBlock, { command: null, workdir, output: streamed, live: true })
3008
2878
  }
3009
2879
  );
3010
2880
  }
@@ -3025,10 +2895,10 @@ function ExecRenderer({ item }) {
3025
2895
  const truncated = execTruncated(text);
3026
2896
  const preview = withComputePreview(computeLabel, truncated ? `\u22EF truncated \xB7 ${peek}` : peek);
3027
2897
  const body = binary ? "(binary output suppressed)" : stripped;
3028
- return /* @__PURE__ */ jsxs7(
2898
+ return /* @__PURE__ */ jsxs6(
3029
2899
  ActivityDisclosure,
3030
2900
  {
3031
- icon: /* @__PURE__ */ jsx10(TerminalIcon, { className: ICON_SIZE }),
2901
+ icon: /* @__PURE__ */ jsx9(TerminalIcon, { className: ICON_SIZE }),
3032
2902
  iconTone,
3033
2903
  title,
3034
2904
  titleMono: true,
@@ -3037,7 +2907,7 @@ function ExecRenderer({ item }) {
3037
2907
  cancelled: item.status === "cancelled",
3038
2908
  preview,
3039
2909
  children: [
3040
- /* @__PURE__ */ jsx10(
2910
+ /* @__PURE__ */ jsx9(
3041
2911
  TermBlock,
3042
2912
  {
3043
2913
  command: null,
@@ -3046,7 +2916,7 @@ function ExecRenderer({ item }) {
3046
2916
  failed: item.status === "failed" || exitCode != null && exitCode !== 0
3047
2917
  }
3048
2918
  ),
3049
- bgSession != null ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
2919
+ bgSession != null ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3050
2920
  "\u21B3 session ",
3051
2921
  bgSession,
3052
2922
  " \u2014 a later write_stdin can target this PTY."
@@ -3065,16 +2935,16 @@ function WriteStdinRenderer({ item }) {
3065
2935
  const exitCode = sandboxCommandExitCode(text);
3066
2936
  const stripped = stripExecBanner(text);
3067
2937
  if (running) {
3068
- return /* @__PURE__ */ jsx10(
2938
+ return /* @__PURE__ */ jsx9(
3069
2939
  ActivityDisclosure,
3070
2940
  {
3071
- icon: /* @__PURE__ */ jsx10(KeyboardIcon, { className: ICON_SIZE }),
2941
+ icon: /* @__PURE__ */ jsx9(KeyboardIcon, { className: ICON_SIZE }),
3072
2942
  iconTone: "running",
3073
2943
  title: `session ${sessionId} \u2190 ${keys || "\u2205"}`,
3074
2944
  titleMono: true,
3075
2945
  running: true,
3076
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "sending\u2026" }),
3077
- children: /* @__PURE__ */ jsxs7(BodyNote, { children: [
2946
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "sending\u2026" }),
2947
+ children: /* @__PURE__ */ jsxs6(BodyNote, { children: [
3078
2948
  "sending input to session ",
3079
2949
  sessionId,
3080
2950
  "\u2026"
@@ -3088,10 +2958,10 @@ function WriteStdinRenderer({ item }) {
3088
2958
  } else if (exitCode != null && exitCode !== 0) {
3089
2959
  chip = { tone: "bad", text: `exit ${exitCode}` };
3090
2960
  }
3091
- return /* @__PURE__ */ jsx10(
2961
+ return /* @__PURE__ */ jsx9(
3092
2962
  ActivityDisclosure,
3093
2963
  {
3094
- icon: /* @__PURE__ */ jsx10(KeyboardIcon, { className: ICON_SIZE }),
2964
+ icon: /* @__PURE__ */ jsx9(KeyboardIcon, { className: ICON_SIZE }),
3095
2965
  iconTone: lost ? "failed" : "muted",
3096
2966
  title: `session ${sessionId} \u2190 ${keys || "\u2205"}`,
3097
2967
  titleMono: true,
@@ -3099,7 +2969,7 @@ function WriteStdinRenderer({ item }) {
3099
2969
  failed: item.status === "failed",
3100
2970
  cancelled: item.status === "cancelled",
3101
2971
  preview: lost ? `session ${sessionId} PTY vanished` : tailPeek(stripped) || "sent",
3102
- children: lost ? /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: stripped || text }) : /* @__PURE__ */ jsx10(TermBlock, { command: `write_stdin \u2192 session ${sessionId}`, output: stripped })
2972
+ children: lost ? /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: stripped || text }) : /* @__PURE__ */ jsx9(TermBlock, { command: `write_stdin \u2192 session ${sessionId}`, output: stripped })
3103
2973
  }
3104
2974
  );
3105
2975
  }
@@ -3122,12 +2992,12 @@ function PathPreview({
3122
2992
  add,
3123
2993
  del
3124
2994
  }) {
3125
- return /* @__PURE__ */ jsxs7("span", { className: "inline-flex items-center gap-2 truncate font-og-mono", children: [
3126
- /* @__PURE__ */ jsxs7("span", { className: "truncate", children: [
3127
- /* @__PURE__ */ jsx10("span", { className: "text-og-fg-subtle", children: dirname(path) }),
3128
- /* @__PURE__ */ jsx10("span", { className: "text-og-fg-muted", children: basename(path) })
2995
+ return /* @__PURE__ */ jsxs6("span", { className: "inline-flex items-center gap-2 truncate font-og-mono", children: [
2996
+ /* @__PURE__ */ jsxs6("span", { className: "truncate", children: [
2997
+ /* @__PURE__ */ jsx9("span", { className: "text-og-fg-subtle", children: dirname(path) }),
2998
+ /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: basename(path) })
3129
2999
  ] }),
3130
- add != null || del != null ? /* @__PURE__ */ jsxs7("span", { className: "shrink-0 text-og-fg-subtle", children: [
3000
+ add != null || del != null ? /* @__PURE__ */ jsxs6("span", { className: "shrink-0 text-og-fg-subtle", children: [
3131
3001
  add != null ? `+${add}` : "",
3132
3002
  add != null && del != null ? " " : "",
3133
3003
  del != null ? `\u2212${del}` : ""
@@ -3143,35 +3013,35 @@ function ApplyPatchRenderer({ item }) {
3143
3013
  if (running) {
3144
3014
  const fileCount = ops.length;
3145
3015
  const titleVerb = firstOp ? `Applying ${basename(firstOp.path)}` : "Applying patch";
3146
- return /* @__PURE__ */ jsx10(
3016
+ return /* @__PURE__ */ jsx9(
3147
3017
  ActivityDisclosure,
3148
3018
  {
3149
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3019
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3150
3020
  iconTone: "running",
3151
3021
  title: fileCount > 1 ? `Applying ${fileCount} files` : titleVerb,
3152
3022
  running: true,
3153
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: fileCount > 1 ? `${fileCount} files` : firstOp ? firstOp.path : "applying\u2026" }),
3023
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: fileCount > 1 ? `${fileCount} files` : firstOp ? firstOp.path : "applying\u2026" }),
3154
3024
  children: ops.map((op, index) => {
3155
3025
  const file2 = safeParseOp(op);
3156
3026
  const key = `${op.type}:${op.path}:${index}`;
3157
- return file2 ? /* @__PURE__ */ jsx10(ToolDiff, { files: [file2] }, key) : /* @__PURE__ */ jsxs7("div", { children: [
3158
- /* @__PURE__ */ jsx10("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: op.path }),
3159
- /* @__PURE__ */ jsx10(RawPatch, { diff: op.diff ?? "" })
3027
+ return file2 ? /* @__PURE__ */ jsx9(ToolDiff, { files: [file2] }, key) : /* @__PURE__ */ jsxs6("div", { children: [
3028
+ /* @__PURE__ */ jsx9("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: op.path }),
3029
+ /* @__PURE__ */ jsx9(RawPatch, { diff: op.diff ?? "" })
3160
3030
  ] }, key);
3161
3031
  })
3162
3032
  }
3163
3033
  );
3164
3034
  }
3165
3035
  if (failed) {
3166
- return /* @__PURE__ */ jsx10(
3036
+ return /* @__PURE__ */ jsx9(
3167
3037
  ActivityDisclosure,
3168
3038
  {
3169
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3039
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3170
3040
  iconTone: "failed",
3171
3041
  title: firstOp ? `${verbForOp(firstOp)} ${basename(firstOp.path)}` : "apply_patch",
3172
3042
  chip: { tone: "bad", text: "failed" },
3173
3043
  preview: typeof item.output === "string" ? item.output : "patch failed",
3174
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: item.output, failed: true })
3044
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: item.output, failed: true })
3175
3045
  }
3176
3046
  );
3177
3047
  }
@@ -3180,19 +3050,19 @@ function ApplyPatchRenderer({ item }) {
3180
3050
  const goodFiles = parsed.filter((f) => f !== null);
3181
3051
  const add = goodFiles.reduce((n, f) => n + f.additions, 0);
3182
3052
  const del = goodFiles.reduce((n, f) => n + f.deletions, 0);
3183
- return /* @__PURE__ */ jsx10(
3053
+ return /* @__PURE__ */ jsx9(
3184
3054
  ActivityDisclosure,
3185
3055
  {
3186
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3056
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3187
3057
  iconTone: "accent",
3188
3058
  title: `Edited ${ops.length} files`,
3189
3059
  cancelled,
3190
- preview: /* @__PURE__ */ jsxs7("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
3191
- /* @__PURE__ */ jsxs7("span", { className: "text-og-fg-muted", children: [
3060
+ preview: /* @__PURE__ */ jsxs6("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
3061
+ /* @__PURE__ */ jsxs6("span", { className: "text-og-fg-muted", children: [
3192
3062
  ops.length,
3193
3063
  " files"
3194
3064
  ] }),
3195
- /* @__PURE__ */ jsxs7("span", { className: "text-og-fg-subtle", children: [
3065
+ /* @__PURE__ */ jsxs6("span", { className: "text-og-fg-subtle", children: [
3196
3066
  "+",
3197
3067
  add,
3198
3068
  " \u2212",
@@ -3202,56 +3072,56 @@ function ApplyPatchRenderer({ item }) {
3202
3072
  children: ops.map((op, index) => {
3203
3073
  const file2 = parsed[index];
3204
3074
  const key = `${op.type}:${op.path}:${index}`;
3205
- return file2 ? /* @__PURE__ */ jsx10(ToolDiff, { files: [file2] }, key) : /* @__PURE__ */ jsxs7("div", { children: [
3206
- /* @__PURE__ */ jsx10("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: op.path }),
3207
- /* @__PURE__ */ jsx10(RawPatch, { diff: op.diff ?? "" })
3075
+ return file2 ? /* @__PURE__ */ jsx9(ToolDiff, { files: [file2] }, key) : /* @__PURE__ */ jsxs6("div", { children: [
3076
+ /* @__PURE__ */ jsx9("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: op.path }),
3077
+ /* @__PURE__ */ jsx9(RawPatch, { diff: op.diff ?? "" })
3208
3078
  ] }, key);
3209
3079
  })
3210
3080
  }
3211
3081
  );
3212
3082
  }
3213
3083
  if (!firstOp) {
3214
- return /* @__PURE__ */ jsx10(GenericRenderer, { item });
3084
+ return /* @__PURE__ */ jsx9(GenericRenderer, { item });
3215
3085
  }
3216
3086
  if (firstOp.type === "delete_file") {
3217
- return /* @__PURE__ */ jsx10(
3087
+ return /* @__PURE__ */ jsx9(
3218
3088
  ActivityDisclosure,
3219
3089
  {
3220
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3090
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3221
3091
  iconTone: "failed",
3222
3092
  title: `Deleted ${basename(firstOp.path)}`,
3223
3093
  cancelled,
3224
- preview: /* @__PURE__ */ jsx10(PathPreview, { path: firstOp.path }),
3225
- children: /* @__PURE__ */ jsx10(BodyNote, { children: "File deleted \u2014 no diff to show." })
3094
+ preview: /* @__PURE__ */ jsx9(PathPreview, { path: firstOp.path }),
3095
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: "File deleted \u2014 no diff to show." })
3226
3096
  }
3227
3097
  );
3228
3098
  }
3229
3099
  const file = safeParseOp(firstOp);
3230
3100
  if (!file) {
3231
- return /* @__PURE__ */ jsx10(
3101
+ return /* @__PURE__ */ jsx9(
3232
3102
  ActivityDisclosure,
3233
3103
  {
3234
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3104
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3235
3105
  iconTone: "accent",
3236
3106
  title: `${verbForOp(firstOp)} ${basename(firstOp.path)}`,
3237
3107
  cancelled,
3238
- preview: /* @__PURE__ */ jsxs7("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
3239
- /* @__PURE__ */ jsx10("span", { className: "text-og-fg-muted", children: basename(firstOp.path) }),
3240
- /* @__PURE__ */ jsx10("span", { className: "text-og-fg-subtle", children: "malformed V4A" })
3108
+ preview: /* @__PURE__ */ jsxs6("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
3109
+ /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: basename(firstOp.path) }),
3110
+ /* @__PURE__ */ jsx9("span", { className: "text-og-fg-subtle", children: "malformed V4A" })
3241
3111
  ] }),
3242
- children: /* @__PURE__ */ jsx10(RawPatch, { diff: firstOp.diff ?? "" })
3112
+ children: /* @__PURE__ */ jsx9(RawPatch, { diff: firstOp.diff ?? "" })
3243
3113
  }
3244
3114
  );
3245
3115
  }
3246
- return /* @__PURE__ */ jsx10(
3116
+ return /* @__PURE__ */ jsx9(
3247
3117
  ActivityDisclosure,
3248
3118
  {
3249
- icon: /* @__PURE__ */ jsx10(FileDiffIcon, { className: ICON_SIZE }),
3119
+ icon: /* @__PURE__ */ jsx9(FileDiffIcon, { className: ICON_SIZE }),
3250
3120
  iconTone: "accent",
3251
3121
  title: `${verbForOp(firstOp)} ${basename(file.path)}`,
3252
3122
  cancelled,
3253
- preview: /* @__PURE__ */ jsx10(PathPreview, { path: file.path, add: file.additions, del: file.deletions }),
3254
- children: /* @__PURE__ */ jsx10(ToolDiff, { files: [file] })
3123
+ preview: /* @__PURE__ */ jsx9(PathPreview, { path: file.path, add: file.additions, del: file.deletions }),
3124
+ children: /* @__PURE__ */ jsx9(ToolDiff, { files: [file] })
3255
3125
  }
3256
3126
  );
3257
3127
  }
@@ -3326,40 +3196,40 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3326
3196
  const countSuffix = actions.length > 1 ? ` \xB7${actions.length}` : "";
3327
3197
  const isShot = action?.type === "screenshot";
3328
3198
  if (running) {
3329
- return /* @__PURE__ */ jsx10(
3199
+ return /* @__PURE__ */ jsx9(
3330
3200
  ActivityDisclosure,
3331
3201
  {
3332
- icon: isShot ? /* @__PURE__ */ jsx10(CameraIcon2, { className: ICON_SIZE }) : /* @__PURE__ */ jsx10(MousePointer2Icon, { className: ICON_SIZE }),
3202
+ icon: isShot ? /* @__PURE__ */ jsx9(CameraIcon2, { className: ICON_SIZE }) : /* @__PURE__ */ jsx9(MousePointer2Icon, { className: ICON_SIZE }),
3333
3203
  iconTone: "running",
3334
3204
  title: verb,
3335
3205
  running: true,
3336
- media: /* @__PURE__ */ jsx10(MediaSkeleton, {}),
3337
- children: /* @__PURE__ */ jsx10(BodyNote, { children: "capturing frame\u2026" })
3206
+ media: /* @__PURE__ */ jsx9(MediaSkeleton, {}),
3207
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: "capturing frame\u2026" })
3338
3208
  }
3339
3209
  );
3340
3210
  }
3341
3211
  if (readOnly) {
3342
- return /* @__PURE__ */ jsx10(
3212
+ return /* @__PURE__ */ jsx9(
3343
3213
  ActivityDisclosure,
3344
3214
  {
3345
- icon: /* @__PURE__ */ jsx10(MousePointer2Icon, { className: ICON_SIZE }),
3215
+ icon: /* @__PURE__ */ jsx9(MousePointer2Icon, { className: ICON_SIZE }),
3346
3216
  iconTone: "failed",
3347
3217
  title: verb,
3348
3218
  chip: { tone: "bad", text: "read-only" },
3349
3219
  preview: "write actions disabled",
3350
- children: /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: "computer-use is read-only \u2014 write actions are disabled." })
3220
+ children: /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: "computer-use is read-only \u2014 write actions are disabled." })
3351
3221
  }
3352
3222
  );
3353
3223
  }
3354
3224
  if (rejected) {
3355
- return /* @__PURE__ */ jsx10(
3225
+ return /* @__PURE__ */ jsx9(
3356
3226
  ActivityDisclosure,
3357
3227
  {
3358
- icon: /* @__PURE__ */ jsx10(LockIcon, { className: ICON_SIZE }),
3228
+ icon: /* @__PURE__ */ jsx9(LockIcon, { className: ICON_SIZE }),
3359
3229
  iconTone: "muted",
3360
3230
  title: verb,
3361
3231
  preview: "approval rejected \u2014 this action did not run",
3362
- children: /* @__PURE__ */ jsx10(BodyNote, { children: "approval rejected \u2014 this action did not run." })
3232
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: "approval rejected \u2014 this action did not run." })
3363
3233
  }
3364
3234
  );
3365
3235
  }
@@ -3368,17 +3238,17 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3368
3238
  if (retained) {
3369
3239
  if (!retained.available) {
3370
3240
  const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
3371
- return /* @__PURE__ */ jsx10(
3241
+ return /* @__PURE__ */ jsx9(
3372
3242
  ActivityDisclosure,
3373
3243
  {
3374
- icon: /* @__PURE__ */ jsx10(CameraOffIcon2, { className: ICON_SIZE }),
3244
+ icon: /* @__PURE__ */ jsx9(CameraOffIcon2, { className: ICON_SIZE }),
3375
3245
  iconTone: isFailed ? "failed" : "muted",
3376
3246
  title: `${verb}${countSuffix} \xB7 ${state}`,
3377
3247
  failed: isFailed,
3378
3248
  cancelled: isCancelled,
3379
3249
  preview: `screenshot ${state}`,
3380
- media: /* @__PURE__ */ jsx10(MediaEmpty, {}),
3381
- children: /* @__PURE__ */ jsxs7(BodyNote, { tone: isFailed ? "error" : void 0, children: [
3250
+ media: /* @__PURE__ */ jsx9(MediaEmpty, {}),
3251
+ children: /* @__PURE__ */ jsxs6(BodyNote, { tone: isFailed ? "error" : void 0, children: [
3382
3252
  "Screenshot ",
3383
3253
  state,
3384
3254
  ": ",
@@ -3388,7 +3258,7 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3388
3258
  }
3389
3259
  );
3390
3260
  }
3391
- return /* @__PURE__ */ jsx10(
3261
+ return /* @__PURE__ */ jsx9(
3392
3262
  RetainedSessionImageDisclosure,
3393
3263
  {
3394
3264
  artifact: retained,
@@ -3396,7 +3266,7 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3396
3266
  title: `${verb}${countSuffix}`,
3397
3267
  caption: `${verb}${countSuffix}`,
3398
3268
  noun: "screenshot",
3399
- icon: /* @__PURE__ */ jsx10(CameraIcon2, { className: ICON_SIZE }),
3269
+ icon: /* @__PURE__ */ jsx9(CameraIcon2, { className: ICON_SIZE }),
3400
3270
  lightboxLabel: "Screenshot",
3401
3271
  batched,
3402
3272
  failed: isFailed,
@@ -3406,18 +3276,18 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3406
3276
  }
3407
3277
  if (shotUrl) {
3408
3278
  const caption = `${verb}${actions.length > 1 ? ` (+${actions.length - 1} more)` : ""}`;
3409
- return /* @__PURE__ */ jsxs7(
3279
+ return /* @__PURE__ */ jsxs6(
3410
3280
  ActivityDisclosure,
3411
3281
  {
3412
- icon: isShot ? /* @__PURE__ */ jsx10(CameraIcon2, { className: ICON_SIZE }) : /* @__PURE__ */ jsx10(MousePointer2Icon, { className: ICON_SIZE }),
3282
+ icon: isShot ? /* @__PURE__ */ jsx9(CameraIcon2, { className: ICON_SIZE }) : /* @__PURE__ */ jsx9(MousePointer2Icon, { className: ICON_SIZE }),
3413
3283
  iconTone: isFailed ? "failed" : "accent",
3414
3284
  title: `${verb}${countSuffix}`,
3415
3285
  failed: isFailed,
3416
3286
  cancelled: isCancelled,
3417
- media: /* @__PURE__ */ jsx10(Thumbnail, { src: shotUrl, caption }),
3287
+ media: /* @__PURE__ */ jsx9(Thumbnail, { src: shotUrl, caption }),
3418
3288
  children: [
3419
- /* @__PURE__ */ jsx10(ScreenshotFigure, { src: shotUrl, caption }),
3420
- batched ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3289
+ /* @__PURE__ */ jsx9(ScreenshotFigure, { src: shotUrl, caption }),
3290
+ batched ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3421
3291
  "batched: ",
3422
3292
  batched
3423
3293
  ] }) : null
@@ -3426,23 +3296,23 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3426
3296
  );
3427
3297
  }
3428
3298
  if (omittedMedia) {
3429
- return /* @__PURE__ */ jsxs7(
3299
+ return /* @__PURE__ */ jsxs6(
3430
3300
  ActivityDisclosure,
3431
3301
  {
3432
- icon: /* @__PURE__ */ jsx10(CameraOffIcon2, { className: ICON_SIZE }),
3302
+ icon: /* @__PURE__ */ jsx9(CameraOffIcon2, { className: ICON_SIZE }),
3433
3303
  iconTone: isFailed ? "failed" : "muted",
3434
3304
  title: `${verb}${countSuffix} \xB7 image omitted \xB7 not retained`,
3435
3305
  failed: isFailed,
3436
3306
  cancelled: isCancelled,
3437
3307
  preview: "inline image omitted \xB7 not retained",
3438
- media: /* @__PURE__ */ jsx10(MediaEmpty, {}),
3308
+ media: /* @__PURE__ */ jsx9(MediaEmpty, {}),
3439
3309
  children: [
3440
- /* @__PURE__ */ jsxs7(BodyNote, { children: [
3310
+ /* @__PURE__ */ jsxs6(BodyNote, { children: [
3441
3311
  "The inline ",
3442
3312
  omittedMedia.mediaType,
3443
3313
  " output was omitted from the audit timeline and its source bytes were not retained."
3444
3314
  ] }),
3445
- batched ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3315
+ batched ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3446
3316
  "batched: ",
3447
3317
  batched
3448
3318
  ] }) : null
@@ -3451,35 +3321,35 @@ function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
3451
3321
  );
3452
3322
  }
3453
3323
  if (empty) {
3454
- return /* @__PURE__ */ jsx10(
3324
+ return /* @__PURE__ */ jsx9(
3455
3325
  ActivityDisclosure,
3456
3326
  {
3457
- icon: /* @__PURE__ */ jsx10(CameraOffIcon2, { className: ICON_SIZE }),
3327
+ icon: /* @__PURE__ */ jsx9(CameraOffIcon2, { className: ICON_SIZE }),
3458
3328
  iconTone: isFailed ? "failed" : "muted",
3459
3329
  title: verb,
3460
3330
  failed: isFailed,
3461
3331
  cancelled: isCancelled,
3462
- media: /* @__PURE__ */ jsx10(MediaEmpty, {}),
3463
- children: /* @__PURE__ */ jsx10(BodyNote, { children: isFailed ? "computer_call failed \u2014 no image returned." : isCancelled ? "computer_call interrupted \u2014 no image returned." : "(no image) \u2014 the session returned an empty screenshot." })
3332
+ media: /* @__PURE__ */ jsx9(MediaEmpty, {}),
3333
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: isFailed ? "computer_call failed \u2014 no image returned." : isCancelled ? "computer_call interrupted \u2014 no image returned." : "(no image) \u2014 the session returned an empty screenshot." })
3464
3334
  }
3465
3335
  );
3466
3336
  }
3467
- return /* @__PURE__ */ jsx10(
3337
+ return /* @__PURE__ */ jsx9(
3468
3338
  ActivityDisclosure,
3469
3339
  {
3470
- icon: /* @__PURE__ */ jsx10(MousePointer2Icon, { className: ICON_SIZE }),
3340
+ icon: /* @__PURE__ */ jsx9(MousePointer2Icon, { className: ICON_SIZE }),
3471
3341
  iconTone: isFailed ? "failed" : "accent",
3472
3342
  title: verb,
3473
3343
  failed: isFailed,
3474
3344
  cancelled: isCancelled,
3475
3345
  preview: batched ?? void 0,
3476
3346
  expandable: batched != null,
3477
- children: batched ? /* @__PURE__ */ jsx10(BodyNote, { children: batched }) : null
3347
+ children: batched ? /* @__PURE__ */ jsx9(BodyNote, { children: batched }) : null
3478
3348
  }
3479
3349
  );
3480
3350
  }
3481
3351
  function useRetainedImageObjectUrl(artifact, load) {
3482
- const [state, setState] = useState8({ kind: "loading" });
3352
+ const [state, setState] = useState7({ kind: "loading" });
3483
3353
  const artifactValue = retainedArtifactValue(artifact);
3484
3354
  const stableArtifactRef = useRef4({ value: artifactValue, artifact });
3485
3355
  if (stableArtifactRef.current.value !== artifactValue) {
@@ -3558,7 +3428,7 @@ function RetainedSessionImageDisclosure({
3558
3428
  }) {
3559
3429
  const state = useRetainedImageObjectUrl(artifact, load);
3560
3430
  const downloadFilename = retainedImageFilename(artifact);
3561
- return /* @__PURE__ */ jsxs7(
3431
+ return /* @__PURE__ */ jsxs6(
3562
3432
  ActivityDisclosure,
3563
3433
  {
3564
3434
  icon,
@@ -3567,7 +3437,7 @@ function RetainedSessionImageDisclosure({
3567
3437
  failed,
3568
3438
  cancelled,
3569
3439
  preview: state.kind === "loading" ? `loading retained ${noun}\u2026` : state.kind === "error" ? `${noun} retrieval failed` : state.kind === "unavailable" ? `${noun} ${state.label}` : void 0,
3570
- media: state.kind === "ready" ? /* @__PURE__ */ jsx10(
3440
+ media: state.kind === "ready" ? /* @__PURE__ */ jsx9(
3571
3441
  Thumbnail,
3572
3442
  {
3573
3443
  src: state.url,
@@ -3577,9 +3447,9 @@ function RetainedSessionImageDisclosure({
3577
3447
  lightboxLabel,
3578
3448
  downloadFilename
3579
3449
  }
3580
- ) : state.kind === "loading" ? /* @__PURE__ */ jsx10(MediaSkeleton, {}) : /* @__PURE__ */ jsx10(MediaEmpty, {}),
3450
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsx9(MediaSkeleton, {}) : /* @__PURE__ */ jsx9(MediaEmpty, {}),
3581
3451
  children: [
3582
- state.kind === "ready" ? /* @__PURE__ */ jsx10(
3452
+ state.kind === "ready" ? /* @__PURE__ */ jsx9(
3583
3453
  ScreenshotFigure,
3584
3454
  {
3585
3455
  src: state.url,
@@ -3589,21 +3459,21 @@ function RetainedSessionImageDisclosure({
3589
3459
  lightboxLabel,
3590
3460
  downloadFilename
3591
3461
  }
3592
- ) : state.kind === "loading" ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3462
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3593
3463
  "Loading the retained ",
3594
3464
  noun,
3595
3465
  "\u2026"
3596
- ] }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3466
+ ] }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3597
3467
  noun === "screenshot" ? "Screenshot" : "Image",
3598
3468
  " ",
3599
3469
  state.label,
3600
3470
  "."
3601
- ] }) : /* @__PURE__ */ jsxs7(BodyNote, { tone: "error", children: [
3471
+ ] }) : /* @__PURE__ */ jsxs6(BodyNote, { tone: "error", children: [
3602
3472
  noun === "screenshot" ? "Screenshot" : "Image",
3603
3473
  " retrieval failed: ",
3604
3474
  state.message
3605
3475
  ] }),
3606
- batched ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3476
+ batched ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3607
3477
  "batched: ",
3608
3478
  batched
3609
3479
  ] }) : null
@@ -3617,21 +3487,21 @@ function GeneratedImageRenderer({ item, loadRetainedArtifact }) {
3617
3487
  const raw = item.raw && typeof item.raw === "object" && !Array.isArray(item.raw) ? item.raw : null;
3618
3488
  const receipt = generatedImageReceipt(item.output) ?? generatedImageReceipt(raw?.output);
3619
3489
  if (item.status === "running") {
3620
- return /* @__PURE__ */ jsx10(
3490
+ return /* @__PURE__ */ jsx9(
3621
3491
  ActivityDisclosure,
3622
3492
  {
3623
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3493
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3624
3494
  iconTone: "running",
3625
3495
  title: "Generating image",
3626
3496
  running: true,
3627
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: truncatePreview(prompt, 72) || "creating\u2026" }),
3628
- media: /* @__PURE__ */ jsx10(MediaSkeleton, {}),
3629
- children: prompt ? /* @__PURE__ */ jsx10(BodyNote, { children: prompt }) : null
3497
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: truncatePreview(prompt, 72) || "creating\u2026" }),
3498
+ media: /* @__PURE__ */ jsx9(MediaSkeleton, {}),
3499
+ children: prompt ? /* @__PURE__ */ jsx9(BodyNote, { children: prompt }) : null
3630
3500
  }
3631
3501
  );
3632
3502
  }
3633
- if (!receipt) return /* @__PURE__ */ jsx10(GenericRenderer, { item });
3634
- return /* @__PURE__ */ jsx10(
3503
+ if (!receipt) return /* @__PURE__ */ jsx9(GenericRenderer, { item });
3504
+ return /* @__PURE__ */ jsx9(
3635
3505
  GeneratedImageDisclosure,
3636
3506
  {
3637
3507
  receipt,
@@ -3650,10 +3520,10 @@ function GeneratedVideoRenderer({ item }) {
3650
3520
  const failed = item.status === "failed";
3651
3521
  const cancelled = item.status === "cancelled";
3652
3522
  const running = item.status === "running";
3653
- return /* @__PURE__ */ jsxs7(
3523
+ return /* @__PURE__ */ jsxs6(
3654
3524
  ActivityDisclosure,
3655
3525
  {
3656
- icon: /* @__PURE__ */ jsx10(VideoIcon, { className: ICON_SIZE }),
3526
+ icon: /* @__PURE__ */ jsx9(VideoIcon, { className: ICON_SIZE }),
3657
3527
  iconTone: failed ? "failed" : running ? "running" : accepted ? "accent" : "muted",
3658
3528
  title: running ? "Starting video generation" : accepted ? "Generating video" : "Generate video",
3659
3529
  running,
@@ -3661,8 +3531,8 @@ function GeneratedVideoRenderer({ item }) {
3661
3531
  cancelled,
3662
3532
  preview: truncatePreview(prompt, 88) || (accepted ? "request accepted" : void 0),
3663
3533
  children: [
3664
- prompt ? /* @__PURE__ */ jsx10(BodyNote, { children: prompt }) : null,
3665
- accepted ? /* @__PURE__ */ jsx10(BodyNote, { children: "The video will appear here when it is ready." }) : item.output !== void 0 ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Output", value: item.output }) : null
3534
+ prompt ? /* @__PURE__ */ jsx9(BodyNote, { children: prompt }) : null,
3535
+ accepted ? /* @__PURE__ */ jsx9(BodyNote, { children: "The video will appear here when it is ready." }) : item.output !== void 0 ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Output", value: item.output }) : null
3666
3536
  ]
3667
3537
  }
3668
3538
  );
@@ -3670,21 +3540,21 @@ function GeneratedVideoRenderer({ item }) {
3670
3540
  function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
3671
3541
  const { text: output, isError } = unwrapMcpOutput(item.output);
3672
3542
  const receipt = parseSandboxFileArtifactReceipt(output);
3673
- const [downloadState, setDownloadState] = useState8("idle");
3543
+ const [downloadState, setDownloadState] = useState7("idle");
3674
3544
  if (item.status === "running") {
3675
- return /* @__PURE__ */ jsx10(
3545
+ return /* @__PURE__ */ jsx9(
3676
3546
  ActivityDisclosure,
3677
3547
  {
3678
- icon: /* @__PURE__ */ jsx10(DownloadIcon2, { className: ICON_SIZE }),
3548
+ icon: /* @__PURE__ */ jsx9(DownloadIcon, { className: ICON_SIZE }),
3679
3549
  iconTone: "running",
3680
3550
  title: "Publishing file",
3681
3551
  running: true,
3682
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "retaining workspace bytes\u2026" })
3552
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "retaining workspace bytes\u2026" })
3683
3553
  }
3684
3554
  );
3685
3555
  }
3686
3556
  if (!receipt || isError || item.status === "failed") {
3687
- return /* @__PURE__ */ jsx10(GenericRenderer, { item });
3557
+ return /* @__PURE__ */ jsx9(GenericRenderer, { item });
3688
3558
  }
3689
3559
  const download = async () => {
3690
3560
  if (!loadRetainedArtifact) {
@@ -3714,15 +3584,15 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
3714
3584
  if (urlToRevoke) setTimeout(() => URL.revokeObjectURL(urlToRevoke), 0);
3715
3585
  }
3716
3586
  };
3717
- return /* @__PURE__ */ jsx10(
3587
+ return /* @__PURE__ */ jsx9(
3718
3588
  ActivityDisclosure,
3719
3589
  {
3720
- icon: /* @__PURE__ */ jsx10(DownloadIcon2, { className: ICON_SIZE }),
3590
+ icon: /* @__PURE__ */ jsx9(DownloadIcon, { className: ICON_SIZE }),
3721
3591
  iconTone: "accent",
3722
3592
  title: `Published ${receipt.filename}`,
3723
3593
  defaultOpen: true,
3724
3594
  preview: formatBytes(receipt.artifact.originalBytes),
3725
- children: /* @__PURE__ */ jsxs7(
3595
+ children: /* @__PURE__ */ jsxs6(
3726
3596
  "button",
3727
3597
  {
3728
3598
  type: "button",
@@ -3730,7 +3600,7 @@ function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
3730
3600
  disabled: downloadState === "loading",
3731
3601
  className: "inline-flex items-center gap-1.5 rounded-og-sm border border-og-border px-2.5 py-1.5 text-og-sm font-medium text-og-fg transition-colors hover:border-og-border-strong hover:bg-og-surface-2 disabled:cursor-wait disabled:opacity-60",
3732
3602
  children: [
3733
- /* @__PURE__ */ jsx10(DownloadIcon2, { className: "size-3.5" }),
3603
+ /* @__PURE__ */ jsx9(DownloadIcon, { className: "size-3.5" }),
3734
3604
  downloadState === "loading" ? "Preparing\u2026" : downloadState === "error" ? "Retry download" : "Download"
3735
3605
  ]
3736
3606
  }
@@ -3749,17 +3619,17 @@ function GeneratedImageDisclosure({
3749
3619
  const dimensions = receipt.artifact.dimensions;
3750
3620
  const title = failed ? "Image generation failed" : "Generated image";
3751
3621
  const caption = prompt || `Generated image \xB7 ${dimensions.width}\xD7${dimensions.height}`;
3752
- return /* @__PURE__ */ jsxs7(
3622
+ return /* @__PURE__ */ jsxs6(
3753
3623
  ActivityDisclosure,
3754
3624
  {
3755
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3625
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3756
3626
  iconTone: failed ? "failed" : state.kind === "ready" ? "accent" : "muted",
3757
3627
  title,
3758
3628
  defaultOpen: !failed && !cancelled,
3759
3629
  failed,
3760
3630
  cancelled,
3761
3631
  preview: state.kind === "loading" ? "loading image\u2026" : state.kind === "error" ? "image retrieval failed" : state.kind === "unavailable" ? `image ${state.label}` : truncatePreview(prompt, 88) || `${dimensions.width}\xD7${dimensions.height}`,
3762
- media: state.kind === "ready" ? /* @__PURE__ */ jsx10(
3632
+ media: state.kind === "ready" ? /* @__PURE__ */ jsx9(
3763
3633
  Thumbnail,
3764
3634
  {
3765
3635
  src: state.url,
@@ -3768,9 +3638,9 @@ function GeneratedImageDisclosure({
3768
3638
  expandLabel: "Expand generated image",
3769
3639
  lightboxLabel: "Generated image"
3770
3640
  }
3771
- ) : state.kind === "loading" ? /* @__PURE__ */ jsx10(MediaSkeleton, {}) : /* @__PURE__ */ jsx10(MediaEmpty, {}),
3641
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsx9(MediaSkeleton, {}) : /* @__PURE__ */ jsx9(MediaEmpty, {}),
3772
3642
  children: [
3773
- state.kind === "ready" ? /* @__PURE__ */ jsx10(
3643
+ state.kind === "ready" ? /* @__PURE__ */ jsx9(
3774
3644
  ScreenshotFigure,
3775
3645
  {
3776
3646
  src: state.url,
@@ -3779,12 +3649,12 @@ function GeneratedImageDisclosure({
3779
3649
  expandLabel: "Expand generated image",
3780
3650
  lightboxLabel: "Generated image"
3781
3651
  }
3782
- ) : state.kind === "loading" ? /* @__PURE__ */ jsx10(BodyNote, { children: "Loading the generated image\u2026" }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
3652
+ ) : state.kind === "loading" ? /* @__PURE__ */ jsx9(BodyNote, { children: "Loading the generated image\u2026" }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
3783
3653
  "Image ",
3784
3654
  state.label,
3785
3655
  "."
3786
- ] }) : /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: "Image retrieval failed." }),
3787
- /* @__PURE__ */ jsxs7(BodyNote, { children: [
3656
+ ] }) : /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: "Image retrieval failed." }),
3657
+ /* @__PURE__ */ jsxs6(BodyNote, { children: [
3788
3658
  dimensions.width,
3789
3659
  "\xD7",
3790
3660
  dimensions.height,
@@ -3855,38 +3725,38 @@ function WebSearchRenderer({ item }) {
3855
3725
  return { key: `${contentKey}\0${occurrence}`, result };
3856
3726
  });
3857
3727
  if (running) {
3858
- return /* @__PURE__ */ jsx10(
3728
+ return /* @__PURE__ */ jsx9(
3859
3729
  ActivityDisclosure,
3860
3730
  {
3861
- icon: /* @__PURE__ */ jsx10(SearchIcon, { className: ICON_SIZE }),
3731
+ icon: /* @__PURE__ */ jsx9(SearchIcon, { className: ICON_SIZE }),
3862
3732
  iconTone: "running",
3863
3733
  title: runningTitle,
3864
3734
  running: true,
3865
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: `${query2}${variants}` }),
3866
- children: /* @__PURE__ */ jsx10(BodyNote, { children: "searching\u2026 results fold into the model context (no output event)." })
3735
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: `${query2}${variants}` }),
3736
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: "searching\u2026 results fold into the model context (no output event)." })
3867
3737
  }
3868
3738
  );
3869
3739
  }
3870
- return /* @__PURE__ */ jsx10(
3740
+ return /* @__PURE__ */ jsx9(
3871
3741
  ActivityDisclosure,
3872
3742
  {
3873
- icon: /* @__PURE__ */ jsx10(SearchIcon, { className: ICON_SIZE }),
3743
+ icon: /* @__PURE__ */ jsx9(SearchIcon, { className: ICON_SIZE }),
3874
3744
  iconTone: "muted",
3875
3745
  title: completedTitle,
3876
3746
  preview: `${query2}${variants}`,
3877
3747
  failed: item.status === "failed",
3878
3748
  cancelled: item.status === "cancelled",
3879
- children: keyedResults && keyedResults.length ? /* @__PURE__ */ jsx10("ul", { className: "flex flex-col gap-2", children: keyedResults.map(({ key, result }) => /* @__PURE__ */ jsxs7("li", { className: "flex gap-2.5", children: [
3880
- /* @__PURE__ */ jsx10(GlobeIcon, { className: "mt-0.5 size-3.5 shrink-0 text-og-fg-subtle" }),
3881
- /* @__PURE__ */ jsxs7("div", { className: "min-w-0", children: [
3882
- /* @__PURE__ */ jsxs7("p", { className: "truncate text-og-base text-og-fg", children: [
3749
+ children: keyedResults && keyedResults.length ? /* @__PURE__ */ jsx9("ul", { className: "flex flex-col gap-2", children: keyedResults.map(({ key, result }) => /* @__PURE__ */ jsxs6("li", { className: "flex gap-2.5", children: [
3750
+ /* @__PURE__ */ jsx9(GlobeIcon, { className: "mt-0.5 size-3.5 shrink-0 text-og-fg-subtle" }),
3751
+ /* @__PURE__ */ jsxs6("div", { className: "min-w-0", children: [
3752
+ /* @__PURE__ */ jsxs6("p", { className: "truncate text-og-base text-og-fg", children: [
3883
3753
  result.title,
3884
3754
  " ",
3885
- /* @__PURE__ */ jsx10("span", { className: "text-og-fg-subtle", children: result.domain })
3755
+ /* @__PURE__ */ jsx9("span", { className: "text-og-fg-subtle", children: result.domain })
3886
3756
  ] }),
3887
- /* @__PURE__ */ jsx10("p", { className: "text-og-sm leading-5 text-og-fg-muted", children: result.snippet })
3757
+ /* @__PURE__ */ jsx9("p", { className: "text-og-sm leading-5 text-og-fg-muted", children: result.snippet })
3888
3758
  ] })
3889
- ] }, key)) }) : /* @__PURE__ */ jsx10(BodyNote, { children: "results folded into model context \u2014 no list available." })
3759
+ ] }, key)) }) : /* @__PURE__ */ jsx9(BodyNote, { children: "results folded into model context \u2014 no list available." })
3890
3760
  }
3891
3761
  );
3892
3762
  }
@@ -3905,16 +3775,16 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
3905
3775
  const retained = retainedScreenshotMetadata(out);
3906
3776
  const omittedMedia = mediaPreviewFact(out);
3907
3777
  if (item.status === "running") {
3908
- return /* @__PURE__ */ jsx10(
3778
+ return /* @__PURE__ */ jsx9(
3909
3779
  ActivityDisclosure,
3910
3780
  {
3911
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3781
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3912
3782
  iconTone: "running",
3913
3783
  title: `View ${basename(path)}`,
3914
3784
  running: true,
3915
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "reading\u2026" }),
3916
- media: /* @__PURE__ */ jsx10(MediaSkeleton, {}),
3917
- children: /* @__PURE__ */ jsx10(BodyNote, { children: "reading image\u2026" })
3785
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "reading\u2026" }),
3786
+ media: /* @__PURE__ */ jsx9(MediaSkeleton, {}),
3787
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: "reading image\u2026" })
3918
3788
  }
3919
3789
  );
3920
3790
  }
@@ -3924,17 +3794,17 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
3924
3794
  const title = `Viewed ${basename(path)}`;
3925
3795
  if (!retained.available) {
3926
3796
  const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
3927
- return /* @__PURE__ */ jsx10(
3797
+ return /* @__PURE__ */ jsx9(
3928
3798
  ActivityDisclosure,
3929
3799
  {
3930
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3800
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3931
3801
  iconTone: viewFailed ? "failed" : "muted",
3932
3802
  title: `${title} \xB7 ${state}`,
3933
3803
  failed: viewFailed,
3934
3804
  cancelled: viewCancelled,
3935
3805
  preview: `image ${state}`,
3936
- media: /* @__PURE__ */ jsx10(MediaEmpty, {}),
3937
- children: /* @__PURE__ */ jsxs7(BodyNote, { tone: viewFailed ? "error" : void 0, children: [
3806
+ media: /* @__PURE__ */ jsx9(MediaEmpty, {}),
3807
+ children: /* @__PURE__ */ jsxs6(BodyNote, { tone: viewFailed ? "error" : void 0, children: [
3938
3808
  "Image ",
3939
3809
  state,
3940
3810
  ": ",
@@ -3944,7 +3814,7 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
3944
3814
  }
3945
3815
  );
3946
3816
  }
3947
- return /* @__PURE__ */ jsx10(
3817
+ return /* @__PURE__ */ jsx9(
3948
3818
  RetainedSessionImageDisclosure,
3949
3819
  {
3950
3820
  artifact: retained,
@@ -3952,7 +3822,7 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
3952
3822
  title,
3953
3823
  caption: path || title,
3954
3824
  noun: "image",
3955
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3825
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3956
3826
  lightboxLabel: "Image",
3957
3827
  batched: null,
3958
3828
  failed: viewFailed,
@@ -3963,44 +3833,44 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
3963
3833
  const errMatch = VIEW_IMAGE_ERRORS.find((p) => text.includes(p));
3964
3834
  if (errMatch) {
3965
3835
  const tooBig = text.includes("exceeded the allowed size");
3966
- return /* @__PURE__ */ jsx10(
3836
+ return /* @__PURE__ */ jsx9(
3967
3837
  ActivityDisclosure,
3968
3838
  {
3969
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3839
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3970
3840
  iconTone: "failed",
3971
3841
  title: `View ${basename(path)}`,
3972
3842
  chip: { tone: "bad", text: tooBig ? "too large" : "error" },
3973
3843
  preview: text,
3974
- children: /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: text })
3844
+ children: /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: text })
3975
3845
  }
3976
3846
  );
3977
3847
  }
3978
3848
  if (text.startsWith("OpenAI file reference:")) {
3979
- return /* @__PURE__ */ jsx10(
3849
+ return /* @__PURE__ */ jsx9(
3980
3850
  ActivityDisclosure,
3981
3851
  {
3982
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3852
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3983
3853
  iconTone: viewFailed ? "failed" : "muted",
3984
3854
  title: `Viewed ${basename(path)}`,
3985
3855
  failed: viewFailed,
3986
3856
  cancelled: viewCancelled,
3987
3857
  preview: path,
3988
- children: /* @__PURE__ */ jsx10(BodyNote, { children: text })
3858
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: text })
3989
3859
  }
3990
3860
  );
3991
3861
  }
3992
3862
  if (omittedMedia) {
3993
- return /* @__PURE__ */ jsx10(
3863
+ return /* @__PURE__ */ jsx9(
3994
3864
  ActivityDisclosure,
3995
3865
  {
3996
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3866
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
3997
3867
  iconTone: viewFailed ? "failed" : "muted",
3998
3868
  title: `Viewed ${basename(path)} \xB7 image omitted \xB7 not retained`,
3999
3869
  failed: viewFailed,
4000
3870
  cancelled: viewCancelled,
4001
3871
  preview: "inline image omitted \xB7 not retained",
4002
- media: /* @__PURE__ */ jsx10(MediaEmpty, {}),
4003
- children: /* @__PURE__ */ jsxs7(BodyNote, { children: [
3872
+ media: /* @__PURE__ */ jsx9(MediaEmpty, {}),
3873
+ children: /* @__PURE__ */ jsxs6(BodyNote, { children: [
4004
3874
  "The inline ",
4005
3875
  omittedMedia.mediaType,
4006
3876
  " output was omitted from the audit timeline and its source bytes were not retained."
@@ -4009,79 +3879,79 @@ function ViewImageRenderer({ item, loadRetainedScreenshot }) {
4009
3879
  );
4010
3880
  }
4011
3881
  if (text.includes("No image data")) {
4012
- return /* @__PURE__ */ jsx10(
3882
+ return /* @__PURE__ */ jsx9(
4013
3883
  ActivityDisclosure,
4014
3884
  {
4015
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3885
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
4016
3886
  iconTone: viewFailed ? "failed" : "muted",
4017
3887
  title: `Viewed ${basename(path)}`,
4018
3888
  failed: viewFailed,
4019
3889
  cancelled: viewCancelled,
4020
3890
  preview: "(no image)",
4021
- children: /* @__PURE__ */ jsx10(BodyNote, { children: viewFailed ? "view_image failed \u2014 no image data returned." : viewCancelled ? "view_image interrupted." : "(no image) \u2014 the sandbox session returned no image data." })
3891
+ children: /* @__PURE__ */ jsx9(BodyNote, { children: viewFailed ? "view_image failed \u2014 no image data returned." : viewCancelled ? "view_image interrupted." : "(no image) \u2014 the sandbox session returned no image data." })
4022
3892
  }
4023
3893
  );
4024
3894
  }
4025
3895
  if (text.startsWith("data:")) {
4026
- return /* @__PURE__ */ jsx10(
3896
+ return /* @__PURE__ */ jsx9(
4027
3897
  ActivityDisclosure,
4028
3898
  {
4029
- icon: /* @__PURE__ */ jsx10(ImageIcon, { className: ICON_SIZE }),
3899
+ icon: /* @__PURE__ */ jsx9(ImageIcon, { className: ICON_SIZE }),
4030
3900
  iconTone: viewFailed ? "failed" : "accent",
4031
3901
  title: `Viewed ${basename(path)}`,
4032
3902
  failed: viewFailed,
4033
3903
  cancelled: viewCancelled,
4034
- media: /* @__PURE__ */ jsx10(Thumbnail, { src: text, caption: path, alt: path }),
4035
- children: /* @__PURE__ */ jsx10(ScreenshotFigure, { src: text, caption: path, alt: path })
3904
+ media: /* @__PURE__ */ jsx9(Thumbnail, { src: text, caption: path, alt: path }),
3905
+ children: /* @__PURE__ */ jsx9(ScreenshotFigure, { src: text, caption: path, alt: path })
4036
3906
  }
4037
3907
  );
4038
3908
  }
4039
- return /* @__PURE__ */ jsx10(GenericRenderer, { item });
3909
+ return /* @__PURE__ */ jsx9(GenericRenderer, { item });
4040
3910
  }
4041
3911
  function SecretSetRenderer({ item }) {
4042
3912
  const args = parseToolArgs(item.arguments);
4043
3913
  const name = typeof args.name === "string" ? args.name : "variable";
4044
3914
  if (item.status === "running") {
4045
- return /* @__PURE__ */ jsx10(
3915
+ return /* @__PURE__ */ jsx9(
4046
3916
  ActivityDisclosure,
4047
3917
  {
4048
- icon: /* @__PURE__ */ jsx10(KeyRoundIcon, { className: ICON_SIZE }),
3918
+ icon: /* @__PURE__ */ jsx9(KeyRoundIcon, { className: ICON_SIZE }),
4049
3919
  iconTone: "running",
4050
3920
  title: `Set ${name}`,
4051
3921
  running: true,
4052
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "setting\u2026" }),
4053
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
3922
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "setting\u2026" }),
3923
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4054
3924
  }
4055
3925
  );
4056
3926
  }
4057
3927
  if (item.status === "failed") {
4058
3928
  const errorText = typeof item.output === "string" ? item.output : null;
4059
- return /* @__PURE__ */ jsxs7(
3929
+ return /* @__PURE__ */ jsxs6(
4060
3930
  ActivityDisclosure,
4061
3931
  {
4062
- icon: /* @__PURE__ */ jsx10(KeyRoundIcon, { className: ICON_SIZE }),
3932
+ icon: /* @__PURE__ */ jsx9(KeyRoundIcon, { className: ICON_SIZE }),
4063
3933
  iconTone: "failed",
4064
3934
  title: `Set ${name}`,
4065
3935
  failed: true,
4066
3936
  preview: errorText ?? "variable write failed",
4067
3937
  children: [
4068
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4069
- errorText ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: errorText, failed: true }) : /* @__PURE__ */ jsx10(BodyNote, { tone: "error", children: "the tool call failed with no output." })
3938
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
3939
+ errorText ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: errorText, failed: true }) : /* @__PURE__ */ jsx9(BodyNote, { tone: "error", children: "the tool call failed with no output." })
4070
3940
  ]
4071
3941
  }
4072
3942
  );
4073
3943
  }
4074
- return /* @__PURE__ */ jsxs7(
3944
+ return /* @__PURE__ */ jsxs6(
4075
3945
  ActivityDisclosure,
4076
3946
  {
4077
- icon: /* @__PURE__ */ jsx10(KeyRoundIcon, { className: ICON_SIZE }),
3947
+ icon: /* @__PURE__ */ jsx9(KeyRoundIcon, { className: ICON_SIZE }),
4078
3948
  iconTone: "muted",
4079
3949
  title: `Set ${name}`,
4080
3950
  cancelled: item.status === "cancelled",
4081
3951
  preview: "exact value preserved",
4082
3952
  children: [
4083
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4084
- /* @__PURE__ */ jsx10(BodyNote, { children: "The configured value is preserved exactly and available through authorized secret reads." })
3953
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
3954
+ /* @__PURE__ */ jsx9(BodyNote, { children: "The configured value is preserved exactly and available through authorized secret reads." })
4085
3955
  ]
4086
3956
  }
4087
3957
  );
@@ -4174,31 +4044,31 @@ function toolSearchPreview(tools, cancelled) {
4174
4044
  }
4175
4045
  function ToolSearchRenderer({ item }) {
4176
4046
  const query2 = toolSearchQuery(item);
4177
- const icon = /* @__PURE__ */ jsx10(PackageSearchIcon, { className: ICON_SIZE });
4047
+ const icon = /* @__PURE__ */ jsx9(PackageSearchIcon, { className: ICON_SIZE });
4178
4048
  const running = item.status === "running";
4179
4049
  const queryPreview = query2 ? truncatePreview(query2, 64) : "";
4180
4050
  if (running) {
4181
- return /* @__PURE__ */ jsxs7(
4051
+ return /* @__PURE__ */ jsxs6(
4182
4052
  ActivityDisclosure,
4183
4053
  {
4184
4054
  icon,
4185
4055
  iconTone: "running",
4186
4056
  title: "Looking up tools",
4187
4057
  running: true,
4188
- preview: queryPreview ? /* @__PURE__ */ jsx10(RunningPreview, { children: queryPreview }) : /* @__PURE__ */ jsx10(RunningPreview, { children: "Matching capabilities\u2026" }),
4058
+ preview: queryPreview ? /* @__PURE__ */ jsx9(RunningPreview, { children: queryPreview }) : /* @__PURE__ */ jsx9(RunningPreview, { children: "Matching capabilities\u2026" }),
4189
4059
  children: [
4190
- query2 ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
4060
+ query2 ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
4191
4061
  "capability query: ",
4192
4062
  query2
4193
4063
  ] }) : null,
4194
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) })
4064
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) })
4195
4065
  ]
4196
4066
  }
4197
4067
  );
4198
4068
  }
4199
4069
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4200
4070
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4201
- return /* @__PURE__ */ jsxs7(
4071
+ return /* @__PURE__ */ jsxs6(
4202
4072
  ActivityDisclosure,
4203
4073
  {
4204
4074
  icon,
@@ -4207,19 +4077,19 @@ function ToolSearchRenderer({ item }) {
4207
4077
  failed: true,
4208
4078
  preview: truncatePreview(outText, 80) || queryPreview || "Lookup failed",
4209
4079
  children: [
4210
- query2 ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
4080
+ query2 ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
4211
4081
  "capability query: ",
4212
4082
  query2
4213
4083
  ] }) : null,
4214
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) }),
4215
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4084
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) }),
4085
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4216
4086
  ]
4217
4087
  }
4218
4088
  );
4219
4089
  }
4220
4090
  const tools = parseDisclosedTools(item.output);
4221
4091
  const preview = toolSearchPreview(tools, item.status === "cancelled");
4222
- return /* @__PURE__ */ jsxs7(
4092
+ return /* @__PURE__ */ jsxs6(
4223
4093
  ActivityDisclosure,
4224
4094
  {
4225
4095
  icon,
@@ -4228,23 +4098,23 @@ function ToolSearchRenderer({ item }) {
4228
4098
  cancelled: item.status === "cancelled",
4229
4099
  preview,
4230
4100
  children: [
4231
- query2 ? /* @__PURE__ */ jsxs7(BodyNote, { children: [
4101
+ query2 ? /* @__PURE__ */ jsxs6(BodyNote, { children: [
4232
4102
  "capability query: ",
4233
4103
  query2
4234
4104
  ] }) : null,
4235
- tools && tools.length > 0 ? /* @__PURE__ */ jsxs7("ul", { className: "grid gap-1.5", children: [
4236
- tools.slice(0, 12).map((tool) => /* @__PURE__ */ jsxs7("li", { className: "flex min-w-0 items-baseline gap-2", children: [
4237
- tool.source ? /* @__PURE__ */ jsx10("span", { className: "shrink-0 text-og-xs text-og-fg-subtle", children: tool.source }) : null,
4238
- /* @__PURE__ */ jsx10("span", { className: "truncate font-mono text-og-sm text-og-fg", children: tool.leaf })
4105
+ tools && tools.length > 0 ? /* @__PURE__ */ jsxs6("ul", { className: "grid gap-1.5", children: [
4106
+ tools.slice(0, 12).map((tool) => /* @__PURE__ */ jsxs6("li", { className: "flex min-w-0 items-baseline gap-2", children: [
4107
+ tool.source ? /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-og-xs text-og-fg-subtle", children: tool.source }) : null,
4108
+ /* @__PURE__ */ jsx9("span", { className: "truncate font-mono text-og-sm text-og-fg", children: tool.leaf })
4239
4109
  ] }, tool.name)),
4240
- tools.length > 12 ? /* @__PURE__ */ jsxs7("li", { className: "text-og-xs text-og-fg-muted", children: [
4110
+ tools.length > 12 ? /* @__PURE__ */ jsxs6("li", { className: "text-og-xs text-og-fg-muted", children: [
4241
4111
  "+",
4242
4112
  tools.length - 12,
4243
4113
  " more"
4244
4114
  ] }) : null
4245
- ] }) : tools && tools.length === 0 ? /* @__PURE__ */ jsx10(BodyNote, { children: "no deferred tools matched this capability query." }) : null,
4246
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) }),
4247
- tools == null && outText ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText }) : null
4115
+ ] }) : tools && tools.length === 0 ? /* @__PURE__ */ jsx9(BodyNote, { children: "no deferred tools matched this capability query." }) : null,
4116
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: parseToolArgs(item.arguments) }),
4117
+ tools == null && outText ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText }) : null
4248
4118
  ]
4249
4119
  }
4250
4120
  );
@@ -4255,52 +4125,52 @@ function DocsSearchRenderer({ item }) {
4255
4125
  const title = query2 ? `Search \u201C${truncatePreview(query2, 48)}\u201D` : toolDisplayName(item.name);
4256
4126
  const running = item.status === "running";
4257
4127
  if (running) {
4258
- return /* @__PURE__ */ jsx10(
4128
+ return /* @__PURE__ */ jsx9(
4259
4129
  ActivityDisclosure,
4260
4130
  {
4261
- icon: /* @__PURE__ */ jsx10(FileSearchIcon, { className: ICON_SIZE }),
4131
+ icon: /* @__PURE__ */ jsx9(FileSearchIcon, { className: ICON_SIZE }),
4262
4132
  iconTone: "running",
4263
4133
  title,
4264
4134
  running: true,
4265
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "Searching\u2026" }),
4266
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4135
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "Searching\u2026" }),
4136
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4267
4137
  }
4268
4138
  );
4269
4139
  }
4270
4140
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4271
4141
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4272
- return /* @__PURE__ */ jsxs7(
4142
+ return /* @__PURE__ */ jsxs6(
4273
4143
  ActivityDisclosure,
4274
4144
  {
4275
- icon: /* @__PURE__ */ jsx10(FileSearchIcon, { className: ICON_SIZE }),
4145
+ icon: /* @__PURE__ */ jsx9(FileSearchIcon, { className: ICON_SIZE }),
4276
4146
  iconTone: "failed",
4277
4147
  title,
4278
4148
  failed: true,
4279
4149
  preview: truncatePreview(outText, 80) || "Search failed",
4280
4150
  children: [
4281
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4282
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4151
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4152
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4283
4153
  ]
4284
4154
  }
4285
4155
  );
4286
4156
  }
4287
4157
  const hits = parseSearchHits(outText);
4288
4158
  const preview = item.status === "cancelled" ? void 0 : hits ? hits.length === 0 ? "No hits" : `${hits.length} hit${hits.length === 1 ? "" : "s"}` : "Done";
4289
- return /* @__PURE__ */ jsxs7(
4159
+ return /* @__PURE__ */ jsxs6(
4290
4160
  ActivityDisclosure,
4291
4161
  {
4292
- icon: /* @__PURE__ */ jsx10(FileSearchIcon, { className: ICON_SIZE }),
4162
+ icon: /* @__PURE__ */ jsx9(FileSearchIcon, { className: ICON_SIZE }),
4293
4163
  iconTone: "muted",
4294
4164
  title,
4295
4165
  cancelled: item.status === "cancelled",
4296
4166
  preview,
4297
4167
  children: [
4298
- hits && hits.length > 0 ? /* @__PURE__ */ jsx10("ul", { className: "grid gap-2", children: hits.slice(0, 8).map((hit) => /* @__PURE__ */ jsxs7("li", { className: "min-w-0", children: [
4299
- /* @__PURE__ */ jsx10("div", { className: "truncate text-og-sm font-medium text-og-fg", children: hit.title }),
4300
- hit.snippet ? /* @__PURE__ */ jsx10("div", { className: "mt-0.5 line-clamp-2 text-og-xs text-og-fg-muted", children: hit.snippet }) : null
4168
+ hits && hits.length > 0 ? /* @__PURE__ */ jsx9("ul", { className: "grid gap-2", children: hits.slice(0, 8).map((hit) => /* @__PURE__ */ jsxs6("li", { className: "min-w-0", children: [
4169
+ /* @__PURE__ */ jsx9("div", { className: "truncate text-og-sm font-medium text-og-fg", children: hit.title }),
4170
+ hit.snippet ? /* @__PURE__ */ jsx9("div", { className: "mt-0.5 line-clamp-2 text-og-xs text-og-fg-muted", children: hit.snippet }) : null
4301
4171
  ] }, `${hit.title}\0${hit.snippet}`)) }) : null,
4302
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4303
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText })
4172
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4173
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText })
4304
4174
  ]
4305
4175
  }
4306
4176
  );
@@ -4310,23 +4180,23 @@ function SetSessionTitleRenderer({ item }) {
4310
4180
  const titleArg = typeof args.title === "string" ? args.title.trim() : "";
4311
4181
  const display = toolDisplayName(item.name);
4312
4182
  const previewTitle = titleArg ? truncatePreview(titleArg, 72) : "";
4313
- const icon = /* @__PURE__ */ jsx10(MessagesSquareIcon, { className: ICON_SIZE });
4183
+ const icon = /* @__PURE__ */ jsx9(MessagesSquareIcon, { className: ICON_SIZE });
4314
4184
  if (item.status === "running") {
4315
- return /* @__PURE__ */ jsx10(
4185
+ return /* @__PURE__ */ jsx9(
4316
4186
  ActivityDisclosure,
4317
4187
  {
4318
4188
  icon,
4319
4189
  iconTone: "running",
4320
4190
  title: display,
4321
4191
  running: true,
4322
- preview: previewTitle ? /* @__PURE__ */ jsx10(RunningPreview, { children: previewTitle }) : /* @__PURE__ */ jsx10(RunningPreview, { children: "Setting title\u2026" }),
4323
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4192
+ preview: previewTitle ? /* @__PURE__ */ jsx9(RunningPreview, { children: previewTitle }) : /* @__PURE__ */ jsx9(RunningPreview, { children: "Setting title\u2026" }),
4193
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4324
4194
  }
4325
4195
  );
4326
4196
  }
4327
4197
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4328
4198
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4329
- return /* @__PURE__ */ jsxs7(
4199
+ return /* @__PURE__ */ jsxs6(
4330
4200
  ActivityDisclosure,
4331
4201
  {
4332
4202
  icon,
@@ -4335,8 +4205,8 @@ function SetSessionTitleRenderer({ item }) {
4335
4205
  failed: true,
4336
4206
  preview: truncatePreview(outText, 80) || "Rename failed",
4337
4207
  children: [
4338
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4339
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4208
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4209
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4340
4210
  ]
4341
4211
  }
4342
4212
  );
@@ -4351,7 +4221,7 @@ function SetSessionTitleRenderer({ item }) {
4351
4221
  }
4352
4222
  }
4353
4223
  }
4354
- return /* @__PURE__ */ jsxs7(
4224
+ return /* @__PURE__ */ jsxs6(
4355
4225
  ActivityDisclosure,
4356
4226
  {
4357
4227
  icon,
@@ -4360,8 +4230,8 @@ function SetSessionTitleRenderer({ item }) {
4360
4230
  cancelled: item.status === "cancelled",
4361
4231
  preview: item.status === "cancelled" ? void 0 : settledTitle || void 0,
4362
4232
  children: [
4363
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4364
- outText ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText }) : null
4233
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4234
+ outText ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText }) : null
4365
4235
  ]
4366
4236
  }
4367
4237
  );
@@ -4388,46 +4258,46 @@ function MemoryProposeRenderer({ item }) {
4388
4258
  const title = "Propose memory";
4389
4259
  const running = item.status === "running";
4390
4260
  if (running) {
4391
- return /* @__PURE__ */ jsx10(
4261
+ return /* @__PURE__ */ jsx9(
4392
4262
  ActivityDisclosure,
4393
4263
  {
4394
- icon: /* @__PURE__ */ jsx10(BrainCircuitIcon, { className: ICON_SIZE }),
4264
+ icon: /* @__PURE__ */ jsx9(BrainCircuitIcon, { className: ICON_SIZE }),
4395
4265
  iconTone: "running",
4396
4266
  title,
4397
4267
  running: true,
4398
- preview: /* @__PURE__ */ jsx10(RunningPreview, { children: "Proposing\u2026" }),
4399
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4268
+ preview: /* @__PURE__ */ jsx9(RunningPreview, { children: "Proposing\u2026" }),
4269
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4400
4270
  }
4401
4271
  );
4402
4272
  }
4403
4273
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4404
4274
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4405
- return /* @__PURE__ */ jsxs7(
4275
+ return /* @__PURE__ */ jsxs6(
4406
4276
  ActivityDisclosure,
4407
4277
  {
4408
- icon: /* @__PURE__ */ jsx10(BrainCircuitIcon, { className: ICON_SIZE }),
4278
+ icon: /* @__PURE__ */ jsx9(BrainCircuitIcon, { className: ICON_SIZE }),
4409
4279
  iconTone: "failed",
4410
4280
  title,
4411
4281
  failed: true,
4412
4282
  preview: truncatePreview(outText, 80) || "Propose failed",
4413
4283
  children: [
4414
- text ? /* @__PURE__ */ jsx10(BodyNote, { children: text }) : null,
4415
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4284
+ text ? /* @__PURE__ */ jsx9(BodyNote, { children: text }) : null,
4285
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4416
4286
  ]
4417
4287
  }
4418
4288
  );
4419
4289
  }
4420
- return /* @__PURE__ */ jsxs7(
4290
+ return /* @__PURE__ */ jsxs6(
4421
4291
  ActivityDisclosure,
4422
4292
  {
4423
- icon: /* @__PURE__ */ jsx10(BrainCircuitIcon, { className: ICON_SIZE }),
4293
+ icon: /* @__PURE__ */ jsx9(BrainCircuitIcon, { className: ICON_SIZE }),
4424
4294
  iconTone: "muted",
4425
4295
  title,
4426
4296
  cancelled: item.status === "cancelled",
4427
4297
  preview: text ? truncatePreview(text, 90) : "Done",
4428
4298
  children: [
4429
- text ? /* @__PURE__ */ jsx10(BodyNote, { children: text }) : null,
4430
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText })
4299
+ text ? /* @__PURE__ */ jsx9(BodyNote, { children: text }) : null,
4300
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText })
4431
4301
  ]
4432
4302
  }
4433
4303
  );
@@ -4453,24 +4323,24 @@ function askToolPreview(args) {
4453
4323
  function AskRenderer({ item }) {
4454
4324
  const args = parseToolArgs(item.arguments);
4455
4325
  const preview = askToolPreview(args);
4456
- const icon = /* @__PURE__ */ jsx10(MessageCircleQuestionIcon2, { className: ICON_SIZE });
4326
+ const icon = /* @__PURE__ */ jsx9(MessageCircleQuestionIcon2, { className: ICON_SIZE });
4457
4327
  const title = "Ask";
4458
4328
  if (item.status === "running") {
4459
- return /* @__PURE__ */ jsx10(
4329
+ return /* @__PURE__ */ jsx9(
4460
4330
  ActivityDisclosure,
4461
4331
  {
4462
4332
  icon,
4463
4333
  iconTone: "running",
4464
4334
  title,
4465
4335
  running: true,
4466
- preview: preview ? /* @__PURE__ */ jsx10(RunningPreview, { children: preview }) : /* @__PURE__ */ jsx10(RunningPreview, { children: "Waiting\u2026" }),
4467
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4336
+ preview: preview ? /* @__PURE__ */ jsx9(RunningPreview, { children: preview }) : /* @__PURE__ */ jsx9(RunningPreview, { children: "Waiting\u2026" }),
4337
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4468
4338
  }
4469
4339
  );
4470
4340
  }
4471
4341
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4472
4342
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4473
- return /* @__PURE__ */ jsxs7(
4343
+ return /* @__PURE__ */ jsxs6(
4474
4344
  ActivityDisclosure,
4475
4345
  {
4476
4346
  icon,
@@ -4479,13 +4349,13 @@ function AskRenderer({ item }) {
4479
4349
  chip: { tone: "bad", text: "error" },
4480
4350
  preview: truncatePreview(outText, 80) || preview || "Error",
4481
4351
  children: [
4482
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4483
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4352
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4353
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4484
4354
  ]
4485
4355
  }
4486
4356
  );
4487
4357
  }
4488
- return /* @__PURE__ */ jsxs7(
4358
+ return /* @__PURE__ */ jsxs6(
4489
4359
  ActivityDisclosure,
4490
4360
  {
4491
4361
  icon,
@@ -4494,8 +4364,8 @@ function AskRenderer({ item }) {
4494
4364
  cancelled: item.status === "cancelled",
4495
4365
  preview: item.status === "cancelled" ? void 0 : preview ?? void 0,
4496
4366
  children: [
4497
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4498
- outText ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText }) : null
4367
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4368
+ outText ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText }) : null
4499
4369
  ]
4500
4370
  }
4501
4371
  );
@@ -4531,23 +4401,23 @@ function RunOnRenderer({ item }) {
4531
4401
  const targetName = runOnTargetName(item.output);
4532
4402
  const title = targetName ? `Run on ${targetName}` : "Run on";
4533
4403
  const opPreview = runOnOpPreview(parsedArgs);
4534
- const icon = /* @__PURE__ */ jsx10(ServerIcon, { className: ICON_SIZE });
4404
+ const icon = /* @__PURE__ */ jsx9(ServerIcon, { className: ICON_SIZE });
4535
4405
  if (item.status === "running") {
4536
- return /* @__PURE__ */ jsx10(
4406
+ return /* @__PURE__ */ jsx9(
4537
4407
  ActivityDisclosure,
4538
4408
  {
4539
4409
  icon,
4540
4410
  iconTone: "running",
4541
4411
  title,
4542
4412
  running: true,
4543
- preview: opPreview ? /* @__PURE__ */ jsx10(RunningPreview, { children: opPreview }) : /* @__PURE__ */ jsx10(RunningPreview, { children: "Running\u2026" }),
4544
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4413
+ preview: opPreview ? /* @__PURE__ */ jsx9(RunningPreview, { children: opPreview }) : /* @__PURE__ */ jsx9(RunningPreview, { children: "Running\u2026" }),
4414
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4545
4415
  }
4546
4416
  );
4547
4417
  }
4548
4418
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4549
4419
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4550
- return /* @__PURE__ */ jsxs7(
4420
+ return /* @__PURE__ */ jsxs6(
4551
4421
  ActivityDisclosure,
4552
4422
  {
4553
4423
  icon,
@@ -4556,13 +4426,13 @@ function RunOnRenderer({ item }) {
4556
4426
  chip: { tone: "bad", text: "error" },
4557
4427
  preview: truncatePreview(outText, 80) || opPreview || "Error",
4558
4428
  children: [
4559
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4560
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4429
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4430
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4561
4431
  ]
4562
4432
  }
4563
4433
  );
4564
4434
  }
4565
- return /* @__PURE__ */ jsxs7(
4435
+ return /* @__PURE__ */ jsxs6(
4566
4436
  ActivityDisclosure,
4567
4437
  {
4568
4438
  icon,
@@ -4571,8 +4441,8 @@ function RunOnRenderer({ item }) {
4571
4441
  cancelled: item.status === "cancelled",
4572
4442
  preview: item.status === "cancelled" ? void 0 : opPreview ?? void 0,
4573
4443
  children: [
4574
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4575
- outText ? /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText }) : null
4444
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4445
+ outText ? /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText }) : null
4576
4446
  ]
4577
4447
  }
4578
4448
  );
@@ -4581,24 +4451,24 @@ function GenericRenderer({ item }) {
4581
4451
  const running = item.status === "running";
4582
4452
  const args = parseToolArgs(item.arguments);
4583
4453
  const display = toolDisplayName(item.name);
4584
- const icon = /* @__PURE__ */ jsx10(GenericToolIcon, { name: item.name });
4454
+ const icon = /* @__PURE__ */ jsx9(GenericToolIcon, { name: item.name });
4585
4455
  const goalPreview = goalToolPreview(item.name, args);
4586
4456
  if (running) {
4587
- return /* @__PURE__ */ jsx10(
4457
+ return /* @__PURE__ */ jsx9(
4588
4458
  ActivityDisclosure,
4589
4459
  {
4590
4460
  icon,
4591
4461
  iconTone: "running",
4592
4462
  title: display,
4593
4463
  running: true,
4594
- preview: goalPreview ?? /* @__PURE__ */ jsx10(RunningPreview, { children: "Running\u2026" }),
4595
- children: /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args })
4464
+ preview: goalPreview ?? /* @__PURE__ */ jsx9(RunningPreview, { children: "Running\u2026" }),
4465
+ children: /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args })
4596
4466
  }
4597
4467
  );
4598
4468
  }
4599
4469
  const { text: outText, isError } = unwrapMcpOutput(item.output);
4600
4470
  if ((isError || item.status === "failed") && item.status !== "cancelled") {
4601
- return /* @__PURE__ */ jsxs7(
4471
+ return /* @__PURE__ */ jsxs6(
4602
4472
  ActivityDisclosure,
4603
4473
  {
4604
4474
  icon,
@@ -4607,13 +4477,13 @@ function GenericRenderer({ item }) {
4607
4477
  chip: { tone: "bad", text: "error" },
4608
4478
  preview: truncatePreview(outText, 80) || "Error",
4609
4479
  children: [
4610
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4611
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Error", value: outText, failed: true })
4480
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4481
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Error", value: outText, failed: true })
4612
4482
  ]
4613
4483
  }
4614
4484
  );
4615
4485
  }
4616
- return /* @__PURE__ */ jsxs7(
4486
+ return /* @__PURE__ */ jsxs6(
4617
4487
  ActivityDisclosure,
4618
4488
  {
4619
4489
  icon,
@@ -4622,8 +4492,8 @@ function GenericRenderer({ item }) {
4622
4492
  cancelled: item.status === "cancelled",
4623
4493
  preview: item.status === "cancelled" ? void 0 : goalPreview ?? "Done",
4624
4494
  children: [
4625
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Arguments", value: args }),
4626
- /* @__PURE__ */ jsx10(PayloadBlock, { label: "Result", value: outText })
4495
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Arguments", value: args }),
4496
+ /* @__PURE__ */ jsx9(PayloadBlock, { label: "Result", value: outText })
4627
4497
  ]
4628
4498
  }
4629
4499
  );
@@ -4650,7 +4520,7 @@ function truncatePreview(text, max) {
4650
4520
  function GenericToolIcon({ name }) {
4651
4521
  const leaf = mcpToolLeaf(name);
4652
4522
  const Icon = leaf === "request_human_input" ? MessageCircleQuestionIcon2 : leaf.startsWith("goal_") ? TargetIcon : leaf.startsWith("memory_") || leaf === "preference_registry_summary" || leaf === "preference_registry_get" ? BrainCircuitIcon : leaf.startsWith("session_") || leaf === "sessions_list" || leaf === "set_session_title" || leaf === "set_other_session_title" ? MessagesSquareIcon : leaf.startsWith("sandbox") || leaf === "sandboxes_list" || leaf === "run_on" ? ServerIcon : leaf.startsWith("rig_") ? ServerCogIcon : leaf.startsWith("scheduled_") ? CalendarClockIcon : leaf.startsWith("artifacts_") ? PanelsTopLeftIcon : leaf.startsWith("social_") ? Share2Icon : leaf.startsWith("slack_") ? MessageSquareIcon : leaf.startsWith("github_") ? FolderGitIcon : leaf.startsWith("variable_") ? BoxIcon : leaf.startsWith("environment_") ? KeyRoundIcon : leaf.includes("document") || leaf.includes("knowledge") || leaf === "list_document_bases" ? FileSearchIcon : leaf === "tool_search" ? PackageSearchIcon : leaf === "load_skill" ? PlugIcon : WrenchIcon;
4653
- return /* @__PURE__ */ jsx10(Icon, { className: ICON_SIZE });
4523
+ return /* @__PURE__ */ jsx9(Icon, { className: ICON_SIZE });
4654
4524
  }
4655
4525
  var BASE_ENTRIES = [
4656
4526
  // Provider-native items carry `raw.type` on the wire — this is their source of
@@ -4697,8 +4567,8 @@ function createDefaultToolRegistry(options = {}) {
4697
4567
 
4698
4568
  // src/components/copy-button.tsx
4699
4569
  import { CheckIcon as CheckIcon2, CopyIcon } from "lucide-react";
4700
- import { useEffect as useEffect7, useRef as useRef5, useState as useState9 } from "react";
4701
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
4570
+ import { useEffect as useEffect7, useRef as useRef5, useState as useState8 } from "react";
4571
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
4702
4572
  var COPIED_MS = 1600;
4703
4573
  function CopyButton({
4704
4574
  text,
@@ -4706,8 +4576,8 @@ function CopyButton({
4706
4576
  className,
4707
4577
  reveal = "group-hover"
4708
4578
  }) {
4709
- const [copied, setCopied] = useState9(false);
4710
- const [tipOpen, setTipOpen] = useState9(false);
4579
+ const [copied, setCopied] = useState8(false);
4580
+ const [tipOpen, setTipOpen] = useState8(false);
4711
4581
  const timerRef = useRef5(null);
4712
4582
  useEffect7(() => {
4713
4583
  return () => {
@@ -4741,7 +4611,7 @@ function CopyButton({
4741
4611
  }
4742
4612
  };
4743
4613
  const tip = copied ? "Copied" : label;
4744
- return /* @__PURE__ */ jsxs8(
4614
+ return /* @__PURE__ */ jsxs7(
4745
4615
  Tooltip,
4746
4616
  {
4747
4617
  open: copied ? true : tipOpen,
@@ -4751,7 +4621,7 @@ function CopyButton({
4751
4621
  }
4752
4622
  },
4753
4623
  children: [
4754
- /* @__PURE__ */ jsx11(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx11(
4624
+ /* @__PURE__ */ jsx10(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx10(
4755
4625
  "button",
4756
4626
  {
4757
4627
  type: "button",
@@ -4768,10 +4638,10 @@ function CopyButton({
4768
4638
  copied && "opacity-100 text-og-accent",
4769
4639
  className
4770
4640
  ),
4771
- children: copied ? /* @__PURE__ */ jsx11(CheckIcon2, { className: "size-3.5", "aria-hidden": true }) : /* @__PURE__ */ jsx11(CopyIcon, { className: "size-3.5", "aria-hidden": true })
4641
+ children: copied ? /* @__PURE__ */ jsx10(CheckIcon2, { className: "size-3.5", "aria-hidden": true }) : /* @__PURE__ */ jsx10(CopyIcon, { className: "size-3.5", "aria-hidden": true })
4772
4642
  }
4773
4643
  ) }),
4774
- /* @__PURE__ */ jsx11(TooltipContent, { side: "top", children: tip })
4644
+ /* @__PURE__ */ jsx10(TooltipContent, { side: "top", children: tip })
4775
4645
  ]
4776
4646
  }
4777
4647
  );
@@ -4785,11 +4655,11 @@ function CopyHoverFrame({
4785
4655
  trailing
4786
4656
  }) {
4787
4657
  if (copyText.trim().length === 0) {
4788
- return /* @__PURE__ */ jsx11("div", { className, children });
4658
+ return /* @__PURE__ */ jsx10("div", { className, children });
4789
4659
  }
4790
- return /* @__PURE__ */ jsxs8("div", { className: cn("group/copy", className), children: [
4660
+ return /* @__PURE__ */ jsxs7("div", { className: cn("group/copy", className), children: [
4791
4661
  children,
4792
- /* @__PURE__ */ jsxs8(
4662
+ /* @__PURE__ */ jsxs7(
4793
4663
  "div",
4794
4664
  {
4795
4665
  className: cn(
@@ -4797,7 +4667,7 @@ function CopyHoverFrame({
4797
4667
  align === "end" ? "justify-end" : "justify-start"
4798
4668
  ),
4799
4669
  children: [
4800
- /* @__PURE__ */ jsx11(CopyButton, { text: copyText, label, reveal: "group-hover" }),
4670
+ /* @__PURE__ */ jsx10(CopyButton, { text: copyText, label, reveal: "group-hover" }),
4801
4671
  trailing
4802
4672
  ]
4803
4673
  }
@@ -4811,10 +4681,10 @@ import {
4811
4681
  isValidElement,
4812
4682
  memo,
4813
4683
  useEffect as useEffect8,
4814
- useMemo as useMemo4,
4684
+ useMemo as useMemo3,
4815
4685
  useReducer,
4816
4686
  useRef as useRef6,
4817
- useState as useState10
4687
+ useState as useState9
4818
4688
  } from "react";
4819
4689
  import ReactMarkdown, {
4820
4690
  defaultUrlTransform
@@ -5101,9 +4971,9 @@ function rehypeStreamReveal(options) {
5101
4971
  }
5102
4972
 
5103
4973
  // src/components/markdown.tsx
5104
- import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
4974
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
5105
4975
  var baseComponents = {
5106
- h1: ({ children, ...props }) => /* @__PURE__ */ jsx12(
4976
+ h1: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5107
4977
  "h1",
5108
4978
  {
5109
4979
  className: "mt-5 mb-2.5 text-xl font-semibold tracking-tight text-og-fg first:mt-0",
@@ -5111,8 +4981,8 @@ var baseComponents = {
5111
4981
  children
5112
4982
  }
5113
4983
  ),
5114
- h2: ({ children, ...props }) => /* @__PURE__ */ jsx12("h2", { className: "mt-5 mb-2 text-lg font-semibold tracking-tight text-og-fg first:mt-0", ...props, children }),
5115
- h3: ({ children, ...props }) => /* @__PURE__ */ jsx12(
4984
+ h2: ({ children, ...props }) => /* @__PURE__ */ jsx11("h2", { className: "mt-5 mb-2 text-lg font-semibold tracking-tight text-og-fg first:mt-0", ...props, children }),
4985
+ h3: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5116
4986
  "h3",
5117
4987
  {
5118
4988
  className: "mt-4 mb-1.5 text-og-md font-semibold tracking-tight text-og-fg first:mt-0",
@@ -5120,7 +4990,7 @@ var baseComponents = {
5120
4990
  children
5121
4991
  }
5122
4992
  ),
5123
- h4: ({ children, ...props }) => /* @__PURE__ */ jsx12(
4993
+ h4: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5124
4994
  "h4",
5125
4995
  {
5126
4996
  className: "mt-4 mb-1.5 text-og-sm font-semibold uppercase tracking-[0.04em] text-og-fg-muted first:mt-0",
@@ -5128,10 +4998,10 @@ var baseComponents = {
5128
4998
  children
5129
4999
  }
5130
5000
  ),
5131
- p: ({ children, ...props }) => /* @__PURE__ */ jsx12("p", { className: "my-2.5 leading-7 first:mt-0 last:mb-0", ...props, children }),
5132
- strong: ({ children, ...props }) => /* @__PURE__ */ jsx12("strong", { className: "font-semibold text-og-fg", ...props, children }),
5133
- em: ({ children, ...props }) => /* @__PURE__ */ jsx12("em", { className: "italic", ...props, children }),
5134
- ul: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5001
+ p: ({ children, ...props }) => /* @__PURE__ */ jsx11("p", { className: "my-2.5 leading-7 first:mt-0 last:mb-0", ...props, children }),
5002
+ strong: ({ children, ...props }) => /* @__PURE__ */ jsx11("strong", { className: "font-semibold text-og-fg", ...props, children }),
5003
+ em: ({ children, ...props }) => /* @__PURE__ */ jsx11("em", { className: "italic", ...props, children }),
5004
+ ul: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5135
5005
  "ul",
5136
5006
  {
5137
5007
  className: "my-2.5 ml-5 flex list-disc flex-col gap-1 marker:text-og-fg-subtle first:mt-0 last:mb-0",
@@ -5139,7 +5009,7 @@ var baseComponents = {
5139
5009
  children
5140
5010
  }
5141
5011
  ),
5142
- ol: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5012
+ ol: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5143
5013
  "ol",
5144
5014
  {
5145
5015
  className: "my-2.5 ml-5 flex list-decimal flex-col gap-1 marker:text-og-fg-subtle first:mt-0 last:mb-0",
@@ -5150,7 +5020,7 @@ var baseComponents = {
5150
5020
  // GFM task-list items carry a leading checkbox <input>; `list-none` + a
5151
5021
  // negative margin pull the checkbox back to the bullet column so it aligns
5152
5022
  // with the text.
5153
- li: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5023
+ li: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5154
5024
  "li",
5155
5025
  {
5156
5026
  className: "leading-7 marker:text-og-fg-subtle [&>ul]:my-1 [&>ol]:my-1 [&:has(>input)]:list-none [&:has(>input)]:-ml-5",
@@ -5158,7 +5028,7 @@ var baseComponents = {
5158
5028
  children
5159
5029
  }
5160
5030
  ),
5161
- input: ({ type, ...props }) => type === "checkbox" ? /* @__PURE__ */ jsx12(
5031
+ input: ({ type, ...props }) => type === "checkbox" ? /* @__PURE__ */ jsx11(
5162
5032
  "input",
5163
5033
  {
5164
5034
  ...props,
@@ -5166,8 +5036,8 @@ var baseComponents = {
5166
5036
  disabled: true,
5167
5037
  className: "mr-2 size-3.5 translate-y-[2px] cursor-default accent-og-accent align-baseline"
5168
5038
  }
5169
- ) : /* @__PURE__ */ jsx12("input", { type, ...props }),
5170
- blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5039
+ ) : /* @__PURE__ */ jsx11("input", { type, ...props }),
5040
+ blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5171
5041
  "blockquote",
5172
5042
  {
5173
5043
  className: "my-3 border-l-2 border-og-border-strong pl-3.5 text-og-fg-muted [&>p]:my-1.5 first:mt-0 last:mb-0",
@@ -5175,11 +5045,11 @@ var baseComponents = {
5175
5045
  children
5176
5046
  }
5177
5047
  ),
5178
- hr: (props) => /* @__PURE__ */ jsx12("hr", { className: "my-4 border-0 border-t border-og-border", ...props }),
5048
+ hr: (props) => /* @__PURE__ */ jsx11("hr", { className: "my-4 border-0 border-t border-og-border", ...props }),
5179
5049
  // Inline `code` vs fenced code blocks. react-markdown v10 no longer passes an
5180
5050
  // `inline` flag; a fenced block is a <code> whose parent is <pre> (styled by
5181
5051
  // the `pre` renderer), so a `code` reaching here is treated as inline.
5182
- code: ({ children, className: _className, ...props }) => /* @__PURE__ */ jsx12(
5052
+ code: ({ children, className: _className, ...props }) => /* @__PURE__ */ jsx11(
5183
5053
  "code",
5184
5054
  {
5185
5055
  className: "rounded-og-xs bg-og-surface-1 px-1 py-0.5 font-og-mono text-og-sm text-og-fg",
@@ -5188,11 +5058,11 @@ var baseComponents = {
5188
5058
  }
5189
5059
  ),
5190
5060
  // Fenced code — quiet mono block (no card / no nested vertical scroll).
5191
- pre: ({ children }) => /* @__PURE__ */ jsx12(MarkdownCodeBlock, { children }),
5061
+ pre: ({ children }) => /* @__PURE__ */ jsx11(MarkdownCodeBlock, { children }),
5192
5062
  // Tables stay unboxed (hairline rules); hover reveals a TSV copy control.
5193
- table: ({ children, ...props }) => /* @__PURE__ */ jsx12(MarkdownTable, { ...props, children }),
5194
- thead: ({ children, ...props }) => /* @__PURE__ */ jsx12("thead", { ...props, children }),
5195
- th: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5063
+ table: ({ children, ...props }) => /* @__PURE__ */ jsx11(MarkdownTable, { ...props, children }),
5064
+ thead: ({ children, ...props }) => /* @__PURE__ */ jsx11("thead", { ...props, children }),
5065
+ th: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5196
5066
  "th",
5197
5067
  {
5198
5068
  className: "border-b border-og-border px-0 py-1.5 pr-4 text-left font-medium text-og-fg first:pl-0",
@@ -5200,7 +5070,7 @@ var baseComponents = {
5200
5070
  children
5201
5071
  }
5202
5072
  ),
5203
- td: ({ children, ...props }) => /* @__PURE__ */ jsx12(
5073
+ td: ({ children, ...props }) => /* @__PURE__ */ jsx11(
5204
5074
  "td",
5205
5075
  {
5206
5076
  className: "border-b border-og-border/70 px-0 py-1.5 pr-4 align-top text-og-fg-muted [tr:last-child>&]:border-b-0",
@@ -5208,7 +5078,7 @@ var baseComponents = {
5208
5078
  children
5209
5079
  }
5210
5080
  ),
5211
- img: ({ alt, src, ...props }) => src ? /* @__PURE__ */ jsx12(
5081
+ img: ({ alt, src, ...props }) => src ? /* @__PURE__ */ jsx11(
5212
5082
  "img",
5213
5083
  {
5214
5084
  alt: alt ?? "",
@@ -5216,7 +5086,7 @@ var baseComponents = {
5216
5086
  className: "my-3 max-w-full rounded-og-md border border-og-border",
5217
5087
  ...props
5218
5088
  }
5219
- ) : alt ? /* @__PURE__ */ jsx12("span", { className: "text-og-fg-subtle", "aria-disabled": "true", children: alt }) : null
5089
+ ) : alt ? /* @__PURE__ */ jsx11("span", { className: "text-og-fg-subtle", "aria-disabled": "true", children: alt }) : null
5220
5090
  };
5221
5091
  var MARKDOWN_LINK_CLASS = "break-words font-medium text-og-accent-strong underline-offset-2 hover:underline";
5222
5092
  function markdownComponents(onSandboxFile) {
@@ -5225,10 +5095,10 @@ function markdownComponents(onSandboxFile) {
5225
5095
  a: ({ children, href, ...props }) => {
5226
5096
  const location = sandboxFileLocationFromHref(href);
5227
5097
  if (location !== null) {
5228
- return /* @__PURE__ */ jsx12(SandboxMarkdownLink, { location, onSandboxFile, children });
5098
+ return /* @__PURE__ */ jsx11(SandboxMarkdownLink, { location, onSandboxFile, children });
5229
5099
  }
5230
5100
  if (isSandboxHref(href) || !href) {
5231
- return /* @__PURE__ */ jsx12(
5101
+ return /* @__PURE__ */ jsx11(
5232
5102
  "span",
5233
5103
  {
5234
5104
  className: "break-words font-medium text-og-fg-subtle underline decoration-dotted underline-offset-2",
@@ -5238,7 +5108,7 @@ function markdownComponents(onSandboxFile) {
5238
5108
  }
5239
5109
  );
5240
5110
  }
5241
- return /* @__PURE__ */ jsx12(
5111
+ return /* @__PURE__ */ jsx11(
5242
5112
  "a",
5243
5113
  {
5244
5114
  className: MARKDOWN_LINK_CLASS,
@@ -5257,10 +5127,10 @@ function SandboxMarkdownLink({
5257
5127
  onSandboxFile,
5258
5128
  children
5259
5129
  }) {
5260
- const [state, setState] = useState10("idle");
5130
+ const [state, setState] = useState9("idle");
5261
5131
  const { path, line } = location;
5262
5132
  if (!onSandboxFile) {
5263
- return /* @__PURE__ */ jsx12(
5133
+ return /* @__PURE__ */ jsx11(
5264
5134
  "span",
5265
5135
  {
5266
5136
  className: "break-words font-medium text-og-fg-subtle underline decoration-dotted underline-offset-2",
@@ -5271,7 +5141,7 @@ function SandboxMarkdownLink({
5271
5141
  );
5272
5142
  }
5273
5143
  const idleTitle = line !== null ? `Open ${path} at line ${line}` : `Open ${path}`;
5274
- return /* @__PURE__ */ jsxs9(
5144
+ return /* @__PURE__ */ jsxs8(
5275
5145
  "button",
5276
5146
  {
5277
5147
  type: "button",
@@ -5360,12 +5230,12 @@ function fenceLanguage(children) {
5360
5230
  function MarkdownCodeBlock({ children }) {
5361
5231
  const code = nodeText(children).replace(/\n$/, "");
5362
5232
  const language = fenceLanguage(children);
5363
- return /* @__PURE__ */ jsxs9("div", { className: "group/copy relative mt-3 first:mt-0", children: [
5364
- /* @__PURE__ */ jsxs9("div", { className: "pointer-events-none absolute top-1.5 right-1.5 z-10 flex items-center gap-1", children: [
5365
- language ? /* @__PURE__ */ jsx12("span", { className: "rounded px-1 py-0.5 font-og-mono text-[10px] uppercase tracking-wide text-og-fg-subtle/80 opacity-0 transition-opacity group-hover/copy:opacity-100 pointer-coarse:opacity-70", children: language }) : null,
5366
- /* @__PURE__ */ jsx12("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx12(CopyButton, { text: code, label: "Copy code", reveal: "group-hover" }) })
5233
+ return /* @__PURE__ */ jsxs8("div", { className: "group/copy relative mt-3 first:mt-0", children: [
5234
+ /* @__PURE__ */ jsxs8("div", { className: "pointer-events-none absolute top-1.5 right-1.5 z-10 flex items-center gap-1", children: [
5235
+ language ? /* @__PURE__ */ jsx11("span", { className: "rounded px-1 py-0.5 font-og-mono text-[10px] uppercase tracking-wide text-og-fg-subtle/80 opacity-0 transition-opacity group-hover/copy:opacity-100 pointer-coarse:opacity-70", children: language }) : null,
5236
+ /* @__PURE__ */ jsx11("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx11(CopyButton, { text: code, label: "Copy code", reveal: "group-hover" }) })
5367
5237
  ] }),
5368
- /* @__PURE__ */ jsx12(
5238
+ /* @__PURE__ */ jsx11(
5369
5239
  "pre",
5370
5240
  {
5371
5241
  tabIndex: 0,
@@ -5377,8 +5247,8 @@ function MarkdownCodeBlock({ children }) {
5377
5247
  }
5378
5248
  function MarkdownTable({ children, className, ...props }) {
5379
5249
  const tableRef = useRef6(null);
5380
- return /* @__PURE__ */ jsxs9("div", { className: "group/copy relative mt-3 max-w-full first:mt-0", children: [
5381
- /* @__PURE__ */ jsx12("div", { className: "pointer-events-none absolute top-0 right-0 z-10", children: /* @__PURE__ */ jsx12("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx12(
5250
+ return /* @__PURE__ */ jsxs8("div", { className: "group/copy relative mt-3 max-w-full first:mt-0", children: [
5251
+ /* @__PURE__ */ jsx11("div", { className: "pointer-events-none absolute top-0 right-0 z-10", children: /* @__PURE__ */ jsx11("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx11(
5382
5252
  CopyButton,
5383
5253
  {
5384
5254
  text: () => tableElementToTsv(tableRef.current),
@@ -5386,7 +5256,7 @@ function MarkdownTable({ children, className, ...props }) {
5386
5256
  reveal: "group-hover"
5387
5257
  }
5388
5258
  ) }) }),
5389
- /* @__PURE__ */ jsx12("div", { className: "overflow-x-auto", tabIndex: 0, children: /* @__PURE__ */ jsx12(
5259
+ /* @__PURE__ */ jsx11("div", { className: "overflow-x-auto", tabIndex: 0, children: /* @__PURE__ */ jsx11(
5390
5260
  "table",
5391
5261
  {
5392
5262
  ref: tableRef,
@@ -5401,7 +5271,7 @@ function MarkdownImpl({ children, className, streaming = false, onSandboxFile })
5401
5271
  const revealRef = useRef6(null);
5402
5272
  const bodyRef = useRef6(null);
5403
5273
  const [, bump] = useReducer((n) => n + 1, 0);
5404
- const [settling, setSettling] = useState10(false);
5274
+ const [settling, setSettling] = useState9(false);
5405
5275
  const hadRevealRef = useRef6(false);
5406
5276
  const now = typeof performance !== "undefined" ? performance.now() : Date.now();
5407
5277
  const crystallize = (mutate) => {
@@ -5460,8 +5330,8 @@ function MarkdownImpl({ children, className, streaming = false, onSandboxFile })
5460
5330
  return () => clearTimeout(timer);
5461
5331
  }, [streaming]);
5462
5332
  const parseText = streaming || revealActive ? softenStreamingMarkdown(children) : children;
5463
- const components = useMemo4(() => markdownComponents(onSandboxFile), [onSandboxFile]);
5464
- return /* @__PURE__ */ jsx12(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsx12(
5333
+ const components = useMemo3(() => markdownComponents(onSandboxFile), [onSandboxFile]);
5334
+ return /* @__PURE__ */ jsx11(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsx11(
5465
5335
  "div",
5466
5336
  {
5467
5337
  ref: bodyRef,
@@ -5470,7 +5340,7 @@ function MarkdownImpl({ children, className, streaming = false, onSandboxFile })
5470
5340
  settling && "og-markdown-settle",
5471
5341
  className
5472
5342
  ),
5473
- children: /* @__PURE__ */ jsx12(
5343
+ children: /* @__PURE__ */ jsx11(
5474
5344
  ReactMarkdown,
5475
5345
  {
5476
5346
  remarkPlugins: [remarkGfm],
@@ -5491,28 +5361,28 @@ import { lazy as lazy3, Suspense as Suspense3, useLayoutEffect, useRef as useRef
5491
5361
  import { jsx as rowJsx, jsxs as rowJsxs } from "react/jsx-runtime";
5492
5362
 
5493
5363
  // src/timeline/entrance.tsx
5494
- import { createContext as createContext5, useContext as useContext5, useRef as useRef7 } from "react";
5495
- var EntranceAnimationContext = createContext5(true);
5364
+ import { createContext as createContext4, useContext as useContext4, useRef as useRef7 } from "react";
5365
+ var EntranceAnimationContext = createContext4(true);
5496
5366
  var EntranceAnimationProvider = EntranceAnimationContext.Provider;
5497
5367
  function useEntranceAnimationLive() {
5498
- return useContext5(EntranceAnimationContext);
5368
+ return useContext4(EntranceAnimationContext);
5499
5369
  }
5500
5370
  function useEntranceAnimation() {
5501
- const enabled = useContext5(EntranceAnimationContext);
5371
+ const enabled = useContext4(EntranceAnimationContext);
5502
5372
  const captured = useRef7(enabled);
5503
5373
  return captured.current;
5504
5374
  }
5505
5375
 
5506
5376
  // src/timeline/seen-activity-ids.ts
5507
- import { createContext as createContext6, useContext as useContext6 } from "react";
5508
- var SeenActivityIdsContext = createContext6(null);
5377
+ import { createContext as createContext5, useContext as useContext5 } from "react";
5378
+ var SeenActivityIdsContext = createContext5(null);
5509
5379
  var SeenActivityIdsProvider = SeenActivityIdsContext.Provider;
5510
5380
  function useSeenActivityIds() {
5511
- return useContext6(SeenActivityIdsContext);
5381
+ return useContext5(SeenActivityIdsContext);
5512
5382
  }
5513
5383
 
5514
5384
  // src/timeline/activity-rail.tsx
5515
- import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
5385
+ import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
5516
5386
  var LazyFleetDecisionRow = lazy3(() => import("./fleet-decision-row-GGCAT4E4.js"));
5517
5387
  var LazyPlatformActivityRow = lazy3(() => import("./platform-activity-row-BJHUHXAT.js"));
5518
5388
  function familyOf(item) {
@@ -5556,7 +5426,7 @@ function ActivityRail({
5556
5426
  }
5557
5427
  }
5558
5428
  });
5559
- return /* @__PURE__ */ jsx13(
5429
+ return /* @__PURE__ */ jsx12(
5560
5430
  "div",
5561
5431
  {
5562
5432
  className: cn(
@@ -5580,7 +5450,7 @@ function ActivityRail({
5580
5450
  loadRetainedScreenshot,
5581
5451
  loadRetainedArtifact
5582
5452
  );
5583
- return /* @__PURE__ */ jsx13(
5453
+ return /* @__PURE__ */ jsx12(
5584
5454
  "div",
5585
5455
  {
5586
5456
  "data-og-timeline-row-anchor": "",
@@ -5603,7 +5473,7 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
5603
5473
  case "reasoning":
5604
5474
  case "sandbox":
5605
5475
  case "startup-phase":
5606
- return /* @__PURE__ */ jsx13(Suspense3, { fallback: null, children: /* @__PURE__ */ jsx13(
5476
+ return /* @__PURE__ */ jsx12(Suspense3, { fallback: null, children: /* @__PURE__ */ jsx12(
5607
5477
  LazyPlatformActivityRow,
5608
5478
  {
5609
5479
  item,
@@ -5619,7 +5489,7 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
5619
5489
  ) });
5620
5490
  case "tool-call": {
5621
5491
  const Renderer = toolRegistry.resolve(item);
5622
- return /* @__PURE__ */ jsx13(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx13(
5492
+ return /* @__PURE__ */ jsx12(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx12(
5623
5493
  Renderer,
5624
5494
  {
5625
5495
  item,
@@ -5629,11 +5499,11 @@ function renderActivity(item, toolRegistry, onOpenSession, onMemoryClick, loadRe
5629
5499
  ) });
5630
5500
  }
5631
5501
  case "worker":
5632
- return /* @__PURE__ */ jsx13(WorkerRow, { item, onOpenSession });
5502
+ return /* @__PURE__ */ jsx12(WorkerRow, { item, onOpenSession });
5633
5503
  case "memory":
5634
- return /* @__PURE__ */ jsx13(MemoryRow, { item, onMemoryClick });
5504
+ return /* @__PURE__ */ jsx12(MemoryRow, { item, onMemoryClick });
5635
5505
  case "fleet-decision":
5636
- return /* @__PURE__ */ jsx13(Suspense3, { fallback: null, children: /* @__PURE__ */ jsx13(
5506
+ return /* @__PURE__ */ jsx12(Suspense3, { fallback: null, children: /* @__PURE__ */ jsx12(
5637
5507
  LazyFleetDecisionRow,
5638
5508
  {
5639
5509
  item,
@@ -5663,37 +5533,37 @@ function MemoryRow({
5663
5533
  const superseded = corrected && Boolean(item.replacementPreview);
5664
5534
  const targetId = corrected ? item.replacementMemoryId ?? item.memoryId : item.memoryId;
5665
5535
  const deepLink = Boolean(onMemoryClick);
5666
- return /* @__PURE__ */ jsxs10(
5536
+ return /* @__PURE__ */ jsxs9(
5667
5537
  ActivityDisclosure,
5668
5538
  {
5669
- icon: /* @__PURE__ */ jsx13(BrainCircuitIcon2, { className: "size-3.5" }),
5539
+ icon: /* @__PURE__ */ jsx12(BrainCircuitIcon2, { className: "size-3.5" }),
5670
5540
  iconTone: "muted",
5671
- title: /* @__PURE__ */ jsxs10("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
5672
- /* @__PURE__ */ jsx13("span", { className: "shrink-0", children: corrected ? "Updated memory" : "Saved to memory" }),
5673
- kindLabel ? /* @__PURE__ */ jsx13("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
5541
+ title: /* @__PURE__ */ jsxs9("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
5542
+ /* @__PURE__ */ jsx12("span", { className: "shrink-0", children: corrected ? "Updated memory" : "Saved to memory" }),
5543
+ kindLabel ? /* @__PURE__ */ jsx12("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
5674
5544
  ] }),
5675
5545
  preview: superseded ? item.replacementPreview : item.preview,
5676
5546
  children: [
5677
5547
  superseded ? (
5678
5548
  // The correction as a before → after: the old memory struck through and
5679
5549
  // dimmed, the new text in the ordinary body weight below it.
5680
- /* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-1.5", children: [
5681
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
5682
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
5550
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col gap-1.5", children: [
5551
+ /* @__PURE__ */ jsx12("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
5552
+ /* @__PURE__ */ jsx12("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
5683
5553
  ] })
5684
5554
  ) : corrected && item.action === "updated" ? (
5685
5555
  // Edited in place, no replacement record: the memory is still live, so
5686
5556
  // show its current text — NOT the archived treatment.
5687
- /* @__PURE__ */ jsxs10(Fragment5, { children: [
5688
- /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
5689
- /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: "Updated in place." })
5557
+ /* @__PURE__ */ jsxs9(Fragment4, { children: [
5558
+ /* @__PURE__ */ jsx12("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
5559
+ /* @__PURE__ */ jsx12(BodyNote, { tone: "muted", children: "Updated in place." })
5690
5560
  ] })
5691
5561
  ) : corrected ? (
5692
5562
  // A correction with no replacement (and not an in-place update) archived the record.
5693
- /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: "Archived." })
5694
- ) : /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
5695
- item.deduped ? /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: "Merged into an existing memory." }) : null,
5696
- deepLink ? /* @__PURE__ */ jsxs10(
5563
+ /* @__PURE__ */ jsx12(BodyNote, { tone: "muted", children: "Archived." })
5564
+ ) : /* @__PURE__ */ jsx12("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
5565
+ item.deduped ? /* @__PURE__ */ jsx12(BodyNote, { tone: "muted", children: "Merged into an existing memory." }) : null,
5566
+ deepLink ? /* @__PURE__ */ jsxs9(
5697
5567
  "button",
5698
5568
  {
5699
5569
  type: "button",
@@ -5704,7 +5574,7 @@ function MemoryRow({
5704
5574
  ),
5705
5575
  children: [
5706
5576
  "View in memory",
5707
- /* @__PURE__ */ jsx13(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
5577
+ /* @__PURE__ */ jsx12(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
5708
5578
  ]
5709
5579
  }
5710
5580
  ) : null
@@ -5722,11 +5592,11 @@ function WorkerRow({
5722
5592
  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";
5723
5593
  const sessionId = item.workerSessionId;
5724
5594
  const deepLink = Boolean(sessionId) && Boolean(onOpenSession) && !failed && !cancelled;
5725
- const inner = /* @__PURE__ */ jsxs10(Fragment5, { children: [
5726
- /* @__PURE__ */ jsx13("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
5727
- /* @__PURE__ */ jsx13("span", { className: cn("mt-px shrink-0", failed ? "text-og-status-failed" : "text-og-accent"), children: /* @__PURE__ */ jsx13(BotIcon2, { className: "size-3.5" }) }),
5728
- /* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
5729
- /* @__PURE__ */ jsx13(
5595
+ const inner = /* @__PURE__ */ jsxs9(Fragment4, { children: [
5596
+ /* @__PURE__ */ jsx12("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
5597
+ /* @__PURE__ */ jsx12("span", { className: cn("mt-px shrink-0", failed ? "text-og-status-failed" : "text-og-accent"), children: /* @__PURE__ */ jsx12(BotIcon2, { className: "size-3.5" }) }),
5598
+ /* @__PURE__ */ jsxs9("div", { className: "min-w-0 flex-1", children: [
5599
+ /* @__PURE__ */ jsx12(
5730
5600
  "span",
5731
5601
  {
5732
5602
  className: cn(
@@ -5736,16 +5606,16 @@ function WorkerRow({
5736
5606
  children: title
5737
5607
  }
5738
5608
  ),
5739
- item.prompt ? /* @__PURE__ */ jsx13("p", { className: "mt-0.5 truncate text-og-sm text-og-fg-muted", children: truncate(item.prompt, 140) }) : null,
5740
- failed && item.failure ? /* @__PURE__ */ jsxs10("div", { className: "mt-1 min-w-0 text-og-sm text-og-status-failed", children: [
5741
- /* @__PURE__ */ jsx13("p", { className: "font-og-mono text-og-xs", children: item.failure.code }),
5742
- /* @__PURE__ */ jsx13("p", { className: "mt-0.5 break-words", children: item.failure.message })
5609
+ item.prompt ? /* @__PURE__ */ jsx12("p", { className: "mt-0.5 truncate text-og-sm text-og-fg-muted", children: truncate(item.prompt, 140) }) : null,
5610
+ failed && item.failure ? /* @__PURE__ */ jsxs9("div", { className: "mt-1 min-w-0 text-og-sm text-og-status-failed", children: [
5611
+ /* @__PURE__ */ jsx12("p", { className: "font-og-mono text-og-xs", children: item.failure.code }),
5612
+ /* @__PURE__ */ jsx12("p", { className: "mt-0.5 break-words", children: item.failure.message })
5743
5613
  ] }) : null
5744
5614
  ] }),
5745
- failed ? /* @__PURE__ */ jsxs10("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: [
5746
- /* @__PURE__ */ jsx13("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
5615
+ failed ? /* @__PURE__ */ jsxs9("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: [
5616
+ /* @__PURE__ */ jsx12("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
5747
5617
  "failed"
5748
- ] }) : cancelled ? /* @__PURE__ */ jsx13("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__ */ jsx13(
5618
+ ] }) : cancelled ? /* @__PURE__ */ jsx12("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__ */ jsx12(
5749
5619
  ArrowRightIcon,
5750
5620
  {
5751
5621
  "aria-hidden": true,
@@ -5754,7 +5624,7 @@ function WorkerRow({
5754
5624
  ) : null
5755
5625
  ] });
5756
5626
  if (deepLink && sessionId && onOpenSession) {
5757
- return /* @__PURE__ */ jsx13(
5627
+ return /* @__PURE__ */ jsx12(
5758
5628
  "button",
5759
5629
  {
5760
5630
  type: "button",
@@ -5768,28 +5638,28 @@ function WorkerRow({
5768
5638
  }
5769
5639
  );
5770
5640
  }
5771
- return /* @__PURE__ */ jsx13("div", { className: "flex items-start gap-2 px-1.5 py-1.5", children: inner });
5641
+ return /* @__PURE__ */ jsx12("div", { className: "flex items-start gap-2 px-1.5 py-1.5", children: inner });
5772
5642
  }
5773
5643
 
5774
5644
  // src/timeline/turn-summary.tsx
5775
5645
  import { ChevronRightIcon as ChevronRightIcon2, CircleSlashIcon, TriangleAlertIcon as TriangleAlertIcon2 } from "lucide-react";
5776
5646
  import {
5777
5647
  Component,
5778
- createContext as createContext8,
5779
- useContext as useContext8,
5648
+ createContext as createContext7,
5649
+ useContext as useContext7,
5780
5650
  useEffect as useEffect9,
5781
- useMemo as useMemo5,
5651
+ useMemo as useMemo4,
5782
5652
  useRef as useRef9,
5783
- useState as useState11
5653
+ useState as useState10
5784
5654
  } from "react";
5785
5655
  import { Collapsible } from "radix-ui";
5786
5656
 
5787
5657
  // src/timeline/fold-memory.ts
5788
- import { createContext as createContext7, useContext as useContext7 } from "react";
5789
- var FoldMemoryContext = createContext7(null);
5658
+ import { createContext as createContext6, useContext as useContext6 } from "react";
5659
+ var FoldMemoryContext = createContext6(null);
5790
5660
  var FoldMemoryProvider = FoldMemoryContext.Provider;
5791
5661
  function useFoldMemory() {
5792
- return useContext7(FoldMemoryContext);
5662
+ return useContext6(FoldMemoryContext);
5793
5663
  }
5794
5664
  function inheritFoldRestingState(memory, targetKey, sourceKeys) {
5795
5665
  if (memory.has(targetKey) || sourceKeys.length !== 1) {
@@ -5802,10 +5672,10 @@ function inheritFoldRestingState(memory, targetKey, sourceKeys) {
5802
5672
  }
5803
5673
 
5804
5674
  // src/timeline/turn-summary.tsx
5805
- import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
5806
- var TurnSettleChromeContext = createContext8(false);
5675
+ import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
5676
+ var TurnSettleChromeContext = createContext7(false);
5807
5677
  function useTurnSettleOpen() {
5808
- return useContext8(TurnSettleChromeContext);
5678
+ return useContext7(TurnSettleChromeContext);
5809
5679
  }
5810
5680
  var BUILT_IN_TURN_SUMMARY_FACET_IDS = [
5811
5681
  "steps",
@@ -5838,11 +5708,11 @@ function TurnSummary({
5838
5708
  const remembered = foldKey !== void 0 ? foldMemory?.get(foldKey) : void 0;
5839
5709
  const restingOpen = remembered === "closed" ? false : remembered === "open" ? true : defaultOpen ?? forcedDefaultOpen ?? false;
5840
5710
  const initialSettle = Boolean(settleFold) && !restingOpen && remembered === void 0;
5841
- const [settling, setSettling] = useState11(initialSettle);
5842
- const [open, setOpen] = useState11(initialSettle ? true : restingOpen);
5843
- const [settlePhase, setSettlePhase] = useState11(initialSettle);
5844
- const [nestSuppressLatch, setNestSuppressLatch] = useState11(initialSettle);
5845
- const [expandReady, setExpandReady] = useState11(!initialSettle);
5711
+ const [settling, setSettling] = useState10(initialSettle);
5712
+ const [open, setOpen] = useState10(initialSettle ? true : restingOpen);
5713
+ const [settlePhase, setSettlePhase] = useState10(initialSettle);
5714
+ const [nestSuppressLatch, setNestSuppressLatch] = useState10(initialSettle);
5715
+ const [expandReady, setExpandReady] = useState10(!initialSettle);
5846
5716
  const settleTimerRef = useRef9(null);
5847
5717
  const settleCloseDoneRef = useRef9(null);
5848
5718
  const nestLatchClearRef = useRef9(null);
@@ -5940,10 +5810,10 @@ function TurnSummary({
5940
5810
  }
5941
5811
  };
5942
5812
  const enter = useEntranceAnimation();
5943
- const [allowEnterAnimation] = useState11(
5813
+ const [allowEnterAnimation] = useState10(
5944
5814
  () => Boolean(enter && !bare && !initialSettle && !restingOpen)
5945
5815
  );
5946
- const context = useMemo5(
5816
+ const context = useMemo4(
5947
5817
  () => createTurnSummaryContext(
5948
5818
  items,
5949
5819
  outcome,
@@ -5953,11 +5823,11 @@ function TurnSummary({
5953
5823
  ),
5954
5824
  [items, outcome, failureText, durationMs, settling, settlePhase, contextCompactionCount]
5955
5825
  );
5956
- const facetDefinitions = useMemo5(
5826
+ const facetDefinitions = useMemo4(
5957
5827
  () => resolveTurnSummaryFacets(facetConfiguration),
5958
5828
  [facetConfiguration]
5959
5829
  );
5960
- const facets = useMemo5(
5830
+ const facets = useMemo4(
5961
5831
  () => facetDefinitions.flatMap((facet) => {
5962
5832
  try {
5963
5833
  const result = facet.summarize(context);
@@ -5973,15 +5843,15 @@ function TurnSummary({
5973
5843
  const copyable = Boolean(
5974
5844
  copyText && copyText.trim().length > 0 && !bare && !liveShell && !open && !settlePhase
5975
5845
  );
5976
- return /* @__PURE__ */ jsx14(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs11("div", { className: cn(copyable && "group/copy relative"), children: [
5977
- /* @__PURE__ */ jsxs11(
5846
+ return /* @__PURE__ */ jsx13(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs10("div", { className: cn(copyable && "group/copy relative"), children: [
5847
+ /* @__PURE__ */ jsxs10(
5978
5848
  Collapsible.Root,
5979
5849
  {
5980
5850
  open,
5981
5851
  onOpenChange,
5982
5852
  className: allowEnterAnimation && !liveShell ? "animate-og-enter" : void 0,
5983
5853
  children: [
5984
- /* @__PURE__ */ jsxs11(
5854
+ /* @__PURE__ */ jsxs10(
5985
5855
  Collapsible.Trigger,
5986
5856
  {
5987
5857
  className: cn(
@@ -6004,7 +5874,7 @@ function TurnSummary({
6004
5874
  liveShell && "text-og-fg-subtle"
6005
5875
  ),
6006
5876
  children: [
6007
- /* @__PURE__ */ jsx14(
5877
+ /* @__PURE__ */ jsx13(
6008
5878
  ChevronRightIcon2,
6009
5879
  {
6010
5880
  className: cn(
@@ -6013,7 +5883,7 @@ function TurnSummary({
6013
5883
  )
6014
5884
  }
6015
5885
  ),
6016
- outcome === "complete" ? null : /* @__PURE__ */ jsx14(
5886
+ outcome === "complete" ? null : /* @__PURE__ */ jsx13(
6017
5887
  "span",
6018
5888
  {
6019
5889
  className: cn(
@@ -6021,30 +5891,30 @@ function TurnSummary({
6021
5891
  bare ? "size-3.5" : "size-5",
6022
5892
  outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle"
6023
5893
  ),
6024
- children: outcome === "failed" ? /* @__PURE__ */ jsx14(TriangleAlertIcon2, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx14(CircleSlashIcon, { className: "size-3" }) : /* @__PURE__ */ jsx14("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
5894
+ children: outcome === "failed" ? /* @__PURE__ */ jsx13(TriangleAlertIcon2, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx13(CircleSlashIcon, { className: "size-3" }) : /* @__PURE__ */ jsx13("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
6025
5895
  }
6026
5896
  ),
6027
- /* @__PURE__ */ jsxs11(
5897
+ /* @__PURE__ */ jsxs10(
6028
5898
  "span",
6029
5899
  {
6030
5900
  className: cn("min-w-0 flex-1 truncate", bare ? "text-og-sm" : "text-og-fg-muted"),
6031
5901
  children: [
6032
- facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx14(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs11(Fragment6, { children: [
5902
+ facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx13(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs10(Fragment5, { children: [
6033
5903
  index > 0 ? " \xB7 " : null,
6034
- /* @__PURE__ */ jsxs11("span", { "aria-label": result.ariaLabel, title: result.title, children: [
6035
- result.icon ? /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
5904
+ /* @__PURE__ */ jsxs10("span", { "aria-label": result.ariaLabel, title: result.title, children: [
5905
+ result.icon ? /* @__PURE__ */ jsx13("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
6036
5906
  result.content
6037
5907
  ] })
6038
5908
  ] }) }, facet.id)),
6039
- outcome === "failed" && failureText ? /* @__PURE__ */ jsxs11("span", { className: "text-og-status-failed", children: [
5909
+ outcome === "failed" && failureText ? /* @__PURE__ */ jsxs10("span", { className: "text-og-status-failed", children: [
6040
5910
  " \xB7 ",
6041
5911
  failureText
6042
5912
  ] }) : null,
6043
- outcome === "cancelled" ? /* @__PURE__ */ jsx14("span", { className: "text-og-fg-subtle", children: " \xB7 interrupted" }) : null
5913
+ outcome === "cancelled" ? /* @__PURE__ */ jsx13("span", { className: "text-og-fg-subtle", children: " \xB7 interrupted" }) : null
6044
5914
  ]
6045
5915
  }
6046
5916
  ),
6047
- /* @__PURE__ */ jsx14(
5917
+ /* @__PURE__ */ jsx13(
6048
5918
  "span",
6049
5919
  {
6050
5920
  "aria-hidden": true,
@@ -6061,7 +5931,7 @@ function TurnSummary({
6061
5931
  ]
6062
5932
  }
6063
5933
  ),
6064
- /* @__PURE__ */ jsx14(
5934
+ /* @__PURE__ */ jsx13(
6065
5935
  Collapsible.Content,
6066
5936
  {
6067
5937
  ...nestSuppressLatch ? { forceMount: true } : {},
@@ -6072,13 +5942,13 @@ function TurnSummary({
6072
5942
  // Auto-close: slow settle. Manual close (settlePhase cleared): fast.
6073
5943
  settlePhase ? "data-[state=closed]:animate-og-settle-collapse" : "data-[state=closed]:animate-og-collapse"
6074
5944
  ),
6075
- children: /* @__PURE__ */ jsx14("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
5945
+ children: /* @__PURE__ */ jsx13("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
6076
5946
  }
6077
5947
  )
6078
5948
  ]
6079
5949
  }
6080
5950
  ),
6081
- copyable ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx14("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx14(CopyButton, { text: copyText, label: "Copy turn", reveal: "group-hover" }) }) }) : null
5951
+ copyable ? /* @__PURE__ */ jsx13("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx13("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx13(CopyButton, { text: copyText, label: "Copy turn", reveal: "group-hover" }) }) }) : null
6082
5952
  ] }) });
6083
5953
  }
6084
5954
  function createTurnSummaryContext(items, outcome, failureText, durationMs, contextCompactionCount) {
@@ -6232,15 +6102,15 @@ function formatDurationFacet(durationMs) {
6232
6102
 
6233
6103
  // src/components/user-message-body.tsx
6234
6104
  import {
6235
- createContext as createContext9,
6236
- useCallback as useCallback2,
6237
- useContext as useContext9,
6105
+ createContext as createContext8,
6106
+ useCallback,
6107
+ useContext as useContext8,
6238
6108
  useId as useId3,
6239
6109
  useLayoutEffect as useLayoutEffect2,
6240
6110
  useRef as useRef10,
6241
- useState as useState12
6111
+ useState as useState11
6242
6112
  } from "react";
6243
- import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
6113
+ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
6244
6114
  var FALLBACK_LINE_THRESHOLD = 12;
6245
6115
  var FALLBACK_TEXT_THRESHOLD = 900;
6246
6116
  var FALLBACK_UNBROKEN_THRESHOLD = 260;
@@ -6378,20 +6248,20 @@ function observeSharedResize(element, callback) {
6378
6248
  }
6379
6249
  };
6380
6250
  }
6381
- var UserMessageDisclosureContext = createContext9(null);
6251
+ var UserMessageDisclosureContext = createContext8(null);
6382
6252
  function UserMessageDisclosureProvider({
6383
6253
  value,
6384
6254
  children
6385
6255
  }) {
6386
- return /* @__PURE__ */ jsx15(UserMessageDisclosureContext.Provider, { value, children });
6256
+ return /* @__PURE__ */ jsx14(UserMessageDisclosureContext.Provider, { value, children });
6387
6257
  }
6388
6258
  function userMessageLikelyNeedsDisclosure(text) {
6389
6259
  const lines = text.split(/\r?\n/);
6390
6260
  return lines.length > FALLBACK_LINE_THRESHOLD || text.length > FALLBACK_TEXT_THRESHOLD || lines.some((line) => line.length > FALLBACK_UNBROKEN_THRESHOLD);
6391
6261
  }
6392
6262
  function UserMessageBody({ messageId, text, children, className }) {
6393
- const disclosure = useContext9(UserMessageDisclosureContext);
6394
- const [expanded, setExpanded] = useState12(
6263
+ const disclosure = useContext8(UserMessageDisclosureContext);
6264
+ const [expanded, setExpanded] = useState11(
6395
6265
  () => disclosure?.expandedByMessageId.get(messageId) ?? false
6396
6266
  );
6397
6267
  const collapsibleRef = useRef10(userMessageLikelyNeedsDisclosure(text));
@@ -6409,7 +6279,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6409
6279
  const contentId = `og-user-message-${useId3().replace(/:/g, "")}`;
6410
6280
  const collapsible = collapsibleRef.current;
6411
6281
  const collapsed = collapsible && !expanded;
6412
- const syncDisclosurePresentation = useCallback2((nextCollapsible) => {
6282
+ const syncDisclosurePresentation = useCallback((nextCollapsible) => {
6413
6283
  collapsibleRef.current = nextCollapsible;
6414
6284
  const nextCollapsed = nextCollapsible && !expandedRef.current;
6415
6285
  const clip = clipRef.current;
@@ -6419,7 +6289,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6419
6289
  if (fadeRef.current) fadeRef.current.hidden = !nextCollapsed;
6420
6290
  if (disclosureControlRef.current) disclosureControlRef.current.hidden = !nextCollapsible;
6421
6291
  }, []);
6422
- const restoreManagedInertDescendants = useCallback2(() => {
6292
+ const restoreManagedInertDescendants = useCallback(() => {
6423
6293
  for (const descendant of managedInertDescendantsRef.current) {
6424
6294
  if (descendant.hasAttribute("data-og-user-message-managed-inert")) {
6425
6295
  descendant.removeAttribute("inert");
@@ -6428,7 +6298,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6428
6298
  }
6429
6299
  managedInertDescendantsRef.current.clear();
6430
6300
  }, []);
6431
- const syncCollapsedInteractivity = useCallback2(() => {
6301
+ const syncCollapsedInteractivity = useCallback(() => {
6432
6302
  restoreManagedInertDescendants();
6433
6303
  if (!collapsibleRef.current || expandedRef.current) {
6434
6304
  return;
@@ -6455,7 +6325,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6455
6325
  managedInertDescendantsRef.current.add(descendant);
6456
6326
  }
6457
6327
  }, [restoreManagedInertDescendants]);
6458
- const readCollapsible = useCallback2(() => {
6328
+ const readCollapsible = useCallback(() => {
6459
6329
  const content = contentRef.current;
6460
6330
  const threshold = thresholdRef.current;
6461
6331
  if (!content || !threshold) {
@@ -6468,7 +6338,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6468
6338
  );
6469
6339
  return renderedHeight > 0 && collapseHeight > 0 ? renderedHeight > collapseHeight + 1 : userMessageLikelyNeedsDisclosure(text);
6470
6340
  }, [text]);
6471
- const measure = useCallback2(() => {
6341
+ const measure = useCallback(() => {
6472
6342
  const view = rootRef.current?.ownerDocument.defaultView;
6473
6343
  if (!view) {
6474
6344
  syncDisclosurePresentation(readCollapsible());
@@ -6533,7 +6403,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6533
6403
  disclosure?.expandedByMessageId.set(messageId, next);
6534
6404
  setExpanded(next);
6535
6405
  };
6536
- return /* @__PURE__ */ jsxs12(
6406
+ return /* @__PURE__ */ jsxs11(
6537
6407
  "div",
6538
6408
  {
6539
6409
  ref: rootRef,
@@ -6542,7 +6412,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6542
6412
  "data-og-expanded": expanded ? "true" : "false",
6543
6413
  className: cn("relative min-w-0", className),
6544
6414
  children: [
6545
- /* @__PURE__ */ jsx15(
6415
+ /* @__PURE__ */ jsx14(
6546
6416
  "span",
6547
6417
  {
6548
6418
  ref: thresholdRef,
@@ -6550,7 +6420,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6550
6420
  className: "pointer-events-none absolute h-56 w-0 invisible sm:h-72"
6551
6421
  }
6552
6422
  ),
6553
- /* @__PURE__ */ jsxs12(
6423
+ /* @__PURE__ */ jsxs11(
6554
6424
  "div",
6555
6425
  {
6556
6426
  ref: clipRef,
@@ -6558,7 +6428,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6558
6428
  "data-og-user-message-clip": "",
6559
6429
  className: cn("relative min-w-0", collapsed && "max-h-56 overflow-hidden sm:max-h-72"),
6560
6430
  children: [
6561
- /* @__PURE__ */ jsx15(
6431
+ /* @__PURE__ */ jsx14(
6562
6432
  "div",
6563
6433
  {
6564
6434
  ref: contentRef,
@@ -6567,7 +6437,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6567
6437
  children
6568
6438
  }
6569
6439
  ),
6570
- /* @__PURE__ */ jsx15(
6440
+ /* @__PURE__ */ jsx14(
6571
6441
  "span",
6572
6442
  {
6573
6443
  ref: fadeRef,
@@ -6580,7 +6450,7 @@ function UserMessageBody({ messageId, text, children, className }) {
6580
6450
  ]
6581
6451
  }
6582
6452
  ),
6583
- /* @__PURE__ */ jsx15(
6453
+ /* @__PURE__ */ jsx14(
6584
6454
  "button",
6585
6455
  {
6586
6456
  ref: disclosureControlRef,
@@ -6600,16 +6470,16 @@ function UserMessageBody({ messageId, text, children, className }) {
6600
6470
  }
6601
6471
 
6602
6472
  // src/components/generated-video-player.tsx
6603
- import { useEffect as useEffect10, useState as useState13 } from "react";
6604
- import { jsx as jsx16 } from "react/jsx-runtime";
6473
+ import { useEffect as useEffect10, useState as useState12 } from "react";
6474
+ import { jsx as jsx15 } from "react/jsx-runtime";
6605
6475
  function GeneratedVideoPlayer({
6606
6476
  receipt,
6607
6477
  loadPlaybackSource,
6608
6478
  className,
6609
6479
  label = "Generated video"
6610
6480
  }) {
6611
- const [retry, setRetry] = useState13(0);
6612
- const [state, setState] = useState13({ kind: "loading" });
6481
+ const [retry, setRetry] = useState12(0);
6482
+ const [state, setState] = useState12({ kind: "loading" });
6613
6483
  useEffect10(() => {
6614
6484
  const controller = new AbortController();
6615
6485
  setState({ kind: "loading" });
@@ -6628,7 +6498,7 @@ function GeneratedVideoPlayer({
6628
6498
  return () => controller.abort();
6629
6499
  }, [loadPlaybackSource, receipt.artifact.artifactId, retry]);
6630
6500
  if (state.kind === "loading") {
6631
- return /* @__PURE__ */ jsx16(
6501
+ return /* @__PURE__ */ jsx15(
6632
6502
  "div",
6633
6503
  {
6634
6504
  "aria-label": `Loading ${label.toLowerCase()}`,
@@ -6640,7 +6510,7 @@ function GeneratedVideoPlayer({
6640
6510
  );
6641
6511
  }
6642
6512
  if (state.kind === "error") {
6643
- return /* @__PURE__ */ jsx16(
6513
+ return /* @__PURE__ */ jsx15(
6644
6514
  "div",
6645
6515
  {
6646
6516
  role: "status",
@@ -6652,7 +6522,7 @@ function GeneratedVideoPlayer({
6652
6522
  }
6653
6523
  );
6654
6524
  }
6655
- return /* @__PURE__ */ jsx16(
6525
+ return /* @__PURE__ */ jsx15(
6656
6526
  "video",
6657
6527
  {
6658
6528
  "aria-label": label,
@@ -6674,7 +6544,7 @@ function GeneratedVideoPlayer({
6674
6544
  }
6675
6545
 
6676
6546
  // src/components/session-status.tsx
6677
- import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
6547
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
6678
6548
  var SESSION_STATUS_META = {
6679
6549
  queued: {
6680
6550
  label: "Starting",
@@ -6727,7 +6597,7 @@ var SESSION_STATUS_META = {
6727
6597
  };
6728
6598
  function SessionStatus({ status, label, size = "md", className }) {
6729
6599
  const meta = SESSION_STATUS_META[status];
6730
- return /* @__PURE__ */ jsxs13(
6600
+ return /* @__PURE__ */ jsxs12(
6731
6601
  "span",
6732
6602
  {
6733
6603
  "data-status": status,
@@ -6738,7 +6608,7 @@ function SessionStatus({ status, label, size = "md", className }) {
6738
6608
  className
6739
6609
  ),
6740
6610
  children: [
6741
- /* @__PURE__ */ jsx17(StatusDot, { status, className: size === "sm" ? "size-1" : "size-1.5" }),
6611
+ /* @__PURE__ */ jsx16(StatusDot, { status, className: size === "sm" ? "size-1" : "size-1.5" }),
6742
6612
  label ?? meta.label
6743
6613
  ]
6744
6614
  }
@@ -6746,7 +6616,7 @@ function SessionStatus({ status, label, size = "md", className }) {
6746
6616
  }
6747
6617
  function StatusDot({ status, className }) {
6748
6618
  const meta = SESSION_STATUS_META[status];
6749
- return /* @__PURE__ */ jsx17(
6619
+ return /* @__PURE__ */ jsx16(
6750
6620
  "span",
6751
6621
  {
6752
6622
  className: cn(
@@ -6754,7 +6624,7 @@ function StatusDot({ status, className }) {
6754
6624
  meta.dotClassName,
6755
6625
  className
6756
6626
  ),
6757
- children: meta.pulse ? /* @__PURE__ */ jsx17("span", { className: cn("absolute inset-0 animate-og-pulse rounded-full", meta.dotClassName) }) : null
6627
+ children: meta.pulse ? /* @__PURE__ */ jsx16("span", { className: cn("absolute inset-0 animate-og-pulse rounded-full", meta.dotClassName) }) : null
6758
6628
  }
6759
6629
  );
6760
6630
  }
@@ -6779,19 +6649,19 @@ import {
6779
6649
  TriangleAlertIcon as TriangleAlertIcon3,
6780
6650
  XCircleIcon
6781
6651
  } from "lucide-react";
6782
- import { AnimatePresence as AnimatePresence3, motion as motion3 } from "motion/react";
6652
+ import { AnimatePresence as AnimatePresence2, motion as motion2 } from "motion/react";
6783
6653
  import { Collapsible as Collapsible2 } from "radix-ui";
6784
6654
  import {
6785
6655
  Component as Component2,
6786
6656
  Suspense as Suspense4,
6787
6657
  lazy as lazy4,
6788
6658
  memo as memo2,
6789
- useCallback as useCallback3,
6659
+ useCallback as useCallback2,
6790
6660
  useEffect as useEffect11,
6791
6661
  useLayoutEffect as useLayoutEffect3,
6792
- useMemo as useMemo6,
6662
+ useMemo as useMemo5,
6793
6663
  useRef as useRef11,
6794
- useState as useState14
6664
+ useState as useState13
6795
6665
  } from "react";
6796
6666
 
6797
6667
  // src/components/tip-follow.ts
@@ -7141,9 +7011,10 @@ function machineInputSummaryIsUseful(kind, cleanedSummary) {
7141
7011
  }
7142
7012
 
7143
7013
  // src/components/message-timeline.tsx
7144
- import { Fragment as Fragment7, jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
7014
+ import { Fragment as Fragment6, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
7145
7015
  var TimelineAnnotationSelection = lazy4(() => import("./timeline-annotation-selection-3L7LHGG2.js"));
7146
7016
  var PIN_THRESHOLD_PX = 48;
7017
+ var JUMP_TO_LATEST_CATCHUP_DEBT_PX = 240;
7147
7018
  var OLDER_PREFETCH_MARGIN_PX = 400;
7148
7019
  var OLDER_PREFETCH_ROOT_MARGIN = `${OLDER_PREFETCH_MARGIN_PX}px 0px 0px 0px`;
7149
7020
  var PRIMARY_ACTION_CLASS = "inline-flex w-full shrink-0 items-center justify-center gap-1.5 rounded-og-md bg-og-accent px-3 py-1.5 text-og-menu font-medium text-og-accent-fg sm:w-auto";
@@ -7242,7 +7113,7 @@ function MessageTimeline({
7242
7113
  emptyState,
7243
7114
  className
7244
7115
  }) {
7245
- const resolvedItems = useMemo6(() => {
7116
+ const resolvedItems = useMemo5(() => {
7246
7117
  const projectedItems = items ?? buildTimeline(events ?? []);
7247
7118
  if (!shouldRenderAuthNeeded) {
7248
7119
  return projectedItems;
@@ -7253,8 +7124,8 @@ function MessageTimeline({
7253
7124
  }, [items, events, shouldRenderAuthNeeded]);
7254
7125
  const sourceItems = items || events;
7255
7126
  const olderBoundaryKey = sourceItems?.[0]?.id;
7256
- const allGroups = useMemo6(() => groupTimeline(resolvedItems), [resolvedItems]);
7257
- const annotationSources = useMemo6(() => {
7127
+ const allGroups = useMemo5(() => groupTimeline(resolvedItems), [resolvedItems]);
7128
+ const annotationSources = useMemo5(() => {
7258
7129
  const sources = /* @__PURE__ */ new Map();
7259
7130
  for (const item of resolvedItems) {
7260
7131
  if ((item.kind === "user-message" || item.kind === "agent-message" || item.kind === "tool-call") && item.annotationSource) {
@@ -7268,18 +7139,20 @@ function MessageTimeline({
7268
7139
  const topSentinelRef = useRef11(null);
7269
7140
  const bottomSentinelRef = useRef11(null);
7270
7141
  const previousBulkFirstKeyRef = useRef11(void 0);
7271
- const [pinned, setPinned] = useState14(true);
7272
- const [bulkActive, setBulkActive] = useState14(true);
7142
+ const [pinned, setPinned] = useState13(true);
7143
+ const [canSkipTipCatchup, setCanSkipTipCatchup] = useState13(false);
7144
+ const canSkipTipCatchupRef = useRef11(false);
7145
+ const [bulkActive, setBulkActive] = useState13(true);
7273
7146
  const olderPrefetchArmedRef = useRef11(false);
7274
- const [olderPrefetchArmed, setOlderPrefetchArmed] = useState14(false);
7147
+ const [olderPrefetchArmed, setOlderPrefetchArmed] = useState13(false);
7275
7148
  const olderLoadAttemptRef = useRef11(null);
7276
- const [underfillSettledAttempt, setUnderfillSettledAttempt] = useState14(
7149
+ const [underfillSettledAttempt, setUnderfillSettledAttempt] = useState13(
7277
7150
  null
7278
7151
  );
7279
7152
  const underfillRetryReadyRef = useRef11(false);
7280
7153
  const resizeFollowRafRef = useRef11(null);
7281
7154
  const firstGroupKey = allGroups[0] ? timelineGroupKey(allGroups[0]) : null;
7282
- const [revealed, setRevealed] = useState14(resolvedItems[0]?.id === "c");
7155
+ const [revealed, setRevealed] = useState13(resolvedItems[0]?.id === "c");
7283
7156
  const pinnedRef = useRef11(true);
7284
7157
  const hasNewerRef = useRef11(hasNewer);
7285
7158
  hasNewerRef.current = hasNewer;
@@ -7307,13 +7180,25 @@ function MessageTimeline({
7307
7180
  const underfillRetryReady = underfillRetryReadyRef.current = !!(underfillSettledAttempt && underfillSettledAttempt === olderLoadAttemptRef.current && hasOlder && onLoadOlder && !loadingOlder);
7308
7181
  const firstKeyChangedForBulk = previousBulkFirstKeyRef.current !== void 0 && previousBulkFirstKeyRef.current !== firstGroupKey;
7309
7182
  const bulkRender = allGroups.length > 0 && (bulkActive || firstKeyChangedForBulk);
7310
- const applyPinned = useCallback3((value) => {
7311
- if (pinnedRef.current !== value) {
7312
- pinnedRef.current = value;
7313
- setPinned(value);
7183
+ const applyCanSkipTipCatchup = useCallback2((value) => {
7184
+ if (canSkipTipCatchupRef.current !== value) {
7185
+ canSkipTipCatchupRef.current = value;
7186
+ setCanSkipTipCatchup(value);
7314
7187
  }
7315
7188
  }, []);
7316
- const rearmOlderPrefetchAfterLeavingTop = useCallback3((node) => {
7189
+ const applyPinned = useCallback2(
7190
+ (value) => {
7191
+ if (pinnedRef.current !== value) {
7192
+ pinnedRef.current = value;
7193
+ setPinned(value);
7194
+ }
7195
+ if (!value) {
7196
+ applyCanSkipTipCatchup(false);
7197
+ }
7198
+ },
7199
+ [applyCanSkipTipCatchup]
7200
+ );
7201
+ const rearmOlderPrefetchAfterLeavingTop = useCallback2((node) => {
7317
7202
  if (node.scrollTop > OLDER_PREFETCH_MARGIN_PX) {
7318
7203
  const state = olderLoadAttemptRef.current?.[1];
7319
7204
  if (state === 2 || state === 3) {
@@ -7325,13 +7210,13 @@ function MessageTimeline({
7325
7210
  revealedRef.current = revealed;
7326
7211
  const followRef = useRef11(createTipFollowState());
7327
7212
  const followFrameRef = useRef11(null);
7328
- const syncScrollBaseline = useCallback3((node) => {
7213
+ const syncScrollBaseline = useCallback2((node) => {
7329
7214
  lastScrollTopRef.current = node.scrollTop;
7330
7215
  lastMaxScrollRef.current = maxScrollOf(node);
7331
7216
  lastScrollHeightRef.current = node.scrollHeight;
7332
7217
  lastClientHeightRef.current = node.clientHeight;
7333
7218
  }, []);
7334
- const writeScrollTop = useCallback3((node, top) => {
7219
+ const writeScrollTop = useCallback2((node, top) => {
7335
7220
  const next = Math.max(0, top);
7336
7221
  const before = node.scrollTop;
7337
7222
  if (before === next) {
@@ -7343,24 +7228,24 @@ function MessageTimeline({
7343
7228
  programmaticScrollRef.current -= 1;
7344
7229
  }
7345
7230
  }, []);
7346
- const cancelLeaveFallback = useCallback3(() => {
7231
+ const cancelLeaveFallback = useCallback2(() => {
7347
7232
  if (leaveFallbackRafRef.current != null) {
7348
7233
  cancelFrame(leaveFallbackRafRef.current);
7349
7234
  leaveFallbackRafRef.current = null;
7350
7235
  }
7351
7236
  }, []);
7352
- const clearPendingReaderLeave = useCallback3(() => {
7237
+ const clearPendingReaderLeave = useCallback2(() => {
7353
7238
  pendingReaderLeaveRef.current = false;
7354
7239
  cancelLeaveFallback();
7355
7240
  }, [cancelLeaveFallback]);
7356
- const stopFollow = useCallback3(() => {
7241
+ const stopFollow = useCallback2(() => {
7357
7242
  followRef.current = tipFollowCancel(followRef.current);
7358
7243
  if (followFrameRef.current != null) {
7359
7244
  cancelFrame(followFrameRef.current);
7360
7245
  followFrameRef.current = null;
7361
7246
  }
7362
7247
  }, []);
7363
- const releasePinFromReader = useCallback3(
7248
+ const releasePinFromReader = useCallback2(
7364
7249
  (node) => {
7365
7250
  if (!autoFollow || !pinnedRef.current || hasNewerRef.current) {
7366
7251
  return;
@@ -7382,7 +7267,7 @@ function MessageTimeline({
7382
7267
  },
7383
7268
  [autoFollow, applyPinned, clearPendingReaderLeave, stopFollow]
7384
7269
  );
7385
- const releasePinAfterScrollSettled = useCallback3(
7270
+ const releasePinAfterScrollSettled = useCallback2(
7386
7271
  (node) => {
7387
7272
  if (!autoFollow || !pinnedRef.current || hasNewerRef.current) {
7388
7273
  return;
@@ -7402,7 +7287,7 @@ function MessageTimeline({
7402
7287
  },
7403
7288
  [autoFollow, clearPendingReaderLeave, rearmOlderPrefetchAfterLeavingTop, releasePinFromReader]
7404
7289
  );
7405
- const scheduleLeaveFallback = useCallback3(() => {
7290
+ const scheduleLeaveFallback = useCallback2(() => {
7406
7291
  if (supportsScrollEndEvent()) {
7407
7292
  return;
7408
7293
  }
@@ -7449,7 +7334,7 @@ function MessageTimeline({
7449
7334
  const node = event.currentTarget instanceof HTMLElement ? event.currentTarget : scrollRef.current;
7450
7335
  releasePinFromReader(node);
7451
7336
  };
7452
- const snapToBottom = useCallback3(
7337
+ const snapToBottom = useCallback2(
7453
7338
  (node) => {
7454
7339
  stopFollow();
7455
7340
  cancelLeaveFallback();
@@ -7461,10 +7346,11 @@ function MessageTimeline({
7461
7346
  lastClientHeight: node.clientHeight,
7462
7347
  cameraTop: null
7463
7348
  };
7349
+ applyCanSkipTipCatchup(false);
7464
7350
  },
7465
- [cancelLeaveFallback, stopFollow, syncScrollBaseline, writeScrollTop]
7351
+ [applyCanSkipTipCatchup, cancelLeaveFallback, stopFollow, syncScrollBaseline, writeScrollTop]
7466
7352
  );
7467
- const beginUserMessageDisclosureChange = useCallback3(
7353
+ const beginUserMessageDisclosureChange = useCallback2(
7468
7354
  (messageBody, disclosureControl) => {
7469
7355
  const node = scrollRef.current;
7470
7356
  if (!node || !node.contains(messageBody)) {
@@ -7502,14 +7388,14 @@ function MessageTimeline({
7502
7388
  },
7503
7389
  [applyPinned, autoFollow, snapToBottom, syncScrollBaseline, writeScrollTop]
7504
7390
  );
7505
- const userMessageDisclosureContext = useMemo6(
7391
+ const userMessageDisclosureContext = useMemo5(
7506
7392
  () => ({
7507
7393
  expandedByMessageId: userMessageDisclosureMemoryRef.current,
7508
7394
  beginChange: beginUserMessageDisclosureChange
7509
7395
  }),
7510
7396
  [beginUserMessageDisclosureChange]
7511
7397
  );
7512
- const requestOlderIfUnderfilled = useCallback3(
7398
+ const requestOlderIfUnderfilled = useCallback2(
7513
7399
  (node, retry) => {
7514
7400
  let currentAttempt = olderLoadAttemptRef.current;
7515
7401
  if (retry && (currentAttempt !== retry || retry[0] !== olderBoundaryKey)) {
@@ -7541,7 +7427,7 @@ function MessageTimeline({
7541
7427
  const driveFollowRef = useRef11(
7542
7428
  requestOlderIfUnderfilled
7543
7429
  );
7544
- const driveFollow = useCallback3(
7430
+ const driveFollow = useCallback2(
7545
7431
  (node, nowMs) => {
7546
7432
  if (!pinnedRef.current || hasNewerRef.current) {
7547
7433
  stopFollow();
@@ -7610,6 +7496,9 @@ function MessageTimeline({
7610
7496
  followRef.current = result.state;
7611
7497
  writeScrollTop(node, result.scrollTop);
7612
7498
  syncScrollBaseline(node);
7499
+ applyCanSkipTipCatchup(
7500
+ result.state.running && maxScrollOf(node) - node.scrollTop >= JUMP_TO_LATEST_CATCHUP_DEBT_PX
7501
+ );
7613
7502
  if (result.state.running) {
7614
7503
  cancelLeaveFallback();
7615
7504
  if (followFrameRef.current == null) {
@@ -7626,7 +7515,7 @@ function MessageTimeline({
7626
7515
  followFrameRef.current = null;
7627
7516
  }
7628
7517
  },
7629
- [cancelLeaveFallback, stopFollow, syncScrollBaseline, writeScrollTop]
7518
+ [applyCanSkipTipCatchup, cancelLeaveFallback, stopFollow, syncScrollBaseline, writeScrollTop]
7630
7519
  );
7631
7520
  driveFollowRef.current = driveFollow;
7632
7521
  useEffect11(() => stopFollow, [stopFollow]);
@@ -8060,8 +7949,8 @@ function MessageTimeline({
8060
7949
  }
8061
7950
  releasePinAfterScrollSettled(node);
8062
7951
  };
8063
- return /* @__PURE__ */ jsx18(LightboxProvider, { children: /* @__PURE__ */ jsx18(FoldMemoryProvider, { value: foldMemoryRef.current, children: /* @__PURE__ */ jsx18(SeenActivityIdsProvider, { value: seenActivityIdsRef.current, children: /* @__PURE__ */ jsx18(TimelineComputeLabelProvider, { value: computeLabel ?? null, children: /* @__PURE__ */ jsx18(EntranceAnimationProvider, { value: !bulkRender, children: /* @__PURE__ */ jsx18(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsxs14("div", { className: cn("og-root relative flex min-h-0 flex-col", className), children: [
8064
- onAnnotate ? /* @__PURE__ */ jsx18(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx18(
7952
+ return /* @__PURE__ */ jsx17(LightboxProvider, { children: /* @__PURE__ */ jsx17(FoldMemoryProvider, { value: foldMemoryRef.current, children: /* @__PURE__ */ jsx17(SeenActivityIdsProvider, { value: seenActivityIdsRef.current, children: /* @__PURE__ */ jsx17(TimelineComputeLabelProvider, { value: computeLabel ?? null, children: /* @__PURE__ */ jsx17(EntranceAnimationProvider, { value: !bulkRender, children: /* @__PURE__ */ jsx17(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsxs13("div", { className: cn("og-root relative flex min-h-0 flex-col", className), children: [
7953
+ onAnnotate ? /* @__PURE__ */ jsx17(Suspense4, { fallback: null, children: /* @__PURE__ */ jsx17(
8065
7954
  TimelineAnnotationSelection,
8066
7955
  {
8067
7956
  rootRef: scrollRef,
@@ -8069,7 +7958,7 @@ function MessageTimeline({
8069
7958
  onAnnotate
8070
7959
  }
8071
7960
  ) }) : null,
8072
- /* @__PURE__ */ jsx18(
7961
+ /* @__PURE__ */ jsx17(
8073
7962
  "div",
8074
7963
  {
8075
7964
  ref: scrollRef,
@@ -8088,12 +7977,12 @@ function MessageTimeline({
8088
7977
  "min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-6 sm:px-6 outline-hidden",
8089
7978
  autoFollow && pinned && !hasNewer ? "[overflow-anchor:none]" : "[overflow-anchor:auto]"
8090
7979
  ),
8091
- children: /* @__PURE__ */ jsxs14("div", { className: "relative mx-auto flex w-full max-w-3xl flex-col gap-5", children: [
8092
- !groups.length ? emptyState ?? /* @__PURE__ */ jsx18("p", { className: "py-10 text-center text-og-menu text-og-fg-subtle", children: "No activity yet." }) : null,
7980
+ children: /* @__PURE__ */ jsxs13("div", { className: "relative mx-auto flex w-full max-w-3xl flex-col gap-5", children: [
7981
+ !groups.length ? emptyState ?? /* @__PURE__ */ jsx17("p", { className: "py-10 text-center text-og-menu text-og-fg-subtle", children: "No activity yet." }) : null,
8093
7982
  hasOlder && olderPrefetchArmed ? (
8094
7983
  // Overlaid, not a layout row: mounting/unmounting the sentinel
8095
7984
  // must never shift content (that shift was itself a wobble).
8096
- /* @__PURE__ */ jsx18(
7985
+ /* @__PURE__ */ jsx17(
8097
7986
  "div",
8098
7987
  {
8099
7988
  ref: topSentinelRef,
@@ -8107,7 +7996,7 @@ function MessageTimeline({
8107
7996
  groups.map(({ group, key }, index) => {
8108
7997
  const next = groups[index + 1]?.group;
8109
7998
  const contextCompactionCount = group.kind === "turn" ? group.contextCompactionCount ?? 0 : group.kind === "activity" && next?.kind === "item" && next.item.kind === "context-compaction" && next.item.phase === "compacted" ? 1 : 0;
8110
- return /* @__PURE__ */ jsx18("div", { "data-og-timeline-group-anchor": "", "data-og-group-key": key, children: /* @__PURE__ */ jsx18(
7999
+ return /* @__PURE__ */ jsx17("div", { "data-og-timeline-group-anchor": "", "data-og-group-key": key, children: /* @__PURE__ */ jsx17(
8111
8000
  TimelineGroupRenderBoundary,
8112
8001
  {
8113
8002
  resetKeys: [
@@ -8123,7 +8012,7 @@ function MessageTimeline({
8123
8012
  loadVideoArtifactPlayback,
8124
8013
  turnSummary
8125
8014
  ],
8126
- children: /* @__PURE__ */ jsx18(UserMessageDisclosureProvider, { value: userMessageDisclosureContext, children: /* @__PURE__ */ jsx18(
8015
+ children: /* @__PURE__ */ jsx17(UserMessageDisclosureProvider, { value: userMessageDisclosureContext, children: /* @__PURE__ */ jsx17(
8127
8016
  TimelineGroupView,
8128
8017
  {
8129
8018
  group,
@@ -8145,8 +8034,8 @@ function MessageTimeline({
8145
8034
  }
8146
8035
  ) }, key);
8147
8036
  }),
8148
- groups.length > 0 && trailingState ? /* @__PURE__ */ jsx18("div", { "data-og-timeline-trailing-state": "", children: trailingState }) : null,
8149
- hasNewer ? /* @__PURE__ */ jsx18(
8037
+ groups.length > 0 && trailingState ? /* @__PURE__ */ jsx17("div", { "data-og-timeline-trailing-state": "", children: trailingState }) : null,
8038
+ hasNewer ? /* @__PURE__ */ jsx17(
8150
8039
  "div",
8151
8040
  {
8152
8041
  ref: bottomSentinelRef,
@@ -8159,11 +8048,11 @@ function MessageTimeline({
8159
8048
  ] })
8160
8049
  }
8161
8050
  ),
8162
- /* @__PURE__ */ jsx18(AnimatePresence3, { children: loadingOlder || loadingOldest || hasOlder && onJumpToStart && olderPrefetchArmed || underfillRetryReady ? (
8051
+ /* @__PURE__ */ jsx17(AnimatePresence2, { children: loadingOlder || loadingOldest || hasOlder && onJumpToStart && olderPrefetchArmed || underfillRetryReady ? (
8163
8052
  // Floating over the scroller (not a timeline row) so showing and
8164
8053
  // hiding it never reflows history under the reader.
8165
- /* @__PURE__ */ jsxs14(
8166
- motion3.div,
8054
+ /* @__PURE__ */ jsxs13(
8055
+ motion2.div,
8167
8056
  {
8168
8057
  initial: { opacity: 0, y: -6 },
8169
8058
  animate: { opacity: 1, y: 0 },
@@ -8173,8 +8062,8 @@ function MessageTimeline({
8173
8062
  "aria-live": "polite",
8174
8063
  className: "absolute inset-x-0 top-3 z-10 flex justify-center",
8175
8064
  children: [
8176
- 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,
8177
- hasOlder && !loadingOlder && !loadingOldest && (underfillRetryReady || onJumpToStart) ? /* @__PURE__ */ jsx18(
8065
+ loadingOlder || loadingOldest ? /* @__PURE__ */ jsx17("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx17("span", { className: "og-shimmer-text", children: loadingOldest ? "Jumping to start\u2026" : "Loading earlier activity\u2026" }) }) : null,
8066
+ hasOlder && !loadingOlder && !loadingOldest && (underfillRetryReady || onJumpToStart) ? /* @__PURE__ */ jsx17(
8178
8067
  "button",
8179
8068
  {
8180
8069
  type: "button",
@@ -8218,8 +8107,8 @@ function MessageTimeline({
8218
8107
  }
8219
8108
  )
8220
8109
  ) : null }),
8221
- /* @__PURE__ */ jsx18(AnimatePresence3, { children: loadingNewer ? /* @__PURE__ */ jsx18(
8222
- motion3.div,
8110
+ /* @__PURE__ */ jsx17(AnimatePresence2, { children: loadingNewer ? /* @__PURE__ */ jsx17(
8111
+ motion2.div,
8223
8112
  {
8224
8113
  initial: { opacity: 0, y: 6 },
8225
8114
  animate: { opacity: 1, y: 0 },
@@ -8228,13 +8117,14 @@ function MessageTimeline({
8228
8117
  "data-og-loading-newer": "",
8229
8118
  "aria-live": "polite",
8230
8119
  className: "pointer-events-none absolute inset-x-0 bottom-14 z-10 flex justify-center",
8231
- children: /* @__PURE__ */ jsx18("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx18("span", { className: "og-shimmer-text", children: "Loading later activity\u2026" }) })
8120
+ children: /* @__PURE__ */ jsx17("span", { className: LOADING_CHIP_CLASS, children: /* @__PURE__ */ jsx17("span", { className: "og-shimmer-text", children: "Loading later activity\u2026" }) })
8232
8121
  }
8233
8122
  ) : null }),
8234
- /* @__PURE__ */ jsx18(AnimatePresence3, { children: (!pinned && autoFollow || hasNewer) && autoFollow ? /* @__PURE__ */ jsxs14(
8235
- motion3.button,
8123
+ /* @__PURE__ */ jsx17(AnimatePresence2, { children: (!pinned && autoFollow || hasNewer || canSkipTipCatchup) && autoFollow ? /* @__PURE__ */ jsxs13(
8124
+ motion2.button,
8236
8125
  {
8237
8126
  type: "button",
8127
+ "data-og-jump-to-latest": "",
8238
8128
  initial: { opacity: 0, y: 8 },
8239
8129
  animate: { opacity: 1, y: 0 },
8240
8130
  exit: { opacity: 0, y: 8 },
@@ -8276,7 +8166,7 @@ function MessageTimeline({
8276
8166
  "hover:border-og-border-strong"
8277
8167
  ),
8278
8168
  children: [
8279
- /* @__PURE__ */ jsx18(ArrowDownIcon2, { className: "size-3.5" }),
8169
+ /* @__PURE__ */ jsx17(ArrowDownIcon2, { className: "size-3.5" }),
8280
8170
  "Jump to latest"
8281
8171
  ]
8282
8172
  }
@@ -8285,7 +8175,7 @@ function MessageTimeline({
8285
8175
  }
8286
8176
  function useStableTimelineGroupKeys(allGroups) {
8287
8177
  const previousRef = useRef11([]);
8288
- const keyedGroups = useMemo6(() => {
8178
+ const keyedGroups = useMemo5(() => {
8289
8179
  const previousByItemId = /* @__PURE__ */ new Map();
8290
8180
  for (const previous of previousRef.current) {
8291
8181
  for (const itemId of timelineGroupItemIds(previous.group)) {
@@ -8351,17 +8241,17 @@ var TimelineGroupRenderBoundary = class extends Component2 {
8351
8241
  }
8352
8242
  render() {
8353
8243
  if (this.state.failed) {
8354
- return /* @__PURE__ */ jsxs14(
8244
+ return /* @__PURE__ */ jsxs13(
8355
8245
  "div",
8356
8246
  {
8357
8247
  "data-testid": "timeline-group-render-error",
8358
8248
  role: "status",
8359
8249
  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",
8360
8250
  children: [
8361
- /* @__PURE__ */ jsx18(TriangleAlertIcon3, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0" }),
8362
- /* @__PURE__ */ jsxs14("div", { children: [
8363
- /* @__PURE__ */ jsx18("p", { className: "font-medium text-og-fg", children: "Timeline item unavailable" }),
8364
- /* @__PURE__ */ jsx18("p", { children: "This item could not be displayed. The rest of the conversation is still available." })
8251
+ /* @__PURE__ */ jsx17(TriangleAlertIcon3, { "aria-hidden": "true", className: "mt-0.5 size-4 shrink-0" }),
8252
+ /* @__PURE__ */ jsxs13("div", { children: [
8253
+ /* @__PURE__ */ jsx17("p", { className: "font-medium text-og-fg", children: "Timeline item unavailable" }),
8254
+ /* @__PURE__ */ jsx17("p", { children: "This item could not be displayed. The rest of the conversation is still available." })
8365
8255
  ] })
8366
8256
  ]
8367
8257
  }
@@ -8408,7 +8298,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8408
8298
  if (insideTurn) {
8409
8299
  const useNestedChip = nestClusterChips && activityShouldFold && !containsGeneratedImage;
8410
8300
  if (!useNestedChip) {
8411
- return /* @__PURE__ */ jsx18(
8301
+ return /* @__PURE__ */ jsx17(
8412
8302
  ActivityRail,
8413
8303
  {
8414
8304
  items: group.items,
@@ -8421,7 +8311,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8421
8311
  }
8422
8312
  );
8423
8313
  }
8424
- return /* @__PURE__ */ jsx18(
8314
+ return /* @__PURE__ */ jsx17(
8425
8315
  TurnSummary,
8426
8316
  {
8427
8317
  items: group.items,
@@ -8432,7 +8322,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8432
8322
  foldKey: group.id,
8433
8323
  facets: turnSummary?.facets,
8434
8324
  contextCompactionCount,
8435
- children: /* @__PURE__ */ jsx18(
8325
+ children: /* @__PURE__ */ jsx17(
8436
8326
  ActivityRail,
8437
8327
  {
8438
8328
  items: group.items,
@@ -8448,7 +8338,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8448
8338
  settleChrome ? "settle" : "rest"
8449
8339
  );
8450
8340
  }
8451
- return /* @__PURE__ */ jsx18(
8341
+ return /* @__PURE__ */ jsx17(
8452
8342
  TurnSummary,
8453
8343
  {
8454
8344
  items: group.items,
@@ -8459,7 +8349,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8459
8349
  facets: turnSummary?.facets,
8460
8350
  settleFold,
8461
8351
  contextCompactionCount,
8462
- children: /* @__PURE__ */ jsx18(FoldBody, { children: /* @__PURE__ */ jsx18(TurnRailFrame, { children: /* @__PURE__ */ jsx18(
8352
+ children: /* @__PURE__ */ jsx17(FoldBody, { children: /* @__PURE__ */ jsx17(TurnRailFrame, { children: /* @__PURE__ */ jsx17(
8463
8353
  ActivityRail,
8464
8354
  {
8465
8355
  items: group.items,
@@ -8479,7 +8369,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8479
8369
  const turnCopyText = collectTurnCopyText(group.groups, trailingAgentText);
8480
8370
  const body = group.groups.map((child) => {
8481
8371
  const key = timelineGroupKey(child);
8482
- return /* @__PURE__ */ jsx18(
8372
+ return /* @__PURE__ */ jsx17(
8483
8373
  TimelineGroupRenderBoundary,
8484
8374
  {
8485
8375
  resetKeys: [
@@ -8495,7 +8385,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8495
8385
  loadVideoArtifactPlayback,
8496
8386
  turnSummary
8497
8387
  ],
8498
- children: /* @__PURE__ */ jsx18(
8388
+ children: /* @__PURE__ */ jsx17(
8499
8389
  TimelineGroupView2,
8500
8390
  {
8501
8391
  group: child,
@@ -8517,7 +8407,7 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8517
8407
  key
8518
8408
  );
8519
8409
  });
8520
- return /* @__PURE__ */ jsx18(
8410
+ return /* @__PURE__ */ jsx17(
8521
8411
  TurnSummary,
8522
8412
  {
8523
8413
  items: activityItems,
@@ -8531,16 +8421,16 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8531
8421
  settleFold,
8532
8422
  copyText: insideTurn ? void 0 : turnCopyText,
8533
8423
  contextCompactionCount: contextCompactionCount ?? group.contextCompactionCount,
8534
- children: /* @__PURE__ */ jsx18(FoldBody, { children: insideTurn ? (
8424
+ children: /* @__PURE__ */ jsx17(FoldBody, { children: insideTurn ? (
8535
8425
  // A nested turn is already on an ancestor rail — its body just stacks
8536
8426
  // flush (the bare-node body already indents it), so no second rule.
8537
- /* @__PURE__ */ jsx18("div", { className: "flex flex-col gap-4", children: body })
8538
- ) : /* @__PURE__ */ jsx18(TurnRailFrame, { children: body }) })
8427
+ /* @__PURE__ */ jsx17("div", { className: "flex flex-col gap-4", children: body })
8428
+ ) : /* @__PURE__ */ jsx17(TurnRailFrame, { children: body }) })
8539
8429
  }
8540
8430
  );
8541
8431
  }
8542
8432
  case "item":
8543
- return /* @__PURE__ */ jsx18(
8433
+ return /* @__PURE__ */ jsx17(
8544
8434
  TimelineRow,
8545
8435
  {
8546
8436
  item: group.item,
@@ -8554,10 +8444,10 @@ var TimelineGroupView = memo2(function TimelineGroupView2({
8554
8444
  }
8555
8445
  });
8556
8446
  function FoldBody({ children }) {
8557
- return /* @__PURE__ */ jsx18(Fragment7, { children });
8447
+ return /* @__PURE__ */ jsx17(Fragment6, { children });
8558
8448
  }
8559
8449
  function TurnRailFrame({ children }) {
8560
- return /* @__PURE__ */ jsx18("div", { className: "flex flex-col gap-4 border-l-2 border-og-border pl-3 sm:pl-4", children });
8450
+ return /* @__PURE__ */ jsx17("div", { className: "flex flex-col gap-4 border-l-2 border-og-border pl-3 sm:pl-4", children });
8561
8451
  }
8562
8452
  function useLiveSettleFold(folded) {
8563
8453
  const previousFoldedRef = useRef11(folded);
@@ -8732,25 +8622,25 @@ function TimelineRow({
8732
8622
  }) {
8733
8623
  switch (item.kind) {
8734
8624
  case "user-message":
8735
- return /* @__PURE__ */ jsx18(UserMessageRow, { item, renderMessageText });
8625
+ return /* @__PURE__ */ jsx17(UserMessageRow, { item, renderMessageText });
8736
8626
  case "human-input":
8737
- return /* @__PURE__ */ jsx18(HumanInputConversationRow, { item });
8627
+ return /* @__PURE__ */ jsx17(HumanInputConversationRow, { item });
8738
8628
  case "agent-message":
8739
- return /* @__PURE__ */ jsx18(AgentMessageRow, { item, renderMessageText });
8629
+ return /* @__PURE__ */ jsx17(AgentMessageRow, { item, renderMessageText });
8740
8630
  case "worker-completion":
8741
- return /* @__PURE__ */ jsx18(WorkerCompletionRow, { item, onOpenSession });
8631
+ return /* @__PURE__ */ jsx17(WorkerCompletionRow, { item, onOpenSession });
8742
8632
  case "session-status":
8743
- return /* @__PURE__ */ jsx18(SessionStatusRow, { item });
8633
+ return /* @__PURE__ */ jsx17(SessionStatusRow, { item });
8744
8634
  case "goal":
8745
- return /* @__PURE__ */ jsx18(GoalRow, { item });
8635
+ return /* @__PURE__ */ jsx17(GoalRow, { item });
8746
8636
  case "machine-input-batch":
8747
- return /* @__PURE__ */ jsx18(MachineInputBatchRow, { item, loadVideoArtifactPlayback });
8637
+ return /* @__PURE__ */ jsx17(MachineInputBatchRow, { item, loadVideoArtifactPlayback });
8748
8638
  case "notice":
8749
- return /* @__PURE__ */ jsx18(NoticeRow, { item });
8639
+ return /* @__PURE__ */ jsx17(NoticeRow, { item });
8750
8640
  case "context-compaction":
8751
- return /* @__PURE__ */ jsx18(CompactionRow, { item });
8641
+ return /* @__PURE__ */ jsx17(CompactionRow, { item });
8752
8642
  case "auth-needed":
8753
- return /* @__PURE__ */ jsx18(
8643
+ return /* @__PURE__ */ jsx17(
8754
8644
  AuthNeededRow,
8755
8645
  {
8756
8646
  item,
@@ -8776,7 +8666,7 @@ function CompactionRow({ item }) {
8776
8666
  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";
8777
8667
  const subtitle = item.phase === "compacted" ? "Chat history above is unchanged" : item.phase === "skipped" ? compactionSkipSubtitle(item.skipReason) : null;
8778
8668
  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 : "border-og-border bg-og-surface-1 text-og-fg-muted";
8779
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs14(
8669
+ return /* @__PURE__ */ jsx17("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs13(
8780
8670
  "div",
8781
8671
  {
8782
8672
  className: cn(
@@ -8785,14 +8675,14 @@ function CompactionRow({ item }) {
8785
8675
  ),
8786
8676
  role: "status",
8787
8677
  children: [
8788
- /* @__PURE__ */ jsxs14("span", { className: "inline-flex max-w-full items-center gap-1.5", children: [
8789
- /* @__PURE__ */ jsx18(ShrinkIcon, { className: "size-3.5 shrink-0" }),
8790
- /* @__PURE__ */ jsxs14("span", { className: "truncate", children: [
8678
+ /* @__PURE__ */ jsxs13("span", { className: "inline-flex max-w-full items-center gap-1.5", children: [
8679
+ /* @__PURE__ */ jsx17(ShrinkIcon, { className: "size-3.5 shrink-0" }),
8680
+ /* @__PURE__ */ jsxs13("span", { className: "truncate", children: [
8791
8681
  title,
8792
8682
  trigger ? ` \xB7 ${trigger}` : ""
8793
8683
  ] })
8794
8684
  ] }),
8795
- subtitle ? /* @__PURE__ */ jsx18("span", { className: "truncate text-og-xs opacity-80", children: subtitle }) : null
8685
+ subtitle ? /* @__PURE__ */ jsx17("span", { className: "truncate text-og-xs opacity-80", children: subtitle }) : null
8796
8686
  ]
8797
8687
  }
8798
8688
  ) });
@@ -8812,7 +8702,7 @@ function compactionSkipSubtitle(reason) {
8812
8702
  }
8813
8703
  }
8814
8704
  function MessageFooterTime({ occurredAt }) {
8815
- return /* @__PURE__ */ jsx18(
8705
+ return /* @__PURE__ */ jsx17(
8816
8706
  "time",
8817
8707
  {
8818
8708
  dateTime: occurredAt,
@@ -8831,18 +8721,18 @@ function UserMessageRow({
8831
8721
  }) {
8832
8722
  const enter = useEntranceAnimation();
8833
8723
  const deliveryFailed = item.delivery?.state === "failed";
8834
- return /* @__PURE__ */ jsx18("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: [
8835
- /* @__PURE__ */ jsx18(
8724
+ return /* @__PURE__ */ jsx17("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: [
8725
+ /* @__PURE__ */ jsx17(
8836
8726
  CopyHoverFrame,
8837
8727
  {
8838
8728
  copyText: item.text || (item.annotations ?? []).map((annotation) => `${annotation.quote}
8839
8729
  ${annotation.note}`).join("\n\n"),
8840
8730
  label: "Copy message",
8841
8731
  className: "w-fit max-w-full min-w-0",
8842
- trailing: /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt }),
8843
- children: /* @__PURE__ */ jsxs14("div", { className: MESSAGE_BUBBLE_CLASS, children: [
8844
- item.text ? /* @__PURE__ */ jsx18("div", { "data-og-annotation-source-key": item.annotationSource?.eventId, children: renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx18(UserMessageBody, { messageId: item.id, text: item.text, children: /* @__PURE__ */ jsx18(Markdown, { children: item.text }) }) }) : null,
8845
- (item.annotations?.length ?? 0) > 0 ? /* @__PURE__ */ jsx18(
8732
+ trailing: /* @__PURE__ */ jsx17(MessageFooterTime, { occurredAt: item.occurredAt }),
8733
+ children: /* @__PURE__ */ jsxs13("div", { className: MESSAGE_BUBBLE_CLASS, children: [
8734
+ item.text ? /* @__PURE__ */ jsx17("div", { "data-og-annotation-source-key": item.annotationSource?.eventId, children: renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx17(UserMessageBody, { messageId: item.id, text: item.text, children: /* @__PURE__ */ jsx17(Markdown, { children: item.text }) }) }) : null,
8735
+ (item.annotations?.length ?? 0) > 0 ? /* @__PURE__ */ jsx17(
8846
8736
  TimelineAnnotationsChip,
8847
8737
  {
8848
8738
  annotations: item.annotations ?? [],
@@ -8852,17 +8742,17 @@ ${annotation.note}`).join("\n\n"),
8852
8742
  ] })
8853
8743
  }
8854
8744
  ),
8855
- deliveryFailed ? /* @__PURE__ */ jsxs14(
8745
+ deliveryFailed ? /* @__PURE__ */ jsxs13(
8856
8746
  "div",
8857
8747
  {
8858
8748
  role: "status",
8859
8749
  className: "flex max-w-full items-center gap-2 px-1 text-og-xs text-og-status-failed",
8860
8750
  children: [
8861
- /* @__PURE__ */ jsxs14("span", { className: "inline-flex items-center gap-1", title: item.delivery?.error, children: [
8862
- /* @__PURE__ */ jsx18(TriangleAlertIcon3, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
8863
- /* @__PURE__ */ jsx18("span", { children: "Message not sent" })
8751
+ /* @__PURE__ */ jsxs13("span", { className: "inline-flex items-center gap-1", title: item.delivery?.error, children: [
8752
+ /* @__PURE__ */ jsx17(TriangleAlertIcon3, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
8753
+ /* @__PURE__ */ jsx17("span", { children: "Message not sent" })
8864
8754
  ] }),
8865
- item.delivery?.onRetry ? /* @__PURE__ */ jsx18(
8755
+ item.delivery?.onRetry ? /* @__PURE__ */ jsx17(
8866
8756
  "button",
8867
8757
  {
8868
8758
  type: "button",
@@ -8871,7 +8761,7 @@ ${annotation.note}`).join("\n\n"),
8871
8761
  children: "Retry"
8872
8762
  }
8873
8763
  ) : null,
8874
- item.delivery?.onRemove ? /* @__PURE__ */ jsx18(
8764
+ item.delivery?.onRemove ? /* @__PURE__ */ jsx17(
8875
8765
  "button",
8876
8766
  {
8877
8767
  type: "button",
@@ -8893,26 +8783,26 @@ function HumanInputConversationRow({ item }) {
8893
8783
  );
8894
8784
  const settledLabel = item.response.outcome === "answered" ? "You answered" : item.response.outcome === "skipped" ? "Skipped" : item.response.outcome === "expired" ? "Expired" : "Cancelled";
8895
8785
  const copyText = humanInputConversationCopyText(item, settledLabel);
8896
- return /* @__PURE__ */ jsxs14(
8786
+ return /* @__PURE__ */ jsxs13(
8897
8787
  "div",
8898
8788
  {
8899
8789
  className: cn(enter && "animate-og-enter", "flex w-full flex-col gap-2.5"),
8900
8790
  "data-human-input-history": item.requestId,
8901
8791
  children: [
8902
- /* @__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: [
8903
- /* @__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" }) }),
8904
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
8905
- /* @__PURE__ */ jsx18("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: "Agent asked" }),
8906
- /* @__PURE__ */ jsx18("div", { className: "mt-1.5 space-y-3", children: item.questions.length > 0 ? item.questions.map((question, index) => /* @__PURE__ */ jsxs14("div", { children: [
8907
- question.label ? /* @__PURE__ */ jsxs14("p", { className: "text-og-sm font-semibold text-og-fg", children: [
8908
- multipleQuestions ? /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8792
+ /* @__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: [
8793
+ /* @__PURE__ */ jsx17("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__ */ jsx17(MessageCircleQuestionIcon3, { "aria-hidden": "true", className: "size-4" }) }),
8794
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
8795
+ /* @__PURE__ */ jsx17("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: "Agent asked" }),
8796
+ /* @__PURE__ */ jsx17("div", { className: "mt-1.5 space-y-3", children: item.questions.length > 0 ? item.questions.map((question, index) => /* @__PURE__ */ jsxs13("div", { children: [
8797
+ question.label ? /* @__PURE__ */ jsxs13("p", { className: "text-og-sm font-semibold text-og-fg", children: [
8798
+ multipleQuestions ? /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8909
8799
  index + 1,
8910
8800
  "."
8911
8801
  ] }) : null,
8912
8802
  multipleQuestions ? " " : null,
8913
8803
  question.label
8914
8804
  ] }) : null,
8915
- /* @__PURE__ */ jsxs14(
8805
+ /* @__PURE__ */ jsxs13(
8916
8806
  "p",
8917
8807
  {
8918
8808
  className: cn(
@@ -8920,7 +8810,7 @@ function HumanInputConversationRow({ item }) {
8920
8810
  question.label && "mt-0.5 text-og-sm text-og-fg-muted"
8921
8811
  ),
8922
8812
  children: [
8923
- !question.label && multipleQuestions ? /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8813
+ !question.label && multipleQuestions ? /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8924
8814
  index + 1,
8925
8815
  "."
8926
8816
  ] }) : null,
@@ -8929,29 +8819,29 @@ function HumanInputConversationRow({ item }) {
8929
8819
  ]
8930
8820
  }
8931
8821
  )
8932
- ] }, question.id)) : /* @__PURE__ */ jsx18("p", { className: "text-og-sm text-og-fg-muted", children: "The agent requested structured input." }) })
8822
+ ] }, question.id)) : /* @__PURE__ */ jsx17("p", { className: "text-og-sm text-og-fg-muted", children: "The agent requested structured input." }) })
8933
8823
  ] })
8934
8824
  ] }),
8935
- /* @__PURE__ */ jsx18("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx18(
8825
+ /* @__PURE__ */ jsx17("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx17(
8936
8826
  CopyHoverFrame,
8937
8827
  {
8938
8828
  copyText,
8939
8829
  label: "Copy answer",
8940
8830
  className: "w-fit max-w-[90%] min-w-0 sm:max-w-[82%]",
8941
- trailing: /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt }),
8942
- children: /* @__PURE__ */ jsxs14("div", { className: MESSAGE_BUBBLE_CLASS, children: [
8943
- /* @__PURE__ */ jsx18("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: settledLabel }),
8944
- 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__ */ jsxs14("div", { children: [
8945
- multipleQuestions ? /* @__PURE__ */ jsxs14("p", { className: "text-og-sm font-semibold text-og-fg", children: [
8946
- /* @__PURE__ */ jsxs14("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8831
+ trailing: /* @__PURE__ */ jsx17(MessageFooterTime, { occurredAt: item.occurredAt }),
8832
+ children: /* @__PURE__ */ jsxs13("div", { className: MESSAGE_BUBBLE_CLASS, children: [
8833
+ /* @__PURE__ */ jsx17("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: settledLabel }),
8834
+ item.response.outcome === "answered" ? /* @__PURE__ */ jsx17("div", { className: "mt-1.5 space-y-3", children: item.answers.length > 0 ? item.answers.map((answer, answerIndex) => /* @__PURE__ */ jsxs13("div", { children: [
8835
+ multipleQuestions ? /* @__PURE__ */ jsxs13("p", { className: "text-og-sm font-semibold text-og-fg", children: [
8836
+ /* @__PURE__ */ jsxs13("span", { className: "mr-1.5 tabular-nums text-og-fg-muted", children: [
8947
8837
  questionNumberById.get(answer.questionId) ?? answerIndex + 1,
8948
8838
  "."
8949
8839
  ] }),
8950
8840
  " ",
8951
8841
  answer.label
8952
8842
  ] }) : null,
8953
- /* @__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" }) })
8954
- ] }, answer.questionId)) : /* @__PURE__ */ jsx18("p", { children: "Answered" }) }) : null
8843
+ /* @__PURE__ */ jsx17("div", { className: cn("text-og-md text-og-fg", multipleQuestions && "mt-0.5"), children: answer.values.length > 1 ? /* @__PURE__ */ jsx17("ul", { className: "list-disc space-y-0.5 pl-5", children: answer.values.map((value) => /* @__PURE__ */ jsx17("li", { children: value }, `${answer.questionId}-${value}`)) }) : /* @__PURE__ */ jsx17("p", { children: answer.values[0] || "Answered" }) })
8844
+ ] }, answer.questionId)) : /* @__PURE__ */ jsx17("p", { children: "Answered" }) }) : null
8955
8845
  ] })
8956
8846
  }
8957
8847
  ) })
@@ -8978,15 +8868,15 @@ function AgentMessageRow({
8978
8868
  renderMessageText
8979
8869
  }) {
8980
8870
  const enter = useEntranceAnimation();
8981
- const body = renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx18(Markdown, { streaming: item.streaming, children: item.text });
8982
- return /* @__PURE__ */ jsx18("div", { "data-og-annotation-source-key": item.annotationSource?.eventId, children: /* @__PURE__ */ jsx18(
8871
+ const body = renderMessageText ? renderMessageText(item.text, item) : /* @__PURE__ */ jsx17(Markdown, { streaming: item.streaming, children: item.text });
8872
+ return /* @__PURE__ */ jsx17("div", { "data-og-annotation-source-key": item.annotationSource?.eventId, children: /* @__PURE__ */ jsx17(
8983
8873
  CopyHoverFrame,
8984
8874
  {
8985
8875
  copyText: item.text,
8986
8876
  label: "Copy message",
8987
8877
  align: "start",
8988
8878
  className: cn(enter && "animate-og-enter", "min-w-0 text-og-md leading-7 text-og-fg"),
8989
- trailing: item.streaming ? null : /* @__PURE__ */ jsx18(MessageFooterTime, { occurredAt: item.occurredAt }),
8879
+ trailing: item.streaming ? null : /* @__PURE__ */ jsx17(MessageFooterTime, { occurredAt: item.occurredAt }),
8990
8880
  children: body
8991
8881
  }
8992
8882
  ) });
@@ -9028,7 +8918,7 @@ function WorkerCompletionRow({
9028
8918
  onOpenSession
9029
8919
  }) {
9030
8920
  const enter = useEntranceAnimation();
9031
- const [open, setOpen] = useState14(false);
8921
+ const [open, setOpen] = useState13(false);
9032
8922
  const meta = workerCompletionMeta(item);
9033
8923
  const Icon = meta.icon;
9034
8924
  const showPausedReason = item.childStatus !== "failed" && item.goalStatus === "paused" && !!item.pausedReason?.trim();
@@ -9038,17 +8928,17 @@ function WorkerCompletionRow({
9038
8928
  ...showPausedReason ? [{ label: "Paused because", value: item.pausedReason.trim(), muted: true }] : []
9039
8929
  ];
9040
8930
  const hasDetails = details.length > 0;
9041
- return /* @__PURE__ */ jsx18("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: [
9042
- /* @__PURE__ */ jsxs14("div", { className: "flex items-start gap-2.5", children: [
9043
- /* @__PURE__ */ jsx18("span", { className: cn("mt-0.5 shrink-0", meta.iconClass), children: /* @__PURE__ */ jsx18(Icon, { className: "size-4" }) }),
9044
- /* @__PURE__ */ jsx18("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs14("p", { className: "text-og-base leading-5 text-og-fg", children: [
9045
- /* @__PURE__ */ jsx18("span", { className: "font-medium", children: meta.label }),
9046
- item.goalText ? /* @__PURE__ */ jsxs14("span", { className: "text-og-fg-muted", children: [
8931
+ return /* @__PURE__ */ jsx17("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: [
8932
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-start gap-2.5", children: [
8933
+ /* @__PURE__ */ jsx17("span", { className: cn("mt-0.5 shrink-0", meta.iconClass), children: /* @__PURE__ */ jsx17(Icon, { className: "size-4" }) }),
8934
+ /* @__PURE__ */ jsx17("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs13("p", { className: "text-og-base leading-5 text-og-fg", children: [
8935
+ /* @__PURE__ */ jsx17("span", { className: "font-medium", children: meta.label }),
8936
+ item.goalText ? /* @__PURE__ */ jsxs13("span", { className: "text-og-fg-muted", children: [
9047
8937
  " \xB7 ",
9048
8938
  truncate(item.goalText, 90)
9049
8939
  ] }) : null
9050
8940
  ] }) }),
9051
- item.childSessionId && onOpenSession ? /* @__PURE__ */ jsxs14(
8941
+ item.childSessionId && onOpenSession ? /* @__PURE__ */ jsxs13(
9052
8942
  "button",
9053
8943
  {
9054
8944
  type: "button",
@@ -9060,13 +8950,13 @@ function WorkerCompletionRow({
9060
8950
  ),
9061
8951
  children: [
9062
8952
  "View session",
9063
- /* @__PURE__ */ jsx18(ArrowRightIcon2, { className: "size-3.5" })
8953
+ /* @__PURE__ */ jsx17(ArrowRightIcon2, { className: "size-3.5" })
9064
8954
  ]
9065
8955
  }
9066
8956
  ) : null
9067
8957
  ] }),
9068
- hasDetails ? /* @__PURE__ */ jsxs14(Collapsible2.Root, { open, onOpenChange: setOpen, children: [
9069
- /* @__PURE__ */ jsx18(Collapsible2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs14(
8958
+ hasDetails ? /* @__PURE__ */ jsxs13(Collapsible2.Root, { open, onOpenChange: setOpen, children: [
8959
+ /* @__PURE__ */ jsx17(Collapsible2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs13(
9070
8960
  "button",
9071
8961
  {
9072
8962
  type: "button",
@@ -9075,14 +8965,14 @@ function WorkerCompletionRow({
9075
8965
  "outline-hidden transition-colors duration-150 hover:text-og-fg-muted focus-visible:ring-2 focus-visible:ring-og-accent"
9076
8966
  ),
9077
8967
  children: [
9078
- /* @__PURE__ */ jsx18(ChevronRightIcon3, { className: "size-3 transition-transform duration-150 ease-og-in-out group-data-[state=open]/wc:rotate-90" }),
8968
+ /* @__PURE__ */ jsx17(ChevronRightIcon3, { className: "size-3 transition-transform duration-150 ease-og-in-out group-data-[state=open]/wc:rotate-90" }),
9079
8969
  open ? "Hide details" : "Show details"
9080
8970
  ]
9081
8971
  }
9082
8972
  ) }),
9083
- /* @__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__ */ jsxs14("div", { className: "min-w-0", children: [
9084
- /* @__PURE__ */ jsx18("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: detail.label }),
9085
- /* @__PURE__ */ jsx18(
8973
+ /* @__PURE__ */ jsx17(Collapsible2.Content, { className: "overflow-hidden data-[state=closed]:animate-og-collapse data-[state=open]:animate-og-expand", children: /* @__PURE__ */ jsx17("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: [
8974
+ /* @__PURE__ */ jsx17("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: detail.label }),
8975
+ /* @__PURE__ */ jsx17(
9086
8976
  "p",
9087
8977
  {
9088
8978
  className: cn(
@@ -9099,7 +8989,7 @@ function WorkerCompletionRow({
9099
8989
  function SessionStatusRow({ item }) {
9100
8990
  const enter = useEntranceAnimation();
9101
8991
  const meta = SESSION_STATUS_META[item.status];
9102
- return /* @__PURE__ */ jsxs14(
8992
+ return /* @__PURE__ */ jsxs13(
9103
8993
  "div",
9104
8994
  {
9105
8995
  className: cn(
@@ -9108,14 +8998,14 @@ function SessionStatusRow({ item }) {
9108
8998
  ),
9109
8999
  role: "status",
9110
9000
  children: [
9111
- /* @__PURE__ */ jsx18("span", { className: "h-px flex-1 bg-og-border" }),
9112
- /* @__PURE__ */ jsxs14("span", { className: "inline-flex items-center gap-1.5", children: [
9113
- /* @__PURE__ */ jsx18(StatusDot, { status: item.status, className: "size-1" }),
9001
+ /* @__PURE__ */ jsx17("span", { className: "h-px flex-1 bg-og-border" }),
9002
+ /* @__PURE__ */ jsxs13("span", { className: "inline-flex items-center gap-1.5", children: [
9003
+ /* @__PURE__ */ jsx17(StatusDot, { status: item.status, className: "size-1" }),
9114
9004
  meta.label.toLowerCase(),
9115
9005
  " \xB7 ",
9116
9006
  formatRelativeTime(item.occurredAt)
9117
9007
  ] }),
9118
- /* @__PURE__ */ jsx18("span", { className: "h-px flex-1 bg-og-border" })
9008
+ /* @__PURE__ */ jsx17("span", { className: "h-px flex-1 bg-og-border" })
9119
9009
  ]
9120
9010
  }
9121
9011
  );
@@ -9150,7 +9040,7 @@ var GOAL_META = {
9150
9040
  function GoalRow({ item }) {
9151
9041
  const enter = useEntranceAnimation();
9152
9042
  const { label, pill, icon: Icon } = GOAL_META[item.action];
9153
- return /* @__PURE__ */ jsx18("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs14(
9043
+ return /* @__PURE__ */ jsx17("div", { className: cn(enter && "animate-og-enter", "flex justify-center"), children: /* @__PURE__ */ jsxs13(
9154
9044
  "span",
9155
9045
  {
9156
9046
  className: cn(
@@ -9158,8 +9048,8 @@ function GoalRow({ item }) {
9158
9048
  pill
9159
9049
  ),
9160
9050
  children: [
9161
- /* @__PURE__ */ jsx18(Icon, { className: "size-3.5 shrink-0" }),
9162
- /* @__PURE__ */ jsxs14("span", { className: "truncate", children: [
9051
+ /* @__PURE__ */ jsx17(Icon, { className: "size-3.5 shrink-0" }),
9052
+ /* @__PURE__ */ jsxs13("span", { className: "truncate", children: [
9163
9053
  label,
9164
9054
  item.text ? `: ${truncate(item.text, 90)}` : ""
9165
9055
  ] })
@@ -9175,7 +9065,7 @@ function MachineInputBatchRow({
9175
9065
  const label = machineInputBatchLabel(item.members);
9176
9066
  const single = item.members.length === 1 ? item.members[0] : null;
9177
9067
  if (single?.kind === "media_generation_result" && single.result) {
9178
- return /* @__PURE__ */ jsx18(
9068
+ return /* @__PURE__ */ jsx17(
9179
9069
  VideoGenerationResultRow,
9180
9070
  {
9181
9071
  result: single.result,
@@ -9185,9 +9075,9 @@ function MachineInputBatchRow({
9185
9075
  }
9186
9076
  const singleSummary = single ? cleanMachineInputSummary(single.summary) : "";
9187
9077
  const showCollapsedSummary = single != null && machineInputSummaryIsUseful(single.kind, singleSummary);
9188
- return /* @__PURE__ */ jsxs14("div", { className: cn(enter && "animate-og-enter", "flex flex-col items-center gap-1.5"), children: [
9189
- /* @__PURE__ */ jsxs14("details", { className: "group w-full max-w-full", "data-og-machine-input-batch": "", children: [
9190
- /* @__PURE__ */ jsx18("summary", { className: "flex cursor-pointer list-none justify-center [&::-webkit-details-marker]:hidden", children: /* @__PURE__ */ jsxs14(
9078
+ return /* @__PURE__ */ jsxs13("div", { className: cn(enter && "animate-og-enter", "flex flex-col items-center gap-1.5"), children: [
9079
+ /* @__PURE__ */ jsxs13("details", { className: "group w-full max-w-full", "data-og-machine-input-batch": "", children: [
9080
+ /* @__PURE__ */ jsx17("summary", { className: "flex cursor-pointer list-none justify-center [&::-webkit-details-marker]:hidden", children: /* @__PURE__ */ jsxs13(
9191
9081
  "span",
9192
9082
  {
9193
9083
  className: cn(
@@ -9195,18 +9085,18 @@ function MachineInputBatchRow({
9195
9085
  NEUTRAL_PILL
9196
9086
  ),
9197
9087
  children: [
9198
- /* @__PURE__ */ jsx18(
9088
+ /* @__PURE__ */ jsx17(
9199
9089
  ChevronRightIcon3,
9200
9090
  {
9201
9091
  "aria-hidden": true,
9202
9092
  className: "size-3.5 shrink-0 transition-transform group-open:rotate-90"
9203
9093
  }
9204
9094
  ),
9205
- /* @__PURE__ */ jsx18("span", { className: "truncate", children: label })
9095
+ /* @__PURE__ */ jsx17("span", { className: "truncate", children: label })
9206
9096
  ]
9207
9097
  }
9208
9098
  ) }),
9209
- /* @__PURE__ */ jsx18("div", { className: "mx-auto mt-2 w-full max-w-lg space-y-2 border-t border-og-border/50 pt-2", children: item.members.map((member) => /* @__PURE__ */ jsx18(
9099
+ /* @__PURE__ */ jsx17("div", { className: "mx-auto mt-2 w-full max-w-lg space-y-2 border-t border-og-border/50 pt-2", children: item.members.map((member) => /* @__PURE__ */ jsx17(
9210
9100
  MachineInputRow,
9211
9101
  {
9212
9102
  member,
@@ -9215,7 +9105,7 @@ function MachineInputBatchRow({
9215
9105
  member.id
9216
9106
  )) })
9217
9107
  ] }),
9218
- 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
9108
+ showCollapsedSummary ? /* @__PURE__ */ jsx17("p", { className: "max-w-lg px-3 text-center text-og-xs leading-4 text-og-fg-subtle", children: truncate(singleSummary, 160) }) : null
9219
9109
  ] });
9220
9110
  }
9221
9111
  function MachineInputRow({
@@ -9223,7 +9113,7 @@ function MachineInputRow({
9223
9113
  loadVideoArtifactPlayback
9224
9114
  }) {
9225
9115
  if (member.kind === "media_generation_result" && member.result) {
9226
- return /* @__PURE__ */ jsx18(
9116
+ return /* @__PURE__ */ jsx17(
9227
9117
  VideoGenerationResultRow,
9228
9118
  {
9229
9119
  result: member.result,
@@ -9234,15 +9124,15 @@ function MachineInputRow({
9234
9124
  }
9235
9125
  const source = readableMachineInputSource(member.sourceId);
9236
9126
  const summary = cleanMachineInputSummary(member.summary);
9237
- return /* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 items-start gap-2.5", children: [
9238
- /* @__PURE__ */ jsx18("span", { className: "mt-2 size-1.5 shrink-0 rounded-full bg-og-fg-subtle", "aria-hidden": true }),
9239
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
9240
- /* @__PURE__ */ jsx18("span", { className: "text-og-control font-medium text-og-fg-muted", children: MACHINE_INPUT_META[member.kind] }),
9241
- source && /* @__PURE__ */ jsxs14("span", { className: "ml-1.5 text-og-control text-og-fg-subtle", children: [
9127
+ return /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 items-start gap-2.5", children: [
9128
+ /* @__PURE__ */ jsx17("span", { className: "mt-2 size-1.5 shrink-0 rounded-full bg-og-fg-subtle", "aria-hidden": true }),
9129
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
9130
+ /* @__PURE__ */ jsx17("span", { className: "text-og-control font-medium text-og-fg-muted", children: MACHINE_INPUT_META[member.kind] }),
9131
+ source && /* @__PURE__ */ jsxs13("span", { className: "ml-1.5 text-og-control text-og-fg-subtle", children: [
9242
9132
  "from ",
9243
9133
  source
9244
9134
  ] }),
9245
- 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
9135
+ summary ? /* @__PURE__ */ jsx17("p", { className: "mt-0.5 whitespace-pre-wrap break-words text-og-menu leading-5 text-og-fg", children: truncate(summary, 320) }) : null
9246
9136
  ] })
9247
9137
  ] });
9248
9138
  }
@@ -9253,7 +9143,7 @@ function VideoGenerationResultRow({
9253
9143
  }) {
9254
9144
  const enter = useEntranceAnimation();
9255
9145
  if (result.status !== "ready") {
9256
- return /* @__PURE__ */ jsxs14(
9146
+ return /* @__PURE__ */ jsxs13(
9257
9147
  "div",
9258
9148
  {
9259
9149
  className: cn(
@@ -9261,18 +9151,18 @@ function VideoGenerationResultRow({
9261
9151
  "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"
9262
9152
  ),
9263
9153
  children: [
9264
- /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 text-og-sm font-medium text-og-status-failed", children: [
9265
- /* @__PURE__ */ jsx18(XCircleIcon, { "aria-hidden": true, className: "size-4" }),
9154
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2 text-og-sm font-medium text-og-status-failed", children: [
9155
+ /* @__PURE__ */ jsx17(XCircleIcon, { "aria-hidden": true, className: "size-4" }),
9266
9156
  "Video generation failed"
9267
9157
  ] }),
9268
- /* @__PURE__ */ jsx18("p", { className: "mt-1 text-og-sm leading-5 text-og-fg-muted", children: result.boundedPublicReason })
9158
+ /* @__PURE__ */ jsx17("p", { className: "mt-1 text-og-sm leading-5 text-og-fg-muted", children: result.boundedPublicReason })
9269
9159
  ]
9270
9160
  }
9271
9161
  );
9272
9162
  }
9273
9163
  const { receipt } = result;
9274
9164
  const facts = receipt.video;
9275
- return /* @__PURE__ */ jsxs14(
9165
+ return /* @__PURE__ */ jsxs13(
9276
9166
  "section",
9277
9167
  {
9278
9168
  "aria-label": "Generated video",
@@ -9282,18 +9172,18 @@ function VideoGenerationResultRow({
9282
9172
  compact && "max-w-lg"
9283
9173
  ),
9284
9174
  children: [
9285
- loadVideoArtifactPlayback ? /* @__PURE__ */ jsx18(
9175
+ loadVideoArtifactPlayback ? /* @__PURE__ */ jsx17(
9286
9176
  GeneratedVideoPlayer,
9287
9177
  {
9288
9178
  receipt,
9289
9179
  loadPlaybackSource: loadVideoArtifactPlayback,
9290
9180
  className: "rounded-none border-0 shadow-none"
9291
9181
  }
9292
- ) : /* @__PURE__ */ jsx18("div", { className: "flex aspect-video items-center justify-center bg-og-surface-2 text-og-fg-subtle", children: /* @__PURE__ */ jsx18(PlayIcon2, { "aria-hidden": true, className: "size-6" }) }),
9293
- /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-between gap-4 px-3.5 py-2.5", children: [
9294
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
9295
- /* @__PURE__ */ jsx18("p", { className: "text-og-sm font-medium text-og-fg", children: "Generated video" }),
9296
- /* @__PURE__ */ jsxs14("p", { className: "truncate text-og-xs text-og-fg-subtle", children: [
9182
+ ) : /* @__PURE__ */ jsx17("div", { className: "flex aspect-video items-center justify-center bg-og-surface-2 text-og-fg-subtle", children: /* @__PURE__ */ jsx17(PlayIcon2, { "aria-hidden": true, className: "size-6" }) }),
9183
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between gap-4 px-3.5 py-2.5", children: [
9184
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
9185
+ /* @__PURE__ */ jsx17("p", { className: "text-og-sm font-medium text-og-fg", children: "Generated video" }),
9186
+ /* @__PURE__ */ jsxs13("p", { className: "truncate text-og-xs text-og-fg-subtle", children: [
9297
9187
  facts.width,
9298
9188
  "\xD7",
9299
9189
  facts.height,
@@ -9302,7 +9192,7 @@ function VideoGenerationResultRow({
9302
9192
  facts.hasAudio ? " \xB7 Audio" : ""
9303
9193
  ] })
9304
9194
  ] }),
9305
- /* @__PURE__ */ jsx18(CheckCircle2Icon, { "aria-label": "Ready", className: "size-4 shrink-0 text-og-status-success" })
9195
+ /* @__PURE__ */ jsx17(CheckCircle2Icon, { "aria-label": "Ready", className: "size-4 shrink-0 text-og-status-success" })
9306
9196
  ] })
9307
9197
  ]
9308
9198
  }
@@ -9314,7 +9204,7 @@ function formatVideoDuration(seconds) {
9314
9204
  function NoticeRow({ item }) {
9315
9205
  const enter = useEntranceAnimation();
9316
9206
  const tone = item.tone === "failed" ? "border-og-status-failed/35 bg-og-status-failed/10 text-og-status-failed" : item.tone === "waiting" ? WAITING_PILL_CLASS : "border-og-border bg-og-surface-1 text-og-fg-muted";
9317
- return /* @__PURE__ */ jsxs14(
9207
+ return /* @__PURE__ */ jsxs13(
9318
9208
  "div",
9319
9209
  {
9320
9210
  className: cn(
@@ -9324,20 +9214,20 @@ function NoticeRow({ item }) {
9324
9214
  ),
9325
9215
  role: "status",
9326
9216
  children: [
9327
- /* @__PURE__ */ jsx18(
9217
+ /* @__PURE__ */ jsx17(
9328
9218
  TriangleAlertIcon3,
9329
9219
  {
9330
9220
  className: cn("mt-0.5 size-4 shrink-0", item.tone === "cancelled" && "opacity-60")
9331
9221
  }
9332
9222
  ),
9333
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
9334
- /* @__PURE__ */ jsx18("span", { className: "whitespace-pre-wrap break-words", children: item.text }),
9335
- item.details ? /* @__PURE__ */ jsxs14("details", { className: "mt-2 text-og-control", children: [
9336
- /* @__PURE__ */ jsx18("summary", { className: "cursor-pointer font-medium", children: item.details.label }),
9337
- /* @__PURE__ */ jsx18("pre", { className: "mt-2 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-og-sm bg-black/5 p-2 font-mono dark:bg-white/5", children: JSON.stringify(item.details.value, null, 2) })
9223
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
9224
+ /* @__PURE__ */ jsx17("span", { className: "whitespace-pre-wrap break-words", children: item.text }),
9225
+ item.details ? /* @__PURE__ */ jsxs13("details", { className: "mt-2 text-og-control", children: [
9226
+ /* @__PURE__ */ jsx17("summary", { className: "cursor-pointer font-medium", children: item.details.label }),
9227
+ /* @__PURE__ */ jsx17("pre", { className: "mt-2 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-og-sm bg-black/5 p-2 font-mono dark:bg-white/5", children: JSON.stringify(item.details.value, null, 2) })
9338
9228
  ] }) : null
9339
9229
  ] }),
9340
- item.action ? /* @__PURE__ */ jsx18(
9230
+ item.action ? /* @__PURE__ */ jsx17(
9341
9231
  "a",
9342
9232
  {
9343
9233
  className: "shrink-0 rounded-og-sm border border-current/25 px-2 py-1 text-og-control font-medium hover:bg-current/10",
@@ -9357,8 +9247,8 @@ function AuthNeededRow({
9357
9247
  resolveProviderLogo
9358
9248
  }) {
9359
9249
  const enter = useEntranceAnimation();
9360
- const [busy, setBusy] = useState14(false);
9361
- const [failed, setFailed] = useState14(false);
9250
+ const [busy, setBusy] = useState13(false);
9251
+ const [failed, setFailed] = useState13(false);
9362
9252
  const recommendation = item.capability ?? null;
9363
9253
  const provider = recommendation?.name ?? (item.serverId === "codex_apps" ? "Codex Apps" : providerLabel(item.providerDomain));
9364
9254
  const unavailable = item.reason === "personal_authority_unavailable" || item.reason === "unsupported_auth" || item.reason === "resource_scope_unavailable";
@@ -9380,30 +9270,30 @@ function AuthNeededRow({
9380
9270
  setBusy(false);
9381
9271
  }
9382
9272
  };
9383
- return /* @__PURE__ */ jsxs14("div", { className: cn(enter && "animate-og-enter", "flex flex-col gap-2"), role: "status", children: [
9384
- /* @__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: [
9385
- /* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
9386
- /* @__PURE__ */ jsx18(
9273
+ return /* @__PURE__ */ jsxs13("div", { className: cn(enter && "animate-og-enter", "flex flex-col gap-2"), role: "status", children: [
9274
+ /* @__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: [
9275
+ /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
9276
+ /* @__PURE__ */ jsx17(
9387
9277
  AuthProviderLogo,
9388
9278
  {
9389
9279
  src: resolveProviderLogo?.(item.providerDomain) ?? null,
9390
9280
  label: provider
9391
9281
  }
9392
9282
  ),
9393
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0", children: [
9394
- /* @__PURE__ */ jsx18("p", { className: "truncate text-og-md font-medium text-og-fg", children: title }),
9395
- /* @__PURE__ */ jsx18("p", { className: "line-clamp-2 text-og-sm text-og-fg-subtle", children: reasonLine }),
9396
- recommendation ? /* @__PURE__ */ jsxs14("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9283
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
9284
+ /* @__PURE__ */ jsx17("p", { className: "truncate text-og-md font-medium text-og-fg", children: title }),
9285
+ /* @__PURE__ */ jsx17("p", { className: "line-clamp-2 text-og-sm text-og-fg-subtle", children: reasonLine }),
9286
+ recommendation ? /* @__PURE__ */ jsxs13("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9397
9287
  "Provider: ",
9398
9288
  item.providerDomain
9399
9289
  ] }) : null,
9400
- recommendation && recommendation.requiredVariables.length > 0 ? /* @__PURE__ */ jsxs14("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9290
+ recommendation && recommendation.requiredVariables.length > 0 ? /* @__PURE__ */ jsxs13("p", { className: "mt-1 truncate text-og-xs text-og-fg-muted", children: [
9401
9291
  "Needs variables: ",
9402
9292
  recommendation.requiredVariables.join(", ")
9403
9293
  ] }) : null
9404
9294
  ] })
9405
9295
  ] }),
9406
- !unavailable && onReconnect ? /* @__PURE__ */ jsxs14(
9296
+ !unavailable && onReconnect ? /* @__PURE__ */ jsxs13(
9407
9297
  "button",
9408
9298
  {
9409
9299
  type: "button",
@@ -9414,11 +9304,11 @@ function AuthNeededRow({
9414
9304
  "transition-colors hover:bg-og-accent-strong disabled:opacity-70 pointer-coarse:min-h-9"
9415
9305
  ),
9416
9306
  children: [
9417
- /* @__PURE__ */ jsx18(RefreshCwIcon, { className: cn("size-3.5", busy && "animate-og-spin"), "aria-hidden": true }),
9307
+ /* @__PURE__ */ jsx17(RefreshCwIcon, { className: cn("size-3.5", busy && "animate-og-spin"), "aria-hidden": true }),
9418
9308
  busy ? "Opening\u2026" : actionLabel
9419
9309
  ]
9420
9310
  }
9421
- ) : !unavailable && item.authorizationUrl ? /* @__PURE__ */ jsxs14(
9311
+ ) : !unavailable && item.authorizationUrl ? /* @__PURE__ */ jsxs13(
9422
9312
  "a",
9423
9313
  {
9424
9314
  href: item.authorizationUrl,
@@ -9429,14 +9319,14 @@ function AuthNeededRow({
9429
9319
  "transition-colors hover:bg-og-accent-strong pointer-coarse:min-h-9"
9430
9320
  ),
9431
9321
  children: [
9432
- /* @__PURE__ */ jsx18(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9322
+ /* @__PURE__ */ jsx17(RefreshCwIcon, { className: "size-3.5", "aria-hidden": true }),
9433
9323
  actionLabel
9434
9324
  ]
9435
9325
  }
9436
9326
  ) : null
9437
9327
  ] }),
9438
- !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,
9439
- failed ? /* @__PURE__ */ jsxs14("p", { className: "px-1 text-og-xs text-og-status-failed", children: [
9328
+ !unavailable ? /* @__PURE__ */ jsx17("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,
9329
+ failed ? /* @__PURE__ */ jsxs13("p", { className: "px-1 text-og-xs text-og-status-failed", children: [
9440
9330
  "Couldn't start ",
9441
9331
  missing ? "connecting" : "reconnecting",
9442
9332
  " ",
@@ -9446,15 +9336,15 @@ function AuthNeededRow({
9446
9336
  ] });
9447
9337
  }
9448
9338
  function AuthProviderLogo({ src, label }) {
9449
- const [failed, setFailed] = useState14(false);
9339
+ const [failed, setFailed] = useState13(false);
9450
9340
  useEffect11(() => setFailed(false), [src]);
9451
9341
  const showImage = src && !failed;
9452
- return /* @__PURE__ */ jsx18(
9342
+ return /* @__PURE__ */ jsx17(
9453
9343
  "span",
9454
9344
  {
9455
9345
  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",
9456
9346
  "aria-hidden": true,
9457
- children: showImage ? /* @__PURE__ */ jsx18(
9347
+ children: showImage ? /* @__PURE__ */ jsx17(
9458
9348
  "img",
9459
9349
  {
9460
9350
  src,
@@ -9464,7 +9354,7 @@ function AuthProviderLogo({ src, label }) {
9464
9354
  className: "size-full object-contain p-1.5",
9465
9355
  onError: () => setFailed(true)
9466
9356
  }
9467
- ) : /* @__PURE__ */ jsx18("span", { children: monogram(label) })
9357
+ ) : /* @__PURE__ */ jsx17("span", { children: monogram(label) })
9468
9358
  }
9469
9359
  );
9470
9360
  }
@@ -9534,9 +9424,6 @@ export {
9534
9424
  tailPeek,
9535
9425
  unwrapMcpOutput,
9536
9426
  DisclosureDefaultsProvider,
9537
- useLightbox,
9538
- useLightboxOptional,
9539
- LightboxProvider,
9540
9427
  ActivityDisclosure,
9541
9428
  TermBlock,
9542
9429
  PayloadBlock,
@@ -9568,4 +9455,4 @@ export {
9568
9455
  MessageTimeline,
9569
9456
  TimelineRow
9570
9457
  };
9571
- //# sourceMappingURL=chunk-6H6S5V4Z.js.map
9458
+ //# sourceMappingURL=chunk-HQVCKCLG.js.map