@qredence/fleet 0.10.3 → 0.10.4

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 (91) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/web/client/assets/{artifacts-panel-CfWH5cQn.js → artifacts-panel-CDuvwZXW.js} +1 -1
  3. package/dist/web/client/assets/{chat-command-palette-CKGrP-Ke.js → chat-command-palette-DSpwG3Ph.js} +1 -1
  4. package/dist/web/client/assets/{ipython-tool-bieUhw9K.js → cpython-tool-CcGMkNQ4.js} +1 -1
  5. package/dist/web/client/assets/globals-CR3boQb2.css +2 -0
  6. package/dist/web/client/assets/{index-DJDQWCGd.js → index-BpqhS0Xv.js} +2 -2
  7. package/dist/web/client/assets/prime-agent-artifacts-CuR1D_ch.js +5 -0
  8. package/dist/web/client/assets/reasoning-line-B79r9oqP.js +1 -0
  9. package/dist/web/client/assets/{repl-panel-5xgkDXO5.js → repl-panel-Dj0nX5A6.js} +1 -1
  10. package/dist/web/client/assets/right-panel-registry-HNH3niQ8.js +2 -0
  11. package/dist/web/client/assets/routes-CJRPrnVB.js +14 -0
  12. package/dist/web/client/assets/session-activity-panel-Dvy044_T.js +1 -0
  13. package/dist/web/client/assets/{session-insights-panel-BXEmuJKf.js → session-insights-panel-Bltz_o6C.js} +1 -1
  14. package/dist/web/client/assets/{session-tool-renderer-CGMatufW.js → session-tool-renderer-BLFqj28b.js} +7 -7
  15. package/dist/web/client/assets/{subagent-chat-panel-xm-zBsFL.js → subagent-chat-panel-Cr57arv9.js} +1 -1
  16. package/dist/web/client/assets/subagent-transcript-CqAEPEJp.js +1 -0
  17. package/dist/web/client/assets/subagents-panel-DCjSDcM4.js +1 -0
  18. package/dist/web/client/assets/tool-action-icon-vTW_L1Fj.js +1 -0
  19. package/dist/web/client/assets/tool-output-normalizer-DDoLNo4P.js +4 -0
  20. package/dist/web/client/assets/tool-part-normalizer-DdgmYc9z.js +4 -0
  21. package/dist/web/client/assets/{tool-result-C_RIixge.js → tool-result-DxWDQJSF.js} +3 -3
  22. package/dist/web/client/assets/tool-timeline-BoWCZg0K.js +2 -0
  23. package/dist/web/client/bundle-budget.json +5 -5
  24. package/dist/web/server/{_tanstack-start-manifest_v-Cs4JeecK-7Q7PABV3.js → _tanstack-start-manifest_v-BhSwNUm2-HUY424SL.js} +9 -9
  25. package/dist/web/server/{agents-DOgCHixY-TU7YLWS2.js → agents-DOgCHixY-U362NTZW.js} +1 -1
  26. package/dist/web/server/{agents-page-BdiR9H8w-UXB7T3LH.js → agents-page-BdiR9H8w-WK3UCXSA.js} +5 -5
  27. package/dist/web/server/{artifacts-panel-DjaLT-MS-DAPJTA2V.js → artifacts-panel-C9OUKEU0-N74QLS6E.js} +18 -18
  28. package/dist/web/server/{chat-command-palette-CGCsCr9E-U5PCLXNE.js → chat-command-palette-CnKy1Q4g-GJJGAVQ4.js} +12 -12
  29. package/dist/web/server/{chunk-GNXIDE26.js → chunk-2R5CY7DW.js} +2 -2
  30. package/dist/web/server/{chunk-MEAWBN4N.js → chunk-37MAYG3X.js} +15 -15
  31. package/dist/web/server/{chunk-3LAD2C43.js → chunk-3KHS4HHI.js} +13 -13
  32. package/dist/web/server/{chunk-BD7YKYWL.js → chunk-4ISLMQ2M.js} +3 -3
  33. package/dist/web/server/{chunk-FSQWWR2M.js → chunk-4ZKBYAHH.js} +1 -1
  34. package/dist/web/server/{chunk-BLGKLQJG.js → chunk-63IBRYZL.js} +6 -6
  35. package/dist/web/server/{chunk-TXZDDJCT.js → chunk-6OZY4XH7.js} +3 -3
  36. package/dist/web/server/{chunk-QWJE6ES6.js → chunk-A6LRK2MC.js} +142 -32
  37. package/dist/web/server/{chunk-PBNUO4IN.js → chunk-BG4DVGLL.js} +2 -2
  38. package/dist/web/server/{chunk-KSGGSGOA.js → chunk-BVSDXFQ6.js} +1 -1
  39. package/dist/web/server/{chunk-HAFELESQ.js → chunk-ETTLRHDY.js} +3 -3
  40. package/dist/web/server/{chunk-BZ2EAUZZ.js → chunk-F6P2FTIT.js} +3 -3
  41. package/dist/web/server/{chunk-CE7U5QB2.js → chunk-FGOT5FGH.js} +2 -2
  42. package/dist/web/server/{chunk-UULUKSQD.js → chunk-FSIRN7F7.js} +104 -94
  43. package/dist/web/server/{chunk-R4BS3KYI.js → chunk-FVTCXLYO.js} +12 -12
  44. package/dist/web/server/{chunk-2Y2543CV.js → chunk-IJZDCYFG.js} +15 -10
  45. package/dist/web/server/{chunk-FT7HNDR5.js → chunk-JR5TXTGV.js} +5 -5
  46. package/dist/web/server/{chunk-PQVTLG3E.js → chunk-NEMK2RTM.js} +4 -4
  47. package/dist/web/server/{chunk-AXN2OBPF.js → chunk-O5CPI2JH.js} +1 -1
  48. package/dist/web/server/{chunk-Q4ECIATK.js → chunk-ORO7KXHF.js} +4 -4
  49. package/dist/web/server/{chunk-VDEUVEWL.js → chunk-U26ZMWVI.js} +300 -300
  50. package/dist/web/server/{chunk-APOS34PW.js → chunk-U73UDYRF.js} +2 -2
  51. package/dist/web/server/{chunk-VBCFQNR3.js → chunk-USP4O3V7.js} +2 -2
  52. package/dist/web/server/{chunk-FNV3WZXL.js → chunk-VFW2KPLD.js} +2 -2
  53. package/dist/web/server/{chunk-5MOXRFX6.js → chunk-Y3YE73VQ.js} +45 -5
  54. package/dist/web/server/{chunk-UZ2KHDSW.js → chunk-ZRISZYHZ.js} +14 -14
  55. package/dist/web/server/{connectors-Dv_uPdv0-2TCNQ3TU.js → connectors-Dv_uPdv0-WIJGW5CQ.js} +1 -1
  56. package/dist/web/server/{connectors-page-DW75T-uH-BR36R6FT.js → connectors-page-DW75T-uH-3KBZRVAT.js} +8 -8
  57. package/dist/web/server/{create-project-dialog-aCD1v__i-37Y2AYF7.js → create-project-dialog-dwXNUwY--APUSOU5G.js} +13 -13
  58. package/dist/web/server/{fork-picker-dialog-DFpKOdAw-JPLJSYYU.js → fork-picker-dialog-DFpKOdAw-WJPMXHSE.js} +6 -6
  59. package/dist/web/server/{markdown-Cc8V9dOF-JTNTJKQU.js → markdown-Cc8V9dOF-MMI3ZBVZ.js} +4 -4
  60. package/dist/web/server/{markdown-code-gaRnbgNM-V5LIRYCD.js → markdown-code-gaRnbgNM-ND6VVJ7D.js} +4 -4
  61. package/dist/web/server/{message-queue-nQ2_kU82-KKSLYR4S.js → message-queue-nQ2_kU82-3PN7CKFG.js} +4 -4
  62. package/dist/web/server/{model-selector-list-q8bMnmhy-SPFJGUBT.js → model-selector-list-q8bMnmhy-W6JM2N7G.js} +8 -8
  63. package/dist/web/server/{openui-renderer-DNl7TU3v-LAP3OM5H.js → openui-renderer-Das3EemD-AODSN4I2.js} +14 -14
  64. package/dist/web/server/{prompt-suggestions-B67Uy5Rk-5SMTSIFQ.js → prompt-suggestions-B67Uy5Rk-6MV56U6N.js} +4 -4
  65. package/dist/web/server/{repl-panel-1kSS1UGd-POXRYDDJ.js → repl-panel-DfC-BCfn-4OZEKSFX.js} +8 -8
  66. package/dist/web/server/{resources-panel-Dtm8nlrt-PMS7NWKW.js → resources-panel-BL41dm3H-UWWMTOFL.js} +10 -10
  67. package/dist/web/server/{router-CFtn3QOM-3WK4R4UB.js → router-DJDog9kJ-IHEFPUCH.js} +5 -5
  68. package/dist/web/server/{routes-CpT-KFt7-F6WEPWF6.js → routes-BWk0YodE-CEPOI27O.js} +29 -31
  69. package/dist/web/server/server.js +2 -2
  70. package/dist/web/server/{session-activity-panel-Dr9Q0Wmd-2F7ZYCAY.js → session-activity-panel-B56ALLHr-6PDGEA2M.js} +83 -18
  71. package/dist/web/server/{session-insights-panel-BiVObm_6-AP4FITT7.js → session-insights-panel-cS12HsWt-YX7QOWIA.js} +2 -2
  72. package/dist/web/server/{session-reasoning-panel-BFyfdmnZ-AQBC4WAL.js → session-reasoning-panel-CtQUqSv9-JIXRXBH7.js} +9 -9
  73. package/dist/web/server/{session-tool-renderer-DHu5tv0A-YFP7I2UC.js → session-tool-renderer-Co466pSk-QUTYNAOE.js} +12 -12
  74. package/dist/web/server/{session-tree-panel-BkMTm2QF-K56UQR2K.js → session-tree-panel-B23gApxX-44NFOCFB.js} +9 -9
  75. package/dist/web/server/{settings-dialog-1Zr_EiEd-GDE4IXK2.js → settings-dialog-CdRjXyfc-IYMPCNR5.js} +16 -16
  76. package/dist/web/server/{subagent-chat-panel-BCm1x_mR-HY6QEHEF.js → subagent-chat-panel-DwvOMUnh-EPVZRTRM.js} +15 -15
  77. package/dist/web/server/{subagents-panel-3gfZLsTx-7D53UO7K.js → subagents-panel-DlFBFoX6-SAWYBVZJ.js} +31 -30
  78. package/dist/web/server/{workspace-panel-BeSOuvp7-7N3CAG2K.js → workspace-panel-CxUsWmIE-3BMZFN5O.js} +10 -10
  79. package/package.json +1 -1
  80. package/dist/web/client/assets/globals-C6h6fq-s.css +0 -2
  81. package/dist/web/client/assets/prime-agent-artifacts-C-g1VPiW.js +0 -5
  82. package/dist/web/client/assets/reasoning-line-DGdPUMwT.js +0 -1
  83. package/dist/web/client/assets/right-panel-registry-BkBAryPm.js +0 -2
  84. package/dist/web/client/assets/routes-C6C0y-oH.js +0 -14
  85. package/dist/web/client/assets/session-activity-panel-BloVPsLJ.js +0 -1
  86. package/dist/web/client/assets/subagent-transcript-BzToBVWk.js +0 -1
  87. package/dist/web/client/assets/subagents-panel-B5ooG4sS.js +0 -1
  88. package/dist/web/client/assets/tool-output-normalizer-DDU09Zc6.js +0 -4
  89. package/dist/web/client/assets/tool-part-normalizer-CJ2sY87r.js +0 -4
  90. package/dist/web/client/assets/tool-timeline-BVY5VQ3a.js +0 -2
  91. package/dist/web/client/assets/wrench-BXX_Ah2s.js +0 -1
@@ -2,10 +2,10 @@ import {
2
2
  cva,
3
3
  mergeProps,
4
4
  useRenderElement
5
- } from "./chunk-FSQWWR2M.js";
5
+ } from "./chunk-4ZKBYAHH.js";
6
6
  import {
7
7
  cn
8
- } from "./chunk-VDEUVEWL.js";
8
+ } from "./chunk-U26ZMWVI.js";
9
9
 
10
10
  // node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/use-render/useRender.mjs
11
11
  function useRender(params) {
@@ -31,8 +31,11 @@ import {
31
31
  Collapsible$1,
32
32
  CollapsibleContent,
33
33
  CollapsibleTrigger,
34
- derivePrimeAgentArtifactRuns
35
- } from "./chunk-5MOXRFX6.js";
34
+ artifactDisplayTitle,
35
+ derivePrimeAgentArtifactRuns,
36
+ toolActionIconForName,
37
+ toolPartDisplayName
38
+ } from "./chunk-Y3YE73VQ.js";
36
39
  import {
37
40
  EASE_DRAWER,
38
41
  EASE_IN_OUT,
@@ -50,7 +53,7 @@ import {
50
53
  import {
51
54
  Badge,
52
55
  useRender
53
- } from "./chunk-CE7U5QB2.js";
56
+ } from "./chunk-FGOT5FGH.js";
54
57
  import {
55
58
  KNOWN_PROVIDERS,
56
59
  NETWORK_DISCONNECTED_MESSAGE,
@@ -98,7 +101,7 @@ import {
98
101
  popupStoreSelectors,
99
102
  usePopupHandleStore,
100
103
  useRenderDialogRoot
101
- } from "./chunk-BD7YKYWL.js";
104
+ } from "./chunk-4ISLMQ2M.js";
102
105
  import {
103
106
  ARROW_DOWN,
104
107
  ARROW_LEFT,
@@ -154,7 +157,7 @@ import {
154
157
  useToolbarRootContext,
155
158
  useTransitionStatus,
156
159
  useTriggerDataForwarding
157
- } from "./chunk-TXZDDJCT.js";
160
+ } from "./chunk-6OZY4XH7.js";
158
161
  import {
159
162
  CLICK_TRIGGER_IDENTIFIER,
160
163
  DEFAULT_SIDES,
@@ -211,7 +214,7 @@ import {
211
214
  useHoverReferenceInteraction,
212
215
  useOpenChangeComplete,
213
216
  usePositioner
214
- } from "./chunk-APOS34PW.js";
217
+ } from "./chunk-U73UDYRF.js";
215
218
  import {
216
219
  __exportAll
217
220
  } from "./chunk-OO7NBFQQ.js";
@@ -236,7 +239,7 @@ import {
236
239
  useMergedRefs,
237
240
  useRenderElement,
238
241
  useStableCallback
239
- } from "./chunk-FSQWWR2M.js";
242
+ } from "./chunk-4ZKBYAHH.js";
240
243
  import {
241
244
  Activity,
242
245
  ArrowUp,
@@ -259,14 +262,11 @@ import {
259
262
  Command,
260
263
  Copy,
261
264
  Cpu,
262
- Earth,
263
265
  Ellipsis,
264
266
  File,
265
267
  FileBraces,
266
268
  FileCode,
267
269
  FileCodeCorner,
268
- FilePenLine,
269
- FileSearch,
270
270
  FileText,
271
271
  Folder,
272
272
  FolderOpen,
@@ -279,7 +279,6 @@ import {
279
279
  ListRestart,
280
280
  ListTodo,
281
281
  LoaderCircle,
282
- MessageCircleQuestionMark,
283
282
  Package,
284
283
  Palette,
285
284
  PanelRight,
@@ -299,21 +298,18 @@ import {
299
298
  Square,
300
299
  SquarePen,
301
300
  SquareTerminal,
302
- Terminal,
303
301
  ThumbsDown,
304
302
  ThumbsUp,
305
303
  Trash,
306
304
  TriangleAlert,
307
305
  Unplug,
308
- UsersRound,
309
306
  Wind,
310
- Wrench,
311
307
  X,
312
308
  Zap,
313
309
  cn,
314
310
  createEngine,
315
311
  wrapClsx
316
- } from "./chunk-VDEUVEWL.js";
312
+ } from "./chunk-U26ZMWVI.js";
317
313
  import {
318
314
  Link,
319
315
  useNavigate
@@ -334,7 +330,7 @@ function useForcedRerendering() {
334
330
  // web/app/dist/server/assets/workspace-path-nav-Dt-zZ8ZW.js
335
331
  import { Suspense, lazy } from "react";
336
332
  import { jsx } from "react/jsx-runtime";
337
- var MarkdownContent = lazy(() => import("./markdown-Cc8V9dOF-JTNTJKQU.js").then((n) => n.a).then(({ Markdown }) => ({ default: Markdown })));
333
+ var MarkdownContent = lazy(() => import("./markdown-Cc8V9dOF-MMI3ZBVZ.js").then((n) => n.a).then(({ Markdown }) => ({ default: Markdown })));
338
334
  function LazyMarkdown(props) {
339
335
  return /* @__PURE__ */ jsx(Suspense, {
340
336
  fallback: /* @__PURE__ */ jsx("div", {
@@ -524,7 +520,7 @@ function isDaytonaNotConnectedError(error) {
524
520
  return error.status === 403;
525
521
  }
526
522
 
527
- // web/app/dist/server/assets/routes-CpT-KFt7.js
523
+ // web/app/dist/server/assets/routes-BWk0YodE.js
528
524
  import { Fragment as Fragment4, Suspense as Suspense2, createContext as createContext8, forwardRef as forwardRef15, isValidElement, lazy as lazy2, memo, useCallback as useCallback3, useContext as useContext8, useEffect as useEffect3, useEffectEvent, useId, useLayoutEffect, useMemo as useMemo8, useReducer, useRef as useRef12, useState as useState7, useSyncExternalStore as useSyncExternalStore2 } from "react";
529
525
  import { Fragment as Fragment$1, jsx as jsx4, jsxs } from "react/jsx-runtime";
530
526
  import { createPortal } from "react-dom";
@@ -3232,7 +3228,7 @@ var TabsList = /* @__PURE__ */ React31.forwardRef(function TabsList2(componentPr
3232
3228
  });
3233
3229
  if (process.env.NODE_ENV !== "production") TabsList.displayName = "TabsList";
3234
3230
 
3235
- // web/app/dist/server/assets/routes-CpT-KFt7.js
3231
+ // web/app/dist/server/assets/routes-BWk0YodE.js
3236
3232
  function isChatTextPart(part) {
3237
3233
  return part.type === "text";
3238
3234
  }
@@ -3484,7 +3480,7 @@ function PromptInput({ value, defaultValue = "", onValueChange, onSubmit, loadin
3484
3480
  ]
3485
3481
  });
3486
3482
  }
3487
- var LazyGenerativeTextRenderer = lazy2(() => import("./openui-renderer-DNl7TU3v-LAP3OM5H.js").then(({ GenerativeTextRenderer }) => ({ default: GenerativeTextRenderer })));
3483
+ var LazyGenerativeTextRenderer = lazy2(() => import("./openui-renderer-Das3EemD-AODSN4I2.js").then(({ GenerativeTextRenderer }) => ({ default: GenerativeTextRenderer })));
3488
3484
  function PlainTextFallback({ className, content }) {
3489
3485
  return /* @__PURE__ */ jsx4("div", {
3490
3486
  className: className ? `${className} whitespace-pre-wrap` : "whitespace-pre-wrap",
@@ -4282,7 +4278,17 @@ function TraceCollapsibleContent({ className, children, ...props }) {
4282
4278
  })
4283
4279
  });
4284
4280
  }
4285
- function ReasoningLine({ text, streaming, durationMs }) {
4281
+ function splitReasoningSegments(text, streaming) {
4282
+ const normalized = text.replace(/^(?:\r?\n)+/, "").trimEnd();
4283
+ if (!normalized.trim()) return [];
4284
+ const segments = normalized.split(/\r?\n(?:[ \t]*\r?\n)+/).map((segment) => segment.replace(/\s+$/u, "")).filter(Boolean);
4285
+ if (segments.length === 0) return [];
4286
+ return segments.map((segment, index2) => ({
4287
+ text: segment,
4288
+ streaming: streaming && index2 === segments.length - 1
4289
+ }));
4290
+ }
4291
+ function ReasoningSegment({ text, streaming, durationMs }) {
4286
4292
  const [userOpen, setUserOpen] = useState7();
4287
4293
  const line = /* @__PURE__ */ jsxs(TraceLine, {
4288
4294
  status: streaming ? "running" : void 0,
@@ -4304,19 +4310,21 @@ function ReasoningLine({ text, streaming, durationMs }) {
4304
4310
  }) : line
4305
4311
  });
4306
4312
  }
4307
- function toolActionIconForName(name) {
4308
- const lower = name.toLowerCase();
4309
- if (lower.includes("plan") || lower.includes("todo")) return ListTodo;
4310
- if (lower.includes("approval") || lower.includes("permission")) return ShieldCheck;
4311
- if (lower.includes("question") || lower.includes("ask")) return MessageCircleQuestionMark;
4312
- if (lower.includes("citation") || lower.includes("source")) return Earth;
4313
- if (lower.includes("agent") || lower.includes("task") || lower.includes("rlm")) return UsersRound;
4314
- if (lower.includes("image") || lower.includes("visual")) return Image;
4315
- if (lower.includes("edit") || lower.includes("write") || lower.includes("patch") || lower.includes("diff")) return FilePenLine;
4316
- if (lower.includes("read") || lower.includes("file")) return FileSearch;
4317
- if (lower.includes("search") || lower.includes("grep") || lower.includes("glob")) return Search;
4318
- if (lower.includes("bash") || lower.includes("shell") || lower.includes("python") || lower.includes("ipython")) return Terminal;
4319
- return Wrench;
4313
+ function ReasoningLine({ text, streaming, durationMs }) {
4314
+ const segments = splitReasoningSegments(text, streaming);
4315
+ if (segments.length === 0) return /* @__PURE__ */ jsx4(ReasoningSegment, {
4316
+ text: "",
4317
+ streaming,
4318
+ durationMs
4319
+ });
4320
+ return /* @__PURE__ */ jsx4("div", {
4321
+ className: "flex w-full min-w-0 flex-col gap-2",
4322
+ children: segments.map((segment, index2) => /* @__PURE__ */ jsx4(ReasoningSegment, {
4323
+ text: segment.text,
4324
+ streaming: segment.streaming,
4325
+ durationMs: !segment.streaming && index2 === segments.length - 1 ? durationMs : void 0
4326
+ }, `reasoning-segment-${index2}`))
4327
+ });
4320
4328
  }
4321
4329
  function asRecord(value) {
4322
4330
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
@@ -4558,7 +4566,7 @@ function sourceLanguageFor(name, command) {
4558
4566
  function sourceLabelFor(name, language) {
4559
4567
  if (!language) return void 0;
4560
4568
  const lowerName = name.toLowerCase();
4561
- if (lowerName.includes("ipython")) return "IPython";
4569
+ if (lowerName.includes("ipython") || lowerName.includes("cpython") || lowerName === "python_repl") return "CPython";
4562
4570
  if (lowerName.includes("bash") || lowerName.includes("shell")) return "Bash";
4563
4571
  if (lowerName.includes("python")) return "Python";
4564
4572
  if (language === "json") return "JSON";
@@ -4730,7 +4738,7 @@ function buildAssistantElements(parts, opts) {
4730
4738
  text: part.text,
4731
4739
  streaming: isLast && isStreaming && part.state === "streaming",
4732
4740
  durationMs: "durationMs" in part && typeof part.durationMs === "number" ? part.durationMs : void 0
4733
- }, `${messageId}-reasoning-${part.contentIndex}`));
4741
+ }, `${messageId}-reasoning-${part.contentIndex}-${i}`));
4734
4742
  i++;
4735
4743
  continue;
4736
4744
  }
@@ -4773,10 +4781,11 @@ function buildAssistantElements(parts, opts) {
4773
4781
  const chatStreamingStatus = isLast && isStreaming && (state === "input-streaming" || state === "streaming") ? "streaming" : void 0;
4774
4782
  const pending = state === "input-available" || state === "pending";
4775
4783
  const normalized = normalizeToolPart$1(part, chatStreamingStatus);
4776
- const ToolIcon = toolActionIconForName(part.type.replace(/^tool-/, ""));
4784
+ const toolLabel = toolPartDisplayName(part.type);
4785
+ const ToolIcon = toolActionIconForName(toolLabel);
4777
4786
  const failed = normalized?.status === "error";
4778
4787
  const cancelled = normalized?.status === "cancelled";
4779
- const detailLabel = `Details for ${part.type.replace(/^tool-/, "")}${part.toolCallId ? ` (${part.toolCallId})` : ""}`;
4788
+ const detailLabel = `Details for ${toolLabel}${part.toolCallId ? ` (${part.toolCallId})` : ""}`;
4780
4789
  const artifact = part.toolCallId ? artifactByToolCallId?.get(part.toolCallId) : void 0;
4781
4790
  const toolCallId = part.toolCallId;
4782
4791
  const nestedTools = (part.type === "tool-Task" || part.type === "tool-Agent") && toolCallId ? nestedToolsMap.get(toolCallId) ?? EMPTY_NESTED_TOOLS : void 0;
@@ -4793,7 +4802,7 @@ function buildAssistantElements(parts, opts) {
4793
4802
  status: failed ? "error" : chatStreamingStatus ? "running" : pending ? "pending" : void 0,
4794
4803
  children: [
4795
4804
  /* @__PURE__ */ jsx4(TraceIcon, { children: /* @__PURE__ */ jsx4(ToolIcon, {}) }),
4796
- /* @__PURE__ */ jsx4(TraceTitle, { children: part.type.replace(/^tool-/, "") }),
4805
+ /* @__PURE__ */ jsx4(TraceTitle, { children: toolLabel }),
4797
4806
  normalized?.traceDescription ? /* @__PURE__ */ jsx4(TraceDescription, {
4798
4807
  className: "max-w-48 truncate",
4799
4808
  title: normalized.traceDescription,
@@ -4816,7 +4825,7 @@ function buildAssistantElements(parts, opts) {
4816
4825
  }), artifact && onOpenToolArtifact ? /* @__PURE__ */ jsx4("button", {
4817
4826
  type: "button",
4818
4827
  className: "shrink-0 text-micro underline",
4819
- "aria-label": `Open ${artifact.title} in ${artifact.kind === "ipython" ? "REPL" : "artifacts"}`,
4828
+ "aria-label": `Open ${artifactDisplayTitle(artifact.title)} in ${artifact.kind === "ipython" ? "REPL" : "artifacts"}`,
4820
4829
  onClick: () => onOpenToolArtifact(artifact.id, artifact.kind === "ipython" ? "repl" : "artifacts"),
4821
4830
  children: "Open"
4822
4831
  }) : null]
@@ -5478,13 +5487,13 @@ function normalizeAssistantToolParts(parts) {
5478
5487
  });
5479
5488
  return changed ? normalizedParts : parts;
5480
5489
  }
5481
- var LazyArtifactsPanel = lazy2(() => import("./artifacts-panel-DjaLT-MS-DAPJTA2V.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
5482
- var LazyResourcesPanel = lazy2(() => import("./resources-panel-Dtm8nlrt-PMS7NWKW.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
5483
- var LazySessionInsightsPanel = lazy2(() => import("./session-insights-panel-BiVObm_6-AP4FITT7.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
5484
- var LazyReplPanel = lazy2(() => import("./repl-panel-1kSS1UGd-POXRYDDJ.js").then(({ ReplPanelContent }) => ({ default: ReplPanelContent })));
5485
- var LazySubagentsPanel = lazy2(() => import("./subagents-panel-3gfZLsTx-7D53UO7K.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
5486
- var LazyWorkspacePanel = lazy2(() => import("./workspace-panel-BeSOuvp7-7N3CAG2K.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
5487
- var LazySessionTreePanel = lazy2(() => import("./session-tree-panel-BkMTm2QF-K56UQR2K.js").then(({ SessionTreePanel }) => ({ default: SessionTreePanel })));
5490
+ var LazyArtifactsPanel = lazy2(() => import("./artifacts-panel-C9OUKEU0-N74QLS6E.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
5491
+ var LazyResourcesPanel = lazy2(() => import("./resources-panel-BL41dm3H-UWWMTOFL.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
5492
+ var LazySessionInsightsPanel = lazy2(() => import("./session-insights-panel-cS12HsWt-YX7QOWIA.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
5493
+ var LazyReplPanel = lazy2(() => import("./repl-panel-DfC-BCfn-4OZEKSFX.js").then(({ ReplPanelContent }) => ({ default: ReplPanelContent })));
5494
+ var LazySubagentsPanel = lazy2(() => import("./subagents-panel-DlFBFoX6-SAWYBVZJ.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
5495
+ var LazyWorkspacePanel = lazy2(() => import("./workspace-panel-CxUsWmIE-3BMZFN5O.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
5496
+ var LazySessionTreePanel = lazy2(() => import("./session-tree-panel-B23gApxX-44NFOCFB.js").then(({ SessionTreePanel }) => ({ default: SessionTreePanel })));
5488
5497
  function PanelFallback() {
5489
5498
  return /* @__PURE__ */ jsxs("div", {
5490
5499
  className: "flex min-h-32 flex-col gap-3 p-4",
@@ -5659,6 +5668,7 @@ var RIGHT_PANEL_REGISTRY = {
5659
5668
  commandLabel: "Open REPL",
5660
5669
  commandKeywords: [
5661
5670
  "repl",
5671
+ "cpython",
5662
5672
  "ipython",
5663
5673
  "python",
5664
5674
  "cells",
@@ -5765,14 +5775,6 @@ var RIGHT_PANEL_GROUPS = [
5765
5775
  "session-insights",
5766
5776
  "session-tree"
5767
5777
  ]
5768
- },
5769
- {
5770
- id: "repl",
5771
- title: "REPL",
5772
- ariaLabel: "REPL",
5773
- icon: SquareTerminal,
5774
- defaultPanel: "repl",
5775
- panels: ["repl"]
5776
5778
  }
5777
5779
  ];
5778
5780
  function getRightPanelGroup(panel) {
@@ -7123,7 +7125,7 @@ function useInputBarState({ models, status, thinkingLevel, onModelChange, onThin
7123
7125
  value
7124
7126
  };
7125
7127
  }
7126
- var LazyModelSelectorList = lazy2(() => import("./model-selector-list-q8bMnmhy-SPFJGUBT.js").then(({ ModelSelectorList: ModelSelectorList2 }) => ({ default: ModelSelectorList2 })));
7128
+ var LazyModelSelectorList = lazy2(() => import("./model-selector-list-q8bMnmhy-W6JM2N7G.js").then(({ ModelSelectorList: ModelSelectorList2 }) => ({ default: ModelSelectorList2 })));
7127
7129
  function ModelSelectorList(props) {
7128
7130
  return /* @__PURE__ */ jsx4(Suspense2, {
7129
7131
  fallback: /* @__PURE__ */ jsx4("div", {
@@ -7623,7 +7625,7 @@ function iconFor(kind) {
7623
7625
  return kind;
7624
7626
  }
7625
7627
  }
7626
- var LazySessionToolRenderer = lazy2(() => import("./session-tool-renderer-DHu5tv0A-YFP7I2UC.js").then((n) => n.n).then(({ SessionToolRenderer: SessionToolRenderer2 }) => ({ default: SessionToolRenderer2 })));
7628
+ var LazySessionToolRenderer = lazy2(() => import("./session-tool-renderer-Co466pSk-QUTYNAOE.js").then((n) => n.n).then(({ SessionToolRenderer: SessionToolRenderer2 }) => ({ default: SessionToolRenderer2 })));
7627
7629
  function SessionToolRenderer(props) {
7628
7630
  return /* @__PURE__ */ jsx4(Suspense2, {
7629
7631
  fallback: /* @__PURE__ */ jsx4("div", {
@@ -7634,7 +7636,7 @@ function SessionToolRenderer(props) {
7634
7636
  children: /* @__PURE__ */ jsx4(LazySessionToolRenderer, { ...props })
7635
7637
  });
7636
7638
  }
7637
- var LazySessionReasoningPanel = lazy2(() => import("./session-reasoning-panel-BFyfdmnZ-AQBC4WAL.js").then(({ SessionReasoningPanel: SessionReasoningPanel2 }) => ({ default: SessionReasoningPanel2 })));
7639
+ var LazySessionReasoningPanel = lazy2(() => import("./session-reasoning-panel-CtQUqSv9-JIXRXBH7.js").then(({ SessionReasoningPanel: SessionReasoningPanel2 }) => ({ default: SessionReasoningPanel2 })));
7638
7640
  function SessionReasoningPanel(props) {
7639
7641
  return /* @__PURE__ */ jsx4(Suspense2, {
7640
7642
  fallback: /* @__PURE__ */ jsx4("div", {
@@ -7645,7 +7647,7 @@ function SessionReasoningPanel(props) {
7645
7647
  children: /* @__PURE__ */ jsx4(LazySessionReasoningPanel, { ...props })
7646
7648
  });
7647
7649
  }
7648
- var LazyPromptSuggestions = lazy2(() => import("./prompt-suggestions-B67Uy5Rk-5SMTSIFQ.js").then(({ PromptSuggestions: PromptSuggestions2 }) => ({ default: PromptSuggestions2 })));
7650
+ var LazyPromptSuggestions = lazy2(() => import("./prompt-suggestions-B67Uy5Rk-6MV56U6N.js").then(({ PromptSuggestions: PromptSuggestions2 }) => ({ default: PromptSuggestions2 })));
7649
7651
  function PromptSuggestions(props) {
7650
7652
  return /* @__PURE__ */ jsx4("div", {
7651
7653
  className: "min-h-8",
@@ -7659,7 +7661,7 @@ function PromptSuggestions(props) {
7659
7661
  })
7660
7662
  });
7661
7663
  }
7662
- var LazyMessageQueue = lazy2(() => import("./message-queue-nQ2_kU82-KKSLYR4S.js").then(({ MessageQueue: MessageQueue2 }) => ({ default: MessageQueue2 })));
7664
+ var LazyMessageQueue = lazy2(() => import("./message-queue-nQ2_kU82-3PN7CKFG.js").then(({ MessageQueue: MessageQueue2 }) => ({ default: MessageQueue2 })));
7663
7665
  function MessageQueue(props) {
7664
7666
  return /* @__PURE__ */ jsx4(Suspense2, {
7665
7667
  fallback: null,
@@ -9361,9 +9363,20 @@ function appendAssistantDelta(messages, assistantId, delta) {
9361
9363
  function applyAssistantReasoningText(messages, assistantId, event) {
9362
9364
  return messages.map((message) => {
9363
9365
  if (message.id !== assistantId) return message;
9364
- const index2 = message.parts.findIndex((part2) => part2.type === "reasoning" && part2.contentIndex === event.contentIndex);
9366
+ let index2 = -1;
9367
+ let streamingIndex = -1;
9368
+ for (let i = 0; i < message.parts.length; i++) {
9369
+ const candidate = message.parts[i];
9370
+ if (candidate?.type !== "reasoning" || candidate.contentIndex !== event.contentIndex) continue;
9371
+ index2 = i;
9372
+ if (candidate.state === "streaming") streamingIndex = i;
9373
+ }
9374
+ if (streamingIndex >= 0) index2 = streamingIndex;
9375
+ else if (event.phase === "delta") index2 = -1;
9365
9376
  const existing = index2 < 0 ? void 0 : message.parts[index2];
9366
- const previousText = existing?.type === "reasoning" ? existing.text : "";
9377
+ const openNewEpisode = event.phase === "start" && existing?.type === "reasoning" && existing.state === "complete";
9378
+ if (event.phase === "end" && existing?.type === "reasoning" && existing.state === "complete" && streamingIndex < 0) return message;
9379
+ const previousText = !openNewEpisode && existing?.type === "reasoning" ? existing.text : "";
9367
9380
  const part = {
9368
9381
  type: "reasoning",
9369
9382
  contentIndex: event.contentIndex,
@@ -9372,7 +9385,7 @@ function applyAssistantReasoningText(messages, assistantId, event) {
9372
9385
  ...event.durationMs !== void 0 ? { durationMs: event.durationMs } : {}
9373
9386
  };
9374
9387
  const parts = [...message.parts];
9375
- if (index2 >= 0) parts[index2] = part;
9388
+ if (index2 >= 0 && !openNewEpisode) parts[index2] = part;
9376
9389
  else {
9377
9390
  const emptyText = parts.findIndex((current) => current.type === "text" && !current.text);
9378
9391
  parts.splice(emptyText < 0 ? parts.length : emptyText, 0, part);
@@ -12068,7 +12081,7 @@ var AnimatedSidebarGroupLabel = forwardRef15(function AnimatedSidebarGroupLabel2
12068
12081
  ref: forwardedRef,
12069
12082
  "aria-hidden": collapsed,
12070
12083
  "data-slot": "sidebar-group-label",
12071
- className: cn("mb-1 h-7 overflow-hidden px-2 text-micro font-medium uppercase tracking-[0.14em] text-muted-foreground transition-opacity", collapsed ? "opacity-0" : "opacity-100", className),
12084
+ className: cn("mb-1 flex h-7 items-center overflow-hidden px-2 text-micro font-medium uppercase tracking-[0.14em] text-muted-foreground transition-opacity", collapsed ? "opacity-0" : "opacity-100", className),
12072
12085
  children
12073
12086
  });
12074
12087
  });
@@ -12145,7 +12158,7 @@ function TabStrip({ tabs, value, onValueChange, onClose, onNewSession, ariaLabel
12145
12158
  const tabId = idPrefix ? `${idPrefix}-${encodeURIComponent(tab.id)}` : void 0;
12146
12159
  const panelId = idPrefix ? `${idPrefix}-panel-${encodeURIComponent(tab.id)}` : void 0;
12147
12160
  return /* @__PURE__ */ jsxs("div", {
12148
- className: cn("group/tab relative", fill ? "min-w-0 max-w-[164px] flex-1 basis-[164px]" : "shrink-0"),
12161
+ className: cn("group/tab relative", fill ? "min-w-0 max-w-[220px] flex-1 basis-auto" : "shrink-0"),
12149
12162
  "data-tab-id": tab.id,
12150
12163
  children: [/* @__PURE__ */ jsxs(TabsTrigger, {
12151
12164
  "aria-controls": panelId,
@@ -12234,7 +12247,6 @@ function RightPanelTabsFromContext({ compact = false, idPrefix = "right-panel" }
12234
12247
  activePanel: rightPanel,
12235
12248
  onPanelChange: setRightPanel,
12236
12249
  resources,
12237
- replRuns: artifactRuns.flatMap((run) => run.artifacts).filter((artifact) => artifact.kind === "ipython").length,
12238
12250
  sessionBlocks: transcriptSummary.openUIBlocks.length,
12239
12251
  openUIArtifacts: artifactRuns.flatMap((run) => run.artifacts).filter((artifact) => artifact.kind === "openui-html").length,
12240
12252
  workspace: workspaceTree,
@@ -12250,7 +12262,7 @@ function RightPanelTrigger({ compact = false, onOpen }) {
12250
12262
  children: /* @__PURE__ */ jsx4(PanelRight, { className: "size-4" })
12251
12263
  });
12252
12264
  }
12253
- function RightPanelLauncher({ activePanel, onPanelChange, resources, replRuns = 0, sessionBlocks = 0, openUIArtifacts = 0, workspace, idPrefix = "right-panel", compact = false }) {
12265
+ function RightPanelLauncher({ activePanel, onPanelChange, resources, sessionBlocks = 0, openUIArtifacts = 0, workspace, idPrefix = "right-panel", compact = false }) {
12254
12266
  const totalResources = getResourceGroups(resources, workspace).reduce((count, group) => count + group.items.length, 0);
12255
12267
  const totalArtifacts = useMemo8(() => {
12256
12268
  const total = sessionBlocks + openUIArtifacts;
@@ -12258,12 +12270,8 @@ function RightPanelLauncher({ activePanel, onPanelChange, resources, replRuns =
12258
12270
  }, [openUIArtifacts, sessionBlocks]);
12259
12271
  const tabs = useMemo8(() => RIGHT_PANEL_GROUPS.map((definition) => ({
12260
12272
  ...definition,
12261
- badge: definition.id === "workspace" ? totalArtifacts : definition.id === "session" ? totalResources || void 0 : definition.id === "repl" ? replRuns || void 0 : void 0
12262
- })), [
12263
- replRuns,
12264
- totalArtifacts,
12265
- totalResources
12266
- ]);
12273
+ badge: definition.id === "workspace" ? totalArtifacts : definition.id === "session" ? totalResources || void 0 : void 0
12274
+ })), [totalArtifacts, totalResources]);
12267
12275
  const activeGroup = tabs.find((tab) => activePanel !== null && tab.panels.includes(activePanel));
12268
12276
  const selectedIndex = activeGroup ? tabs.indexOf(activeGroup) : -1;
12269
12277
  const panelOptions = useMemo8(() => tabs.map((tab) => ({
@@ -12282,7 +12290,8 @@ function RightPanelLauncher({ activePanel, onPanelChange, resources, replRuns =
12282
12290
  onSelect: (index2) => {
12283
12291
  const next = tabs.at(index2);
12284
12292
  if (!next) return;
12285
- onPanelChange(activeGroup?.id === next.id ? null : next.defaultPanel);
12293
+ if (activeGroup?.id === next.id) return;
12294
+ onPanelChange(next.defaultPanel);
12286
12295
  },
12287
12296
  compact
12288
12297
  });
@@ -12368,7 +12377,7 @@ function ResponsivePanelLauncher({ activePanel, className, compact = false, idPr
12368
12377
  })]
12369
12378
  });
12370
12379
  }
12371
- function MobilePanel({ children, dataTestid, headerActions, icon: Icon, onClose, open, title }) {
12380
+ function MobilePanel({ bodyClassName, children, dataTestid, headerActions, icon: Icon, onClose, open, title }) {
12372
12381
  const panelRef = useRef12(null);
12373
12382
  const panelTitleId = useId();
12374
12383
  const suppressCloseRef = useRef12(false);
@@ -12464,7 +12473,7 @@ function MobilePanel({ children, dataTestid, headerActions, icon: Icon, onClose,
12464
12473
  })]
12465
12474
  }),
12466
12475
  /* @__PURE__ */ jsx4("div", {
12467
- className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-[var(--density-pad-x)] py-4",
12476
+ className: cn("min-h-0 flex-1 overscroll-contain px-[var(--density-pad-x)] py-4", bodyClassName ?? "overflow-y-auto"),
12468
12477
  children
12469
12478
  })
12470
12479
  ]
@@ -12630,9 +12639,9 @@ function useChatWorkspaceDialogs() {
12630
12639
  settingsInitialTab
12631
12640
  };
12632
12641
  }
12633
- var LazyChatCommandPalette = lazy2(() => import("./chat-command-palette-CGCsCr9E-U5PCLXNE.js").then(({ ChatCommandPalette }) => ({ default: ChatCommandPalette })));
12634
- var LazySettingsDialog = lazy2(() => import("./settings-dialog-1Zr_EiEd-GDE4IXK2.js").then(({ SettingsDialog }) => ({ default: SettingsDialog })));
12635
- var LazyForkPickerDialog = lazy2(() => import("./fork-picker-dialog-DFpKOdAw-JPLJSYYU.js").then(({ ForkPickerDialog }) => ({ default: ForkPickerDialog })));
12642
+ var LazyChatCommandPalette = lazy2(() => import("./chat-command-palette-CnKy1Q4g-GJJGAVQ4.js").then(({ ChatCommandPalette }) => ({ default: ChatCommandPalette })));
12643
+ var LazySettingsDialog = lazy2(() => import("./settings-dialog-CdRjXyfc-IYMPCNR5.js").then(({ SettingsDialog }) => ({ default: SettingsDialog })));
12644
+ var LazyForkPickerDialog = lazy2(() => import("./fork-picker-dialog-DFpKOdAw-WJPMXHSE.js").then(({ ForkPickerDialog }) => ({ default: ForkPickerDialog })));
12636
12645
  function ChatCommandPaletteOverlay({ chrome, conversation, dialogs, panels, session }) {
12637
12646
  return /* @__PURE__ */ jsx4(Fragment$1, { children: dialogs.commandPaletteOpen ? /* @__PURE__ */ jsx4(Suspense2, {
12638
12647
  fallback: null,
@@ -14237,13 +14246,8 @@ var DEFAULT_FLEET_PANEL_KEYBINDINGS = {
14237
14246
  ctrlOrMeta: true,
14238
14247
  shift: true
14239
14248
  },
14240
- toggleRepl: {
14241
- code: "Digit4",
14242
- ctrlOrMeta: true,
14243
- shift: true
14244
- },
14245
14249
  toggleSubagents: {
14246
- code: "Digit5",
14250
+ code: "Digit4",
14247
14251
  ctrlOrMeta: true,
14248
14252
  shift: true
14249
14253
  },
@@ -14291,7 +14295,6 @@ function usePanelKeybindings({ onCommandPaletteToggle, onClosePanel, rightPanel,
14291
14295
  if (match("toggleResources")) setRightPanel(rightPanel === "resources" ? null : "resources");
14292
14296
  else if (match("toggleWorkspace")) setRightPanel(rightPanel === "workspace" ? null : "workspace");
14293
14297
  else if (match("toggleArtifacts")) setRightPanel(rightPanel === "artifacts" ? null : "artifacts");
14294
- else if (match("toggleRepl")) setRightPanel(rightPanel === "repl" ? null : "repl");
14295
14298
  else if (match("toggleSubagents")) setRightPanel(rightPanel === "subagents" ? null : "subagents");
14296
14299
  else if (onCommandPaletteToggle && match("toggleCommandPalette")) onCommandPaletteToggle();
14297
14300
  else if (rightPanel && match("closePanel")) {
@@ -14317,7 +14320,7 @@ function usePanelKeybindings({ onCommandPaletteToggle, onClosePanel, rightPanel,
14317
14320
  setRightPanel
14318
14321
  ]);
14319
14322
  }
14320
- function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose, onRefresh, onResizeStart, onWidthChange, open, headerActions, title, titleIcon: TitleIcon, width }) {
14323
+ function ResizableCanvas({ bodyClassName, children, dataTestid, headerLeading, loading, onClose, onRefresh, onResizeStart, onWidthChange, open, headerActions, title, titleIcon: TitleIcon, width }) {
14321
14324
  const reduceMotion = useReducedMotion();
14322
14325
  const panelRef = useRef12(null);
14323
14326
  useEffect3(() => {
@@ -14430,12 +14433,14 @@ function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose
14430
14433
  ]
14431
14434
  })]
14432
14435
  }), /* @__PURE__ */ jsx4("div", {
14433
- className: "flex-1 overflow-y-auto overscroll-contain px-[var(--density-pad-x)] py-4",
14436
+ className: cn("flex-1 overscroll-contain px-[var(--density-pad-x)] py-4", bodyClassName ?? "overflow-y-auto"),
14434
14437
  children
14435
14438
  })]
14436
14439
  })]
14437
14440
  }) });
14438
14441
  }
14442
+ var FILL_BODY_PANELS = /* @__PURE__ */ new Set(["subagents"]);
14443
+ var FILL_BODY_CLASSNAME = "flex min-h-0 flex-col overflow-hidden py-3";
14439
14444
  var DESKTOP_PANEL_QUERY = `(min-width: 960px)`;
14440
14445
  var GROUP_VIEW_LABELS = {
14441
14446
  resources: "Skills",
@@ -14474,9 +14479,10 @@ function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCan
14474
14479
  id: panel,
14475
14480
  label: GROUP_VIEW_LABELS[panel]
14476
14481
  })) : [], [panelGroup]);
14482
+ const fillBody = rightPanel !== null && FILL_BODY_PANELS.has(rightPanel);
14477
14483
  const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [groupTabs.length > 0 ? /* @__PURE__ */ jsx4(TabStrip, {
14478
14484
  ariaLabel: `${panelGroup?.title ?? "Panel"} views`,
14479
- className: "mb-3 w-fit",
14485
+ className: "mb-3 w-fit shrink-0",
14480
14486
  onValueChange: (nextPanel) => {
14481
14487
  const next = groupTabs.find((tab) => tab.id === nextPanel)?.id;
14482
14488
  if (next) setRightPanel(next);
@@ -14484,10 +14490,14 @@ function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCan
14484
14490
  tabs: groupTabs,
14485
14491
  value: rightPanel,
14486
14492
  width: "fit"
14487
- }) : null, PanelContent ? /* @__PURE__ */ jsx4(PanelContent, {}) : null] });
14493
+ }) : null, PanelContent ? fillBody ? /* @__PURE__ */ jsx4("div", {
14494
+ className: "flex min-h-0 min-w-0 flex-1 flex-col",
14495
+ children: /* @__PURE__ */ jsx4(PanelContent, {})
14496
+ }) : /* @__PURE__ */ jsx4(PanelContent, {}) : null] });
14488
14497
  const loading = definition?.loadingSource === "resources" ? chat.resourcesLoading : definition?.loadingSource === "workspace" ? workspace.workspaceLoading : false;
14489
14498
  const onRefresh = definition?.refreshSource === "resources" ? chat.refreshResources : definition?.refreshSource === "workspace" ? workspace.refreshWorkspace : void 0;
14490
14499
  return /* @__PURE__ */ jsx4(Fragment$1, { children: isDesktop ? /* @__PURE__ */ jsx4(ResizableCanvas, {
14500
+ bodyClassName: fillBody ? FILL_BODY_CLASSNAME : void 0,
14491
14501
  dataTestid: definition?.dataTestid,
14492
14502
  headerLeading: /* @__PURE__ */ jsx4(RightPanelTabsFromContext, {
14493
14503
  compact: true,
@@ -14504,6 +14514,7 @@ function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCan
14504
14514
  width: resourceCanvasWidth,
14505
14515
  children: content
14506
14516
  }) : /* @__PURE__ */ jsx4(MobilePanel, {
14517
+ bodyClassName: fillBody ? FILL_BODY_CLASSNAME : void 0,
14507
14518
  dataTestid: definition?.mobileDataTestid,
14508
14519
  icon: definition?.icon,
14509
14520
  onClose,
@@ -15502,7 +15513,7 @@ function DiscordIcon({ className, ...props }) {
15502
15513
  }
15503
15514
  function fleetVersion() {
15504
15515
  try {
15505
- return "0.10.3";
15516
+ return "0.10.4";
15506
15517
  } catch {
15507
15518
  return "dev";
15508
15519
  }
@@ -16210,7 +16221,7 @@ function useSessionSidebarViewModel({ sessions, projects = EMPTY_PROJECTS, proje
16210
16221
  ])
16211
16222
  };
16212
16223
  }
16213
- var LazySessionSidebarCreateDialog = lazy2(() => import("./create-project-dialog-aCD1v__i-37Y2AYF7.js").then(({ SessionSidebarCreateDialog }) => ({ default: SessionSidebarCreateDialog })));
16224
+ var LazySessionSidebarCreateDialog = lazy2(() => import("./create-project-dialog-dwXNUwY--APUSOU5G.js").then(({ SessionSidebarCreateDialog }) => ({ default: SessionSidebarCreateDialog })));
16214
16225
  function SessionSidebar({ data, sessionActions, projectActions = {}, navigationActions = {}, slots = {} }) {
16215
16226
  const { sessions, projects = EMPTY_PROJECTS, projectSessions = sessions, activeProjectId, activeSessionId } = data;
16216
16227
  const { onNewSession, onNewSessionInProject, onResumeSession, onRenameSession, onDeleteSession } = sessionActions;
@@ -16292,8 +16303,8 @@ function SessionSidebar({ data, sessionActions, projectActions = {}, navigationA
16292
16303
  })
16293
16304
  ] });
16294
16305
  }
16295
- var LazySubagentChatPanel = lazy2(() => import("./subagent-chat-panel-BCm1x_mR-HY6QEHEF.js").then(({ SubagentChatPanel }) => ({ default: SubagentChatPanel })));
16296
- var LazySessionActivityPanel = lazy2(() => import("./session-activity-panel-Dr9Q0Wmd-2F7ZYCAY.js").then(({ SessionActivityPanel }) => ({ default: SessionActivityPanel })));
16306
+ var LazySubagentChatPanel = lazy2(() => import("./subagent-chat-panel-DwvOMUnh-EPVZRTRM.js").then(({ SubagentChatPanel }) => ({ default: SubagentChatPanel })));
16307
+ var LazySessionActivityPanel = lazy2(() => import("./session-activity-panel-B56ALLHr-6PDGEA2M.js").then(({ SessionActivityPanel }) => ({ default: SessionActivityPanel })));
16297
16308
  function ChatWorkspaceShell() {
16298
16309
  const { session, conversation, composer, panels, dialogs, chrome, agentTabs } = useChatWorkspaceData();
16299
16310
  const toggleCommandPalette = useCallback3(() => {
@@ -16544,7 +16555,6 @@ export {
16544
16555
  TraceCollapsibleTrigger,
16545
16556
  TraceCollapsibleContent,
16546
16557
  ReasoningLine,
16547
- toolActionIconForName,
16548
16558
  normalizeToolPart$1,
16549
16559
  buildAssistantElements,
16550
16560
  UserMessage,