@qredence/fleet 0.5.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-uZddQetG-MNZGQOSA.js → _tanstack-start-manifest_v-bDUlyKY0-KFW35JRO.js} +23 -16
  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
@@ -2024,7 +2024,7 @@ function getResponse() {
2024
2024
  }
2025
2025
  var HEADERS = { TSS_SHELL: "X-TSS_SHELL" };
2026
2026
  async function getStartManifest(matchedRoutes) {
2027
- const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-uZddQetG-MNZGQOSA.js");
2027
+ const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-bDUlyKY0-KFW35JRO.js");
2028
2028
  const startManifest = tsrStartManifest();
2029
2029
  let routes = startManifest.routes;
2030
2030
  routes[rootRouteId];
@@ -4982,7 +4982,7 @@ var getBaseManifest = getProdBaseManifest;
4982
4982
  var createEarlyHintsForRequest = createEarlyHintsCollector;
4983
4983
  async function loadEntries() {
4984
4984
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
4985
- import("./router-DDxOMz3K-HRBXILHM.js"),
4985
+ import("./router-CEahIUpn-SRG7XKIH.js"),
4986
4986
  import("./start-CLAD7RcD-56S4BWMM.js"),
4987
4987
  import("./empty-plugin-adapters-Cqtvkauv-6XWFDBYT.js")
4988
4988
  ]);
@@ -1,6 +1,6 @@
1
1
  import "./chunk-MLKGABMK.js";
2
2
 
3
- // web/app/dist/server/assets/session-insights-panel-gYkkAE8H.js
3
+ // web/app/dist/server/assets/session-insights-panel-JfeTHE0d.js
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  var RLM_CHILD_STATUSES = [
6
6
  "queued",
@@ -121,7 +121,7 @@ function SessionInsightsPanel({ activityLabel, artifactRuns, chatMode, messages,
121
121
  presentation,
122
122
  queue
123
123
  });
124
- const rlmSummary = RLM_CHILD_STATUSES.map((state) => [state, insights.rlmChildren[state]]).map(([state, count]) => `${count} ${state}`).join(" \xB7 ");
124
+ const rlmSummary = RLM_CHILD_STATUSES.map((state) => `${insights.rlmChildren[state]} ${state}`).join(" \xB7 ");
125
125
  return /* @__PURE__ */ jsxs("section", {
126
126
  "aria-label": "Session insights",
127
127
  className: "space-y-2.5 pb-1",
@@ -1,12 +1,3 @@
1
- import {
2
- Eye
3
- } from "./chunk-DBXYBYBP.js";
4
- import {
5
- Keyboard,
6
- Monitor,
7
- Moon,
8
- Sun
9
- } from "./chunk-EY2O73OV.js";
10
1
  import {
11
2
  AlertDialog,
12
3
  AlertDialogAction,
@@ -26,25 +17,50 @@ import {
26
17
  MessageSquare,
27
18
  PROVIDER_METADATA,
28
19
  ProviderBrandIcon,
29
- RefreshCw,
30
20
  Settings,
31
21
  Spinner,
32
22
  Trash2,
33
23
  fleetPiRowSurface,
34
24
  formatProviderLabel,
35
25
  getDelay,
36
- notify,
37
26
  safePolygon,
38
27
  useHoverFloatingInteraction,
39
28
  useHoverInteractionSharedState,
40
29
  useHoverReferenceInteraction,
41
30
  usePopupHandleStore
42
- } from "./chunk-5277VI3D.js";
31
+ } from "./chunk-KPNGZR2R.js";
32
+ import {
33
+ UI_PREFERENCES_KEY,
34
+ isModelPatternEnabled,
35
+ modelMatchesPattern,
36
+ modelPattern,
37
+ readUiPreferences
38
+ } from "./chunk-54II5QXQ.js";
39
+ import {
40
+ RefreshCw,
41
+ notify
42
+ } from "./chunk-EIVNRYP3.js";
43
+ import {
44
+ FloatingPortalLite,
45
+ Info
46
+ } from "./chunk-WK7CQS2N.js";
47
+ import {
48
+ Eye
49
+ } from "./chunk-DBXYBYBP.js";
43
50
  import {
44
51
  ExternalLink,
45
52
  Globe,
46
53
  Sparkles
47
54
  } from "./chunk-5WZFFNFY.js";
55
+ import {
56
+ HardDrive
57
+ } from "./chunk-HUX64PWB.js";
58
+ import {
59
+ Keyboard,
60
+ Monitor,
61
+ Moon,
62
+ Sun
63
+ } from "./chunk-EY2O73OV.js";
48
64
  import {
49
65
  InputGroup,
50
66
  InputGroupAddon,
@@ -53,25 +69,20 @@ import {
53
69
  Plus,
54
70
  useChatPanelDataContext,
55
71
  useSettingsActionsContext
56
- } from "./chunk-ZX3XOSYO.js";
72
+ } from "./chunk-3GSFXWL5.js";
73
+ import "./chunk-74QOI457.js";
57
74
  import {
58
75
  Search
59
76
  } from "./chunk-2H6A6Z7F.js";
60
- import {
61
- isModelPatternEnabled,
62
- modelMatchesPattern,
63
- modelPattern
64
- } from "./chunk-WTYNN6EV.js";
65
- import {
66
- FloatingPortalLite,
67
- Info
68
- } from "./chunk-WK7CQS2N.js";
69
77
  import {
70
78
  RotateCcw
71
79
  } from "./chunk-6RJYXDSD.js";
72
80
  import {
73
81
  LoaderCircle
74
82
  } from "./chunk-PKCTG7EW.js";
83
+ import {
84
+ ChevronRight
85
+ } from "./chunk-7QCDOBZ3.js";
75
86
  import {
76
87
  Alert,
77
88
  AlertDescription,
@@ -81,7 +92,7 @@ import {
81
92
  FieldLabel,
82
93
  Switch,
83
94
  useRender
84
- } from "./chunk-UBUXV2TW.js";
95
+ } from "./chunk-FBOO3G67.js";
85
96
  import {
86
97
  Select,
87
98
  clamp,
@@ -92,11 +103,16 @@ import {
92
103
  useCSPContext,
93
104
  useDirection,
94
105
  usePositioner
95
- } from "./chunk-C7EKOPZU.js";
106
+ } from "./chunk-DO3TVNGA.js";
107
+ import {
108
+ isCustomProviderId,
109
+ isNamedOccInstanceId,
110
+ isOccProviderId
111
+ } from "./chunk-RJOANOT4.js";
96
112
  import "./chunk-QLY3L4A2.js";
97
113
  import {
98
114
  Input
99
- } from "./chunk-JD6EWZCU.js";
115
+ } from "./chunk-VHCAD46L.js";
100
116
  import {
101
117
  Check
102
118
  } from "./chunk-NLIUTTKL.js";
@@ -133,16 +149,7 @@ import {
133
149
  usePopupRootStore,
134
150
  useSurface,
135
151
  useTriggerDataForwarding
136
- } from "./chunk-AQWTGP35.js";
137
- import {
138
- useBaseUiId,
139
- useValueAsRef
140
- } from "./chunk-XYYNYFFD.js";
141
- import {
142
- isCustomProviderId,
143
- isNamedOccInstanceId,
144
- isOccProviderId
145
- } from "./chunk-RJOANOT4.js";
152
+ } from "./chunk-FE4KN6T2.js";
146
153
  import {
147
154
  Button,
148
155
  POPUP_COLLISION_AVOIDANCE,
@@ -164,6 +171,10 @@ import {
164
171
  useTimeout,
165
172
  webkit
166
173
  } from "./chunk-RPROZ2JC.js";
174
+ import {
175
+ useBaseUiId,
176
+ useValueAsRef
177
+ } from "./chunk-XYYNYFFD.js";
167
178
  import {
168
179
  EMPTY_OBJECT,
169
180
  X,
@@ -185,12 +196,6 @@ import {
185
196
  useRenderElement,
186
197
  useStableCallback
187
198
  } from "./chunk-X2TUFLTP.js";
188
- import {
189
- HardDrive
190
- } from "./chunk-HUX64PWB.js";
191
- import {
192
- ChevronRight
193
- } from "./chunk-7QCDOBZ3.js";
194
199
  import "./chunk-BSFYTSN6.js";
195
200
  import "./chunk-EAJTWMK5.js";
196
201
  import {
@@ -203,7 +208,7 @@ import "./chunk-JDCCC7A7.js";
203
208
  import "./chunk-L547YHC4.js";
204
209
  import "./chunk-MLKGABMK.js";
205
210
 
206
- // web/app/dist/server/assets/settings-dialog-BTBFLQ1P.js
211
+ // web/app/dist/server/assets/settings-dialog-DgeBMORv.js
207
212
  import * as React$1 from "react";
208
213
  import { useCallback as useCallback2, useEffect as useEffect2, useId, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
209
214
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -4793,25 +4798,6 @@ var SETTINGS_SECTIONS = Object.values({
4793
4798
  function isSettingsSectionId(value) {
4794
4799
  return SETTINGS_SECTIONS.some((section) => section.id === value);
4795
4800
  }
4796
- var UI_PREFERENCES_KEY = "fleet-prime:v1:ui-preferences";
4797
- var DEFAULT_UI_PREFERENCES = {
4798
- density: "comfortable",
4799
- motion: "system",
4800
- transcript: "follow",
4801
- confirmSessionDelete: true
4802
- };
4803
- function readUiPreferences() {
4804
- if (typeof window === "undefined") return DEFAULT_UI_PREFERENCES;
4805
- try {
4806
- const parsed = JSON.parse(window.localStorage.getItem("fleet-prime:v1:ui-preferences") ?? "null");
4807
- return {
4808
- ...DEFAULT_UI_PREFERENCES,
4809
- ...parsed
4810
- };
4811
- } catch {
4812
- return DEFAULT_UI_PREFERENCES;
4813
- }
4814
- }
4815
4801
  function PreferenceRow({ children, description, label }) {
4816
4802
  return /* @__PURE__ */ jsxs(Field, {
4817
4803
  orientation: "horizontal",
@@ -0,0 +1,332 @@
1
+ import {
2
+ FleetGenerativeTextRenderer,
3
+ FleetSubagentList,
4
+ FleetToolTimeline,
5
+ Message,
6
+ MessageBubble,
7
+ MessageBubbleContent,
8
+ MessageContent,
9
+ MessageScroller,
10
+ UserMessage,
11
+ buildAssistantElements,
12
+ groupMessages,
13
+ normalizeAssistantToolParts,
14
+ orderedRlmChildren,
15
+ rlmStatusIcon
16
+ } from "./chunk-Y6LJ4WBI.js";
17
+ import {
18
+ FleetPiToolRenderer
19
+ } from "./chunk-PCJ5EKFE.js";
20
+ import {
21
+ PI_TOOL_RENDERERS
22
+ } from "./chunk-44IVTHDV.js";
23
+ import "./chunk-P66QQWUM.js";
24
+ import {
25
+ RefreshCw
26
+ } from "./chunk-EIVNRYP3.js";
27
+ import "./chunk-WK7CQS2N.js";
28
+ import "./chunk-DBXYBYBP.js";
29
+ import "./chunk-5WZFFNFY.js";
30
+ import {
31
+ Bot
32
+ } from "./chunk-74QOI457.js";
33
+ import "./chunk-2H6A6Z7F.js";
34
+ import "./chunk-YRWVQ7BW.js";
35
+ import {
36
+ derivePrimeAgentArtifactRuns
37
+ } from "./chunk-5AVQZ4AZ.js";
38
+ import "./chunk-3IKSPTYI.js";
39
+ import "./chunk-PWK2HJIV.js";
40
+ import "./chunk-QJBEWT4E.js";
41
+ import "./chunk-FAGDMGLK.js";
42
+ import "./chunk-6RJYXDSD.js";
43
+ import "./chunk-PKCTG7EW.js";
44
+ import {
45
+ ChevronRight
46
+ } from "./chunk-7QCDOBZ3.js";
47
+ import "./chunk-NFRJDPB3.js";
48
+ import "./chunk-LESNF5O4.js";
49
+ import "./chunk-QLY3L4A2.js";
50
+ import "./chunk-NLIUTTKL.js";
51
+ import {
52
+ Button
53
+ } from "./chunk-RPROZ2JC.js";
54
+ import "./chunk-XYYNYFFD.js";
55
+ import "./chunk-X2TUFLTP.js";
56
+ import "./chunk-ST5I2PLN.js";
57
+ import {
58
+ CircleAlert
59
+ } from "./chunk-7APYEQIO.js";
60
+ import "./chunk-M2FGGPNA.js";
61
+ import "./chunk-G5BCQQ5N.js";
62
+ import "./chunk-BYXBJQAS.js";
63
+ import "./chunk-E26EAQIM.js";
64
+ import {
65
+ cn
66
+ } from "./chunk-DJMHPJBP.js";
67
+ import "./chunk-UQVZJSZZ.js";
68
+ import "./chunk-JDCCC7A7.js";
69
+ import "./chunk-L547YHC4.js";
70
+ import "./chunk-MLKGABMK.js";
71
+
72
+ // web/app/dist/server/assets/subagents-panel-CzZe3co7.js
73
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
74
+ import { jsx, jsxs } from "react/jsx-runtime";
75
+ function transcriptStatus(child) {
76
+ if (child.status === "running") return "streaming";
77
+ if (child.status === "error") return "error";
78
+ return "ready";
79
+ }
80
+ function SubagentTurnView({ turn, isLast, isStreaming, artifacts, presentation }) {
81
+ const assistantElements = useMemo(() => turn.assistants.flatMap((message, index) => buildAssistantElements(normalizeAssistantToolParts(message.parts ?? []), {
82
+ messageId: message.id,
83
+ isLast: isLast && index === turn.assistants.length - 1,
84
+ isStreaming,
85
+ suppressQuestionTool: true,
86
+ ToolRendererComponent: FleetPiToolRenderer,
87
+ TextRendererComponent: FleetGenerativeTextRenderer,
88
+ toolRenderers: PI_TOOL_RENDERERS
89
+ })), [
90
+ isLast,
91
+ isStreaming,
92
+ turn.assistants
93
+ ]);
94
+ return /* @__PURE__ */ jsxs("div", {
95
+ className: "flex flex-col gap-3",
96
+ children: [turn.user ? /* @__PURE__ */ jsx(Message, {
97
+ from: "user",
98
+ children: /* @__PURE__ */ jsx(MessageContent, { children: /* @__PURE__ */ jsx(UserMessage, {
99
+ message: turn.user,
100
+ enableImagePreview: false
101
+ }) })
102
+ }) : null, turn.assistants.length > 0 ? /* @__PURE__ */ jsx(Message, {
103
+ from: "assistant",
104
+ children: /* @__PURE__ */ jsx(MessageContent, { children: /* @__PURE__ */ jsx(MessageBubble, {
105
+ variant: "ghost",
106
+ children: /* @__PURE__ */ jsxs(MessageBubbleContent, { children: [
107
+ isLast ? /* @__PURE__ */ jsx(FleetToolTimeline, {
108
+ messages: turn.assistants,
109
+ artifacts,
110
+ streaming: isStreaming
111
+ }) : null,
112
+ /* @__PURE__ */ jsx("div", {
113
+ className: "flex flex-col gap-3",
114
+ children: assistantElements
115
+ }),
116
+ isLast && presentation ? /* @__PURE__ */ jsx(FleetSubagentList, {
117
+ children: presentation.rlmChildren,
118
+ tree: presentation.rlmTree
119
+ }) : null
120
+ ] })
121
+ }) })
122
+ }) : null]
123
+ });
124
+ }
125
+ function ChildTranscript({ child, parentSessionId, transcript, onRefresh }) {
126
+ const turns = useMemo(() => transcript?.status === "ready" ? groupMessages(transcript.messages) : [], [transcript]);
127
+ const childStatus = transcriptStatus(child);
128
+ const artifactRuns = useMemo(() => transcript?.status === "ready" ? derivePrimeAgentArtifactRuns(transcript.messages, transcript.presentation, childStatus) : [], [childStatus, transcript]);
129
+ const artifacts = useMemo(() => artifactRuns.flatMap((run) => run.artifacts), [artifactRuns]);
130
+ return /* @__PURE__ */ jsxs("section", {
131
+ "aria-label": `Subagent thread: ${child.label}`,
132
+ className: "space-y-2",
133
+ children: [/* @__PURE__ */ jsxs("div", {
134
+ className: "flex min-w-0 items-start gap-2 rounded-md border border-border/60 bg-background px-2.5 py-2",
135
+ children: [
136
+ /* @__PURE__ */ jsx(Bot, { className: "mt-0.5 size-3.5 shrink-0 text-foreground/45" }),
137
+ /* @__PURE__ */ jsxs("div", {
138
+ className: "min-w-0 flex-1",
139
+ children: [
140
+ /* @__PURE__ */ jsxs("div", {
141
+ className: "flex min-w-0 items-center gap-2",
142
+ children: [/* @__PURE__ */ jsx("span", {
143
+ className: "min-w-0 flex-1 truncate text-xs font-medium text-foreground/80",
144
+ children: child.sessionName || child.label
145
+ }), /* @__PURE__ */ jsx("span", {
146
+ className: "shrink-0 text-[10px] capitalize text-foreground/45",
147
+ children: child.status
148
+ })]
149
+ }),
150
+ child.model ? /* @__PURE__ */ jsx("p", {
151
+ className: "truncate font-mono text-[10px] text-foreground/40",
152
+ children: child.model
153
+ }) : null,
154
+ child.answerPreview || child.recap ? /* @__PURE__ */ jsx("p", {
155
+ className: "mt-1 line-clamp-3 whitespace-pre-wrap text-[11px] leading-4 text-foreground/55",
156
+ children: child.answerPreview ?? child.recap
157
+ }) : null
158
+ ]
159
+ }),
160
+ /* @__PURE__ */ jsx(Button, {
161
+ type: "button",
162
+ variant: "ghost",
163
+ size: "icon-sm",
164
+ className: "shrink-0 text-foreground/40 hover:text-foreground/70",
165
+ "aria-label": `Refresh ${child.label} thread`,
166
+ title: `Refresh ${child.label} thread`,
167
+ onClick: onRefresh,
168
+ children: /* @__PURE__ */ jsx(RefreshCw, { className: cn("size-3.5", transcript?.status === "loading" && "animate-spin") })
169
+ })
170
+ ]
171
+ }), !parentSessionId ? /* @__PURE__ */ jsx("p", {
172
+ className: "rounded-md border border-dashed border-border/70 px-3 py-3 text-[11px] leading-4 text-foreground/45",
173
+ children: "This subagent thread is unavailable until the parent session is active."
174
+ }) : transcript?.status === "loading" ? /* @__PURE__ */ jsx("div", {
175
+ className: "flex min-h-32 items-center justify-center rounded-md border border-dashed border-border/70 text-[11px] text-foreground/45",
176
+ children: "Loading subagent thread\u2026"
177
+ }) : transcript?.status === "error" ? /* @__PURE__ */ jsxs("div", {
178
+ role: "alert",
179
+ className: "flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[11px] leading-4 text-destructive",
180
+ children: [/* @__PURE__ */ jsx(CircleAlert, { className: "mt-0.5 size-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", { children: transcript?.error?.message ?? "Unable to load this subagent thread." })]
181
+ }) : turns.length === 0 ? /* @__PURE__ */ jsx("p", {
182
+ className: "rounded-md border border-dashed border-border/70 px-3 py-3 text-[11px] leading-4 text-foreground/45",
183
+ children: "This subagent thread has no messages yet."
184
+ }) : /* @__PURE__ */ jsx("div", {
185
+ className: "h-96 min-h-64 max-h-[calc(100svh-18rem)] rounded-md border border-border/60 bg-background",
186
+ children: /* @__PURE__ */ jsx(MessageScroller, {
187
+ label: `Transcript for ${child.label}`,
188
+ followOutput: false,
189
+ smooth: false,
190
+ contentClassName: "flex flex-col gap-4 px-2.5 py-3",
191
+ children: turns.map((turn, index) => {
192
+ const isLast = index === turns.length - 1;
193
+ return /* @__PURE__ */ jsx(SubagentTurnView, {
194
+ turn,
195
+ isLast,
196
+ isStreaming: isLast && childStatus === "streaming",
197
+ artifacts: isLast ? artifacts : [],
198
+ presentation: isLast ? transcript?.presentation : void 0
199
+ }, turn.user?.id ?? `subagent-turn-${index}`);
200
+ })
201
+ })
202
+ })]
203
+ });
204
+ }
205
+ function SubagentsPanelContent({ agents, loadSession, parentSessionId, tree }) {
206
+ const ordered = useMemo(() => orderedRlmChildren(agents, tree), [agents, tree]);
207
+ const [selectedAgentId, setSelectedAgentId] = useState(null);
208
+ const [transcripts, setTranscripts] = useState({});
209
+ const requestVersions = useRef(/* @__PURE__ */ new Map());
210
+ const selectedAgent = ordered.find((agent) => agent.id === selectedAgentId) ?? ordered[0];
211
+ useEffect(() => {
212
+ if (selectedAgentId && ordered.some((agent) => agent.id === selectedAgentId)) return;
213
+ setSelectedAgentId(ordered[0]?.id ?? null);
214
+ }, [ordered, selectedAgentId]);
215
+ const loadTranscript = useCallback(async (agent, force = false) => {
216
+ if (!parentSessionId) return;
217
+ const requestKey = `${parentSessionId}:${agent.id}:${agent.status}:${agent.timestamp}`;
218
+ const current = transcripts[agent.id];
219
+ if (!force && current?.requestKey === requestKey) return;
220
+ const version = (requestVersions.current.get(agent.id) ?? 0) + 1;
221
+ requestVersions.current.set(agent.id, version);
222
+ setTranscripts((previous) => ({
223
+ ...previous,
224
+ [agent.id]: {
225
+ requestKey,
226
+ status: "loading",
227
+ messages: []
228
+ }
229
+ }));
230
+ try {
231
+ const response = await loadSession(parentSessionId, agent.id);
232
+ if (requestVersions.current.get(agent.id) !== version) return;
233
+ setTranscripts((previous) => ({
234
+ ...previous,
235
+ [agent.id]: {
236
+ requestKey,
237
+ status: "ready",
238
+ messages: response.messages,
239
+ presentation: response.presentation
240
+ }
241
+ }));
242
+ } catch (error) {
243
+ if (requestVersions.current.get(agent.id) !== version) return;
244
+ setTranscripts((previous) => ({
245
+ ...previous,
246
+ [agent.id]: {
247
+ requestKey,
248
+ status: "error",
249
+ messages: [],
250
+ error: error instanceof Error ? error : new Error(String(error))
251
+ }
252
+ }));
253
+ }
254
+ }, [
255
+ loadSession,
256
+ parentSessionId,
257
+ transcripts
258
+ ]);
259
+ useEffect(() => {
260
+ if (selectedAgent) loadTranscript(selectedAgent);
261
+ }, [
262
+ loadTranscript,
263
+ selectedAgent?.id,
264
+ selectedAgent?.status,
265
+ selectedAgent?.timestamp
266
+ ]);
267
+ if (ordered.length === 0) return /* @__PURE__ */ jsx("section", {
268
+ "aria-label": "Subagents",
269
+ className: "flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-[12px] leading-5 text-foreground/45",
270
+ children: "Subagent threads will appear here when Prime delegates work."
271
+ });
272
+ return /* @__PURE__ */ jsxs("section", {
273
+ "aria-label": "Subagents",
274
+ className: "space-y-2 pb-1",
275
+ children: [
276
+ /* @__PURE__ */ jsxs("div", {
277
+ className: "flex min-w-0 items-center gap-2 rounded-sm bg-foreground/5 px-2 py-1.5",
278
+ children: [
279
+ /* @__PURE__ */ jsx(Bot, { className: "size-3.5 shrink-0 text-foreground/45" }),
280
+ /* @__PURE__ */ jsx("span", {
281
+ className: "min-w-0 flex-1 truncate text-label font-medium text-foreground/70",
282
+ children: "Invoked subagents"
283
+ }),
284
+ /* @__PURE__ */ jsx("span", {
285
+ className: "shrink-0 text-[10px] text-foreground/40",
286
+ children: ordered.length
287
+ })
288
+ ]
289
+ }),
290
+ /* @__PURE__ */ jsx("div", {
291
+ className: "space-y-0.5",
292
+ "data-testid": "subagent-thread-list",
293
+ children: ordered.map((agent) => {
294
+ const selected = agent.id === selectedAgent?.id;
295
+ return /* @__PURE__ */ jsxs(Button, {
296
+ type: "button",
297
+ variant: "ghost",
298
+ size: "sm",
299
+ "aria-pressed": selected,
300
+ className: cn("flex w-full min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", selected && "bg-foreground/8"),
301
+ style: { paddingLeft: `${8 + Math.max(0, agent.depth ?? 0) * 12}px` },
302
+ onClick: () => setSelectedAgentId(agent.id),
303
+ children: [
304
+ /* @__PURE__ */ jsx("span", {
305
+ className: "shrink-0",
306
+ children: rlmStatusIcon(agent.status)
307
+ }),
308
+ /* @__PURE__ */ jsx("span", {
309
+ className: "min-w-0 flex-1 truncate text-xs text-foreground/80",
310
+ children: agent.label
311
+ }),
312
+ /* @__PURE__ */ jsx(ChevronRight, { className: "size-3 shrink-0 text-foreground/30" }),
313
+ /* @__PURE__ */ jsx("span", {
314
+ className: "shrink-0 text-[10px] capitalize text-foreground/45",
315
+ children: agent.status
316
+ })
317
+ ]
318
+ }, agent.id);
319
+ })
320
+ }),
321
+ selectedAgent ? /* @__PURE__ */ jsx(ChildTranscript, {
322
+ child: selectedAgent,
323
+ parentSessionId,
324
+ transcript: transcripts[selectedAgent.id],
325
+ onRefresh: () => void loadTranscript(selectedAgent, true)
326
+ }) : null
327
+ ]
328
+ });
329
+ }
330
+ export {
331
+ SubagentsPanelContent
332
+ };
@@ -1,6 +1,3 @@
1
- import {
2
- HardDrive
3
- } from "./chunk-HUX64PWB.js";
4
1
  import {
5
2
  File,
6
3
  FolderOpen,
@@ -11,43 +8,60 @@ import {
11
8
  readStoredWidth,
12
9
  startHorizontalResize,
13
10
  storeStoredWidth
14
- } from "./chunk-MK3P3OBZ.js";
11
+ } from "./chunk-FVWDJNXR.js";
12
+ import "./chunk-QK4CHLVV.js";
13
+ import {
14
+ isPathWithinScope
15
+ } from "./chunk-P66QQWUM.js";
16
+ import {
17
+ Folder
18
+ } from "./chunk-OLG5DQ7V.js";
19
+ import {
20
+ HardDrive
21
+ } from "./chunk-HUX64PWB.js";
15
22
  import {
16
23
  AnimatePresence,
17
24
  EASE_OUT,
18
25
  SPRING_LAYOUT,
19
26
  SPRING_SWAP,
20
- isPathWithinScope,
21
27
  motion,
22
28
  useReducedMotion
23
- } from "./chunk-XXNFEXDU.js";
24
- import {
25
- Folder
26
- } from "./chunk-OLG5DQ7V.js";
29
+ } from "./chunk-QJBEWT4E.js";
30
+ import "./chunk-FAGDMGLK.js";
27
31
  import {
28
32
  ChevronRight
29
33
  } from "./chunk-7QCDOBZ3.js";
30
34
  import {
31
35
  Markdown
32
- } from "./chunk-KVHPE5XH.js";
36
+ } from "./chunk-MDYA4NXK.js";
33
37
  import {
38
+ ResourceChipSection,
39
+ ResourceNotice,
34
40
  WorkspacePreviewSkeleton,
35
41
  WorkspaceSkeleton
36
- } from "./chunk-KJ4UUAEU.js";
42
+ } from "./chunk-6GMKRR3C.js";
37
43
  import {
38
- ResourceChipSection,
39
- ResourceNotice,
40
44
  findWorkspaceNode
41
- } from "./chunk-I3FDTJFO.js";
45
+ } from "./chunk-46VQY7SG.js";
42
46
  import {
43
47
  CircleAlert,
44
48
  FileText
45
49
  } from "./chunk-7APYEQIO.js";
50
+ import "./chunk-BSFYTSN6.js";
51
+ import "./chunk-EAJTWMK5.js";
52
+ import "./chunk-ZGFQ7HIX.js";
53
+ import "./chunk-BYXBJQAS.js";
54
+ import "./chunk-E26EAQIM.js";
46
55
  import {
47
56
  cn
48
57
  } from "./chunk-DJMHPJBP.js";
58
+ import "./chunk-N5DKNPIC.js";
59
+ import "./chunk-UQVZJSZZ.js";
60
+ import "./chunk-JDCCC7A7.js";
61
+ import "./chunk-L547YHC4.js";
62
+ import "./chunk-MLKGABMK.js";
49
63
 
50
- // web/app/dist/server/assets/workspace-panel-BNAXF57q.js
64
+ // web/app/dist/server/assets/workspace-panel-y54P79_B.js
51
65
  import { Children, Fragment, isValidElement, useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
52
66
  import { jsx, jsxs } from "react/jsx-runtime";
53
67
  function FileTreeFolder(_props) {
@@ -612,7 +626,6 @@ function WorkspacePreview({ emptyDescription, emptyTitle, error, loading, previe
612
626
  })]
613
627
  });
614
628
  }
615
-
616
629
  export {
617
630
  WorkspacePanelContent
618
631
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qredence/fleet",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Fleet Prime: local web interface and launcher for the pinned Prime Agent runtime",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -26,13 +26,21 @@
26
26
  },
27
27
  "files": [
28
28
  "bin",
29
- "dist"
29
+ "dist",
30
+ "CHANGELOG.md",
31
+ "LICENSE",
32
+ "README.md"
30
33
  ],
31
34
  "engines": {
32
35
  "node": ">=22.12.0"
33
36
  },
37
+ "os": [
38
+ "darwin",
39
+ "linux"
40
+ ],
34
41
  "publishConfig": {
35
- "access": "public"
42
+ "access": "public",
43
+ "registry": "https://registry.npmjs.org/"
36
44
  },
37
45
  "dependencies": {
38
46
  "@earendil-works/pi-agent-core": "https://pub-728493de92a943e2a9b2d17b4719f318.r2.dev/releases/v0.8.1/prime-agent-core-0.8.1.tgz",