@qredence/fleet 0.1.0 → 0.5.1

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 (110) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +8 -1
  3. package/dist/web/client/assets/artifacts-panel-CX62LQ13.js +1 -0
  4. package/dist/web/client/assets/artifacts-utils-N_kUFbz2.js +1 -0
  5. package/dist/web/client/assets/bot-Bs7QWJ2q.js +1 -0
  6. package/dist/web/client/assets/{chat-C64Sv6V-.js → chat-CsepBQwy.js} +5 -5
  7. package/dist/web/client/assets/{chat-command-palette-HpsmKfLO.js → chat-command-palette-C4sSf8Kg.js} +1 -1
  8. package/dist/web/client/assets/collapsible-DmyYcezk.js +1 -0
  9. package/dist/web/client/assets/command-CB6emP8m.js +2 -0
  10. package/dist/web/client/assets/conversation-turns-ByFoWPXe.js +6 -0
  11. package/dist/web/client/assets/ease-vFBiNFNK.js +9 -0
  12. package/dist/web/client/assets/{fleet-pi-tool-renderer-ZKiX6Ob_.js → fleet-pi-tool-renderer-BD_ZAjlG.js} +28 -30
  13. package/dist/web/client/assets/globals-CqqQdk2S.css +2 -0
  14. package/dist/web/client/assets/horizontal-resize-C1TpRLNC.js +1 -0
  15. package/dist/web/client/assets/index-DweoFRMs.js +12 -0
  16. package/dist/web/client/assets/{input-Clyn18XG.js → input-CqC82Agz.js} +1 -1
  17. package/dist/web/client/assets/{input-group-MxDAWX3j.js → input-group-H0TG-mkU.js} +1 -1
  18. package/dist/web/client/assets/ipython-tool-BfeIa0nK.js +3 -0
  19. package/dist/web/client/assets/markdown-DG7pUdsX.js +2 -0
  20. package/dist/web/client/assets/{markdown-code-pIaEVDUU.js → markdown-code-BgMzpy7O.js} +1 -1
  21. package/dist/web/client/assets/notify-Duj26eeZ.js +1 -0
  22. package/dist/web/client/assets/{openui-renderer-NLUpAS3h.js → openui-renderer-DlUo6ehT.js} +5 -5
  23. package/dist/web/client/assets/openui-utils-DawGoQNp.js +1 -0
  24. package/dist/web/client/assets/prime-agent-artifacts-CHGb5V_j.js +5 -0
  25. package/dist/web/client/assets/{provider-catalog-Gx9qaHBM.js → provider-catalog-BZhZuKSz.js} +1 -1
  26. package/dist/web/client/assets/provider-label-jKm8v18u.js +1 -0
  27. package/dist/web/client/assets/range-vSJ7Ux_5.js +2 -0
  28. package/dist/web/client/assets/repl-panel-DiGS6uCw.js +1 -0
  29. package/dist/web/client/assets/resource-helpers-ULlyU8qK.js +2 -0
  30. package/dist/web/client/assets/resources-panel-DSU7VGX2.js +1 -0
  31. package/dist/web/client/assets/routes-CxlNCi_v.js +16 -0
  32. package/dist/web/client/assets/session-insights-panel-DwmwiikS.js +1 -0
  33. package/dist/web/client/assets/settings-dialog-CkfpTKfM.js +1 -0
  34. package/dist/web/client/assets/skeleton-loaders-fStjEeRP.js +1 -0
  35. package/dist/web/client/assets/square-terminal-BYTN_I86.js +1 -0
  36. package/dist/web/client/assets/subagents-panel-DGnsK6Nx.js +1 -0
  37. package/dist/web/client/assets/{switch-ojzdMno9.js → switch-BFEBpUEU.js} +1 -1
  38. package/dist/web/client/assets/{tool-result-QvhjpNGX.js → tool-result-CBzwwUE9.js} +3 -3
  39. package/dist/web/client/assets/ui-preferences-DUEFuJFj.js +1 -0
  40. package/dist/web/client/assets/workspace-panel-CjdXlEvd.js +1 -0
  41. package/dist/web/client/assets/workspace-path-nav-C0AQNZyy.js +1 -0
  42. package/dist/web/server/{_tanstack-start-manifest_v-puvdGuy--7AY277Z5.js → _tanstack-start-manifest_v-bDUlyKY0-KFW35JRO.js} +25 -18
  43. package/dist/web/server/{artifacts-panel-knpQvJ-q-WJLZ76QB.js → artifacts-panel-D9w1DHAN-FGRDCYU2.js} +37 -70
  44. package/dist/web/server/{chat-command-palette-CPv5GmGJ-22J32S6P.js → chat-command-palette-BaenPkCN-BHSOPGU4.js} +16 -14
  45. package/dist/web/server/{chunk-OADQILSQ.js → chunk-2U7PWSJX.js} +49 -47
  46. package/dist/web/server/{chunk-ZX3XOSYO.js → chunk-3GSFXWL5.js} +2 -2
  47. package/dist/web/server/{chunk-IFV5M33X.js → chunk-3IKSPTYI.js} +12 -26
  48. package/dist/web/server/{chunk-W7LNJCRJ.js → chunk-44IVTHDV.js} +18 -10
  49. package/dist/web/server/{chunk-I3FDTJFO.js → chunk-46VQY7SG.js} +6 -87
  50. package/dist/web/server/{chunk-WTYNN6EV.js → chunk-54II5QXQ.js} +23 -1
  51. package/dist/web/server/{chunk-PRT4QYOB.js → chunk-5AVQZ4AZ.js} +1 -35
  52. package/dist/web/server/chunk-6GMKRR3C.js +161 -0
  53. package/dist/web/server/chunk-74QOI457.js +45 -0
  54. package/dist/web/server/chunk-AQ66E5OW.js +33 -0
  55. package/dist/web/server/{chunk-TTQ75CXC.js → chunk-AZZHUVJR.js} +88 -23
  56. package/dist/web/server/{chunk-KAWYGHDN.js → chunk-B2F6MLVZ.js} +23 -1
  57. package/dist/web/server/{chunk-C7EKOPZU.js → chunk-DO3TVNGA.js} +87 -87
  58. package/dist/web/server/chunk-EIVNRYP3.js +48 -0
  59. package/dist/web/server/{chunk-UBUXV2TW.js → chunk-FBOO3G67.js} +6 -6
  60. package/dist/web/server/{chunk-MK3P3OBZ.js → chunk-FVWDJNXR.js} +5 -5
  61. package/dist/web/server/chunk-G5BCQQ5N.js +34 -0
  62. package/dist/web/server/{chunk-4KFMONRT.js → chunk-H64JLONZ.js} +9 -9
  63. package/dist/web/server/{chunk-KDSISV4P.js → chunk-HBZ6YKRB.js} +2 -50
  64. package/dist/web/server/{chunk-5277VI3D.js → chunk-KPNGZR2R.js} +12 -74
  65. package/dist/web/server/chunk-M2FGGPNA.js +376 -0
  66. package/dist/web/server/{chunk-KVHPE5XH.js → chunk-MDYA4NXK.js} +22 -8
  67. package/dist/web/server/chunk-NFRJDPB3.js +52 -0
  68. package/dist/web/server/chunk-P66QQWUM.js +67 -0
  69. package/dist/web/server/{fleet-pi-tool-renderer-5vYFNeZS-IHKMLT7W.js → chunk-PCJ5EKFE.js} +40 -392
  70. package/dist/web/server/{chunk-APN3LVRT.js → chunk-PWK2HJIV.js} +27 -30
  71. package/dist/web/server/{chunk-XXNFEXDU.js → chunk-QJBEWT4E.js} +2 -70
  72. package/dist/web/server/{chunk-JD6EWZCU.js → chunk-VHCAD46L.js} +48 -48
  73. package/dist/web/server/chunk-Y6LJ4WBI.js +1797 -0
  74. package/dist/web/server/{chunk-NGI44XRR.js → chunk-ZEVZFLIY.js} +1 -1
  75. package/dist/web/server/fleet-pi-tool-renderer-lJvZWmBJ-4M5YI6VS.js +35 -0
  76. package/dist/web/server/{fork-picker-dialog-BZzfxdQd-C6SPHFAW.js → fork-picker-dialog-BZzfxdQd-Y725VJ7G.js} +2 -2
  77. package/dist/web/server/{markdown-Ct_q4D-z-VFWZRBTY.js → markdown-Boni3lHk-AZGKDNAR.js} +1 -1
  78. package/dist/web/server/{markdown-code-C_ih1bX1-5CIWT3CH.js → markdown-code-BrWukbg3-D2GN4Y77.js} +2 -2
  79. package/dist/web/server/{openui-renderer-BT5jL0Yf-XYLLN5U6.js → openui-renderer-Cg4RSE9k-7BTJIYZJ.js} +12 -11
  80. package/dist/web/server/repl-panel-BEQrC2ef-V3YEZ7EO.js +117 -0
  81. package/dist/web/server/{resources-panel-DNCVHTIg-PJYMXVGE.js → resources-panel-CwKh4U9f-D3VDEMDW.js} +6 -6
  82. package/dist/web/server/{router-DDxOMz3K-HRBXILHM.js → router-CEahIUpn-SRG7XKIH.js} +131 -21
  83. package/dist/web/server/{routes-BX4Tv-6R-FHIZYUWW.js → routes-BznemByz-F4DJAYIM.js} +1371 -2499
  84. package/dist/web/server/server.js +2 -2
  85. package/dist/web/server/{session-insights-panel-gYkkAE8H-W4O74Z7H.js → session-insights-panel-JfeTHE0d-3HZB3ZWI.js} +2 -2
  86. package/dist/web/server/{settings-dialog-BTBFLQ1P-ZENQ4KWK.js → settings-dialog-DgeBMORv-7SRSENPM.js} +47 -61
  87. package/dist/web/server/subagents-panel-CzZe3co7-2VZ5JTWF.js +332 -0
  88. package/dist/web/server/{chunk-5SZXUN3Y.js → workspace-panel-y54P79_B-VPIYUXF6.js} +29 -16
  89. package/package.json +11 -3
  90. package/dist/web/client/assets/artifacts-panel-8TyrNBM_.js +0 -1
  91. package/dist/web/client/assets/collapsible-WCSnxhr2.js +0 -1
  92. package/dist/web/client/assets/command-DgfiCKcY.js +0 -2
  93. package/dist/web/client/assets/globals-BmxtUHFx.css +0 -2
  94. package/dist/web/client/assets/horizontal-resize-B76jjn5v.js +0 -1
  95. package/dist/web/client/assets/index-0pBr_bKy.js +0 -12
  96. package/dist/web/client/assets/markdown-BXWmNJo7.js +0 -2
  97. package/dist/web/client/assets/prime-agent-artifacts-k9JiTDZM.js +0 -5
  98. package/dist/web/client/assets/provider-brand-icon-VCebsuTD.js +0 -1
  99. package/dist/web/client/assets/range-KAaLzImH.js +0 -2
  100. package/dist/web/client/assets/resources-panel-BWuKeyrb.js +0 -1
  101. package/dist/web/client/assets/routes-BPRw0UzV.js +0 -20
  102. package/dist/web/client/assets/session-insights-panel-CPymkzZT.js +0 -1
  103. package/dist/web/client/assets/settings-dialog-6p8mjg8t.js +0 -1
  104. package/dist/web/client/assets/shared-DAI9OAw0.js +0 -2
  105. package/dist/web/client/assets/skeleton-loaders-qxIkJKCA.js +0 -1
  106. package/dist/web/client/assets/workspace-panel-C67-fqw4.js +0 -1
  107. package/dist/web/client/assets/workspace-path-nav-BrQHo6es.js +0 -9
  108. package/dist/web/server/chunk-KJ4UUAEU.js +0 -83
  109. package/dist/web/server/workspace-panel-BNAXF57q-EQCBPEG4.js +0 -28
  110. package/dist/web/server/{chunk-AQWTGP35.js → chunk-FE4KN6T2.js} +5 -5
@@ -1,18 +1,17 @@
1
1
  import {
2
2
  FileText
3
3
  } from "./chunk-7APYEQIO.js";
4
- import {
5
- Package
6
- } from "./chunk-ZGFQ7HIX.js";
7
4
  import {
8
5
  Plug
9
6
  } from "./chunk-BSFYTSN6.js";
7
+ import {
8
+ Package
9
+ } from "./chunk-ZGFQ7HIX.js";
10
10
  import {
11
11
  createLucideIcon
12
12
  } from "./chunk-E26EAQIM.js";
13
13
 
14
- // web/app/dist/server/assets/shared-Cb61Aqse.js
15
- import { jsx, jsxs } from "react/jsx-runtime";
14
+ // web/app/dist/server/assets/resource-helpers-fuGQ38iH.js
16
15
  var BookOpen = createLucideIcon("book-open", [["path", {
17
16
  d: "M12 5v16",
18
17
  key: "1f6ucr"
@@ -125,13 +124,6 @@ function getResourceGroups(resources, workspace) {
125
124
  }
126
125
  ];
127
126
  }
128
- function countWorkspaceFiles(nodes) {
129
- return nodes.reduce((count, node) => {
130
- if (node.type === "file") return count + 1;
131
- if (!node.children?.length) return count;
132
- return count + countWorkspaceFiles(node.children);
133
- }, 0);
134
- }
135
127
  function findWorkspaceNode(nodes, path) {
136
128
  for (const node of nodes) {
137
129
  if (node.path === path) return node;
@@ -172,78 +164,6 @@ function getResourceChipTitle(item) {
172
164
  function resourceKey(item) {
173
165
  return `${item.source ?? "resource"}:${item.path ?? item.name}`;
174
166
  }
175
- function ResourceNotice({ description, icon: Icon, title }) {
176
- return /* @__PURE__ */ jsxs("div", {
177
- className: "my-1.5 rounded-sm bg-foreground/5 px-2.5 py-2",
178
- children: [/* @__PURE__ */ jsxs("div", {
179
- className: "flex items-center gap-2 text-label font-medium text-foreground/65",
180
- children: [/* @__PURE__ */ jsx(Icon, { className: "size-3.5" }), /* @__PURE__ */ jsx("span", { children: title })]
181
- }), /* @__PURE__ */ jsx("p", {
182
- className: "mt-1 text-[11px] leading-4 text-foreground/40",
183
- children: description
184
- })]
185
- });
186
- }
187
- function ResourceChipSection({ id, icon: Icon, items, label }) {
188
- return /* @__PURE__ */ jsxs("section", {
189
- id: `resource-section-${id}`,
190
- className: "flex min-w-0 flex-col gap-2 py-2.5",
191
- "aria-label": `${label} resources`,
192
- children: [/* @__PURE__ */ jsxs("div", {
193
- className: "flex min-w-0 items-center text-body leading-5 text-foreground/45",
194
- children: [/* @__PURE__ */ jsx("span", {
195
- className: "truncate underline decoration-foreground/25 underline-offset-2",
196
- children: label
197
- }), /* @__PURE__ */ jsx("span", {
198
- className: "ml-1 shrink-0 text-[11px] leading-4 text-foreground/30 tabular-nums no-underline",
199
- children: items.length
200
- })]
201
- }), /* @__PURE__ */ jsx("ul", {
202
- className: "flex min-w-0 flex-col items-stretch gap-1.5",
203
- "data-testid": `resource-chip-section-${label.toLowerCase()}`,
204
- children: items.length === 0 ? /* @__PURE__ */ jsx("li", {
205
- className: "inline-flex h-7.5 items-center rounded-lg border border-border/60 bg-background px-3 text-body leading-5 text-foreground/35 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)]",
206
- children: "Empty"
207
- }) : items.map((item) => /* @__PURE__ */ jsx(ResourceChip, {
208
- icon: Icon,
209
- item,
210
- stacked: true
211
- }, resourceKey(item)))
212
- })]
213
- });
214
- }
215
- function ResourceChip({ icon, item, stacked = false }) {
216
- const title = getResourceChipTitle(item);
217
- return /* @__PURE__ */ jsxs("li", {
218
- className: `max-w-full rounded-lg border border-border/70 bg-background px-2.5 text-body leading-5 text-foreground/80 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)] ${stacked ? "flex min-h-9 w-full min-w-0 items-center gap-2 py-1.5" : "inline-flex h-7.5 items-center gap-1"}`,
219
- "aria-label": title,
220
- "data-testid": "resource-chip",
221
- title,
222
- children: [
223
- /* @__PURE__ */ jsxs("div", {
224
- className: "flex min-w-0 flex-1 items-center gap-2",
225
- children: [/* @__PURE__ */ jsx(ResourceChipIcon, { icon }), /* @__PURE__ */ jsx("span", {
226
- className: "min-w-0 truncate",
227
- children: item.name
228
- })]
229
- }),
230
- item.source && /* @__PURE__ */ jsx("span", {
231
- className: "max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
232
- children: item.source
233
- }),
234
- item.activationStatus && /* @__PURE__ */ jsx("span", {
235
- className: "max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
236
- children: item.activationStatus
237
- })
238
- ]
239
- });
240
- }
241
- function ResourceChipIcon({ icon: Icon }) {
242
- return /* @__PURE__ */ jsx("span", {
243
- className: "inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-foreground/4 text-foreground/45",
244
- children: /* @__PURE__ */ jsx(Icon, { className: "size-3.5" })
245
- });
246
- }
247
167
  function mergeResourceItems(primary, secondary) {
248
168
  const seen = /* @__PURE__ */ new Set();
249
169
  return [...primary, ...secondary].filter((item) => {
@@ -256,10 +176,9 @@ function mergeResourceItems(primary, secondary) {
256
176
 
257
177
  export {
258
178
  getResourceGroups,
259
- countWorkspaceFiles,
260
179
  findWorkspaceNode,
261
- ResourceNotice,
262
- ResourceChipSection
180
+ getResourceChipTitle,
181
+ resourceKey
263
182
  };
264
183
  /**
265
184
  * @license lucide-react v1.33.0 - ISC
@@ -1,4 +1,23 @@
1
- // web/app/dist/server/assets/model-patterns-BOn3oCBF.js
1
+ // web/app/dist/server/assets/model-patterns-BueP0n_O.js
2
+ var UI_PREFERENCES_KEY = "fleet-prime:v1:ui-preferences";
3
+ var DEFAULT_UI_PREFERENCES = {
4
+ density: "comfortable",
5
+ motion: "system",
6
+ transcript: "follow",
7
+ confirmSessionDelete: true
8
+ };
9
+ function readUiPreferences() {
10
+ if (typeof window === "undefined") return DEFAULT_UI_PREFERENCES;
11
+ try {
12
+ const parsed = JSON.parse(window.localStorage.getItem("fleet-prime:v1:ui-preferences") ?? "null");
13
+ return {
14
+ ...DEFAULT_UI_PREFERENCES,
15
+ ...parsed
16
+ };
17
+ } catch {
18
+ return DEFAULT_UI_PREFERENCES;
19
+ }
20
+ }
2
21
  var THINKING_LEVELS = /* @__PURE__ */ new Set([
3
22
  "off",
4
23
  "minimal",
@@ -54,6 +73,9 @@ function modelPattern(provider, modelId) {
54
73
  }
55
74
 
56
75
  export {
76
+ UI_PREFERENCES_KEY,
77
+ DEFAULT_UI_PREFERENCES,
78
+ readUiPreferences,
57
79
  isModelPatternEnabled,
58
80
  modelMatchesPattern,
59
81
  modelPattern
@@ -1,36 +1,4 @@
1
- import {
2
- segmentOpenUIContent
3
- } from "./chunk-KDSISV4P.js";
4
-
5
- // web/app/dist/server/assets/prime-agent-artifacts-BVZsmuR7.js
6
- var ARTIFACTS_SCOPE_SUFFIX = "artifacts";
7
- function getArtifactsScopePath(_root) {
8
- return ARTIFACTS_SCOPE_SUFFIX;
9
- }
10
- var ROOT_COMPONENT_PATTERN = /^root\s*=\s*([A-Za-z][A-Za-z0-9]*)/;
11
- var FIRST_STRING_LITERAL_PATTERN = /"((?:\\.|[^"\\]){1,80})"/;
12
- function openUIBlockLabel(content) {
13
- return FIRST_STRING_LITERAL_PATTERN.exec(content)?.[1] ?? ROOT_COMPONENT_PATTERN.exec(content)?.[1] ?? "Interface";
14
- }
15
- function collectSessionOpenUIBlocks(messages) {
16
- const blocks = [];
17
- for (const message of messages) {
18
- if (message.role !== "assistant") continue;
19
- for (const part of message.parts) {
20
- if (part.type !== "text" || typeof part.text !== "string") continue;
21
- for (const segment of segmentOpenUIContent(part.text)) {
22
- if (segment.type !== "openui") continue;
23
- blocks.push({
24
- blockId: `${message.id}:${segment.id}`,
25
- content: segment.content,
26
- component: openUIBlockLabel(segment.content),
27
- ordinal: blocks.length + 1
28
- });
29
- }
30
- }
31
- }
32
- return blocks;
33
- }
1
+ // web/app/dist/server/assets/prime-agent-artifacts-CdA9h9wq.js
34
2
  function stablePresentationId(seed) {
35
3
  let hash = 2166136261;
36
4
  for (let index = 0; index < seed.length; index += 1) {
@@ -199,8 +167,6 @@ function derivePrimeAgentArtifactRuns(messages, presentation, chatStatus) {
199
167
  }
200
168
 
201
169
  export {
202
- getArtifactsScopePath,
203
- collectSessionOpenUIBlocks,
204
170
  primeAgentArtifactDiff,
205
171
  derivePrimeAgentArtifactRuns
206
172
  };
@@ -0,0 +1,161 @@
1
+ import {
2
+ getResourceChipTitle,
3
+ resourceKey
4
+ } from "./chunk-46VQY7SG.js";
5
+ import {
6
+ Skeleton
7
+ } from "./chunk-EAJTWMK5.js";
8
+
9
+ // web/app/dist/server/assets/skeleton-loaders-BLPxdCxA.js
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ function ResourceNotice({ description, icon: Icon, title }) {
12
+ return /* @__PURE__ */ jsxs("div", {
13
+ className: "my-1.5 rounded-sm bg-foreground/5 px-2.5 py-2",
14
+ children: [/* @__PURE__ */ jsxs("div", {
15
+ className: "flex items-center gap-2 text-label font-medium text-foreground/65",
16
+ children: [/* @__PURE__ */ jsx(Icon, { className: "size-3.5" }), /* @__PURE__ */ jsx("span", { children: title })]
17
+ }), /* @__PURE__ */ jsx("p", {
18
+ className: "mt-1 text-[11px] leading-4 text-foreground/40",
19
+ children: description
20
+ })]
21
+ });
22
+ }
23
+ function ResourceChipSection({ id, icon: Icon, items, label }) {
24
+ return /* @__PURE__ */ jsxs("section", {
25
+ id: `resource-section-${id}`,
26
+ className: "flex min-w-0 flex-col gap-2 py-2.5",
27
+ "aria-label": `${label} resources`,
28
+ children: [/* @__PURE__ */ jsxs("div", {
29
+ className: "flex min-w-0 items-center text-body leading-5 text-foreground/45",
30
+ children: [/* @__PURE__ */ jsx("span", {
31
+ className: "truncate underline decoration-foreground/25 underline-offset-2",
32
+ children: label
33
+ }), /* @__PURE__ */ jsx("span", {
34
+ className: "ml-1 shrink-0 text-[11px] leading-4 text-foreground/30 tabular-nums no-underline",
35
+ children: items.length
36
+ })]
37
+ }), /* @__PURE__ */ jsx("ul", {
38
+ className: "flex min-w-0 flex-col items-stretch gap-1.5",
39
+ "data-testid": `resource-chip-section-${label.toLowerCase()}`,
40
+ children: items.length === 0 ? /* @__PURE__ */ jsx("li", {
41
+ className: "inline-flex h-7.5 items-center rounded-lg border border-border/60 bg-background px-3 text-body leading-5 text-foreground/35 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)]",
42
+ children: "Empty"
43
+ }) : items.map((item) => /* @__PURE__ */ jsx(ResourceChip, {
44
+ icon: Icon,
45
+ item,
46
+ stacked: true
47
+ }, resourceKey(item)))
48
+ })]
49
+ });
50
+ }
51
+ function ResourceChip({ icon, item, stacked = false }) {
52
+ const title = getResourceChipTitle(item);
53
+ return /* @__PURE__ */ jsxs("li", {
54
+ className: `max-w-full rounded-lg border border-border/70 bg-background px-2.5 text-body leading-5 text-foreground/80 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)] ${stacked ? "flex min-h-9 w-full min-w-0 items-center gap-2 py-1.5" : "inline-flex h-7.5 items-center gap-1"}`,
55
+ "aria-label": title,
56
+ "data-testid": "resource-chip",
57
+ title,
58
+ children: [
59
+ /* @__PURE__ */ jsxs("div", {
60
+ className: "flex min-w-0 flex-1 items-center gap-2",
61
+ children: [/* @__PURE__ */ jsx(ResourceChipIcon, { icon }), /* @__PURE__ */ jsx("span", {
62
+ className: "min-w-0 truncate",
63
+ children: item.name
64
+ })]
65
+ }),
66
+ item.source && /* @__PURE__ */ jsx("span", {
67
+ className: "max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
68
+ children: item.source
69
+ }),
70
+ item.activationStatus && /* @__PURE__ */ jsx("span", {
71
+ className: "max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
72
+ children: item.activationStatus
73
+ })
74
+ ]
75
+ });
76
+ }
77
+ function ResourceChipIcon({ icon: Icon }) {
78
+ return /* @__PURE__ */ jsx("span", {
79
+ className: "inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-foreground/4 text-foreground/45",
80
+ children: /* @__PURE__ */ jsx(Icon, { className: "size-3.5" })
81
+ });
82
+ }
83
+ function ResourcesSkeleton() {
84
+ return /* @__PURE__ */ jsxs("div", {
85
+ className: "flex flex-col gap-4 p-1",
86
+ children: [
87
+ /* @__PURE__ */ jsxs("div", {
88
+ className: "flex flex-col gap-2",
89
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-24" }), /* @__PURE__ */ jsxs("div", {
90
+ className: "flex flex-wrap gap-1.5",
91
+ children: [
92
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-20 rounded-full" }),
93
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-24 rounded-full" }),
94
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-16 rounded-full" }),
95
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-28 rounded-full" })
96
+ ]
97
+ })]
98
+ }),
99
+ /* @__PURE__ */ jsxs("div", {
100
+ className: "flex flex-col gap-2",
101
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-28" }), /* @__PURE__ */ jsxs("div", {
102
+ className: "flex flex-wrap gap-1.5",
103
+ children: [
104
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-22 rounded-full" }),
105
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-18 rounded-full" }),
106
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-26 rounded-full" })
107
+ ]
108
+ })]
109
+ }),
110
+ /* @__PURE__ */ jsxs("div", {
111
+ className: "flex flex-col gap-2",
112
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-20" }), /* @__PURE__ */ jsxs("div", {
113
+ className: "flex flex-wrap gap-1.5",
114
+ children: [
115
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-24 rounded-full" }),
116
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-20 rounded-full" }),
117
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-30 rounded-full" })
118
+ ]
119
+ })]
120
+ })
121
+ ]
122
+ });
123
+ }
124
+ function WorkspaceSkeleton() {
125
+ return /* @__PURE__ */ jsxs("div", {
126
+ className: "flex flex-col gap-2 p-1",
127
+ children: [
128
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-full rounded-sm" }),
129
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[90%]" }),
130
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[85%]" }),
131
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[70%]" }),
132
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[80%]" }),
133
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[60%]" }),
134
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[75%]" }),
135
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-6 w-[55%]" })
136
+ ]
137
+ });
138
+ }
139
+ function WorkspacePreviewSkeleton() {
140
+ return /* @__PURE__ */ jsxs("div", {
141
+ className: "flex flex-col gap-3 p-2",
142
+ children: [
143
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-3/4" }),
144
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
145
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[95%]" }),
146
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[80%]" }),
147
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
148
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[70%]" }),
149
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[90%]" }),
150
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[60%]" })
151
+ ]
152
+ });
153
+ }
154
+
155
+ export {
156
+ ResourceNotice,
157
+ ResourceChipSection,
158
+ ResourcesSkeleton,
159
+ WorkspaceSkeleton,
160
+ WorkspacePreviewSkeleton
161
+ };
@@ -0,0 +1,45 @@
1
+ import {
2
+ createLucideIcon
3
+ } from "./chunk-E26EAQIM.js";
4
+
5
+ // web/app/dist/server/assets/bot-DuGeyHj5.js
6
+ var Bot = createLucideIcon("bot", [
7
+ ["path", {
8
+ d: "M12 8V4H8",
9
+ key: "hb8ula"
10
+ }],
11
+ ["rect", {
12
+ width: "16",
13
+ height: "12",
14
+ x: "4",
15
+ y: "8",
16
+ rx: "2",
17
+ key: "enze0r"
18
+ }],
19
+ ["path", {
20
+ d: "M2 14h2",
21
+ key: "vft8re"
22
+ }],
23
+ ["path", {
24
+ d: "M20 14h2",
25
+ key: "4cs60a"
26
+ }],
27
+ ["path", {
28
+ d: "M15 13v2",
29
+ key: "1xurst"
30
+ }],
31
+ ["path", {
32
+ d: "M9 13v2",
33
+ key: "rq6x2g"
34
+ }]
35
+ ]);
36
+
37
+ export {
38
+ Bot
39
+ };
40
+ /**
41
+ * @license lucide-react v1.33.0 - ISC
42
+ *
43
+ * This source code is licensed under the ISC license.
44
+ * See the LICENSE file in the root directory of this source tree.
45
+ */
@@ -0,0 +1,33 @@
1
+ import {
2
+ segmentOpenUIContent
3
+ } from "./chunk-NFRJDPB3.js";
4
+
5
+ // web/app/dist/server/assets/artifacts-utils-DE0oJBSs.js
6
+ var ROOT_COMPONENT_PATTERN = /^root\s*=\s*([A-Za-z][A-Za-z0-9]*)/;
7
+ var FIRST_STRING_LITERAL_PATTERN = /"((?:\\.|[^"\\]){1,80})"/;
8
+ function openUIBlockLabel(content) {
9
+ return FIRST_STRING_LITERAL_PATTERN.exec(content)?.[1] ?? ROOT_COMPONENT_PATTERN.exec(content)?.[1] ?? "Interface";
10
+ }
11
+ function collectSessionOpenUIBlocks(messages) {
12
+ const blocks = [];
13
+ for (const message of messages) {
14
+ if (message.role !== "assistant") continue;
15
+ for (const part of message.parts) {
16
+ if (part.type !== "text" || typeof part.text !== "string") continue;
17
+ for (const segment of segmentOpenUIContent(part.text)) {
18
+ if (segment.type !== "openui") continue;
19
+ blocks.push({
20
+ blockId: `${message.id}:${segment.id}`,
21
+ content: segment.content,
22
+ component: openUIBlockLabel(segment.content),
23
+ ordinal: blocks.length + 1
24
+ });
25
+ }
26
+ }
27
+ }
28
+ return blocks;
29
+ }
30
+
31
+ export {
32
+ collectSessionOpenUIBlocks
33
+ };
@@ -1,9 +1,15 @@
1
+ import {
2
+ Folder
3
+ } from "./chunk-OLG5DQ7V.js";
1
4
  import {
2
5
  InputGroup,
3
6
  InputGroupAddon,
4
7
  useChatPanelDataContext,
5
8
  useWorkspaceTreeContext
6
- } from "./chunk-ZX3XOSYO.js";
9
+ } from "./chunk-3GSFXWL5.js";
10
+ import {
11
+ Bot
12
+ } from "./chunk-74QOI457.js";
7
13
  import {
8
14
  Search
9
15
  } from "./chunk-2H6A6Z7F.js";
@@ -25,16 +31,16 @@ import {
25
31
  DialogDescription,
26
32
  DialogHeader,
27
33
  DialogTitle
28
- } from "./chunk-AQWTGP35.js";
34
+ } from "./chunk-FE4KN6T2.js";
29
35
  import {
30
- Folder
31
- } from "./chunk-OLG5DQ7V.js";
36
+ Skeleton
37
+ } from "./chunk-EAJTWMK5.js";
32
38
  import {
33
39
  Package
34
40
  } from "./chunk-ZGFQ7HIX.js";
35
41
  import {
36
- Skeleton
37
- } from "./chunk-EAJTWMK5.js";
42
+ SquareTerminal
43
+ } from "./chunk-G5BCQQ5N.js";
38
44
  import {
39
45
  createLucideIcon
40
46
  } from "./chunk-E26EAQIM.js";
@@ -42,7 +48,7 @@ import {
42
48
  cn
43
49
  } from "./chunk-DJMHPJBP.js";
44
50
 
45
- // web/app/dist/server/assets/command-DLLFAaSr.js
51
+ // web/app/dist/server/assets/command-DgDlO5ue.js
46
52
  import * as t from "react";
47
53
  import { Suspense, lazy } from "react";
48
54
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -90,10 +96,12 @@ var Square = createLucideIcon("square", [["rect", {
90
96
  rx: "2",
91
97
  key: "afitv7"
92
98
  }]]);
93
- var LazyArtifactsPanel = lazy(() => import("./artifacts-panel-knpQvJ-q-WJLZ76QB.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
94
- var LazyResourcesPanel = lazy(() => import("./resources-panel-DNCVHTIg-PJYMXVGE.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
95
- var LazySessionInsightsPanel = lazy(() => import("./session-insights-panel-gYkkAE8H-W4O74Z7H.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
96
- var LazyWorkspacePanel = lazy(() => import("./workspace-panel-BNAXF57q-EQCBPEG4.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
99
+ var LazyArtifactsPanel = lazy(() => import("./artifacts-panel-D9w1DHAN-FGRDCYU2.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
100
+ var LazyResourcesPanel = lazy(() => import("./resources-panel-CwKh4U9f-D3VDEMDW.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
101
+ var LazySessionInsightsPanel = lazy(() => import("./session-insights-panel-JfeTHE0d-3HZB3ZWI.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
102
+ var LazyReplPanel = lazy(() => import("./repl-panel-BEQrC2ef-V3YEZ7EO.js").then(({ ReplPanelContent }) => ({ default: ReplPanelContent })));
103
+ var LazySubagentsPanel = lazy(() => import("./subagents-panel-CzZe3co7-2VZ5JTWF.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
104
+ var LazyWorkspacePanel = lazy(() => import("./workspace-panel-y54P79_B-VPIYUXF6.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
97
105
  function PanelFallback() {
98
106
  return /* @__PURE__ */ jsxs("div", {
99
107
  className: "flex min-h-32 flex-col gap-3 p-4",
@@ -149,21 +157,36 @@ function WorkspaceContent() {
149
157
  }
150
158
  function ArtifactsContent() {
151
159
  const data = useChatPanelDataContext();
152
- const workspace = useWorkspaceTreeContext();
153
160
  return /* @__PURE__ */ jsx(Suspense, {
154
161
  fallback: /* @__PURE__ */ jsx(PanelFallback, {}),
155
162
  children: /* @__PURE__ */ jsx(LazyArtifactsPanel, {
156
163
  artifactRuns: data.artifactRuns,
157
- error: workspace.workspaceError,
158
- loadWorkspaceFile: workspace.loadWorkspaceFile,
159
- loading: workspace.workspaceLoading,
160
164
  messages: data.messages,
161
165
  onOpenUIAction: data.onOpenUIAction,
162
- onSelectedPathChange: workspace.setSelectedWorkspacePath,
163
166
  selectedArtifactId: data.selectedArtifactId,
164
- selectedPath: workspace.selectedWorkspacePath,
165
- status: data.status,
166
- workspace: workspace.workspaceTree
167
+ status: data.status
168
+ })
169
+ });
170
+ }
171
+ function ReplContent() {
172
+ const data = useChatPanelDataContext();
173
+ return /* @__PURE__ */ jsx(Suspense, {
174
+ fallback: /* @__PURE__ */ jsx(PanelFallback, {}),
175
+ children: /* @__PURE__ */ jsx(LazyReplPanel, {
176
+ artifactRuns: data.artifactRuns,
177
+ selectedArtifactId: data.selectedArtifactId
178
+ })
179
+ });
180
+ }
181
+ function SubagentsContent() {
182
+ const data = useChatPanelDataContext();
183
+ return /* @__PURE__ */ jsx(Suspense, {
184
+ fallback: /* @__PURE__ */ jsx(PanelFallback, {}),
185
+ children: /* @__PURE__ */ jsx(LazySubagentsPanel, {
186
+ agents: data.presentation.rlmChildren,
187
+ loadSession: data.loadSubagentSession,
188
+ parentSessionId: data.sessionId,
189
+ tree: data.presentation.rlmTree
167
190
  })
168
191
  });
169
192
  }
@@ -210,7 +233,7 @@ var RIGHT_PANEL_REGISTRY = {
210
233
  id: "artifacts",
211
234
  order: 2,
212
235
  title: "Artifacts",
213
- ariaLabel: "Workspace artifacts",
236
+ ariaLabel: "Artifacts",
214
237
  commandLabel: "Open Artifacts",
215
238
  commandKeywords: [
216
239
  "artifacts",
@@ -222,13 +245,55 @@ var RIGHT_PANEL_REGISTRY = {
222
245
  dataTestid: "pi-artifacts-canvas",
223
246
  mobileDataTestid: "pi-artifacts-mobile-panel",
224
247
  badgeSource: "artifacts",
225
- loadingSource: "workspace",
226
- refreshSource: "workspace",
248
+ loadingSource: void 0,
249
+ refreshSource: void 0,
227
250
  component: ArtifactsContent
228
251
  },
252
+ repl: {
253
+ id: "repl",
254
+ order: 3,
255
+ title: "REPL",
256
+ ariaLabel: "REPL runs",
257
+ commandLabel: "Open REPL",
258
+ commandKeywords: [
259
+ "repl",
260
+ "ipython",
261
+ "python",
262
+ "cells",
263
+ "panels"
264
+ ],
265
+ icon: SquareTerminal,
266
+ dataTestid: "pi-repl-canvas",
267
+ mobileDataTestid: "pi-repl-mobile-panel",
268
+ badgeSource: "repl",
269
+ loadingSource: void 0,
270
+ refreshSource: void 0,
271
+ component: ReplContent
272
+ },
273
+ subagents: {
274
+ id: "subagents",
275
+ order: 4,
276
+ title: "Subagents",
277
+ ariaLabel: "Subagents",
278
+ commandLabel: "Open Subagents",
279
+ commandKeywords: [
280
+ "subagents",
281
+ "agents",
282
+ "threads",
283
+ "delegation",
284
+ "panels"
285
+ ],
286
+ icon: Bot,
287
+ dataTestid: "pi-subagents-canvas",
288
+ mobileDataTestid: "pi-subagents-mobile-panel",
289
+ badgeSource: "subagents",
290
+ loadingSource: void 0,
291
+ refreshSource: void 0,
292
+ component: SubagentsContent
293
+ },
229
294
  "session-insights": {
230
295
  id: "session-insights",
231
- order: 3,
296
+ order: 5,
232
297
  title: "Session insights",
233
298
  ariaLabel: "Session insights",
234
299
  commandLabel: "Open Session Insights",
@@ -14518,12 +14518,14 @@ function date4(params) {
14518
14518
  // node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
14519
14519
  config(en_default());
14520
14520
 
14521
- // web/app/dist/server/assets/chat-CRPIm7uL.js
14521
+ // web/app/dist/server/assets/chat-Bt1SKsm5.js
14522
14522
  var MAX_ATTACHMENT_BYTES = 26214400;
14523
14523
  var RightPanelIdSchema = external_exports.enum([
14524
14524
  "resources",
14525
14525
  "workspace",
14526
14526
  "artifacts",
14527
+ "repl",
14528
+ "subagents",
14527
14529
  "session-insights"
14528
14530
  ]);
14529
14531
  var SessionIdSchema = external_exports.string().min(1).max(160).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);
@@ -15384,6 +15386,24 @@ var ChatQueueEventSchema = external_exports.object({
15384
15386
  steering: external_exports.array(external_exports.string()),
15385
15387
  followUp: external_exports.array(external_exports.string())
15386
15388
  }).openapi({ description: "Stream queue event" });
15389
+ var ChatQueueMutationRequestSchema = external_exports.object({
15390
+ sessionId: SessionIdSchema,
15391
+ lane: external_exports.enum(["steering", "followUp"]),
15392
+ index: external_exports.number().int().nonnegative(),
15393
+ expectedText: external_exports.string().min(1)
15394
+ }).openapi({ description: "Delete one queued message after verifying its expected text" });
15395
+ var ChatQueueMutationResponseSchema = external_exports.object({
15396
+ status: external_exports.enum([
15397
+ "applied",
15398
+ "rejected",
15399
+ "invalid",
15400
+ "unsupported"
15401
+ ]),
15402
+ queue: external_exports.object({
15403
+ steering: external_exports.array(external_exports.string()),
15404
+ followUp: external_exports.array(external_exports.string())
15405
+ })
15406
+ }).openapi({ description: "Queued-message mutation result with an authoritative queue snapshot" });
15387
15407
  var ChatThinkingEventSchema = external_exports.object({
15388
15408
  type: external_exports.literal("thinking"),
15389
15409
  phase: external_exports.enum([
@@ -15733,6 +15753,8 @@ export {
15733
15753
  ChatQuestionAnswerResponseSchema,
15734
15754
  ChatPlanPresentationSchema,
15735
15755
  ChatPlanPresentationUpsertRequestSchema,
15756
+ ChatQueueMutationRequestSchema,
15757
+ ChatQueueMutationResponseSchema,
15736
15758
  PrimeAgentSessionPresentationSchema,
15737
15759
  ChatOpenUIArtifactUpsertRequestSchema,
15738
15760
  ChatOpenUIArtifactUpsertResponseSchema,