@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
@@ -2,7 +2,7 @@ import {
2
2
  cn
3
3
  } from "./chunk-DJMHPJBP.js";
4
4
 
5
- // web/app/dist/server/assets/src-CK8KTqpM.js
5
+ // web/app/dist/server/assets/src-URINr_dJ.js
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  function Card({ className, size = "default", ...props }) {
@@ -0,0 +1,35 @@
1
+ import {
2
+ FleetPiToolRenderer
3
+ } from "./chunk-PCJ5EKFE.js";
4
+ import "./chunk-44IVTHDV.js";
5
+ import "./chunk-P66QQWUM.js";
6
+ import "./chunk-DBXYBYBP.js";
7
+ import "./chunk-5WZFFNFY.js";
8
+ import "./chunk-2H6A6Z7F.js";
9
+ import "./chunk-YRWVQ7BW.js";
10
+ import "./chunk-3IKSPTYI.js";
11
+ import "./chunk-PWK2HJIV.js";
12
+ import "./chunk-QJBEWT4E.js";
13
+ import "./chunk-FAGDMGLK.js";
14
+ import "./chunk-6RJYXDSD.js";
15
+ import "./chunk-PKCTG7EW.js";
16
+ import "./chunk-7QCDOBZ3.js";
17
+ import "./chunk-LESNF5O4.js";
18
+ import "./chunk-QLY3L4A2.js";
19
+ import "./chunk-NLIUTTKL.js";
20
+ import "./chunk-XYYNYFFD.js";
21
+ import "./chunk-X2TUFLTP.js";
22
+ import "./chunk-ST5I2PLN.js";
23
+ import "./chunk-7APYEQIO.js";
24
+ import "./chunk-M2FGGPNA.js";
25
+ import "./chunk-G5BCQQ5N.js";
26
+ import "./chunk-BYXBJQAS.js";
27
+ import "./chunk-E26EAQIM.js";
28
+ import "./chunk-DJMHPJBP.js";
29
+ import "./chunk-UQVZJSZZ.js";
30
+ import "./chunk-JDCCC7A7.js";
31
+ import "./chunk-L547YHC4.js";
32
+ import "./chunk-MLKGABMK.js";
33
+ export {
34
+ FleetPiToolRenderer
35
+ };
@@ -4,9 +4,9 @@ import {
4
4
  DialogDescription,
5
5
  DialogHeader,
6
6
  DialogTitle
7
- } from "./chunk-AQWTGP35.js";
8
- import "./chunk-XYYNYFFD.js";
7
+ } from "./chunk-FE4KN6T2.js";
9
8
  import "./chunk-RPROZ2JC.js";
9
+ import "./chunk-XYYNYFFD.js";
10
10
  import "./chunk-X2TUFLTP.js";
11
11
  import "./chunk-E26EAQIM.js";
12
12
  import "./chunk-DJMHPJBP.js";
@@ -5,7 +5,7 @@ import {
5
5
  markdownComponents,
6
6
  markdown_exports,
7
7
  normalizeCodeFenceLanguages
8
- } from "./chunk-KVHPE5XH.js";
8
+ } from "./chunk-MDYA4NXK.js";
9
9
  import "./chunk-BYXBJQAS.js";
10
10
  import "./chunk-DJMHPJBP.js";
11
11
  import "./chunk-N5DKNPIC.js";
@@ -10,7 +10,7 @@ import {
10
10
  fixNumberedListBreaks,
11
11
  markdownComponents,
12
12
  normalizeCodeFenceLanguages
13
- } from "./chunk-KVHPE5XH.js";
13
+ } from "./chunk-MDYA4NXK.js";
14
14
  import "./chunk-BYXBJQAS.js";
15
15
  import "./chunk-DJMHPJBP.js";
16
16
  import {
@@ -21,7 +21,7 @@ import "./chunk-JDCCC7A7.js";
21
21
  import "./chunk-L547YHC4.js";
22
22
  import "./chunk-MLKGABMK.js";
23
23
 
24
- // web/app/dist/server/assets/markdown-code-C_ih1bX1.js
24
+ // web/app/dist/server/assets/markdown-code-BrWukbg3.js
25
25
  import { jsx } from "react/jsx-runtime";
26
26
  var S = createJavaScriptRegexEngine({ forgiving: true });
27
27
  var C = Object.fromEntries(bundledLanguagesInfo.flatMap((e) => {
@@ -2,24 +2,25 @@ import {
2
2
  GenerativeTextRenderer,
3
3
  OpenUIHtmlArtifactView,
4
4
  openui_renderer_exports
5
- } from "./chunk-OADQILSQ.js";
6
- import "./chunk-UBUXV2TW.js";
7
- import "./chunk-KDSISV4P.js";
5
+ } from "./chunk-2U7PWSJX.js";
6
+ import "./chunk-HBZ6YKRB.js";
7
+ import "./chunk-ZEVZFLIY.js";
8
+ import "./chunk-B2F6MLVZ.js";
9
+ import "./chunk-NFRJDPB3.js";
8
10
  import "./chunk-LESNF5O4.js";
9
11
  import "./chunk-52SJQXO4.js";
10
- import "./chunk-C7EKOPZU.js";
12
+ import "./chunk-FBOO3G67.js";
13
+ import "./chunk-DO3TVNGA.js";
14
+ import "./chunk-RJOANOT4.js";
11
15
  import "./chunk-QLY3L4A2.js";
12
- import "./chunk-JD6EWZCU.js";
16
+ import "./chunk-VHCAD46L.js";
13
17
  import "./chunk-NLIUTTKL.js";
14
- import "./chunk-AQWTGP35.js";
15
- import "./chunk-XYYNYFFD.js";
16
- import "./chunk-NGI44XRR.js";
17
- import "./chunk-KAWYGHDN.js";
18
- import "./chunk-RJOANOT4.js";
18
+ import "./chunk-FE4KN6T2.js";
19
19
  import "./chunk-RPROZ2JC.js";
20
+ import "./chunk-XYYNYFFD.js";
20
21
  import "./chunk-X2TUFLTP.js";
21
22
  import "./chunk-ST5I2PLN.js";
22
- import "./chunk-KVHPE5XH.js";
23
+ import "./chunk-MDYA4NXK.js";
23
24
  import "./chunk-BYXBJQAS.js";
24
25
  import "./chunk-E26EAQIM.js";
25
26
  import "./chunk-DJMHPJBP.js";
@@ -0,0 +1,117 @@
1
+ import {
2
+ CodeXml,
3
+ IpythonTool
4
+ } from "./chunk-M2FGGPNA.js";
5
+ import {
6
+ SquareTerminal
7
+ } from "./chunk-G5BCQQ5N.js";
8
+ import "./chunk-BYXBJQAS.js";
9
+ import "./chunk-E26EAQIM.js";
10
+ import "./chunk-DJMHPJBP.js";
11
+ import "./chunk-JDCCC7A7.js";
12
+ import "./chunk-MLKGABMK.js";
13
+
14
+ // web/app/dist/server/assets/repl-panel-BEQrC2ef.js
15
+ import { useEffect, useRef } from "react";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ var REPL_STATUS_DETAILS = {
18
+ running: {
19
+ toolState: "input-streaming",
20
+ label: "Running"
21
+ },
22
+ error: {
23
+ toolState: "output-error",
24
+ label: "Failed"
25
+ },
26
+ cancelled: {
27
+ toolState: "aborted",
28
+ label: "Cancelled"
29
+ },
30
+ success: {
31
+ toolState: "output-available",
32
+ label: "Completed"
33
+ }
34
+ };
35
+ function toolState(status) {
36
+ return REPL_STATUS_DETAILS[status].toolState;
37
+ }
38
+ function ipythonPart(artifact) {
39
+ return {
40
+ type: "tool-IPython",
41
+ toolCallId: artifact.sourceToolCallId ?? artifact.id,
42
+ state: toolState(artifact.status),
43
+ input: artifact.input,
44
+ output: artifact.output
45
+ };
46
+ }
47
+ function statusLabel(status) {
48
+ return REPL_STATUS_DETAILS[status].label;
49
+ }
50
+ function ReplCell({ artifact, index, selected }) {
51
+ const cellRef = useRef(null);
52
+ useEffect(() => {
53
+ if (!selected) return;
54
+ requestAnimationFrame(() => {
55
+ cellRef.current?.focus({ preventScroll: true });
56
+ cellRef.current?.scrollIntoView({ block: "nearest" });
57
+ });
58
+ }, [artifact.id, selected]);
59
+ return /* @__PURE__ */ jsxs("article", {
60
+ ref: cellRef,
61
+ tabIndex: -1,
62
+ className: "overflow-hidden rounded-md border border-border/60 bg-background outline-none focus-visible:ring-2 focus-visible:ring-ring",
63
+ "data-repl-run-id": artifact.id,
64
+ children: [/* @__PURE__ */ jsxs("div", {
65
+ className: "flex min-w-0 items-center gap-2 border-b border-border/50 px-2.5 py-1.5",
66
+ children: [
67
+ /* @__PURE__ */ jsx(CodeXml, { className: "size-3.5 shrink-0 text-foreground/45" }),
68
+ /* @__PURE__ */ jsxs("span", {
69
+ className: "min-w-0 flex-1 truncate text-[11px] font-medium text-foreground/70",
70
+ children: ["Cell ", index + 1]
71
+ }),
72
+ /* @__PURE__ */ jsx("span", {
73
+ className: "shrink-0 text-[10px] text-foreground/40",
74
+ children: statusLabel(artifact.status)
75
+ })
76
+ ]
77
+ }), /* @__PURE__ */ jsx("div", {
78
+ className: "p-2",
79
+ children: /* @__PURE__ */ jsx(IpythonTool, { part: ipythonPart(artifact) })
80
+ })]
81
+ });
82
+ }
83
+ function ReplPanelContent({ artifactRuns = [], selectedArtifactId }) {
84
+ const cells = artifactRuns.flatMap((run) => run.artifacts).filter((artifact) => artifact.kind === "ipython");
85
+ return /* @__PURE__ */ jsxs("section", {
86
+ "aria-label": "REPL runs",
87
+ className: "space-y-2 pb-1",
88
+ children: [/* @__PURE__ */ jsxs("div", {
89
+ className: "flex min-w-0 items-center gap-2 rounded-sm bg-foreground/5 px-2 py-1.5",
90
+ children: [
91
+ /* @__PURE__ */ jsx(SquareTerminal, { className: "size-3.5 shrink-0 text-foreground/45" }),
92
+ /* @__PURE__ */ jsx("span", {
93
+ className: "min-w-0 flex-1 truncate text-label font-medium text-foreground/70",
94
+ children: "IPython cells"
95
+ }),
96
+ /* @__PURE__ */ jsx("span", {
97
+ className: "shrink-0 text-[10px] text-foreground/40",
98
+ children: cells.length > 0 ? cells.length : "none yet"
99
+ })
100
+ ]
101
+ }), cells.length === 0 ? /* @__PURE__ */ jsx("p", {
102
+ className: "px-2 text-[11px] leading-4 text-foreground/45",
103
+ children: "Executed IPython cells and their output will appear here."
104
+ }) : /* @__PURE__ */ jsx("div", {
105
+ className: "space-y-2",
106
+ "data-testid": "repl-run-list",
107
+ children: cells.map((artifact, index) => /* @__PURE__ */ jsx(ReplCell, {
108
+ artifact,
109
+ index,
110
+ selected: artifact.id === selectedArtifactId
111
+ }, artifact.id))
112
+ })]
113
+ });
114
+ }
115
+ export {
116
+ ReplPanelContent
117
+ };
@@ -1,23 +1,23 @@
1
- import {
2
- ResourcesSkeleton
3
- } from "./chunk-KJ4UUAEU.js";
4
1
  import {
5
2
  ResourceChipSection,
6
3
  ResourceNotice,
4
+ ResourcesSkeleton
5
+ } from "./chunk-6GMKRR3C.js";
6
+ import {
7
7
  getResourceGroups
8
- } from "./chunk-I3FDTJFO.js";
8
+ } from "./chunk-46VQY7SG.js";
9
9
  import {
10
10
  CircleAlert
11
11
  } from "./chunk-7APYEQIO.js";
12
- import "./chunk-ZGFQ7HIX.js";
13
12
  import "./chunk-BSFYTSN6.js";
14
13
  import "./chunk-EAJTWMK5.js";
14
+ import "./chunk-ZGFQ7HIX.js";
15
15
  import "./chunk-E26EAQIM.js";
16
16
  import "./chunk-DJMHPJBP.js";
17
17
  import "./chunk-JDCCC7A7.js";
18
18
  import "./chunk-MLKGABMK.js";
19
19
 
20
- // web/app/dist/server/assets/resources-panel-DNCVHTIg.js
20
+ // web/app/dist/server/assets/resources-panel-CwKh4U9f.js
21
21
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
22
  function ResourcesPanelContent({ error, loading, resources, workspace }) {
23
23
  const groups = getResourceGroups(resources, workspace);
@@ -1,6 +1,3 @@
1
- import {
2
- isModelPatternEnabled
3
- } from "./chunk-WTYNN6EV.js";
4
1
  import {
5
2
  ChatModelsDiscoverRequestSchema,
6
3
  ChatProviderOAuthLoginRequestSchema,
@@ -14,10 +11,22 @@ import {
14
11
  QueryClientProvider,
15
12
  domAnimation,
16
13
  isServer
17
- } from "./chunk-4KFMONRT.js";
14
+ } from "./chunk-H64JLONZ.js";
15
+ import {
16
+ redactSessionLabelSecrets
17
+ } from "./chunk-QK4CHLVV.js";
18
+ import {
19
+ DEFAULT_UI_PREFERENCES,
20
+ isModelPatternEnabled,
21
+ readUiPreferences
22
+ } from "./chunk-54II5QXQ.js";
18
23
  import {
19
24
  Toaster
20
25
  } from "./chunk-WK7CQS2N.js";
26
+ import {
27
+ drag,
28
+ layout
29
+ } from "./chunk-FAGDMGLK.js";
21
30
  import "./chunk-PKCTG7EW.js";
22
31
  import {
23
32
  Card,
@@ -26,13 +35,15 @@ import {
26
35
  CardHeader,
27
36
  CardTitle,
28
37
  validateAndNormalizeOpenUIHtmlArtifact
29
- } from "./chunk-NGI44XRR.js";
38
+ } from "./chunk-ZEVZFLIY.js";
30
39
  import {
31
40
  ChatNewRequestSchema,
32
41
  ChatOpenUIArtifactUpsertRequestSchema,
33
42
  ChatPlanPresentationSchema,
34
43
  ChatPlanPresentationUpsertRequestSchema,
35
44
  ChatQuestionAnswerRequestSchema,
45
+ ChatQueueMutationRequestSchema,
46
+ ChatQueueMutationResponseSchema,
36
47
  ChatRequestSchema,
37
48
  ChatSessionMetadataSchema,
38
49
  PrimeAgentSessionPresentationSchema,
@@ -43,7 +54,7 @@ import {
43
54
  SessionIdSchema,
44
55
  UploadedAttachmentSchema,
45
56
  external_exports
46
- } from "./chunk-KAWYGHDN.js";
57
+ } from "./chunk-B2F6MLVZ.js";
47
58
  import {
48
59
  KNOWN_PROVIDERS,
49
60
  OPENAI_CHAT_COMPLETIONS_PROVIDER_ID,
@@ -60,13 +71,6 @@ import {
60
71
  } from "./chunk-RJOANOT4.js";
61
72
  import "./chunk-RPROZ2JC.js";
62
73
  import "./chunk-X2TUFLTP.js";
63
- import {
64
- redactSessionLabelSecrets
65
- } from "./chunk-QK4CHLVV.js";
66
- import {
67
- drag,
68
- layout
69
- } from "./chunk-FAGDMGLK.js";
70
74
  import "./chunk-E26EAQIM.js";
71
75
  import "./chunk-DJMHPJBP.js";
72
76
  import {
@@ -82,8 +86,8 @@ import "./chunk-JDCCC7A7.js";
82
86
  import "./chunk-L547YHC4.js";
83
87
  import "./chunk-MLKGABMK.js";
84
88
 
85
- // web/app/dist/server/assets/router-DDxOMz3K.js
86
- import { useEffect } from "react";
89
+ // web/app/dist/server/assets/router-CEahIUpn.js
90
+ import { useEffect, useLayoutEffect } from "react";
87
91
  import { jsx, jsxs } from "react/jsx-runtime";
88
92
  import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep } from "node:path";
89
93
  import { fileURLToPath } from "node:url";
@@ -116,7 +120,7 @@ function NotFoundPage({ title = "404", description = "The requested page could n
116
120
  })
117
121
  });
118
122
  }
119
- var globals_default = "/assets/globals-BmxtUHFx.css";
123
+ var globals_default = "/assets/globals-CqqQdk2S.css";
120
124
  function makeQueryClient() {
121
125
  return new QueryClient({ defaultOptions: { queries: {
122
126
  staleTime: 6e4,
@@ -162,6 +166,11 @@ var Route$27 = createRootRoute({
162
166
  shellComponent: RootDocument
163
167
  });
164
168
  function RootComponent() {
169
+ useLayoutEffect(() => {
170
+ const preferences = readUiPreferences();
171
+ document.documentElement.dataset.density = preferences.density;
172
+ document.documentElement.classList.toggle("reduce-motion", preferences.motion === "reduced");
173
+ }, []);
165
174
  useEffect(() => {
166
175
  }, []);
167
176
  return /* @__PURE__ */ jsx(MotionRuntime, { children: /* @__PURE__ */ jsx(QueryClientProvider, {
@@ -172,6 +181,7 @@ function RootComponent() {
172
181
  function RootDocument({ children }) {
173
182
  return /* @__PURE__ */ jsxs("html", {
174
183
  lang: "en",
184
+ "data-density": DEFAULT_UI_PREFERENCES.density,
175
185
  children: [/* @__PURE__ */ jsx("head", { children: /* @__PURE__ */ jsx(HeadContent, {}) }), /* @__PURE__ */ jsxs("body", { children: [
176
186
  children,
177
187
  /* @__PURE__ */ jsx(Toaster, {}),
@@ -179,7 +189,7 @@ function RootDocument({ children }) {
179
189
  ] })]
180
190
  });
181
191
  }
182
- var $$splitComponentImporter = () => import("./routes-BX4Tv-6R-FHIZYUWW.js");
192
+ var $$splitComponentImporter = () => import("./routes-BznemByz-F4DJAYIM.js");
183
193
  var Route$26 = createFileRoute("/")({ component: lazyRouteComponent($$splitComponentImporter, "component") });
184
194
  var ManagedAttachmentValidationError = class extends Error {
185
195
  status;
@@ -994,8 +1004,8 @@ var openUIPromptSpec = {
994
1004
  description: "A button that triggers interactive actions or conversational updates."
995
1005
  },
996
1006
  PanelAction: {
997
- signature: 'PanelAction(label: string, panel: "resources" | "workspace" | "artifacts" | "session-insights", relativePath?: any, focus?: boolean)',
998
- description: "A trusted local action that opens Resources, Workspace, Artifacts, or Session insights. relativePath selects a contained workspace-relative path and is valid only for Workspace and Artifacts panels."
1007
+ signature: 'PanelAction(label: string, panel: "resources" | "workspace" | "artifacts" | "repl" | "subagents" | "session-insights", relativePath?: any, focus?: boolean)',
1008
+ description: "A trusted local action that opens Resources, Workspace, Artifacts, REPL, Subagents, or Session insights. relativePath selects a contained workspace-relative path and is valid only for Workspace and Artifacts panels."
999
1009
  },
1000
1010
  Input: {
1001
1011
  signature: 'Input(name: string, value: $binding<string>, placeholder?: string, type?: "text" | "email" | "number" | "password" | "search", disabled?: boolean)',
@@ -1317,6 +1327,8 @@ var openUIPromptSpec = {
1317
1327
  "resources",
1318
1328
  "workspace",
1319
1329
  "artifacts",
1330
+ "repl",
1331
+ "subagents",
1320
1332
  "session-insights"
1321
1333
  ]
1322
1334
  },
@@ -1332,7 +1344,7 @@ var openUIPromptSpec = {
1332
1344
  "focus"
1333
1345
  ],
1334
1346
  additionalProperties: false,
1335
- description: "A trusted local action that opens Resources, Workspace, Artifacts, or Session insights. relativePath selects a contained workspace-relative path and is valid only for Workspace and Artifacts panels."
1347
+ description: "A trusted local action that opens Resources, Workspace, Artifacts, REPL, Subagents, or Session insights. relativePath selects a contained workspace-relative path and is valid only for Workspace and Artifacts panels."
1336
1348
  },
1337
1349
  Input: {
1338
1350
  type: "object",
@@ -4511,6 +4523,31 @@ function isSessionNotResumableError(error) {
4511
4523
  const message = error instanceof Error ? error.message : String(error);
4512
4524
  return SESSION_NOT_RESUMABLE_PATTERNS.some((pattern) => pattern.test(message));
4513
4525
  }
4526
+ function sessionSummaryIdentifiers(summary) {
4527
+ return [
4528
+ summary.id,
4529
+ summary.sessionId,
4530
+ summary.activeSessionId
4531
+ ].flatMap((value) => typeof value === "string" && value.length > 0 ? [value] : []);
4532
+ }
4533
+ function sessionSummaryParentIdentifiers(summary) {
4534
+ return [summary.parentSessionId, summary.parentActiveSessionId].flatMap((value) => typeof value === "string" && value.length > 0 ? [value] : []);
4535
+ }
4536
+ function hasSessionLineage(candidate, rootIdentifiers, sessionsByIdentifier) {
4537
+ const pending = [candidate];
4538
+ const visited = /* @__PURE__ */ new Set();
4539
+ while (pending.length > 0) {
4540
+ const current = pending.pop();
4541
+ if (!current || visited.has(current)) continue;
4542
+ visited.add(current);
4543
+ for (const parentId of sessionSummaryParentIdentifiers(current)) {
4544
+ if (rootIdentifiers.has(parentId)) return true;
4545
+ const parent = sessionsByIdentifier.get(parentId);
4546
+ if (parent && !visited.has(parent)) pending.push(parent);
4547
+ }
4548
+ }
4549
+ return false;
4550
+ }
4514
4551
  var PrimeBridge = class {
4515
4552
  #sessions = /* @__PURE__ */ new Map();
4516
4553
  #listeners = /* @__PURE__ */ new Set();
@@ -4843,6 +4880,40 @@ var PrimeBridge = class {
4843
4880
  async listSessions(cwd) {
4844
4881
  return this.#sessionLister(cwd);
4845
4882
  }
4883
+ /**
4884
+ * Load a completed RLM child without resuming it as a live session.
4885
+ *
4886
+ * Child transcripts can be stored outside the parent's configured session
4887
+ * directory. Authorization is therefore based on both the live parent's
4888
+ * presentation and the daemon's lineage metadata, never on a browser-
4889
+ * supplied filesystem path.
4890
+ */
4891
+ async loadRlmChildTranscript(parentSessionId, childId) {
4892
+ const parent = this.#sessions.get(parentSessionId);
4893
+ if (!parent || !parent.mapperState.presentation.rlmChildren.some((child2) => child2.id === childId)) return;
4894
+ const sessions2 = await this.#sessionLister();
4895
+ const sessionsByIdentifier = /* @__PURE__ */ new Map();
4896
+ for (const session of sessions2) for (const identifier of sessionSummaryIdentifiers(session)) if (!sessionsByIdentifier.has(identifier)) sessionsByIdentifier.set(identifier, session);
4897
+ const rootIdentifiers = /* @__PURE__ */ new Set([parentSessionId]);
4898
+ const rootSummary = sessionsByIdentifier.get(parentSessionId);
4899
+ if (rootSummary) for (const identifier of sessionSummaryIdentifiers(rootSummary)) rootIdentifiers.add(identifier);
4900
+ const child = sessions2.find((candidate) => {
4901
+ return candidate.rlmChildId === childId && typeof candidate.sessionFile === "string" && hasSessionLineage(candidate, rootIdentifiers, sessionsByIdentifier);
4902
+ });
4903
+ if (!child?.sessionFile) return void 0;
4904
+ const sessionManager = await SessionManager.openAsync(child.sessionFile);
4905
+ const sessionId = sessionManager.getSessionId();
4906
+ if (sessionId !== child.sessionId && sessionId !== child.id) return void 0;
4907
+ const agentMessages = sessionManager.buildSessionContext().messages;
4908
+ const messages = toChatMessagesFromAgentMessages(agentMessages, sessionId);
4909
+ const presentation = initialPresentationForSession(agentMessages, void 0, void 0, void 0, void 0, sessionId, await loadManagedPrimePresentation({ sessionPath: child.sessionFile }));
4910
+ return {
4911
+ sessionId,
4912
+ projectId: await getPrimeConfig().projectRegistry.projectIdForSession(sessionId, sessionManager.getCwd()),
4913
+ messages,
4914
+ presentation
4915
+ };
4916
+ }
4846
4917
  async deleteSession(sessionId) {
4847
4918
  let existing = this.#sessions.get(sessionId);
4848
4919
  if (!existing) {
@@ -4956,6 +5027,18 @@ var PrimeBridge = class {
4956
5027
  async followUp(sessionId, text) {
4957
5028
  await this.#requireSession(sessionId).connection.followUp(text);
4958
5029
  }
5030
+ async deleteQueuedMessage(sessionId, lane, index, expectedText) {
5031
+ const session = this.#requireSession(sessionId);
5032
+ const status = await session.connection.mutateQueuedMessage(lane, index, expectedText, { type: "delete" });
5033
+ const queue = await session.connection.getQueue();
5034
+ return {
5035
+ status,
5036
+ queue: {
5037
+ steering: [...queue.steering],
5038
+ followUp: [...queue.followUp]
5039
+ }
5040
+ };
5041
+ }
4959
5042
  async abort(sessionId) {
4960
5043
  const session = this.#requireSession(sessionId);
4961
5044
  this.#dialogs.cancelAll(sessionId, "user-abort");
@@ -33379,6 +33462,13 @@ function handleChatQuestionPost(request) {
33379
33462
  return Response.json({ ok: true });
33380
33463
  });
33381
33464
  }
33465
+ function handleChatQueueMutationPost(request) {
33466
+ return wrapApiHandler(async () => {
33467
+ const body = ChatQueueMutationRequestSchema.parse(await request.json().catch(() => ({})));
33468
+ const result = await getBridge().deleteQueuedMessage(body.sessionId, body.lane, body.index, body.expectedText);
33469
+ return Response.json(ChatQueueMutationResponseSchema.parse(result));
33470
+ });
33471
+ }
33382
33472
  function packageSourceToString(source) {
33383
33473
  if (typeof source === "string") return { name: source };
33384
33474
  return {
@@ -33461,6 +33551,25 @@ function handleChatResumePost(request) {
33461
33551
  function handleChatSessionGet(request) {
33462
33552
  return wrapApiHandler(async () => {
33463
33553
  const url = new URL(request.url);
33554
+ const parentSessionId = url.searchParams.get("parentSessionId");
33555
+ const childId = url.searchParams.get("childId");
33556
+ if (parentSessionId || childId) {
33557
+ if (!parentSessionId || !childId) return Response.json({ message: "GET /api/chat/session requires both ?parentSessionId= and ?childId=" }, { status: 400 });
33558
+ const parsedParentSessionId = SessionIdSchema.safeParse(parentSessionId);
33559
+ const parsedChildId = SessionIdSchema.safeParse(childId);
33560
+ if (!parsedParentSessionId.success || !parsedChildId.success) return Response.json({ message: "Invalid subagent session identifiers" }, { status: 400 });
33561
+ const child = await getBridge().loadRlmChildTranscript(parsedParentSessionId.data, parsedChildId.data);
33562
+ if (!child) return Response.json({ message: "Unknown subagent transcript" }, { status: 404 });
33563
+ return Response.json({
33564
+ session: {
33565
+ sessionId: child.sessionId,
33566
+ projectId: child.projectId
33567
+ },
33568
+ messages: child.messages,
33569
+ planPresentations: [],
33570
+ presentation: child.presentation
33571
+ });
33572
+ }
33464
33573
  const sessionId = url.searchParams.get("sessionId");
33465
33574
  const requestedProjectId = url.searchParams.get("projectId");
33466
33575
  const openUI = url.searchParams.get("openUI") === "true";
@@ -33981,7 +34090,8 @@ var Route$11 = createFileRoute("/api/chat/resume")({ server: { handlers: { POST:
33981
34090
  var Route$10 = createFileRoute("/api/chat/session")({ server: { handlers: {
33982
34091
  GET: ({ request }) => new URL(request.url).searchParams.has("attachmentId") ? handleChatAttachmentGet(request) : handleChatSessionGet(request),
33983
34092
  POST: ({ request }) => handleChatAttachmentsPost(request),
33984
- PUT: ({ request }) => handleChatPlanPresentationPut(request)
34093
+ PUT: ({ request }) => handleChatPlanPresentationPut(request),
34094
+ PATCH: ({ request }) => handleChatQueueMutationPost(request)
33985
34095
  } } });
33986
34096
  var Route$9 = createFileRoute("/api/chat/sessions")({ server: { handlers: {
33987
34097
  DELETE: ({ request }) => handleChatSessionDelete(request),