@qredence/fleet 0.6.6 → 0.7.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.
- package/CHANGELOG.md +12 -0
- package/dist/web/client/assets/{action-swap-roll-Dbquwd1Y.js → action-swap-roll-BfVrBOVd.js} +1 -1
- package/dist/web/client/assets/{alert-dialog-C6Dkg1x6.js → alert-dialog-FCppNafx.js} +1 -1
- package/dist/web/client/assets/{artifacts-panel-8a_tn7Yb.js → artifacts-panel-C69vz-oo.js} +1 -1
- package/dist/web/client/assets/{badge-BjFxrtmB.js → badge-DOGhnsYk.js} +7 -7
- package/dist/web/client/assets/button-BJyg7l5W.js +1 -0
- package/dist/web/client/assets/{chat-command-palette-DhidLnw7.js → chat-command-palette-wyZjTNa8.js} +1 -1
- package/dist/web/client/assets/{chunk-YOKDWASO-C8deEx7Z.js → chunk-YOKDWASO-Dego39cu.js} +4 -4
- package/dist/web/client/assets/{citations-BYiDBo21.js → citations-BhyqbxcZ.js} +1 -1
- package/dist/web/client/assets/{command-Cre9BsOI.js → command-Bo31U-UD.js} +1 -1
- package/dist/web/client/assets/create-project-dialog-SDyXTpl-.js +1 -0
- package/dist/web/client/assets/{dialog-0KDCsqw0.js → dialog-DLIPvl1s.js} +1 -1
- package/dist/web/client/assets/{dist-CZDnnosQ.js → dist-QgsZ1U9l.js} +1 -1
- package/dist/web/client/assets/ease-DKi-MOH5.js +1 -0
- package/dist/web/client/assets/{fork-picker-dialog-BPSqUjKu.js → fork-picker-dialog-BDleMADF.js} +1 -1
- package/dist/web/client/assets/globals-DZbMyHfg.css +2 -0
- package/dist/web/client/assets/{highlighted-body-KPVGNVTW-CZcNaoxi.js → highlighted-body-KPVGNVTW-CSgDVUQp.js} +1 -1
- package/dist/web/client/assets/index-BARp0bjW.js +13 -0
- package/dist/web/client/assets/input-Ce8yLnXY.js +1 -0
- package/dist/web/client/assets/{input-group-Fky3fte_.js → input-group-BZLQiZOA.js} +1 -1
- package/dist/web/client/assets/is-ref-object-BD8OGh9C.js +1 -0
- package/dist/web/client/assets/{layout-constants-CC0ANQOP.js → layout-constants-Bl6XCvhY.js} +1 -1
- package/dist/web/client/assets/{markdown-code-BqFVdovL.js → markdown-code-DfJbKhL9.js} +1 -1
- package/dist/web/client/assets/{markdown-C-Y9gskI.js → markdown-yn-nhRzB.js} +2 -2
- package/dist/web/client/assets/mermaid-HWGCJPDP-BpEVCu9T.js +1 -0
- package/dist/web/client/assets/{message-queue-BUJK6bPQ.js → message-queue-CiptKSb6.js} +1 -1
- package/dist/web/client/assets/{model-selector-list-yOj8BeKr.js → model-selector-list-BHQ-Q8b9.js} +1 -1
- package/dist/web/client/assets/{notify-GSsGEKtR.js → notify-BC0a76VJ.js} +1 -1
- package/dist/web/client/assets/{openui-renderer-xe2-ekvP.js → openui-renderer-DrfHxs1t.js} +3 -3
- package/dist/web/client/assets/{preload-helper-Czpn1I53.js → preload-helper-BZ1Pz5am.js} +1 -1
- package/dist/web/client/assets/{prompt-input-BhVQxoyh.js → prompt-input-IwZOepG7.js} +1 -1
- package/dist/web/client/assets/{provider-label-BW_awXvw.js → provider-label-DNZOLldn.js} +1 -1
- package/dist/web/client/assets/{right-panel-registry-BpfG1iZV.js → right-panel-registry-CF7GLJrk.js} +2 -2
- package/dist/web/client/assets/routes-DCP1DP1g.js +16 -0
- package/dist/web/client/assets/select-COK0Kaq2.js +1 -0
- package/dist/web/client/assets/session-tool-renderer-Yu4G1165.js +1389 -0
- package/dist/web/client/assets/{session-tree-panel-BIEUJ1Zs.js → session-tree-panel-deGRKAhX.js} +1 -1
- package/dist/web/client/assets/settings-dialog-BU1Tw0CQ.js +2 -0
- package/dist/web/client/assets/{subagent-chat-panel-DA1GvHt8.js → subagent-chat-panel-bVnkDkgs.js} +1 -1
- package/dist/web/client/assets/{subagent-transcript-BGctBTbY.js → subagent-transcript-D_L-8PQi.js} +1 -1
- package/dist/web/client/assets/{subagent-utils-HbymlalM.js → subagent-utils-D7sXbLsS.js} +2 -2
- package/dist/web/client/assets/{subagents-panel-BJIdWRcV.js → subagents-panel-i5-12E1U.js} +1 -1
- package/dist/web/client/assets/surface-context-DWplCCcO.js +1 -0
- package/dist/web/client/assets/{switch-DIbInrPR.js → switch-DQETDDJT.js} +1 -1
- package/dist/web/client/assets/toast-BFeqSeaR.js +1 -0
- package/dist/web/client/assets/{tool-result-PSnAt_3f.js → tool-result-D7HtJ_yg.js} +2 -2
- package/dist/web/client/assets/{use-presence-D2YmRKr3.js → use-presence-rcUnm8Z7.js} +1 -1
- package/dist/web/client/assets/use-reduced-motion-BgG7f9xw.js +9 -0
- package/dist/web/client/assets/{workspace-panel-D3CMFw8W.js → workspace-panel-Clbmrdza.js} +1 -1
- package/dist/web/client/assets/{workspace-path-nav-DmxBrMV6.js → workspace-path-nav-eVT0rYvv.js} +2 -2
- package/dist/web/client/bundle-budget.json +5 -5
- package/dist/web/server/{_tanstack-start-manifest_v-MhCuqEzO-S6MEB7L5.js → _tanstack-start-manifest_v-CaT-3S-N-VAOGUHEJ.js} +26 -26
- package/dist/web/server/{artifacts-panel-BVfcZuA2-PB4RCSHV.js → artifacts-panel-BuAqeJzj-6DYYLKUW.js} +10 -10
- package/dist/web/server/{chat-command-palette-DlJDToBH-MVI6V743.js → chat-command-palette-Ca8gXVi2-P6EOQ43G.js} +6 -6
- package/dist/web/server/{chunk-KUBURZOL.js → chunk-35AFSKDX.js} +4 -4
- package/dist/web/server/{chunk-WBPESYPV.js → chunk-COWE2EJ6.js} +3 -3
- package/dist/web/server/{chunk-JT53AAM5.js → chunk-E4YWFQX5.js} +1442 -1063
- package/dist/web/server/{chunk-MM4HQ5EO.js → chunk-FPPKECLB.js} +7 -7
- package/dist/web/server/{chunk-VF3NJAD6.js → chunk-GCDOYNXR.js} +585 -634
- package/dist/web/server/{chunk-RWQWBZNI.js → chunk-ITKXE2Q5.js} +253 -215
- package/dist/web/server/{chunk-4QFOBBX5.js → chunk-J4Y2Z3XM.js} +2 -2
- package/dist/web/server/{chunk-SAIH5YPC.js → chunk-JFAUSHBI.js} +4 -4
- package/dist/web/server/{chunk-RQHQK66C.js → chunk-K4KN3QBT.js} +2 -2
- package/dist/web/server/{chunk-3VMFSSWK.js → chunk-M7BTY55G.js} +2 -2
- package/dist/web/server/{chunk-44MTKAFZ.js → chunk-PHHC52CO.js} +5 -5
- package/dist/web/server/{chunk-MSXGQVHG.js → chunk-UTV66W5H.js} +5 -5
- package/dist/web/server/{chunk-F5DJQ3PQ.js → chunk-WPSI5TBE.js} +1528 -2185
- package/dist/web/server/{create-project-dialog-UPz5_Ysf-FS6BL74M.js → create-project-dialog-DCvdysey-IZUGGDAN.js} +76 -15
- package/dist/web/server/{empty-plugin-adapters-Cqtvkauv-ILKI7W7V.js → empty-plugin-adapters-DOl-E2pL-RKRSN75W.js} +1 -1
- package/dist/web/server/{fork-picker-dialog-CZBpezXS-64KP23PO.js → fork-picker-dialog-QH00XmqX-6YLU5REF.js} +4 -4
- package/dist/web/server/{message-queue-D_Q3coUY-I3EJZXWR.js → message-queue-BzEFQR8k-2W53EW32.js} +4 -4
- package/dist/web/server/{model-selector-list-q6WkkOwQ-OT46QU5P.js → model-selector-list-BjoXmw92-TEKBPB3E.js} +6 -6
- package/dist/web/server/{openui-renderer-BqI6m6VI-HXEIYIYZ.js → openui-renderer-CJ7Q2zZ_-FPXKZPSO.js} +6 -6
- package/dist/web/server/{resources-panel-BKZ0M0RP-CMATPQQP.js → resources-panel-yVB4xF_K-OHFHXVU4.js} +5 -5
- package/dist/web/server/{router-BfuEp_JW-DNQ33L5J.js → router-UgU5vJxm-R33FGTXY.js} +3 -3
- package/dist/web/server/{routes-NdG3DsXJ-QKZT7TKM.js → routes-Cbbo-jh9-ZUPH4SJD.js} +37 -35
- package/dist/web/server/server.js +2410 -1672
- package/dist/web/server/{session-reasoning-panel-Dc-AnjdD-7KAZLD74.js → session-reasoning-panel-C50VbaQ8-4YLMVVY6.js} +5 -5
- package/dist/web/server/{session-tool-renderer-DaR8U5rb-TXWACWT7.js → session-tool-renderer-QcAkYD-V-6RXRKDH6.js} +6 -6
- package/dist/web/server/{session-tree-panel-V3l8WdmE-YBRDLHWU.js → session-tree-panel-CL49XSTK-4ZPK6AIV.js} +6 -6
- package/dist/web/server/{settings-dialog-C8U1VX75-6A2V6HSW.js → settings-dialog-DG9HEZeP-TWDRDGMN.js} +191 -120
- package/dist/web/server/{start-QK6aG02q-EMREW2SB.js → start-DEejK9Uj-FODAOTAO.js} +1 -1
- package/dist/web/server/{subagent-chat-panel-B9CtFTP5-6QDZ4RQY.js → subagent-chat-panel-Cg2CxshI-WWGFHTIF.js} +8 -8
- package/dist/web/server/{subagents-panel-Dw6yP5X4-BMN45GDD.js → subagents-panel-aC3Eo-MR-RNIPLCZQ.js} +9 -9
- package/dist/web/server/{workspace-panel-C246J-eO-2WGJWVE6.js → workspace-panel-DfdFkgHU-6HIOXRBX.js} +5 -5
- package/package.json +2 -2
- package/dist/web/client/assets/button-BrwYi6QP.js +0 -1
- package/dist/web/client/assets/create-project-dialog-DVOaxTzt.js +0 -1
- package/dist/web/client/assets/ease-2UPBQU5v.js +0 -1
- package/dist/web/client/assets/globals-CD6JXJJh.css +0 -2
- package/dist/web/client/assets/index-BEG-7vN-.js +0 -12
- package/dist/web/client/assets/input-tWLSIxES.js +0 -1
- package/dist/web/client/assets/is-ref-object-CEXqIz6L.js +0 -1
- package/dist/web/client/assets/mermaid-HWGCJPDP-CVNXPao6.js +0 -1
- package/dist/web/client/assets/routes-BIp_deev.js +0 -16
- package/dist/web/client/assets/select-Buvrx1fi.js +0 -1
- package/dist/web/client/assets/session-tool-renderer-CNcxpGsk.js +0 -1389
- package/dist/web/client/assets/settings-dialog-DAB6RL4u.js +0 -2
- package/dist/web/client/assets/surface-context-A-BjVzO_.js +0 -1
- package/dist/web/client/assets/toast-CS0pnDlS.js +0 -1
- package/dist/web/client/assets/use-reduced-motion-CaQBb3Qc.js +0 -9
|
@@ -170,7 +170,7 @@ import {
|
|
|
170
170
|
visuallyHidden,
|
|
171
171
|
visuallyHiddenInput,
|
|
172
172
|
writeStoredValue
|
|
173
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-E4YWFQX5.js";
|
|
174
174
|
import {
|
|
175
175
|
CHAT_COLUMN_CLASS,
|
|
176
176
|
CHAT_HEADER_LAYER_CLASS,
|
|
@@ -270,7 +270,7 @@ import {
|
|
|
270
270
|
} from "./chunk-B5Y7XOIJ.js";
|
|
271
271
|
import {
|
|
272
272
|
useNavigate
|
|
273
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-WPSI5TBE.js";
|
|
274
274
|
import {
|
|
275
275
|
__export
|
|
276
276
|
} from "./chunk-CZ7CSFO4.js";
|
|
@@ -447,16 +447,28 @@ function derivePrimeAgentArtifactRuns(messages, presentation, chatStatus) {
|
|
|
447
447
|
// web/app/dist/server/assets/badge-BQThUEv3.js
|
|
448
448
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
449
449
|
|
|
450
|
-
// node_modules/.pnpm/react-error-boundary@6.1.
|
|
451
|
-
import { createContext as
|
|
452
|
-
var
|
|
453
|
-
|
|
450
|
+
// node_modules/.pnpm/react-error-boundary@6.1.6_@types+react@19.3.0_react@19.3.0/node_modules/react-error-boundary/dist/react-error-boundary.js
|
|
451
|
+
import { createContext as l, useMemo as h, createElement as i, Component as y, useContext as p, useState as E, forwardRef as B } from "react";
|
|
452
|
+
var f = l(null);
|
|
453
|
+
function m2({
|
|
454
|
+
children: r,
|
|
455
|
+
didCatch: e,
|
|
456
|
+
error: t,
|
|
457
|
+
resetErrorBoundary: o
|
|
458
|
+
}) {
|
|
459
|
+
const n = h(
|
|
460
|
+
() => ({ didCatch: e, error: t, resetErrorBoundary: o }),
|
|
461
|
+
[e, t, o]
|
|
462
|
+
);
|
|
463
|
+
return i(f.Provider, { value: n }, r);
|
|
464
|
+
}
|
|
465
|
+
var d = {
|
|
454
466
|
didCatch: false,
|
|
455
467
|
error: null
|
|
456
468
|
};
|
|
457
|
-
var
|
|
469
|
+
var C = class extends y {
|
|
458
470
|
constructor(e) {
|
|
459
|
-
super(e), this.resetErrorBoundary = this.resetErrorBoundary.bind(this), this.state =
|
|
471
|
+
super(e), this.resetErrorBoundary = this.resetErrorBoundary.bind(this), this.state = d;
|
|
460
472
|
}
|
|
461
473
|
static getDerivedStateFromError(e) {
|
|
462
474
|
return { didCatch: true, error: e };
|
|
@@ -466,50 +478,48 @@ var m2 = class extends f {
|
|
|
466
478
|
t && (this.props.onReset?.({
|
|
467
479
|
args: e,
|
|
468
480
|
reason: "imperative-api"
|
|
469
|
-
}), this.setState(
|
|
481
|
+
}), this.setState(d));
|
|
470
482
|
}
|
|
471
483
|
componentDidCatch(e, t) {
|
|
472
484
|
this.props.onError?.(e, t);
|
|
473
485
|
}
|
|
474
486
|
componentDidUpdate(e, t) {
|
|
475
|
-
const { didCatch: o } = this.state, { resetKeys:
|
|
476
|
-
o && t.didCatch &&
|
|
477
|
-
next:
|
|
487
|
+
const { didCatch: o } = this.state, { resetKeys: n } = this.props;
|
|
488
|
+
o && t.didCatch && g(e.resetKeys, n) && (this.props.onReset?.({
|
|
489
|
+
next: n,
|
|
478
490
|
prev: e.resetKeys,
|
|
479
491
|
reason: "keys"
|
|
480
|
-
}), this.setState(
|
|
492
|
+
}), this.setState(d));
|
|
481
493
|
}
|
|
482
494
|
render() {
|
|
483
|
-
const { children: e, fallbackRender: t, FallbackComponent: o, fallback:
|
|
484
|
-
let
|
|
485
|
-
if (
|
|
495
|
+
const { children: e, fallbackRender: t, FallbackComponent: o, fallback: n } = this.props, { didCatch: s, error: a } = this.state;
|
|
496
|
+
let c = e;
|
|
497
|
+
if (s) {
|
|
486
498
|
const u = {
|
|
487
499
|
error: a,
|
|
488
500
|
resetErrorBoundary: this.resetErrorBoundary
|
|
489
501
|
};
|
|
490
502
|
if (typeof t == "function")
|
|
491
|
-
|
|
503
|
+
c = t(u);
|
|
492
504
|
else if (o)
|
|
493
|
-
|
|
494
|
-
else if (
|
|
495
|
-
|
|
505
|
+
c = i(o, u);
|
|
506
|
+
else if ("fallback" in this.props)
|
|
507
|
+
c = n;
|
|
496
508
|
else
|
|
497
509
|
throw a;
|
|
498
510
|
}
|
|
499
|
-
return
|
|
500
|
-
|
|
511
|
+
return i(
|
|
512
|
+
m2,
|
|
501
513
|
{
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
resetErrorBoundary: this.resetErrorBoundary
|
|
506
|
-
}
|
|
514
|
+
didCatch: s,
|
|
515
|
+
error: a,
|
|
516
|
+
resetErrorBoundary: this.resetErrorBoundary
|
|
507
517
|
},
|
|
508
|
-
|
|
518
|
+
c
|
|
509
519
|
);
|
|
510
520
|
}
|
|
511
521
|
};
|
|
512
|
-
function
|
|
522
|
+
function g(r = [], e = []) {
|
|
513
523
|
return r.length !== e.length || r.some((t, o) => !Object.is(t, e[o]));
|
|
514
524
|
}
|
|
515
525
|
|
|
@@ -542,7 +552,7 @@ function DefaultFallback({ error: error2, resetErrorBoundary }) {
|
|
|
542
552
|
});
|
|
543
553
|
}
|
|
544
554
|
function UiErrorBoundary({ children, fallback, onReset, resetKeys }) {
|
|
545
|
-
return /* @__PURE__ */ jsx(
|
|
555
|
+
return /* @__PURE__ */ jsx(C, {
|
|
546
556
|
FallbackComponent: fallback ? () => fallback : DefaultFallback,
|
|
547
557
|
onReset,
|
|
548
558
|
resetKeys,
|
|
@@ -584,7 +594,7 @@ function Badge({ className, variant = "default", render, ...props }) {
|
|
|
584
594
|
});
|
|
585
595
|
}
|
|
586
596
|
|
|
587
|
-
// web/app/dist/server/assets/surface-context-
|
|
597
|
+
// web/app/dist/server/assets/surface-context-zH57tA54.js
|
|
588
598
|
import { createContext, useContext } from "react";
|
|
589
599
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
590
600
|
var SURFACE_BG = {
|
|
@@ -901,12 +911,12 @@ function ActionSwapText({ value, children, animation = "blur", className }) {
|
|
|
901
911
|
animate: "animate",
|
|
902
912
|
exit: "exit",
|
|
903
913
|
className: "absolute left-0 top-0 inline-block whitespace-pre",
|
|
904
|
-
children: label.split("").map((char,
|
|
905
|
-
custom:
|
|
914
|
+
children: label.split("").map((char, i2) => /* @__PURE__ */ jsx3(m.span, {
|
|
915
|
+
custom: i2 * CASCADE_STAGGER,
|
|
906
916
|
variants: CASCADE_LETTER_VARIANTS,
|
|
907
917
|
className: "inline-block whitespace-pre",
|
|
908
918
|
children: char
|
|
909
|
-
},
|
|
919
|
+
}, i2))
|
|
910
920
|
}, `cascade-${value}`) : /* @__PURE__ */ jsx3(m.span, {
|
|
911
921
|
variants: TEXT_VARIANTS[coreAnimation],
|
|
912
922
|
initial: reduce ? false : "initial",
|
|
@@ -1142,8 +1152,8 @@ var BasePopupHandle = class {
|
|
|
1142
1152
|
}
|
|
1143
1153
|
let triggerElement;
|
|
1144
1154
|
if (triggerId) {
|
|
1145
|
-
for (let
|
|
1146
|
-
triggerElement = this.attachedStores[
|
|
1155
|
+
for (let i2 = this.attachedStores.length - 1; i2 >= 0 && !triggerElement; i2 -= 1) {
|
|
1156
|
+
triggerElement = this.attachedStores[i2].context.triggerElements.getById(triggerId);
|
|
1147
1157
|
}
|
|
1148
1158
|
triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId);
|
|
1149
1159
|
}
|
|
@@ -1733,7 +1743,7 @@ function isDaytonaNotConnectedError(error2) {
|
|
|
1733
1743
|
return error2.status === 403;
|
|
1734
1744
|
}
|
|
1735
1745
|
|
|
1736
|
-
// web/app/dist/server/assets/routes-
|
|
1746
|
+
// web/app/dist/server/assets/routes-Cbbo-jh9.js
|
|
1737
1747
|
import { Children, Fragment as Fragment7, Suspense as Suspense2, cloneElement, createContext as createContext27, createElement, forwardRef as forwardRef54, isValidElement, lazy as lazy2, memo as memo4, useCallback as useCallback12, useContext as useContext27, useEffect as useEffect8, useEffectEvent, useId as useId2, useLayoutEffect as useLayoutEffect2, useMemo as useMemo22, useReducer, useRef as useRef39, useState as useState23, useSyncExternalStore as useSyncExternalStore3 } from "react";
|
|
1738
1748
|
import { Fragment as Fragment$1, jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1739
1749
|
|
|
@@ -4421,8 +4431,8 @@ function areArraysEqual(array1, array2, itemComparer = Object.is) {
|
|
|
4421
4431
|
if (length !== array2.length) {
|
|
4422
4432
|
return false;
|
|
4423
4433
|
}
|
|
4424
|
-
for (let
|
|
4425
|
-
if (!itemComparer(array1[
|
|
4434
|
+
for (let i2 = 0; i2 < length; i2 += 1) {
|
|
4435
|
+
if (!itemComparer(array1[i2], array2[i2])) {
|
|
4426
4436
|
return false;
|
|
4427
4437
|
}
|
|
4428
4438
|
}
|
|
@@ -5557,8 +5567,8 @@ function CompositeList(props) {
|
|
|
5557
5567
|
});
|
|
5558
5568
|
mutationObserverRef.current = mutationObserver;
|
|
5559
5569
|
const roots = /* @__PURE__ */ new Set();
|
|
5560
|
-
for (let
|
|
5561
|
-
const root = getCommonAncestor(sortedNodes[
|
|
5570
|
+
for (let i2 = 1; i2 < sortedNodes.length; i2 += 1) {
|
|
5571
|
+
const root = getCommonAncestor(sortedNodes[i2 - 1], sortedNodes[i2]);
|
|
5562
5572
|
if (root) {
|
|
5563
5573
|
roots.add(root);
|
|
5564
5574
|
}
|
|
@@ -5674,8 +5684,8 @@ function getCommonAncestor(firstNode, lastNode) {
|
|
|
5674
5684
|
}
|
|
5675
5685
|
function hasMovedNode(entries) {
|
|
5676
5686
|
for (const entry of entries) {
|
|
5677
|
-
for (let
|
|
5678
|
-
if (entry.removedNodes[
|
|
5687
|
+
for (let i2 = 0; i2 < entry.removedNodes.length; i2 += 1) {
|
|
5688
|
+
if (entry.removedNodes[i2].isConnected) {
|
|
5679
5689
|
return true;
|
|
5680
5690
|
}
|
|
5681
5691
|
}
|
|
@@ -6362,9 +6372,9 @@ function useCompositeListItem(params = {}) {
|
|
|
6362
6372
|
return void 0;
|
|
6363
6373
|
}
|
|
6364
6374
|
return subscribeMapChange((map) => {
|
|
6365
|
-
const
|
|
6366
|
-
if (
|
|
6367
|
-
setInternalIndex(
|
|
6375
|
+
const i2 = componentRef.current ? map.get(componentRef.current)?.index : null;
|
|
6376
|
+
if (i2 != null) {
|
|
6377
|
+
setInternalIndex(i2);
|
|
6368
6378
|
}
|
|
6369
6379
|
});
|
|
6370
6380
|
}, [externalIndex, subscribeMapChange]);
|
|
@@ -6810,10 +6820,10 @@ function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHei
|
|
|
6810
6820
|
if (isUp) {
|
|
6811
6821
|
let firstVisibleIndex = 0;
|
|
6812
6822
|
const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX;
|
|
6813
|
-
for (let
|
|
6814
|
-
const item = items[
|
|
6823
|
+
for (let i2 = 0; i2 < items.length; i2 += 1) {
|
|
6824
|
+
const item = items[i2];
|
|
6815
6825
|
if (item && item.offsetTop >= visibleTop) {
|
|
6816
|
-
firstVisibleIndex =
|
|
6826
|
+
firstVisibleIndex = i2;
|
|
6817
6827
|
break;
|
|
6818
6828
|
}
|
|
6819
6829
|
}
|
|
@@ -6823,10 +6833,10 @@ function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHei
|
|
|
6823
6833
|
}
|
|
6824
6834
|
let lastVisibleIndex = items.length - 1;
|
|
6825
6835
|
const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX;
|
|
6826
|
-
for (let
|
|
6827
|
-
const item = items[
|
|
6836
|
+
for (let i2 = 0; i2 < items.length; i2 += 1) {
|
|
6837
|
+
const item = items[i2];
|
|
6828
6838
|
if (item && item.offsetTop + item.offsetHeight > visibleBottom) {
|
|
6829
|
-
lastVisibleIndex = Math.max(0,
|
|
6839
|
+
lastVisibleIndex = Math.max(0, i2 - 1);
|
|
6830
6840
|
break;
|
|
6831
6841
|
}
|
|
6832
6842
|
}
|
|
@@ -6958,7 +6968,7 @@ if (process.env.NODE_ENV !== "production") ListboxSeparator.displayName = "Listb
|
|
|
6958
6968
|
// node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs
|
|
6959
6969
|
var SelectSeparator = ListboxSeparator;
|
|
6960
6970
|
|
|
6961
|
-
// web/app/dist/server/assets/routes-
|
|
6971
|
+
// web/app/dist/server/assets/routes-Cbbo-jh9.js
|
|
6962
6972
|
import { createPortal } from "react-dom";
|
|
6963
6973
|
|
|
6964
6974
|
// node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/alert-dialog/index.parts.mjs
|
|
@@ -10444,7 +10454,7 @@ var TabsList = /* @__PURE__ */ React112.forwardRef(function TabsList2(componentP
|
|
|
10444
10454
|
});
|
|
10445
10455
|
if (process.env.NODE_ENV !== "production") TabsList.displayName = "TabsList";
|
|
10446
10456
|
|
|
10447
|
-
// web/app/dist/server/assets/routes-
|
|
10457
|
+
// web/app/dist/server/assets/routes-Cbbo-jh9.js
|
|
10448
10458
|
function isChatTextPart(part) {
|
|
10449
10459
|
return part.type === "text";
|
|
10450
10460
|
}
|
|
@@ -10489,7 +10499,7 @@ function DialogContent({ className, children, showCloseButton = true, overlayCla
|
|
|
10489
10499
|
render: /* @__PURE__ */ jsx7(Button$1, {
|
|
10490
10500
|
variant: "ghost",
|
|
10491
10501
|
className: "absolute top-2 right-2",
|
|
10492
|
-
size: "icon-
|
|
10502
|
+
size: "icon-compact"
|
|
10493
10503
|
}),
|
|
10494
10504
|
children: [/* @__PURE__ */ jsx7(X, {}), /* @__PURE__ */ jsx7("span", {
|
|
10495
10505
|
className: "sr-only",
|
|
@@ -10846,7 +10856,7 @@ function PromptInput({ value, defaultValue = "", onValueChange, onSubmit, loadin
|
|
|
10846
10856
|
]
|
|
10847
10857
|
});
|
|
10848
10858
|
}
|
|
10849
|
-
var LazyGenerativeTextRenderer = lazy2(() => import("./openui-renderer-
|
|
10859
|
+
var LazyGenerativeTextRenderer = lazy2(() => import("./openui-renderer-CJ7Q2zZ_-FPXKZPSO.js").then((n) => n.n).then(({ GenerativeTextRenderer }) => ({ default: GenerativeTextRenderer })));
|
|
10850
10860
|
function PlainTextFallback({ className, content }) {
|
|
10851
10861
|
return /* @__PURE__ */ jsx7("div", {
|
|
10852
10862
|
className: className ? `${className} whitespace-pre-wrap` : "whitespace-pre-wrap",
|
|
@@ -11792,8 +11802,8 @@ memo4(function AssistantTurn(props) {
|
|
|
11792
11802
|
className: "group/assistant-turn",
|
|
11793
11803
|
children: [/* @__PURE__ */ jsx7("div", {
|
|
11794
11804
|
className: "flex flex-col gap-3",
|
|
11795
|
-
children: assistantMsgs.map((msg,
|
|
11796
|
-
const isLastMsg = isLastTurn &&
|
|
11805
|
+
children: assistantMsgs.map((msg, i2) => {
|
|
11806
|
+
const isLastMsg = isLastTurn && i2 === assistantMsgs.length - 1;
|
|
11797
11807
|
return /* @__PURE__ */ jsx7(AssistantParts, {
|
|
11798
11808
|
msg,
|
|
11799
11809
|
isLast: isLastMsg,
|
|
@@ -11842,17 +11852,17 @@ function buildAssistantElements(parts, opts) {
|
|
|
11842
11852
|
nestedToolsMap.get(parentId).push(part);
|
|
11843
11853
|
nestedToolIds.add(part.toolCallId);
|
|
11844
11854
|
}
|
|
11845
|
-
let
|
|
11846
|
-
while (
|
|
11847
|
-
const part = parts[
|
|
11855
|
+
let i2 = 0;
|
|
11856
|
+
while (i2 < parts.length) {
|
|
11857
|
+
const part = parts[i2];
|
|
11848
11858
|
if (isV5ToolPart(part) && part.type === "tool-TaskOutput") {
|
|
11849
|
-
|
|
11859
|
+
i2++;
|
|
11850
11860
|
continue;
|
|
11851
11861
|
}
|
|
11852
11862
|
if (isTextPart(part)) {
|
|
11853
11863
|
const text2 = part.text;
|
|
11854
11864
|
if (text2 && !hasPlanWritePresentation) textChunks.push(text2);
|
|
11855
|
-
|
|
11865
|
+
i2++;
|
|
11856
11866
|
continue;
|
|
11857
11867
|
}
|
|
11858
11868
|
if (isErrorPart(part)) {
|
|
@@ -11860,21 +11870,21 @@ function buildAssistantElements(parts, opts) {
|
|
|
11860
11870
|
title: part.title,
|
|
11861
11871
|
message: part.message
|
|
11862
11872
|
}, `${messageId}-error-${part.title}-${part.message}`));
|
|
11863
|
-
|
|
11873
|
+
i2++;
|
|
11864
11874
|
continue;
|
|
11865
11875
|
}
|
|
11866
11876
|
if (isPayloadPart(part)) {
|
|
11867
|
-
elems.push(/* @__PURE__ */ jsx7(PayloadPart, { part }, `${messageId}-payload-${
|
|
11868
|
-
|
|
11877
|
+
elems.push(/* @__PURE__ */ jsx7(PayloadPart, { part }, `${messageId}-payload-${i2}`));
|
|
11878
|
+
i2++;
|
|
11869
11879
|
continue;
|
|
11870
11880
|
}
|
|
11871
11881
|
if (isV5ToolPart(part)) {
|
|
11872
11882
|
if (suppressQuestionTool && part.type === "tool-Question") {
|
|
11873
|
-
|
|
11883
|
+
i2++;
|
|
11874
11884
|
continue;
|
|
11875
11885
|
}
|
|
11876
11886
|
if (part.toolCallId && nestedToolIds.has(part.toolCallId)) {
|
|
11877
|
-
|
|
11887
|
+
i2++;
|
|
11878
11888
|
continue;
|
|
11879
11889
|
}
|
|
11880
11890
|
const chatStreamingStatus = isLast && isStreaming ? "streaming" : void 0;
|
|
@@ -11888,10 +11898,10 @@ function buildAssistantElements(parts, opts) {
|
|
|
11888
11898
|
chatStatus: chatStreamingStatus,
|
|
11889
11899
|
toolRenderers
|
|
11890
11900
|
}, getAssistantToolElementKey(messageId, part, occurrence)));
|
|
11891
|
-
|
|
11901
|
+
i2++;
|
|
11892
11902
|
continue;
|
|
11893
11903
|
}
|
|
11894
|
-
|
|
11904
|
+
i2++;
|
|
11895
11905
|
}
|
|
11896
11906
|
const text = textChunks.join("\n\n");
|
|
11897
11907
|
if (text) elems.push(/* @__PURE__ */ jsx7("div", {
|
|
@@ -12256,23 +12266,23 @@ var UserMessage = memo4(function UserMessage2({ message, className, enableImageP
|
|
|
12256
12266
|
for (const att of message.experimental_attachments) if (att.contentType?.startsWith("image/") && att.url) images.push(att.url);
|
|
12257
12267
|
}
|
|
12258
12268
|
if (!text && images.length === 0 && files.length === 0) return null;
|
|
12259
|
-
const lightboxImages = images.map((url,
|
|
12260
|
-
id: `${message.id}-img-${
|
|
12269
|
+
const lightboxImages = images.map((url, i2) => ({
|
|
12270
|
+
id: `${message.id}-img-${i2}`,
|
|
12261
12271
|
url,
|
|
12262
|
-
filename: `image-${
|
|
12272
|
+
filename: `image-${i2 + 1}`
|
|
12263
12273
|
}));
|
|
12264
12274
|
return /* @__PURE__ */ jsxs3("div", {
|
|
12265
12275
|
className: cn("flex flex-col items-end gap-1", className),
|
|
12266
12276
|
children: [
|
|
12267
|
-
images.length > 0 && images.map((url,
|
|
12277
|
+
images.length > 0 && images.map((url, i2) => /* @__PURE__ */ jsx7("div", {
|
|
12268
12278
|
className: cn("max-w-[200px] rounded-chat-message bg-foreground/4 p-1.5", enableImagePreview && "cursor-pointer"),
|
|
12269
|
-
onClick: enableImagePreview ? () => setLightboxIndex(
|
|
12279
|
+
onClick: enableImagePreview ? () => setLightboxIndex(i2) : void 0,
|
|
12270
12280
|
role: enableImagePreview ? "button" : void 0,
|
|
12271
12281
|
tabIndex: enableImagePreview ? 0 : void 0,
|
|
12272
12282
|
onKeyDown: enableImagePreview ? (event) => {
|
|
12273
12283
|
if (event.key === "Enter" || event.key === " ") {
|
|
12274
12284
|
event.preventDefault();
|
|
12275
|
-
setLightboxIndex(
|
|
12285
|
+
setLightboxIndex(i2);
|
|
12276
12286
|
}
|
|
12277
12287
|
} : void 0,
|
|
12278
12288
|
children: /* @__PURE__ */ jsx7("img", {
|
|
@@ -12291,8 +12301,8 @@ var UserMessage = memo4(function UserMessage2({ message, className, enableImageP
|
|
|
12291
12301
|
}),
|
|
12292
12302
|
files.length > 0 && /* @__PURE__ */ jsx7("div", {
|
|
12293
12303
|
className: "flex flex-col items-end gap-2",
|
|
12294
|
-
children: files.map((file,
|
|
12295
|
-
id: `${file.filename}-${
|
|
12304
|
+
children: files.map((file, i2) => /* @__PURE__ */ jsx7(FileAttachment, {
|
|
12305
|
+
id: `${file.filename}-${i2}`,
|
|
12296
12306
|
filename: file.filename,
|
|
12297
12307
|
size: file.size
|
|
12298
12308
|
}, `${file.filename}-${file.size}`))
|
|
@@ -12737,13 +12747,13 @@ function rlmStatusIcon(status) {
|
|
|
12737
12747
|
if (status === "recovering") return /* @__PURE__ */ jsx7(RotateCw, { className: "size-3.5 animate-spin text-amber-500 dark:text-amber-400" });
|
|
12738
12748
|
return /* @__PURE__ */ jsx7(LoaderCircle, { className: "size-3.5 animate-spin text-primary" });
|
|
12739
12749
|
}
|
|
12740
|
-
var LazyArtifactsPanel = lazy2(() => import("./artifacts-panel-
|
|
12741
|
-
var LazyResourcesPanel = lazy2(() => import("./resources-panel-
|
|
12750
|
+
var LazyArtifactsPanel = lazy2(() => import("./artifacts-panel-BuAqeJzj-6DYYLKUW.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
|
|
12751
|
+
var LazyResourcesPanel = lazy2(() => import("./resources-panel-yVB4xF_K-OHFHXVU4.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
|
|
12742
12752
|
var LazySessionInsightsPanel = lazy2(() => import("./session-insights-panel-CWmY-2NA-ZSWW6NIO.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
|
|
12743
12753
|
var LazyReplPanel = lazy2(() => import("./repl-panel-DOyUyuQR-IMYO4FKX.js").then(({ ReplPanelContent }) => ({ default: ReplPanelContent })));
|
|
12744
|
-
var LazySubagentsPanel = lazy2(() => import("./subagents-panel-
|
|
12745
|
-
var LazyWorkspacePanel = lazy2(() => import("./workspace-panel-
|
|
12746
|
-
var LazySessionTreePanel = lazy2(() => import("./session-tree-panel-
|
|
12754
|
+
var LazySubagentsPanel = lazy2(() => import("./subagents-panel-aC3Eo-MR-RNIPLCZQ.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
|
|
12755
|
+
var LazyWorkspacePanel = lazy2(() => import("./workspace-panel-DfdFkgHU-6HIOXRBX.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
|
|
12756
|
+
var LazySessionTreePanel = lazy2(() => import("./session-tree-panel-CL49XSTK-4ZPK6AIV.js").then(({ SessionTreePanel }) => ({ default: SessionTreePanel })));
|
|
12747
12757
|
function PanelFallback() {
|
|
12748
12758
|
return /* @__PURE__ */ jsxs3("div", {
|
|
12749
12759
|
className: "flex min-h-32 flex-col gap-3 p-4",
|
|
@@ -13496,9 +13506,14 @@ function resolveChatApiUrl(path) {
|
|
|
13496
13506
|
if (!isChatRuntimePath(pathname)) return path;
|
|
13497
13507
|
return `${base}${path}`;
|
|
13498
13508
|
}
|
|
13499
|
-
function
|
|
13509
|
+
function useOptionalUser() {
|
|
13510
|
+
return null;
|
|
13511
|
+
}
|
|
13512
|
+
function getChatAuthBearerToken() {
|
|
13500
13513
|
return null;
|
|
13501
13514
|
}
|
|
13515
|
+
async function signOut() {
|
|
13516
|
+
}
|
|
13502
13517
|
var ChatRequestError = class extends Error {
|
|
13503
13518
|
status;
|
|
13504
13519
|
body;
|
|
@@ -13558,7 +13573,7 @@ function chatErrorFromStreamEvent(event) {
|
|
|
13558
13573
|
}
|
|
13559
13574
|
async function withChatRequestHeaders(init) {
|
|
13560
13575
|
const headers = new Headers(init?.headers);
|
|
13561
|
-
const bearer = await getChatAuthBearerToken
|
|
13576
|
+
const bearer = await getChatAuthBearerToken();
|
|
13562
13577
|
if (bearer) headers.set("Authorization", `Bearer ${bearer}`);
|
|
13563
13578
|
return headers;
|
|
13564
13579
|
}
|
|
@@ -13712,7 +13727,7 @@ function ChatWelcome({ disabled, onSelect }) {
|
|
|
13712
13727
|
children: WELCOME_TASKS.map((item) => /* @__PURE__ */ jsx7(Button$1, {
|
|
13713
13728
|
type: "button",
|
|
13714
13729
|
variant: "outline",
|
|
13715
|
-
size: "
|
|
13730
|
+
size: "compact",
|
|
13716
13731
|
disabled: disabled || item.disabled,
|
|
13717
13732
|
onClick: () => onSelect(item),
|
|
13718
13733
|
className: SUGGESTION_ITEM_CLASS,
|
|
@@ -14476,7 +14491,7 @@ function ApprovalCard({ title = "Approval required", description, children, ques
|
|
|
14476
14491
|
className: "mt-4 flex flex-wrap items-center gap-2",
|
|
14477
14492
|
children: [
|
|
14478
14493
|
/* @__PURE__ */ jsx7(Button$1, {
|
|
14479
|
-
size: "
|
|
14494
|
+
size: "compact",
|
|
14480
14495
|
disabled: busy,
|
|
14481
14496
|
onClick: onApprove,
|
|
14482
14497
|
className: "rounded-full",
|
|
@@ -14484,7 +14499,7 @@ function ApprovalCard({ title = "Approval required", description, children, ques
|
|
|
14484
14499
|
}),
|
|
14485
14500
|
onRequestChanges ? /* @__PURE__ */ jsx7(Button$1, {
|
|
14486
14501
|
variant: "secondary",
|
|
14487
|
-
size: "
|
|
14502
|
+
size: "compact",
|
|
14488
14503
|
disabled: busy,
|
|
14489
14504
|
onClick: onRequestChanges,
|
|
14490
14505
|
className: "rounded-full",
|
|
@@ -14492,7 +14507,7 @@ function ApprovalCard({ title = "Approval required", description, children, ques
|
|
|
14492
14507
|
}) : null,
|
|
14493
14508
|
onReject ? /* @__PURE__ */ jsx7(Button$1, {
|
|
14494
14509
|
variant: "ghost",
|
|
14495
|
-
size: "
|
|
14510
|
+
size: "compact",
|
|
14496
14511
|
disabled: busy,
|
|
14497
14512
|
onClick: onReject,
|
|
14498
14513
|
className: "rounded-full text-muted-foreground hover:text-rose-600 dark:hover:text-rose-400",
|
|
@@ -15113,7 +15128,7 @@ function useInputBarState({ models, status, thinkingLevel, onModelChange, onThin
|
|
|
15113
15128
|
value
|
|
15114
15129
|
};
|
|
15115
15130
|
}
|
|
15116
|
-
var LazyModelSelectorList = lazy2(() => import("./model-selector-list-
|
|
15131
|
+
var LazyModelSelectorList = lazy2(() => import("./model-selector-list-BjoXmw92-TEKBPB3E.js").then(({ ModelSelectorList: ModelSelectorList2 }) => ({ default: ModelSelectorList2 })));
|
|
15117
15132
|
function ModelSelectorList(props) {
|
|
15118
15133
|
return /* @__PURE__ */ jsx7(Suspense2, {
|
|
15119
15134
|
fallback: /* @__PURE__ */ jsx7("div", {
|
|
@@ -15224,7 +15239,7 @@ function InputBarContent({ modelKey, models, status, infoDescription, chatMode =
|
|
|
15224
15239
|
}), /* @__PURE__ */ jsx7(Button$1, {
|
|
15225
15240
|
type: "button",
|
|
15226
15241
|
variant: "outline",
|
|
15227
|
-
size: "icon-
|
|
15242
|
+
size: "icon-compact",
|
|
15228
15243
|
"aria-label": `Remove ${image.filename}`,
|
|
15229
15244
|
onClick: () => attachments?.onRemoveImage?.(image.id),
|
|
15230
15245
|
className: cn(HIT_AREA_EXPAND_CLASS, "absolute -end-1 -top-1 size-6 rounded-full bg-background opacity-0 shadow-sm transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100 [@media(hover:none)]:opacity-100"),
|
|
@@ -15675,7 +15690,7 @@ function iconFor(kind) {
|
|
|
15675
15690
|
return kind;
|
|
15676
15691
|
}
|
|
15677
15692
|
}
|
|
15678
|
-
var LazySessionToolRenderer = lazy2(() => import("./session-tool-renderer-
|
|
15693
|
+
var LazySessionToolRenderer = lazy2(() => import("./session-tool-renderer-QcAkYD-V-6RXRKDH6.js").then((n) => n.n).then(({ SessionToolRenderer: SessionToolRenderer2 }) => ({ default: SessionToolRenderer2 })));
|
|
15679
15694
|
function SessionToolRenderer(props) {
|
|
15680
15695
|
return /* @__PURE__ */ jsx7(Suspense2, {
|
|
15681
15696
|
fallback: /* @__PURE__ */ jsx7("div", {
|
|
@@ -15686,7 +15701,7 @@ function SessionToolRenderer(props) {
|
|
|
15686
15701
|
children: /* @__PURE__ */ jsx7(LazySessionToolRenderer, { ...props })
|
|
15687
15702
|
});
|
|
15688
15703
|
}
|
|
15689
|
-
var LazySessionReasoningPanel = lazy2(() => import("./session-reasoning-panel-
|
|
15704
|
+
var LazySessionReasoningPanel = lazy2(() => import("./session-reasoning-panel-C50VbaQ8-4YLMVVY6.js").then(({ SessionReasoningPanel: SessionReasoningPanel2 }) => ({ default: SessionReasoningPanel2 })));
|
|
15690
15705
|
function SessionReasoningPanel(props) {
|
|
15691
15706
|
return /* @__PURE__ */ jsx7(Suspense2, {
|
|
15692
15707
|
fallback: /* @__PURE__ */ jsx7("div", {
|
|
@@ -15722,7 +15737,7 @@ function PromptSuggestions(props) {
|
|
|
15722
15737
|
})
|
|
15723
15738
|
});
|
|
15724
15739
|
}
|
|
15725
|
-
var LazyMessageQueue = lazy2(() => import("./message-queue-
|
|
15740
|
+
var LazyMessageQueue = lazy2(() => import("./message-queue-BzEFQR8k-2W53EW32.js").then(({ MessageQueue: MessageQueue2 }) => ({ default: MessageQueue2 })));
|
|
15726
15741
|
function MessageQueue(props) {
|
|
15727
15742
|
return /* @__PURE__ */ jsx7(Suspense2, {
|
|
15728
15743
|
fallback: null,
|
|
@@ -16180,14 +16195,6 @@ function useChatInputBarProps(composer, activeSessionId) {
|
|
|
16180
16195
|
workspaceReferenceSuggestions
|
|
16181
16196
|
]);
|
|
16182
16197
|
}
|
|
16183
|
-
function useOptionalUser() {
|
|
16184
|
-
return null;
|
|
16185
|
-
}
|
|
16186
|
-
function getChatAuthBearerToken() {
|
|
16187
|
-
return null;
|
|
16188
|
-
}
|
|
16189
|
-
async function signOut() {
|
|
16190
|
-
}
|
|
16191
16198
|
var ProjectResponseSchema = external_exports.object({ project: ProjectSummarySchema });
|
|
16192
16199
|
var chatClient = {
|
|
16193
16200
|
async abortSession(metadata) {
|
|
@@ -17514,8 +17521,8 @@ function usePendingQuestionBar({ messages, answerQuestion }) {
|
|
|
17514
17521
|
}, [messages, answerQuestion]);
|
|
17515
17522
|
}
|
|
17516
17523
|
function findPendingQuestionPart(messages) {
|
|
17517
|
-
for (let
|
|
17518
|
-
const msg = messages[
|
|
17524
|
+
for (let i2 = messages.length - 1; i2 >= 0; i2--) {
|
|
17525
|
+
const msg = messages[i2];
|
|
17519
17526
|
if (msg.role !== "assistant" || !Array.isArray(msg.parts)) continue;
|
|
17520
17527
|
for (let j = msg.parts.length - 1; j >= 0; j--) {
|
|
17521
17528
|
const part = msg.parts[j];
|
|
@@ -17900,8 +17907,8 @@ function flattenForkCandidates(nodes) {
|
|
|
17900
17907
|
return users.length > 0 ? users : all;
|
|
17901
17908
|
}
|
|
17902
17909
|
function lastAssistantCopyText(messages) {
|
|
17903
|
-
for (let
|
|
17904
|
-
const message = messages[
|
|
17910
|
+
for (let i2 = messages.length - 1; i2 >= 0; i2 -= 1) {
|
|
17911
|
+
const message = messages[i2];
|
|
17905
17912
|
if (message?.role !== "assistant" || message.source === "local") continue;
|
|
17906
17913
|
const text = assistantTextFromMessage(message).trim();
|
|
17907
17914
|
if (text) return text;
|
|
@@ -19857,19 +19864,18 @@ function usePiChat(model, options) {
|
|
|
19857
19864
|
}
|
|
19858
19865
|
var RESOURCE_CANVAS_WIDTH_STORAGE_KEY = "fleet-prime:v1:right-panel-width";
|
|
19859
19866
|
var THEME_PREFERENCE_STORAGE_KEY = "fleet-prime:v1:theme-preference";
|
|
19860
|
-
var RESOURCE_CANVAS_MIN_WIDTH = 320;
|
|
19861
19867
|
function getResourceCanvasInitialWidth() {
|
|
19862
|
-
if (typeof window === "undefined") return
|
|
19868
|
+
if (typeof window === "undefined") return 320;
|
|
19863
19869
|
return clampResourceCanvasWidth(Math.floor(window.innerWidth * RESOURCE_CANVAS_DEFAULT_VIEWPORT_RATIO));
|
|
19864
19870
|
}
|
|
19865
19871
|
function getResourceCanvasMaxWidth() {
|
|
19866
|
-
if (typeof window === "undefined") return
|
|
19872
|
+
if (typeof window === "undefined") return 320;
|
|
19867
19873
|
const computedRootFontSizePx = Number.parseFloat(window.getComputedStyle(document.documentElement).fontSize);
|
|
19868
19874
|
const sessionSidebarWidthPx = getResourceCanvasSessionSidebarWidthPx(Number.isFinite(computedRootFontSizePx) && computedRootFontSizePx > 0 ? computedRootFontSizePx : 16);
|
|
19869
|
-
return Math.max(
|
|
19875
|
+
return Math.max(320, window.innerWidth - sessionSidebarWidthPx - 360);
|
|
19870
19876
|
}
|
|
19871
19877
|
function clampResourceCanvasWidth(width) {
|
|
19872
|
-
return Math.min(getResourceCanvasMaxWidth(), Math.max(
|
|
19878
|
+
return Math.min(getResourceCanvasMaxWidth(), Math.max(320, Math.round(width)));
|
|
19873
19879
|
}
|
|
19874
19880
|
function readStoredResourceCanvasWidth() {
|
|
19875
19881
|
return readStoredWidth(RESOURCE_CANVAS_WIDTH_STORAGE_KEY, getResourceCanvasInitialWidth(), clampResourceCanvasWidth);
|
|
@@ -19968,6 +19974,11 @@ function useChatShellState(modelsData, storage) {
|
|
|
19968
19974
|
storeThemePreference(preference);
|
|
19969
19975
|
applyThemePreference(preference);
|
|
19970
19976
|
}, []);
|
|
19977
|
+
const handleResourceCanvasWidthChange = useCallback12((nextWidth) => {
|
|
19978
|
+
const clamped = clampResourceCanvasWidth(nextWidth);
|
|
19979
|
+
setResourceCanvasWidth(clamped);
|
|
19980
|
+
storeResourceCanvasWidth(clamped);
|
|
19981
|
+
}, []);
|
|
19971
19982
|
const handleResourceCanvasResizeStart = useCallback12((event) => {
|
|
19972
19983
|
startHorizontalResize({
|
|
19973
19984
|
event,
|
|
@@ -20027,6 +20038,7 @@ function useChatShellState(modelsData, storage) {
|
|
|
20027
20038
|
return {
|
|
20028
20039
|
commandPaletteOpen,
|
|
20029
20040
|
handleResourceCanvasResizeStart,
|
|
20041
|
+
handleResourceCanvasWidthChange,
|
|
20030
20042
|
handleThemePreferenceChange,
|
|
20031
20043
|
initialSessionMetadata: storedSessionMetadata,
|
|
20032
20044
|
modelKey,
|
|
@@ -20398,7 +20410,7 @@ var AnimatedSidebarTrigger = forwardRef54(function AnimatedSidebarTrigger2({ cla
|
|
|
20398
20410
|
},
|
|
20399
20411
|
type,
|
|
20400
20412
|
variant: "ghost",
|
|
20401
|
-
size: "icon
|
|
20413
|
+
size: "icon",
|
|
20402
20414
|
"aria-label": props["aria-label"] ?? "Toggle sidebar",
|
|
20403
20415
|
"aria-expanded": expanded,
|
|
20404
20416
|
"data-slot": "sidebar-trigger",
|
|
@@ -20417,7 +20429,7 @@ forwardRef54(function AnimatedSidebarClose({ className, onClick, type = "button"
|
|
|
20417
20429
|
ref: forwardedRef,
|
|
20418
20430
|
type,
|
|
20419
20431
|
variant: "ghost",
|
|
20420
|
-
size: "icon
|
|
20432
|
+
size: "icon",
|
|
20421
20433
|
"aria-label": props["aria-label"] ?? "Close sidebar",
|
|
20422
20434
|
onClick: (event) => {
|
|
20423
20435
|
onClick?.(event);
|
|
@@ -20562,7 +20574,7 @@ function ChromePillButton({ active = false, ariaLabel, className, title, ...prop
|
|
|
20562
20574
|
...props,
|
|
20563
20575
|
type: "button",
|
|
20564
20576
|
variant: "ghost",
|
|
20565
|
-
size: "
|
|
20577
|
+
size: "compact",
|
|
20566
20578
|
className: cn(CHROME_PILL_CLASS, active ? CHROME_PILL_ACTIVE_CLASS : CHROME_PILL_INACTIVE_CLASS, className),
|
|
20567
20579
|
"aria-label": ariaLabel,
|
|
20568
20580
|
title: title ?? ariaLabel
|
|
@@ -20758,7 +20770,7 @@ function AgentTabBar({ tabs, value, onValueChange, onClose, onNewSession }) {
|
|
|
20758
20770
|
onClick: () => onValueChange(tab.id),
|
|
20759
20771
|
onKeyDown: (event) => handleKeyDown(event, tab.id),
|
|
20760
20772
|
role: "tab",
|
|
20761
|
-
size: "
|
|
20773
|
+
size: "compact",
|
|
20762
20774
|
tabIndex: active ? 0 : -1,
|
|
20763
20775
|
type: "button",
|
|
20764
20776
|
variant: "ghost",
|
|
@@ -20779,7 +20791,7 @@ function AgentTabBar({ tabs, value, onValueChange, onClose, onNewSession }) {
|
|
|
20779
20791
|
event.stopPropagation();
|
|
20780
20792
|
onClose(tab.id);
|
|
20781
20793
|
},
|
|
20782
|
-
size: "icon-
|
|
20794
|
+
size: "icon-compact",
|
|
20783
20795
|
title: `Close ${tab.label} tab`,
|
|
20784
20796
|
type: "button",
|
|
20785
20797
|
variant: "ghost",
|
|
@@ -20799,7 +20811,7 @@ function AgentTabBar({ tabs, value, onValueChange, onClose, onNewSession }) {
|
|
|
20799
20811
|
event.stopPropagation();
|
|
20800
20812
|
onNewSession();
|
|
20801
20813
|
},
|
|
20802
|
-
size: "icon-
|
|
20814
|
+
size: "icon-compact",
|
|
20803
20815
|
title: "New chat",
|
|
20804
20816
|
type: "button",
|
|
20805
20817
|
variant: "ghost",
|
|
@@ -20862,9 +20874,9 @@ function useProximityHover(containerRef, options = {}) {
|
|
|
20862
20874
|
});
|
|
20863
20875
|
const prev = itemRectsRef.current;
|
|
20864
20876
|
let changed = prev.length !== rects.length;
|
|
20865
|
-
for (let
|
|
20866
|
-
const p2 = prev[
|
|
20867
|
-
const r = rects[
|
|
20877
|
+
for (let i2 = 0; !changed && i2 < rects.length; i2++) {
|
|
20878
|
+
const p2 = prev[i2];
|
|
20879
|
+
const r = rects[i2];
|
|
20868
20880
|
if (p2 === r) continue;
|
|
20869
20881
|
changed = !p2 || !r || p2.top !== r.top || p2.left !== r.left || p2.width !== r.width || p2.height !== r.height;
|
|
20870
20882
|
}
|
|
@@ -21469,7 +21481,7 @@ function MobilePanel({ children, dataTestid, headerActions, icon: Icon, onClose,
|
|
|
21469
21481
|
type: "button",
|
|
21470
21482
|
onClick: handleHeaderClose,
|
|
21471
21483
|
variant: "ghost",
|
|
21472
|
-
size: "icon-
|
|
21484
|
+
size: "icon-compact",
|
|
21473
21485
|
className: `relative after:absolute after:top-1/2 after:left-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2 text-foreground/40 hover:text-foreground/70`,
|
|
21474
21486
|
"aria-label": "Close panel",
|
|
21475
21487
|
title: "Close panel",
|
|
@@ -22366,7 +22378,7 @@ function useChatWorkspaceData() {
|
|
|
22366
22378
|
projectId: activeProjectId
|
|
22367
22379
|
});
|
|
22368
22380
|
const discoverModelsMutation = useDiscoverChatModels();
|
|
22369
|
-
const { commandPaletteOpen, handleResourceCanvasResizeStart, handleThemePreferenceChange, initialSessionMetadata, modelKey, modelSelection, models, openArtifact, openWorkspacePath, openPanelAction, persistSession, reopenRightPanel, resourceCanvasWidth, rightPanel, selectedArtifactId, selectedWorkspacePath, setCommandPaletteOpen, setModelKey, setRightPanel, setSelectedWorkspacePath, setThinkingLevel, themePreference, thinkingLevel } = useChatShellState(modelsData, storage);
|
|
22381
|
+
const { commandPaletteOpen, handleResourceCanvasResizeStart, handleResourceCanvasWidthChange, handleThemePreferenceChange, initialSessionMetadata, modelKey, modelSelection, models, openArtifact, openWorkspacePath, openPanelAction, persistSession, reopenRightPanel, resourceCanvasWidth, rightPanel, selectedArtifactId, selectedWorkspacePath, setCommandPaletteOpen, setModelKey, setRightPanel, setSelectedWorkspacePath, setThinkingLevel, themePreference, thinkingLevel } = useChatShellState(modelsData, storage);
|
|
22370
22382
|
useEffect8(() => {
|
|
22371
22383
|
if (initialSessionMetadata.projectId && initialSessionMetadata.projectId !== activeProjectId) {
|
|
22372
22384
|
setActiveProjectId(initialSessionMetadata.projectId);
|
|
@@ -22734,7 +22746,7 @@ function useChatWorkspaceData() {
|
|
|
22734
22746
|
}, [composerIntentAvailability]);
|
|
22735
22747
|
const setComposerIntentKey = useCallback12(async (apiKey) => {
|
|
22736
22748
|
try {
|
|
22737
|
-
await
|
|
22749
|
+
await fetchJson("/api/chat/intent", {
|
|
22738
22750
|
method: "PUT",
|
|
22739
22751
|
headers: { "Content-Type": "application/json" },
|
|
22740
22752
|
body: JSON.stringify({ apiKey })
|
|
@@ -22911,6 +22923,7 @@ function useChatWorkspaceData() {
|
|
|
22911
22923
|
panels: {
|
|
22912
22924
|
chatPanelData,
|
|
22913
22925
|
handleResourceCanvasResizeStart,
|
|
22926
|
+
handleResourceCanvasWidthChange,
|
|
22914
22927
|
resourceCanvasWidth,
|
|
22915
22928
|
rightPanel,
|
|
22916
22929
|
setRightPanel,
|
|
@@ -22946,9 +22959,9 @@ function ChatApp({ children, className, sidebarWidth = SESSION_SIDEBAR_WIDTH_CSS
|
|
|
22946
22959
|
children
|
|
22947
22960
|
});
|
|
22948
22961
|
}
|
|
22949
|
-
var LazyChatCommandPalette = lazy2(() => import("./chat-command-palette-
|
|
22950
|
-
var LazySettingsDialog = lazy2(() => import("./settings-dialog-
|
|
22951
|
-
var LazyForkPickerDialog = lazy2(() => import("./fork-picker-dialog-
|
|
22962
|
+
var LazyChatCommandPalette = lazy2(() => import("./chat-command-palette-Ca8gXVi2-P6EOQ43G.js").then(({ ChatCommandPalette }) => ({ default: ChatCommandPalette })));
|
|
22963
|
+
var LazySettingsDialog = lazy2(() => import("./settings-dialog-DG9HEZeP-TWDRDGMN.js").then(({ SettingsDialog }) => ({ default: SettingsDialog })));
|
|
22964
|
+
var LazyForkPickerDialog = lazy2(() => import("./fork-picker-dialog-QH00XmqX-6YLU5REF.js").then(({ ForkPickerDialog }) => ({ default: ForkPickerDialog })));
|
|
22952
22965
|
function ChatCommandPaletteOverlay({ chrome, conversation, dialogs, panels, session }) {
|
|
22953
22966
|
return /* @__PURE__ */ jsx7(Fragment$1, { children: dialogs.commandPaletteOpen ? /* @__PURE__ */ jsx7(Suspense2, {
|
|
22954
22967
|
fallback: null,
|
|
@@ -23000,7 +23013,7 @@ function ChatWorkspaceOverlayDialogs({ dialogs }) {
|
|
|
23000
23013
|
}
|
|
23001
23014
|
var layoutStyle = {
|
|
23002
23015
|
"--chat-chrome-top": `52px`,
|
|
23003
|
-
"--chat-header-height": `44px`,
|
|
23016
|
+
"--chat-header-height": `var(--density-header-height, 44px)`,
|
|
23004
23017
|
"--chat-header-top": `0px`
|
|
23005
23018
|
};
|
|
23006
23019
|
function ChatWorkspaceLayout({ children, headerCenter, headerLeft, headerRight, panel }) {
|
|
@@ -23132,13 +23145,15 @@ function usePanelKeybindings({ onCommandPaletteToggle, onClosePanel, rightPanel,
|
|
|
23132
23145
|
setRightPanel
|
|
23133
23146
|
]);
|
|
23134
23147
|
}
|
|
23135
|
-
function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose, onRefresh, onResizeStart, open: open2, headerActions, title, titleIcon: TitleIcon, width }) {
|
|
23148
|
+
function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose, onRefresh, onResizeStart, onWidthChange, open: open2, headerActions, title, titleIcon: TitleIcon, width }) {
|
|
23136
23149
|
const reduceMotion = useReducedMotion();
|
|
23137
23150
|
const panelRef = useRef39(null);
|
|
23138
23151
|
useEffect8(() => {
|
|
23139
23152
|
if (!open2) return;
|
|
23140
23153
|
panelRef.current?.focus({ preventScroll: true });
|
|
23141
23154
|
}, [open2]);
|
|
23155
|
+
const minWidth = 320;
|
|
23156
|
+
const maxWidth = getResourceCanvasMaxWidth();
|
|
23142
23157
|
return /* @__PURE__ */ jsx7(AnimatePresence, { children: open2 && /* @__PURE__ */ jsxs3(m.aside, {
|
|
23143
23158
|
ref: panelRef,
|
|
23144
23159
|
initial: reduceMotion ? false : {
|
|
@@ -23173,14 +23188,36 @@ function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose
|
|
|
23173
23188
|
},
|
|
23174
23189
|
children: [/* @__PURE__ */ jsx7("button", {
|
|
23175
23190
|
type: "button",
|
|
23191
|
+
role: "separator",
|
|
23192
|
+
"aria-orientation": "vertical",
|
|
23176
23193
|
"aria-label": `Resize ${title} panel`,
|
|
23177
|
-
|
|
23194
|
+
"aria-valuenow": Math.round(width),
|
|
23195
|
+
"aria-valuemin": minWidth,
|
|
23196
|
+
"aria-valuemax": maxWidth,
|
|
23197
|
+
tabIndex: 0,
|
|
23198
|
+
className: "absolute top-0 bottom-0 left-0 z-10 w-2 -translate-x-1 cursor-col-resize touch-none bg-transparent transition-colors outline-none hover:bg-foreground/10 focus-visible:bg-foreground/10 focus-visible:ring-1 focus-visible:ring-ring",
|
|
23178
23199
|
"data-testid": "pi-resources-resize-handle",
|
|
23179
|
-
onPointerDown: onResizeStart
|
|
23200
|
+
onPointerDown: onResizeStart,
|
|
23201
|
+
onKeyDown: (event) => {
|
|
23202
|
+
const step = 16;
|
|
23203
|
+
if (event.key === "ArrowLeft") {
|
|
23204
|
+
event.preventDefault();
|
|
23205
|
+
onWidthChange?.(clampResourceCanvasWidth(width + step));
|
|
23206
|
+
} else if (event.key === "ArrowRight") {
|
|
23207
|
+
event.preventDefault();
|
|
23208
|
+
onWidthChange?.(clampResourceCanvasWidth(width - step));
|
|
23209
|
+
} else if (event.key === "Home") {
|
|
23210
|
+
event.preventDefault();
|
|
23211
|
+
onWidthChange?.(minWidth);
|
|
23212
|
+
} else if (event.key === "End") {
|
|
23213
|
+
event.preventDefault();
|
|
23214
|
+
onWidthChange?.(maxWidth);
|
|
23215
|
+
}
|
|
23216
|
+
}
|
|
23180
23217
|
}), /* @__PURE__ */ jsxs3("div", {
|
|
23181
23218
|
className: "flex h-full min-w-0 flex-1 flex-col overflow-hidden",
|
|
23182
23219
|
children: [/* @__PURE__ */ jsxs3("div", {
|
|
23183
|
-
className: "flex h-[var(--chat-header-height,44px)] min-h-[var(--chat-header-height,44px)] min-w-0 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-[var(--density-pad-x)] py-1",
|
|
23220
|
+
className: "flex h-[var(--chat-header-height,var(--density-header-height,44px))] min-h-[var(--chat-header-height,var(--density-header-height,44px))] min-w-0 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-[var(--density-pad-x)] py-1",
|
|
23184
23221
|
children: [/* @__PURE__ */ jsx7("div", {
|
|
23185
23222
|
className: "min-w-0 flex-1",
|
|
23186
23223
|
children: headerLeading ?? /* @__PURE__ */ jsxs3("div", {
|
|
@@ -23196,7 +23233,7 @@ function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose
|
|
|
23196
23233
|
onClick: onRefresh,
|
|
23197
23234
|
disabled: !onRefresh,
|
|
23198
23235
|
variant: "ghost",
|
|
23199
|
-
size: "icon-
|
|
23236
|
+
size: "icon-compact",
|
|
23200
23237
|
className: `relative after:absolute after:inset-x-0 after:-top-1.5 after:-bottom-1.5 text-foreground/40 hover:text-foreground/70 disabled:cursor-not-allowed disabled:opacity-35`,
|
|
23201
23238
|
"aria-label": `Refresh ${title}`,
|
|
23202
23239
|
title: `Refresh ${title}`,
|
|
@@ -23209,7 +23246,7 @@ function ResizableCanvas({ children, dataTestid, headerLeading, loading, onClose
|
|
|
23209
23246
|
type: "button",
|
|
23210
23247
|
onClick: onClose,
|
|
23211
23248
|
variant: "ghost",
|
|
23212
|
-
size: "icon-
|
|
23249
|
+
size: "icon-compact",
|
|
23213
23250
|
className: `relative after:absolute after:inset-x-0 after:-top-1.5 after:-bottom-1.5 text-foreground/40 hover:text-foreground/70`,
|
|
23214
23251
|
"aria-label": "Close panel",
|
|
23215
23252
|
title: "Close panel",
|
|
@@ -23243,7 +23280,7 @@ function getServerDesktopPanelSnapshot() {
|
|
|
23243
23280
|
function useIsDesktopPanel() {
|
|
23244
23281
|
return useSyncExternalStore3(subscribeToDesktopPanel, getDesktopPanelSnapshot, getServerDesktopPanelSnapshot);
|
|
23245
23282
|
}
|
|
23246
|
-
function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCanvasWidth }) {
|
|
23283
|
+
function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCanvasWidth, onResourceCanvasWidthChange }) {
|
|
23247
23284
|
const chat = useChatPanelDataContext();
|
|
23248
23285
|
const workspace = useWorkspaceTreeContext();
|
|
23249
23286
|
const { rightPanel } = chat;
|
|
@@ -23263,6 +23300,7 @@ function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCan
|
|
|
23263
23300
|
onClose,
|
|
23264
23301
|
onRefresh,
|
|
23265
23302
|
onResizeStart: handleResourceCanvasResizeStart,
|
|
23303
|
+
onWidthChange: onResourceCanvasWidthChange,
|
|
23266
23304
|
open: panelOpen,
|
|
23267
23305
|
title: definition?.title ?? "",
|
|
23268
23306
|
titleIcon: definition?.icon ?? Library,
|
|
@@ -23277,129 +23315,189 @@ function RightPanelShell({ handleResourceCanvasResizeStart, onClose, resourceCan
|
|
|
23277
23315
|
children: PanelContent ? /* @__PURE__ */ jsx7(PanelContent, {}) : null
|
|
23278
23316
|
}) });
|
|
23279
23317
|
}
|
|
23280
|
-
function
|
|
23281
|
-
const
|
|
23318
|
+
function RenameSessionDialog({ session, onClose, onRenameSession }) {
|
|
23319
|
+
const [renameTitle, setRenameTitle] = useState23(() => sessionLabel(session));
|
|
23320
|
+
return /* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23321
|
+
open: true,
|
|
23322
|
+
onOpenChange: (open2) => !open2 && onClose(),
|
|
23323
|
+
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23324
|
+
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Rename session" }),
|
|
23325
|
+
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "Choose a local display title for this Fleet Prime session." }),
|
|
23326
|
+
/* @__PURE__ */ jsx7(Input$1, {
|
|
23327
|
+
value: renameTitle,
|
|
23328
|
+
onChange: (event) => setRenameTitle(event.target.value),
|
|
23329
|
+
"aria-label": "Session title",
|
|
23330
|
+
autoFocus: true
|
|
23331
|
+
}),
|
|
23332
|
+
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, {
|
|
23333
|
+
onClick: onClose,
|
|
23334
|
+
children: "Cancel"
|
|
23335
|
+
}), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23336
|
+
disabled: !renameTitle.trim(),
|
|
23337
|
+
onClick: () => {
|
|
23338
|
+
if (renameTitle.trim()) {
|
|
23339
|
+
onRenameSession(session.sessionId, renameTitle.trim());
|
|
23340
|
+
onClose();
|
|
23341
|
+
}
|
|
23342
|
+
},
|
|
23343
|
+
children: "Rename"
|
|
23344
|
+
})] })
|
|
23345
|
+
] })
|
|
23346
|
+
});
|
|
23347
|
+
}
|
|
23348
|
+
function RenameProjectDialog({ project, onClose, onRenameProject }) {
|
|
23349
|
+
const [renameProjectName, setRenameProjectName] = useState23(project.name);
|
|
23350
|
+
return /* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23351
|
+
open: true,
|
|
23352
|
+
onOpenChange: (open2) => !open2 && onClose(),
|
|
23353
|
+
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23354
|
+
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Rename project" }),
|
|
23355
|
+
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "This changes the display name only. The registered directory stays the same." }),
|
|
23356
|
+
/* @__PURE__ */ jsx7(Input$1, {
|
|
23357
|
+
value: renameProjectName,
|
|
23358
|
+
onChange: (event) => setRenameProjectName(event.target.value),
|
|
23359
|
+
"aria-label": "Project name",
|
|
23360
|
+
autoFocus: true
|
|
23361
|
+
}),
|
|
23362
|
+
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, {
|
|
23363
|
+
onClick: onClose,
|
|
23364
|
+
children: "Cancel"
|
|
23365
|
+
}), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23366
|
+
disabled: !renameProjectName.trim() || !onRenameProject,
|
|
23367
|
+
onClick: () => {
|
|
23368
|
+
if (renameProjectName.trim()) {
|
|
23369
|
+
onRenameProject?.(project.projectId, renameProjectName.trim());
|
|
23370
|
+
onClose();
|
|
23371
|
+
}
|
|
23372
|
+
},
|
|
23373
|
+
children: "Rename"
|
|
23374
|
+
})] })
|
|
23375
|
+
] })
|
|
23376
|
+
});
|
|
23377
|
+
}
|
|
23378
|
+
function DeleteSessionDialog({ session, onClose, onDeleteSession }) {
|
|
23379
|
+
return /* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23380
|
+
open: true,
|
|
23381
|
+
onOpenChange: (open2) => !open2 && onClose(),
|
|
23382
|
+
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23383
|
+
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Delete session?" }),
|
|
23384
|
+
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "This removes the Fleet Prime session and its managed session artifacts. This cannot be undone." }),
|
|
23385
|
+
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, {
|
|
23386
|
+
onClick: onClose,
|
|
23387
|
+
children: "Cancel"
|
|
23388
|
+
}), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23389
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
23390
|
+
onClick: () => {
|
|
23391
|
+
onDeleteSession(session.sessionId);
|
|
23392
|
+
onClose();
|
|
23393
|
+
},
|
|
23394
|
+
children: "Delete"
|
|
23395
|
+
})] })
|
|
23396
|
+
] })
|
|
23397
|
+
});
|
|
23398
|
+
}
|
|
23399
|
+
function UnregisterProjectDialog({ project, onClose, onUnregisterProject }) {
|
|
23400
|
+
return /* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23401
|
+
open: true,
|
|
23402
|
+
onOpenChange: (open2) => !open2 && onClose(),
|
|
23403
|
+
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23404
|
+
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Unregister project?" }),
|
|
23405
|
+
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "The directory and its sessions remain intact. Existing sessions will move to Unassigned until the directory is registered again." }),
|
|
23406
|
+
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, {
|
|
23407
|
+
onClick: onClose,
|
|
23408
|
+
children: "Cancel"
|
|
23409
|
+
}), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23410
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
23411
|
+
onClick: () => {
|
|
23412
|
+
onUnregisterProject?.(project.projectId);
|
|
23413
|
+
onClose();
|
|
23414
|
+
},
|
|
23415
|
+
children: "Unregister"
|
|
23416
|
+
})] })
|
|
23417
|
+
] })
|
|
23418
|
+
});
|
|
23419
|
+
}
|
|
23420
|
+
function ForkSessionDialog({ session, projects, onClose, onForkSessionIntoProject }) {
|
|
23421
|
+
const initialProjectId = projects.find((project) => project.projectId !== session.projectId)?.projectId;
|
|
23422
|
+
const [forkProjectId, setForkProjectId] = useState23(initialProjectId);
|
|
23423
|
+
const forkProjectOptions = useMemo22(() => projects.flatMap((project) => project.projectId === session.projectId ? [] : [{
|
|
23282
23424
|
value: project.projectId,
|
|
23283
23425
|
label: `${project.name} \u2014 ${project.pathLabel}`,
|
|
23284
23426
|
icon: Folder
|
|
23285
|
-
}]), [
|
|
23286
|
-
return /* @__PURE__ */
|
|
23287
|
-
|
|
23288
|
-
|
|
23289
|
-
|
|
23290
|
-
|
|
23291
|
-
|
|
23292
|
-
/* @__PURE__ */ jsx7(
|
|
23293
|
-
/* @__PURE__ */ jsx7(
|
|
23294
|
-
|
|
23295
|
-
|
|
23296
|
-
|
|
23297
|
-
|
|
23298
|
-
|
|
23299
|
-
|
|
23300
|
-
|
|
23301
|
-
|
|
23302
|
-
if (renameTarget && renameTitle.trim()) {
|
|
23303
|
-
onRenameSession(renameTarget.sessionId, renameTitle.trim());
|
|
23304
|
-
setRenameTarget(null);
|
|
23305
|
-
}
|
|
23306
|
-
},
|
|
23307
|
-
children: "Rename"
|
|
23308
|
-
})] })
|
|
23309
|
-
] })
|
|
23310
|
-
}),
|
|
23311
|
-
/* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23312
|
-
open: renameProjectTarget !== null,
|
|
23313
|
-
onOpenChange: (open2) => !open2 && setRenameProjectTarget(null),
|
|
23314
|
-
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23315
|
-
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Rename project" }),
|
|
23316
|
-
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "This changes the display name only. The registered directory stays the same." }),
|
|
23317
|
-
/* @__PURE__ */ jsx7(Input$1, {
|
|
23318
|
-
value: renameProjectName,
|
|
23319
|
-
onChange: (event) => setRenameProjectName(event.target.value),
|
|
23320
|
-
"aria-label": "Project name",
|
|
23321
|
-
autoFocus: true
|
|
23427
|
+
}]), [session.projectId, projects]);
|
|
23428
|
+
return /* @__PURE__ */ jsx7(Dialog$1, {
|
|
23429
|
+
open: true,
|
|
23430
|
+
onOpenChange: (open2) => !open2 && onClose(),
|
|
23431
|
+
children: /* @__PURE__ */ jsxs3(DialogContent, {
|
|
23432
|
+
className: "sm:max-w-md",
|
|
23433
|
+
children: [
|
|
23434
|
+
/* @__PURE__ */ jsxs3(DialogHeader, { children: [/* @__PURE__ */ jsx7(DialogTitle3, { children: "Fork session into project" }), /* @__PURE__ */ jsx7(DialogDescription3, { children: "Create a new Fleet Prime session in another registered project." })] }),
|
|
23435
|
+
/* @__PURE__ */ jsx7("div", {
|
|
23436
|
+
className: "py-2",
|
|
23437
|
+
children: /* @__PURE__ */ jsx7(Select$1, {
|
|
23438
|
+
value: forkProjectId ?? null,
|
|
23439
|
+
onValueChange: (value) => setForkProjectId(value),
|
|
23440
|
+
options: forkProjectOptions,
|
|
23441
|
+
placeholder: "Select a project\u2026",
|
|
23442
|
+
"aria-label": "Target project"
|
|
23443
|
+
})
|
|
23322
23444
|
}),
|
|
23323
|
-
/* @__PURE__ */ jsxs3(
|
|
23324
|
-
|
|
23325
|
-
|
|
23326
|
-
|
|
23327
|
-
|
|
23328
|
-
|
|
23329
|
-
|
|
23330
|
-
|
|
23331
|
-
children: "Rename"
|
|
23332
|
-
})] })
|
|
23333
|
-
] })
|
|
23334
|
-
}),
|
|
23335
|
-
/* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23336
|
-
open: deleteTarget !== null,
|
|
23337
|
-
onOpenChange: (open2) => !open2 && setDeleteTarget(null),
|
|
23338
|
-
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23339
|
-
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Delete session?" }),
|
|
23340
|
-
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "This removes the Fleet Prime session and its managed session artifacts. This cannot be undone." }),
|
|
23341
|
-
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23342
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
23343
|
-
onClick: () => {
|
|
23344
|
-
if (deleteTarget) onDeleteSession(deleteTarget.sessionId);
|
|
23345
|
-
setDeleteTarget(null);
|
|
23346
|
-
},
|
|
23347
|
-
children: "Delete"
|
|
23348
|
-
})] })
|
|
23349
|
-
] })
|
|
23350
|
-
}),
|
|
23351
|
-
/* @__PURE__ */ jsx7(AlertDialog$1, {
|
|
23352
|
-
open: unregisterTarget !== null,
|
|
23353
|
-
onOpenChange: (open2) => !open2 && setUnregisterTarget(null),
|
|
23354
|
-
children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
|
|
23355
|
-
/* @__PURE__ */ jsx7(AlertDialogTitle, { children: "Unregister project?" }),
|
|
23356
|
-
/* @__PURE__ */ jsx7(AlertDialogDescription, { children: "The directory and its sessions remain intact. Existing sessions will move to Unassigned until the directory is registered again." }),
|
|
23357
|
-
/* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [/* @__PURE__ */ jsx7(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx7(AlertDialogAction, {
|
|
23358
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
23445
|
+
/* @__PURE__ */ jsxs3(DialogFooter, { children: [/* @__PURE__ */ jsx7(Button$1, {
|
|
23446
|
+
type: "button",
|
|
23447
|
+
variant: "outline",
|
|
23448
|
+
onClick: onClose,
|
|
23449
|
+
children: "Cancel"
|
|
23450
|
+
}), /* @__PURE__ */ jsx7(Button$1, {
|
|
23451
|
+
type: "button",
|
|
23452
|
+
disabled: !forkProjectId || !onForkSessionIntoProject,
|
|
23359
23453
|
onClick: () => {
|
|
23360
|
-
if (
|
|
23361
|
-
|
|
23454
|
+
if (!forkProjectId) return;
|
|
23455
|
+
onForkSessionIntoProject?.(session.sessionId, forkProjectId);
|
|
23456
|
+
onClose();
|
|
23362
23457
|
},
|
|
23363
|
-
children: "
|
|
23458
|
+
children: "Fork session"
|
|
23364
23459
|
})] })
|
|
23365
|
-
]
|
|
23366
|
-
}),
|
|
23367
|
-
/* @__PURE__ */ jsx7(Dialog$1, {
|
|
23368
|
-
open: forkTarget !== null,
|
|
23369
|
-
onOpenChange: (open2) => !open2 && setForkTarget(null),
|
|
23370
|
-
children: /* @__PURE__ */ jsxs3(DialogContent, {
|
|
23371
|
-
className: "sm:max-w-md",
|
|
23372
|
-
children: [
|
|
23373
|
-
/* @__PURE__ */ jsxs3(DialogHeader, { children: [/* @__PURE__ */ jsx7(DialogTitle3, { children: "Fork session into project" }), /* @__PURE__ */ jsx7(DialogDescription3, { children: "Create a new Fleet Prime session in another registered project." })] }),
|
|
23374
|
-
/* @__PURE__ */ jsx7("div", {
|
|
23375
|
-
className: "py-2",
|
|
23376
|
-
children: /* @__PURE__ */ jsx7(Select$1, {
|
|
23377
|
-
value: forkProjectId ?? null,
|
|
23378
|
-
onValueChange: (value) => setForkProjectId(value),
|
|
23379
|
-
options: forkProjectOptions,
|
|
23380
|
-
placeholder: "Select a project\u2026",
|
|
23381
|
-
"aria-label": "Target project"
|
|
23382
|
-
})
|
|
23383
|
-
}),
|
|
23384
|
-
/* @__PURE__ */ jsxs3(DialogFooter, { children: [/* @__PURE__ */ jsx7(Button$1, {
|
|
23385
|
-
type: "button",
|
|
23386
|
-
variant: "outline",
|
|
23387
|
-
onClick: () => setForkTarget(null),
|
|
23388
|
-
children: "Cancel"
|
|
23389
|
-
}), /* @__PURE__ */ jsx7(Button$1, {
|
|
23390
|
-
type: "button",
|
|
23391
|
-
disabled: !forkTarget || !forkProjectId || !onForkSessionIntoProject,
|
|
23392
|
-
onClick: () => {
|
|
23393
|
-
if (!forkTarget || !forkProjectId) return;
|
|
23394
|
-
onForkSessionIntoProject?.(forkTarget.sessionId, forkProjectId);
|
|
23395
|
-
setForkTarget(null);
|
|
23396
|
-
},
|
|
23397
|
-
children: "Fork session"
|
|
23398
|
-
})] })
|
|
23399
|
-
]
|
|
23400
|
-
})
|
|
23460
|
+
]
|
|
23401
23461
|
})
|
|
23402
|
-
|
|
23462
|
+
});
|
|
23463
|
+
}
|
|
23464
|
+
function SessionSidebarActionDialogs({ activeDialog, onClose, projects, onRenameSession, onDeleteSession, onRenameProject, onUnregisterProject, onForkSessionIntoProject }) {
|
|
23465
|
+
if (!activeDialog) return null;
|
|
23466
|
+
switch (activeDialog.kind) {
|
|
23467
|
+
case "rename-session":
|
|
23468
|
+
return /* @__PURE__ */ jsx7(RenameSessionDialog, {
|
|
23469
|
+
session: activeDialog.session,
|
|
23470
|
+
onClose,
|
|
23471
|
+
onRenameSession
|
|
23472
|
+
});
|
|
23473
|
+
case "rename-project":
|
|
23474
|
+
return /* @__PURE__ */ jsx7(RenameProjectDialog, {
|
|
23475
|
+
project: activeDialog.project,
|
|
23476
|
+
onClose,
|
|
23477
|
+
onRenameProject
|
|
23478
|
+
});
|
|
23479
|
+
case "delete-session":
|
|
23480
|
+
return /* @__PURE__ */ jsx7(DeleteSessionDialog, {
|
|
23481
|
+
session: activeDialog.session,
|
|
23482
|
+
onClose,
|
|
23483
|
+
onDeleteSession
|
|
23484
|
+
});
|
|
23485
|
+
case "unregister-project":
|
|
23486
|
+
return /* @__PURE__ */ jsx7(UnregisterProjectDialog, {
|
|
23487
|
+
project: activeDialog.project,
|
|
23488
|
+
onClose,
|
|
23489
|
+
onUnregisterProject
|
|
23490
|
+
});
|
|
23491
|
+
case "fork-session":
|
|
23492
|
+
return /* @__PURE__ */ jsx7(ForkSessionDialog, {
|
|
23493
|
+
session: activeDialog.session,
|
|
23494
|
+
projects,
|
|
23495
|
+
onClose,
|
|
23496
|
+
onForkSessionIntoProject
|
|
23497
|
+
});
|
|
23498
|
+
case "create-project":
|
|
23499
|
+
return null;
|
|
23500
|
+
}
|
|
23403
23501
|
}
|
|
23404
23502
|
var ROW_REVEAL = {
|
|
23405
23503
|
duration: 0.16,
|
|
@@ -24460,7 +24558,7 @@ function sessionStatusIcon(session) {
|
|
|
24460
24558
|
if (session?.status === "interrupted") return /* @__PURE__ */ jsx7(CircleStop, { className: "size-3.5 text-muted-foreground" });
|
|
24461
24559
|
return null;
|
|
24462
24560
|
}
|
|
24463
|
-
function SessionSidebarProjectList({ projectActionsOpen, setProjectActionsOpen, expandedProjectIds, setExpandedProjectIds,
|
|
24561
|
+
function SessionSidebarProjectList({ projectActionsOpen, setProjectActionsOpen, expandedProjectIds, setExpandedProjectIds, onOpenCreateProject, projects, projectSessions, sidebarItems, activeProjectId, activeSessionId, onNewSession, onNewSessionInProject, onProjectSelect, onRenameSession, onCreateProject, resumeResource, toggleProjectResource, renderMenu }) {
|
|
24464
24562
|
return /* @__PURE__ */ jsx7(AnimatedSidebarContent, {
|
|
24465
24563
|
className: "gap-0 px-2.5 pb-1 pt-2",
|
|
24466
24564
|
children: /* @__PURE__ */ jsxs3(AnimatedSidebarGroup, {
|
|
@@ -24492,7 +24590,7 @@ function SessionSidebarProjectList({ projectActionsOpen, setProjectActionsOpen,
|
|
|
24492
24590
|
type: "button",
|
|
24493
24591
|
onClick: () => {
|
|
24494
24592
|
setProjectActionsOpen(false);
|
|
24495
|
-
|
|
24593
|
+
onOpenCreateProject();
|
|
24496
24594
|
},
|
|
24497
24595
|
className: "flex h-8 w-full items-center gap-2 rounded-md px-2 text-xs outline-none hover:bg-muted focus-visible:bg-muted",
|
|
24498
24596
|
children: [/* @__PURE__ */ jsx7(FolderPlus, {
|
|
@@ -24515,7 +24613,7 @@ function SessionSidebarProjectList({ projectActionsOpen, setProjectActionsOpen,
|
|
|
24515
24613
|
type: "button",
|
|
24516
24614
|
"aria-label": "Add project",
|
|
24517
24615
|
title: "Add project",
|
|
24518
|
-
onClick:
|
|
24616
|
+
onClick: onOpenCreateProject,
|
|
24519
24617
|
className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "inline-flex size-8 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring"),
|
|
24520
24618
|
children: /* @__PURE__ */ jsx7(Plus, {
|
|
24521
24619
|
"aria-hidden": "true",
|
|
@@ -24534,7 +24632,7 @@ function SessionSidebarProjectList({ projectActionsOpen, setProjectActionsOpen,
|
|
|
24534
24632
|
id: "empty-project",
|
|
24535
24633
|
content: /* @__PURE__ */ jsx7(FolderPlus, { className: "size-5 text-muted-foreground" })
|
|
24536
24634
|
}],
|
|
24537
|
-
onClick:
|
|
24635
|
+
onClick: onOpenCreateProject,
|
|
24538
24636
|
ariaLabel: "Add a project",
|
|
24539
24637
|
className: "w-full"
|
|
24540
24638
|
})
|
|
@@ -24611,7 +24709,7 @@ function DiscordIcon({ className, ...props }) {
|
|
|
24611
24709
|
}
|
|
24612
24710
|
function fleetVersion() {
|
|
24613
24711
|
try {
|
|
24614
|
-
return "0.
|
|
24712
|
+
return "0.7.1";
|
|
24615
24713
|
} catch {
|
|
24616
24714
|
return "dev";
|
|
24617
24715
|
}
|
|
@@ -24767,7 +24865,7 @@ function KbdHint({ children }) {
|
|
|
24767
24865
|
children
|
|
24768
24866
|
});
|
|
24769
24867
|
}
|
|
24770
|
-
function SessionSidebarNavigation({ brandMenuOpen, setBrandMenuOpen, searchOpen, setSearchOpen, query, setQuery, projectActionsOpen, setProjectActionsOpen, expandedProjectIds, setExpandedProjectIds,
|
|
24868
|
+
function SessionSidebarNavigation({ brandMenuOpen, setBrandMenuOpen, searchOpen, setSearchOpen, query, setQuery, projectActionsOpen, setProjectActionsOpen, expandedProjectIds, setExpandedProjectIds, onOpenCreateProject, projects, projectSessions, sidebarItems, sortedProjects, projectById, activeProjectId, activeSessionId, onNewSession, onNewSessionInProject, onProjectSelect, onRenameSession, onCreateProject, onOpenSettings, accountMenu, resumeResource, toggleProjectResource, selectSearchResult, renderMenu }) {
|
|
24771
24869
|
const searchThreads = useMemo22(() => sortSessions(projectSessions).map((session) => ({
|
|
24772
24870
|
id: session.sessionId,
|
|
24773
24871
|
title: sessionLabel(session, projectSessions),
|
|
@@ -24812,7 +24910,7 @@ function SessionSidebarNavigation({ brandMenuOpen, setBrandMenuOpen, searchOpen,
|
|
|
24812
24910
|
label: "Add project",
|
|
24813
24911
|
onClick: () => {
|
|
24814
24912
|
setBrandMenuOpen(false);
|
|
24815
|
-
|
|
24913
|
+
onOpenCreateProject();
|
|
24816
24914
|
}
|
|
24817
24915
|
}) : null,
|
|
24818
24916
|
/* @__PURE__ */ jsx7(SidebarMenuItem, {
|
|
@@ -24926,7 +25024,7 @@ function SessionSidebarNavigation({ brandMenuOpen, setBrandMenuOpen, searchOpen,
|
|
|
24926
25024
|
setProjectActionsOpen,
|
|
24927
25025
|
expandedProjectIds,
|
|
24928
25026
|
setExpandedProjectIds,
|
|
24929
|
-
|
|
25027
|
+
onOpenCreateProject,
|
|
24930
25028
|
projects,
|
|
24931
25029
|
projectSessions,
|
|
24932
25030
|
sidebarItems,
|
|
@@ -25002,23 +25100,7 @@ function useSessionSidebarState(activeProjectId) {
|
|
|
25002
25100
|
query: "",
|
|
25003
25101
|
expandedProjectIds: readExpandedProjects(initialActiveProjectId),
|
|
25004
25102
|
revealedProjectIds: /* @__PURE__ */ new Set(),
|
|
25005
|
-
|
|
25006
|
-
renameTitle: "",
|
|
25007
|
-
renameProjectTarget: null,
|
|
25008
|
-
renameProjectName: "",
|
|
25009
|
-
deleteTarget: null,
|
|
25010
|
-
unregisterTarget: null,
|
|
25011
|
-
createOpen: false,
|
|
25012
|
-
createPath: "",
|
|
25013
|
-
createName: "",
|
|
25014
|
-
directoryToken: void 0,
|
|
25015
|
-
directoryBrowser: null,
|
|
25016
|
-
directoryBrowseLoading: false,
|
|
25017
|
-
directoryBrowseError: null,
|
|
25018
|
-
createSubmitting: false,
|
|
25019
|
-
createSubmitError: null,
|
|
25020
|
-
forkTarget: null,
|
|
25021
|
-
forkProjectId: void 0
|
|
25103
|
+
activeDialog: null
|
|
25022
25104
|
}));
|
|
25023
25105
|
const setField = useCallback12(function setSidebarField(key, value) {
|
|
25024
25106
|
dispatch({
|
|
@@ -25044,23 +25126,8 @@ function useSessionSidebarState(activeProjectId) {
|
|
|
25044
25126
|
const setQuery = useCallback12((value) => setField("query", value), [setField]);
|
|
25045
25127
|
const setExpandedProjectIds = useCallback12((value) => typeof value === "function" ? updateField("expandedProjectIds", value) : setField("expandedProjectIds", value), [setField, updateField]);
|
|
25046
25128
|
const setRevealedProjectIds = useCallback12((value) => typeof value === "function" ? updateField("revealedProjectIds", value) : setField("revealedProjectIds", value), [setField, updateField]);
|
|
25047
|
-
const
|
|
25048
|
-
const
|
|
25049
|
-
const setRenameProjectTarget = useCallback12((value) => setField("renameProjectTarget", value), [setField]);
|
|
25050
|
-
const setRenameProjectName = useCallback12((value) => setField("renameProjectName", value), [setField]);
|
|
25051
|
-
const setDeleteTarget = useCallback12((value) => setField("deleteTarget", value), [setField]);
|
|
25052
|
-
const setUnregisterTarget = useCallback12((value) => setField("unregisterTarget", value), [setField]);
|
|
25053
|
-
const setCreateOpen = useCallback12((value) => setField("createOpen", value), [setField]);
|
|
25054
|
-
const setCreatePath = useCallback12((value) => setField("createPath", value), [setField]);
|
|
25055
|
-
const setCreateName = useCallback12((value) => setField("createName", value), [setField]);
|
|
25056
|
-
const setDirectoryToken = useCallback12((value) => setField("directoryToken", value), [setField]);
|
|
25057
|
-
const setDirectoryBrowser = useCallback12((value) => setField("directoryBrowser", value), [setField]);
|
|
25058
|
-
const setDirectoryBrowseLoading = useCallback12((value) => setField("directoryBrowseLoading", value), [setField]);
|
|
25059
|
-
const setDirectoryBrowseError = useCallback12((value) => setField("directoryBrowseError", value), [setField]);
|
|
25060
|
-
const setCreateSubmitting = useCallback12((value) => setField("createSubmitting", value), [setField]);
|
|
25061
|
-
const setCreateSubmitError = useCallback12((value) => setField("createSubmitError", value), [setField]);
|
|
25062
|
-
const setForkTarget = useCallback12((value) => setField("forkTarget", value), [setField]);
|
|
25063
|
-
const setForkProjectId = useCallback12((value) => setField("forkProjectId", value), [setField]);
|
|
25129
|
+
const setActiveDialog = useCallback12((value) => setField("activeDialog", value), [setField]);
|
|
25130
|
+
const closeDialog = useCallback12(() => setField("activeDialog", null), [setField]);
|
|
25064
25131
|
return {
|
|
25065
25132
|
...state,
|
|
25066
25133
|
setBrandMenuOpen,
|
|
@@ -25069,23 +25136,8 @@ function useSessionSidebarState(activeProjectId) {
|
|
|
25069
25136
|
setQuery,
|
|
25070
25137
|
setExpandedProjectIds,
|
|
25071
25138
|
setRevealedProjectIds,
|
|
25072
|
-
|
|
25073
|
-
|
|
25074
|
-
setRenameProjectTarget,
|
|
25075
|
-
setRenameProjectName,
|
|
25076
|
-
setDeleteTarget,
|
|
25077
|
-
setUnregisterTarget,
|
|
25078
|
-
setCreateOpen,
|
|
25079
|
-
setCreatePath,
|
|
25080
|
-
setCreateName,
|
|
25081
|
-
setDirectoryToken,
|
|
25082
|
-
setDirectoryBrowser,
|
|
25083
|
-
setDirectoryBrowseLoading,
|
|
25084
|
-
setDirectoryBrowseError,
|
|
25085
|
-
setCreateSubmitting,
|
|
25086
|
-
setCreateSubmitError,
|
|
25087
|
-
setForkTarget,
|
|
25088
|
-
setForkProjectId
|
|
25139
|
+
setActiveDialog,
|
|
25140
|
+
closeDialog
|
|
25089
25141
|
};
|
|
25090
25142
|
}
|
|
25091
25143
|
var PANEL_ACTIONS = [
|
|
@@ -25113,42 +25165,7 @@ function MenuItem({ icon: Icon, label, destructive = false, onClick }) {
|
|
|
25113
25165
|
children: [/* @__PURE__ */ jsx7(Icon, { className: "size-3.5" }), label]
|
|
25114
25166
|
});
|
|
25115
25167
|
}
|
|
25116
|
-
function useSessionSidebarViewModel({ sessions, projects = EMPTY_PROJECTS, projectSessions = sessions, activeProjectId, activeSessionId, onNewSession, onNewSessionInProject, onProjectSelect, onResumeSession,
|
|
25117
|
-
const createOpenRef = useRef39(false);
|
|
25118
|
-
const loadDirectories = useCallback12(async (input) => {
|
|
25119
|
-
if (!onBrowseDirectories) return false;
|
|
25120
|
-
setDirectoryBrowseLoading(true);
|
|
25121
|
-
setDirectoryBrowseError(null);
|
|
25122
|
-
try {
|
|
25123
|
-
const response = await onBrowseDirectories(input);
|
|
25124
|
-
setDirectoryBrowser(response);
|
|
25125
|
-
setDirectoryToken(response.directoryToken);
|
|
25126
|
-
setCreatePath(response.pathLabel);
|
|
25127
|
-
return true;
|
|
25128
|
-
} catch (error2) {
|
|
25129
|
-
setDirectoryBrowseError(directoryErrorMessage(error2, "Could not browse this directory."));
|
|
25130
|
-
return false;
|
|
25131
|
-
} finally {
|
|
25132
|
-
setDirectoryBrowseLoading(false);
|
|
25133
|
-
}
|
|
25134
|
-
}, [
|
|
25135
|
-
onBrowseDirectories,
|
|
25136
|
-
setCreatePath,
|
|
25137
|
-
setDirectoryBrowseError,
|
|
25138
|
-
setDirectoryBrowseLoading,
|
|
25139
|
-
setDirectoryBrowser,
|
|
25140
|
-
setDirectoryToken
|
|
25141
|
-
]);
|
|
25142
|
-
useEffect8(() => {
|
|
25143
|
-
const opened = createOpen && !createOpenRef.current;
|
|
25144
|
-
createOpenRef.current = createOpen;
|
|
25145
|
-
if (!opened || !onBrowseDirectories) return;
|
|
25146
|
-
loadDirectories({});
|
|
25147
|
-
}, [
|
|
25148
|
-
createOpen,
|
|
25149
|
-
loadDirectories,
|
|
25150
|
-
onBrowseDirectories
|
|
25151
|
-
]);
|
|
25168
|
+
function useSessionSidebarViewModel({ sessions, projects = EMPTY_PROJECTS, projectSessions = sessions, activeProjectId, activeSessionId, onNewSession, onNewSessionInProject, onProjectSelect, onResumeSession, onForkSessionIntoProject, onOpenPanelAction, expandedProjectIds, revealedProjectIds, setExpandedProjectIds, setRevealedProjectIds, setSearchOpen, setActiveDialog }) {
|
|
25152
25169
|
const projectById = useMemo22(() => new Map(projects.map((project) => [project.projectId, project])), [projects]);
|
|
25153
25170
|
const sortedProjects = useMemo22(() => sortProjectsByActivity(projects, projectSessions), [projectSessions, projects]);
|
|
25154
25171
|
useEffect8(() => {
|
|
@@ -25233,203 +25250,173 @@ function useSessionSidebarViewModel({ sessions, projects = EMPTY_PROJECTS, proje
|
|
|
25233
25250
|
onNewSessionInProject,
|
|
25234
25251
|
onProjectSelect
|
|
25235
25252
|
]);
|
|
25236
|
-
const resumeResource = useCallback12((id) => {
|
|
25237
|
-
const toggleProjectId = idValue(id, "toggle:");
|
|
25238
|
-
if (toggleProjectId) {
|
|
25239
|
-
setRevealedProjectIds((current) => {
|
|
25240
|
-
const next = new Set(current);
|
|
25241
|
-
if (next.has(toggleProjectId)) next.delete(toggleProjectId);
|
|
25242
|
-
else next.add(toggleProjectId);
|
|
25243
|
-
return next;
|
|
25244
|
-
});
|
|
25245
|
-
return;
|
|
25246
|
-
}
|
|
25247
|
-
const newSessionProjectId = idValue(id, NEW_SESSION_PREFIX);
|
|
25248
|
-
if (newSessionProjectId) {
|
|
25249
|
-
openSessionInProject(newSessionProjectId);
|
|
25250
|
-
return;
|
|
25251
|
-
}
|
|
25252
|
-
const sessionId = idValue(id, SESSION_PREFIX);
|
|
25253
|
-
if (!sessionId) return;
|
|
25254
|
-
const session = projectSessions.find((entry) => entry.sessionId === sessionId);
|
|
25255
|
-
if (session) onResumeSession(session);
|
|
25256
|
-
}, [
|
|
25257
|
-
openSessionInProject,
|
|
25258
|
-
onResumeSession,
|
|
25259
|
-
projectSessions,
|
|
25260
|
-
setRevealedProjectIds
|
|
25261
|
-
]);
|
|
25262
|
-
const toggleProjectResource = useCallback12((id) => {
|
|
25263
|
-
setExpandedProjectIds((current) => current.includes(id) ? current.filter((entry) => entry !== id) : [...current, id]);
|
|
25264
|
-
}, [setExpandedProjectIds]);
|
|
25265
|
-
const selectSearchResult = useCallback12((value) => {
|
|
25266
|
-
const projectId = idValue(value, "search-project:");
|
|
25267
|
-
if (projectId) {
|
|
25268
|
-
const resourceId = projectResourceId(projectId);
|
|
25269
|
-
setExpandedProjectIds((current) => current.includes(resourceId) ? current : [...current, resourceId]);
|
|
25270
|
-
onProjectSelect?.(projectId);
|
|
25271
|
-
setSearchOpen(false);
|
|
25272
|
-
return;
|
|
25273
|
-
}
|
|
25274
|
-
const sessionId = idValue(value, "search-session:");
|
|
25275
|
-
const session = sessionId ? projectSessions.find((entry) => entry.sessionId === sessionId) : void 0;
|
|
25276
|
-
if (!session) return;
|
|
25277
|
-
if (session.projectId) {
|
|
25278
|
-
const resourceId = projectResourceId(session.projectId);
|
|
25279
|
-
setExpandedProjectIds((current) => current.includes(resourceId) ? current : [...current, resourceId]);
|
|
25280
|
-
}
|
|
25281
|
-
onResumeSession(session);
|
|
25282
|
-
setSearchOpen(false);
|
|
25283
|
-
}, [
|
|
25284
|
-
onProjectSelect,
|
|
25285
|
-
onResumeSession,
|
|
25286
|
-
projectSessions,
|
|
25287
|
-
setExpandedProjectIds,
|
|
25288
|
-
setSearchOpen
|
|
25289
|
-
]);
|
|
25290
|
-
const renderMenu = useCallback12((item, controls) => {
|
|
25291
|
-
const sessionId = idValue(item.id, SESSION_PREFIX);
|
|
25292
|
-
const projectId = idValue(item.id, "project:");
|
|
25293
|
-
if (sessionId) {
|
|
25294
|
-
const session = projectSessions.find((entry) => entry.sessionId === sessionId);
|
|
25295
|
-
if (!session) return null;
|
|
25296
|
-
const sessionProjectId = session.projectId ?? void 0;
|
|
25297
|
-
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [
|
|
25298
|
-
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25299
|
-
icon: Pencil,
|
|
25300
|
-
label: "Rename",
|
|
25301
|
-
onClick: () => {
|
|
25302
|
-
controls.close();
|
|
25303
|
-
setRenameTarget(session);
|
|
25304
|
-
setRenameTitle(sessionLabel(session));
|
|
25305
|
-
}
|
|
25306
|
-
}),
|
|
25307
|
-
onForkSessionIntoProject && projects.length > 1 ? /* @__PURE__ */ jsx7(MenuItem, {
|
|
25308
|
-
icon: FolderTree,
|
|
25309
|
-
label: "Fork into project",
|
|
25310
|
-
onClick: () => {
|
|
25311
|
-
controls.close();
|
|
25312
|
-
setForkTarget(session);
|
|
25313
|
-
setForkProjectId(projects.find((project) => project.projectId !== session.projectId)?.projectId);
|
|
25314
|
-
}
|
|
25315
|
-
}) : null,
|
|
25316
|
-
onOpenPanelAction && sessionProjectId ? /* @__PURE__ */ jsxs3(Fragment$1, { children: [/* @__PURE__ */ jsx7("div", { className: "my-1 border-t" }), PANEL_ACTIONS.map(([panel, label, Icon]) => /* @__PURE__ */ jsx7(MenuItem, {
|
|
25317
|
-
icon: Icon,
|
|
25318
|
-
label,
|
|
25319
|
-
onClick: () => {
|
|
25320
|
-
controls.close();
|
|
25321
|
-
onOpenPanelAction({
|
|
25322
|
-
panel,
|
|
25323
|
-
projectId: sessionProjectId,
|
|
25324
|
-
focus: true
|
|
25325
|
-
});
|
|
25326
|
-
}
|
|
25327
|
-
}, panel))] }) : null,
|
|
25328
|
-
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25329
|
-
icon: Trash,
|
|
25330
|
-
label: "Delete",
|
|
25331
|
-
destructive: true,
|
|
25332
|
-
onClick: () => {
|
|
25333
|
-
controls.close();
|
|
25334
|
-
setDeleteTarget(session);
|
|
25335
|
-
}
|
|
25336
|
-
})
|
|
25337
|
-
] });
|
|
25338
|
-
}
|
|
25339
|
-
if (projectId && projectId !== "unassigned") {
|
|
25340
|
-
const project = projectById.get(projectId);
|
|
25341
|
-
if (!project) return null;
|
|
25342
|
-
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [
|
|
25343
|
-
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25344
|
-
icon: Pencil,
|
|
25345
|
-
label: "Rename project",
|
|
25346
|
-
onClick: () => {
|
|
25347
|
-
controls.close();
|
|
25348
|
-
setRenameProjectTarget(project);
|
|
25349
|
-
setRenameProjectName(project.name);
|
|
25350
|
-
}
|
|
25351
|
-
}),
|
|
25352
|
-
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25353
|
-
icon: Unplug,
|
|
25354
|
-
label: "Unregister project",
|
|
25355
|
-
destructive: true,
|
|
25356
|
-
onClick: () => {
|
|
25357
|
-
controls.close();
|
|
25358
|
-
setUnregisterTarget(project);
|
|
25359
|
-
}
|
|
25360
|
-
}),
|
|
25361
|
-
onOpenPanelAction ? /* @__PURE__ */ jsxs3(Fragment$1, { children: [/* @__PURE__ */ jsx7("div", { className: "my-1 border-t" }), PANEL_ACTIONS.map(([panel, label, Icon]) => /* @__PURE__ */ jsx7(MenuItem, {
|
|
25362
|
-
icon: Icon,
|
|
25363
|
-
label,
|
|
25364
|
-
onClick: () => {
|
|
25365
|
-
controls.close();
|
|
25366
|
-
onOpenPanelAction({
|
|
25367
|
-
panel,
|
|
25368
|
-
projectId,
|
|
25369
|
-
focus: true
|
|
25370
|
-
});
|
|
25371
|
-
}
|
|
25372
|
-
}, panel))] }) : null
|
|
25373
|
-
] });
|
|
25374
|
-
}
|
|
25375
|
-
return null;
|
|
25376
|
-
}, [
|
|
25377
|
-
onForkSessionIntoProject,
|
|
25378
|
-
onOpenPanelAction,
|
|
25379
|
-
projectById,
|
|
25380
|
-
projectSessions,
|
|
25381
|
-
projects,
|
|
25382
|
-
setDeleteTarget,
|
|
25383
|
-
setForkProjectId,
|
|
25384
|
-
setForkTarget,
|
|
25385
|
-
setRenameProjectName,
|
|
25386
|
-
setRenameProjectTarget,
|
|
25387
|
-
setRenameTarget,
|
|
25388
|
-
setRenameTitle,
|
|
25389
|
-
setUnregisterTarget
|
|
25390
|
-
]);
|
|
25391
|
-
const submitCreate = async () => {
|
|
25392
|
-
const path = createPath.trim();
|
|
25393
|
-
if (!onCreateProject || !path && !directoryToken) return;
|
|
25394
|
-
setCreateSubmitting(true);
|
|
25395
|
-
setCreateSubmitError(null);
|
|
25396
|
-
try {
|
|
25397
|
-
await onCreateProject({
|
|
25398
|
-
path: directoryToken ? void 0 : path,
|
|
25399
|
-
directoryToken,
|
|
25400
|
-
name: createName.trim() || void 0
|
|
25401
|
-
});
|
|
25402
|
-
setCreateOpen(false);
|
|
25403
|
-
setCreatePath("");
|
|
25404
|
-
setCreateName("");
|
|
25405
|
-
setDirectoryToken(void 0);
|
|
25406
|
-
setDirectoryBrowser(null);
|
|
25407
|
-
setDirectoryBrowseError(null);
|
|
25408
|
-
} catch (error2) {
|
|
25409
|
-
setCreateSubmitError(directoryErrorMessage(error2, "Could not add this project."));
|
|
25410
|
-
} finally {
|
|
25411
|
-
setCreateSubmitting(false);
|
|
25412
|
-
}
|
|
25413
|
-
};
|
|
25414
25253
|
return {
|
|
25415
|
-
loadDirectories,
|
|
25416
25254
|
projectById,
|
|
25417
25255
|
sortedProjects,
|
|
25418
25256
|
sidebarItems,
|
|
25419
|
-
resumeResource
|
|
25420
|
-
|
|
25421
|
-
|
|
25422
|
-
|
|
25423
|
-
|
|
25257
|
+
resumeResource: useCallback12((id) => {
|
|
25258
|
+
const toggleProjectId = idValue(id, "toggle:");
|
|
25259
|
+
if (toggleProjectId) {
|
|
25260
|
+
setRevealedProjectIds((current) => {
|
|
25261
|
+
const next = new Set(current);
|
|
25262
|
+
if (next.has(toggleProjectId)) next.delete(toggleProjectId);
|
|
25263
|
+
else next.add(toggleProjectId);
|
|
25264
|
+
return next;
|
|
25265
|
+
});
|
|
25266
|
+
return;
|
|
25267
|
+
}
|
|
25268
|
+
const newSessionProjectId = idValue(id, NEW_SESSION_PREFIX);
|
|
25269
|
+
if (newSessionProjectId) {
|
|
25270
|
+
openSessionInProject(newSessionProjectId);
|
|
25271
|
+
return;
|
|
25272
|
+
}
|
|
25273
|
+
const sessionId = idValue(id, SESSION_PREFIX);
|
|
25274
|
+
if (!sessionId) return;
|
|
25275
|
+
const session = projectSessions.find((entry) => entry.sessionId === sessionId);
|
|
25276
|
+
if (session) onResumeSession(session);
|
|
25277
|
+
}, [
|
|
25278
|
+
openSessionInProject,
|
|
25279
|
+
onResumeSession,
|
|
25280
|
+
projectSessions,
|
|
25281
|
+
setRevealedProjectIds
|
|
25282
|
+
]),
|
|
25283
|
+
toggleProjectResource: useCallback12((id) => {
|
|
25284
|
+
setExpandedProjectIds((current) => current.includes(id) ? current.filter((entry) => entry !== id) : [...current, id]);
|
|
25285
|
+
}, [setExpandedProjectIds]),
|
|
25286
|
+
selectSearchResult: useCallback12((value) => {
|
|
25287
|
+
const projectId = idValue(value, "search-project:");
|
|
25288
|
+
if (projectId) {
|
|
25289
|
+
const resourceId = projectResourceId(projectId);
|
|
25290
|
+
setExpandedProjectIds((current) => current.includes(resourceId) ? current : [...current, resourceId]);
|
|
25291
|
+
onProjectSelect?.(projectId);
|
|
25292
|
+
setSearchOpen(false);
|
|
25293
|
+
return;
|
|
25294
|
+
}
|
|
25295
|
+
const sessionId = idValue(value, "search-session:");
|
|
25296
|
+
const session = sessionId ? projectSessions.find((entry) => entry.sessionId === sessionId) : void 0;
|
|
25297
|
+
if (!session) return;
|
|
25298
|
+
if (session.projectId) {
|
|
25299
|
+
const resourceId = projectResourceId(session.projectId);
|
|
25300
|
+
setExpandedProjectIds((current) => current.includes(resourceId) ? current : [...current, resourceId]);
|
|
25301
|
+
}
|
|
25302
|
+
onResumeSession(session);
|
|
25303
|
+
setSearchOpen(false);
|
|
25304
|
+
}, [
|
|
25305
|
+
onProjectSelect,
|
|
25306
|
+
onResumeSession,
|
|
25307
|
+
projectSessions,
|
|
25308
|
+
setExpandedProjectIds,
|
|
25309
|
+
setSearchOpen
|
|
25310
|
+
]),
|
|
25311
|
+
renderMenu: useCallback12((item, controls) => {
|
|
25312
|
+
const sessionId = idValue(item.id, SESSION_PREFIX);
|
|
25313
|
+
const projectId = idValue(item.id, "project:");
|
|
25314
|
+
if (sessionId) {
|
|
25315
|
+
const session = projectSessions.find((entry) => entry.sessionId === sessionId);
|
|
25316
|
+
if (!session) return null;
|
|
25317
|
+
const sessionProjectId = session.projectId ?? void 0;
|
|
25318
|
+
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [
|
|
25319
|
+
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25320
|
+
icon: Pencil,
|
|
25321
|
+
label: "Rename",
|
|
25322
|
+
onClick: () => {
|
|
25323
|
+
controls.close();
|
|
25324
|
+
setActiveDialog({
|
|
25325
|
+
kind: "rename-session",
|
|
25326
|
+
session
|
|
25327
|
+
});
|
|
25328
|
+
}
|
|
25329
|
+
}),
|
|
25330
|
+
onForkSessionIntoProject && projects.length > 1 ? /* @__PURE__ */ jsx7(MenuItem, {
|
|
25331
|
+
icon: FolderTree,
|
|
25332
|
+
label: "Fork into project",
|
|
25333
|
+
onClick: () => {
|
|
25334
|
+
controls.close();
|
|
25335
|
+
setActiveDialog({
|
|
25336
|
+
kind: "fork-session",
|
|
25337
|
+
session
|
|
25338
|
+
});
|
|
25339
|
+
}
|
|
25340
|
+
}) : null,
|
|
25341
|
+
onOpenPanelAction && sessionProjectId ? /* @__PURE__ */ jsxs3(Fragment$1, { children: [/* @__PURE__ */ jsx7("div", { className: "my-1 border-t" }), PANEL_ACTIONS.map(([panel, label, Icon]) => /* @__PURE__ */ jsx7(MenuItem, {
|
|
25342
|
+
icon: Icon,
|
|
25343
|
+
label,
|
|
25344
|
+
onClick: () => {
|
|
25345
|
+
controls.close();
|
|
25346
|
+
onOpenPanelAction({
|
|
25347
|
+
panel,
|
|
25348
|
+
projectId: sessionProjectId,
|
|
25349
|
+
focus: true
|
|
25350
|
+
});
|
|
25351
|
+
}
|
|
25352
|
+
}, panel))] }) : null,
|
|
25353
|
+
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25354
|
+
icon: Trash,
|
|
25355
|
+
label: "Delete",
|
|
25356
|
+
destructive: true,
|
|
25357
|
+
onClick: () => {
|
|
25358
|
+
controls.close();
|
|
25359
|
+
setActiveDialog({
|
|
25360
|
+
kind: "delete-session",
|
|
25361
|
+
session
|
|
25362
|
+
});
|
|
25363
|
+
}
|
|
25364
|
+
})
|
|
25365
|
+
] });
|
|
25366
|
+
}
|
|
25367
|
+
if (projectId && projectId !== "unassigned") {
|
|
25368
|
+
const project = projectById.get(projectId);
|
|
25369
|
+
if (!project) return null;
|
|
25370
|
+
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [
|
|
25371
|
+
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25372
|
+
icon: Pencil,
|
|
25373
|
+
label: "Rename project",
|
|
25374
|
+
onClick: () => {
|
|
25375
|
+
controls.close();
|
|
25376
|
+
setActiveDialog({
|
|
25377
|
+
kind: "rename-project",
|
|
25378
|
+
project
|
|
25379
|
+
});
|
|
25380
|
+
}
|
|
25381
|
+
}),
|
|
25382
|
+
/* @__PURE__ */ jsx7(MenuItem, {
|
|
25383
|
+
icon: Unplug,
|
|
25384
|
+
label: "Unregister project",
|
|
25385
|
+
destructive: true,
|
|
25386
|
+
onClick: () => {
|
|
25387
|
+
controls.close();
|
|
25388
|
+
setActiveDialog({
|
|
25389
|
+
kind: "unregister-project",
|
|
25390
|
+
project
|
|
25391
|
+
});
|
|
25392
|
+
}
|
|
25393
|
+
}),
|
|
25394
|
+
onOpenPanelAction ? /* @__PURE__ */ jsxs3(Fragment$1, { children: [/* @__PURE__ */ jsx7("div", { className: "my-1 border-t" }), PANEL_ACTIONS.map(([panel, label, Icon]) => /* @__PURE__ */ jsx7(MenuItem, {
|
|
25395
|
+
icon: Icon,
|
|
25396
|
+
label,
|
|
25397
|
+
onClick: () => {
|
|
25398
|
+
controls.close();
|
|
25399
|
+
onOpenPanelAction({
|
|
25400
|
+
panel,
|
|
25401
|
+
projectId,
|
|
25402
|
+
focus: true
|
|
25403
|
+
});
|
|
25404
|
+
}
|
|
25405
|
+
}, panel))] }) : null
|
|
25406
|
+
] });
|
|
25407
|
+
}
|
|
25408
|
+
return null;
|
|
25409
|
+
}, [
|
|
25410
|
+
onForkSessionIntoProject,
|
|
25411
|
+
onOpenPanelAction,
|
|
25412
|
+
projectById,
|
|
25413
|
+
projectSessions,
|
|
25414
|
+
projects.length,
|
|
25415
|
+
setActiveDialog
|
|
25416
|
+
])
|
|
25424
25417
|
};
|
|
25425
25418
|
}
|
|
25426
|
-
var LazySessionSidebarCreateDialog = lazy2(() => import("./create-project-dialog-
|
|
25427
|
-
function SessionSidebarDialogs(props) {
|
|
25428
|
-
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [props.createOpen ? /* @__PURE__ */ jsx7(Suspense2, {
|
|
25429
|
-
fallback: null,
|
|
25430
|
-
children: /* @__PURE__ */ jsx7(LazySessionSidebarCreateDialog, { ...props })
|
|
25431
|
-
}) : null, /* @__PURE__ */ jsx7(SessionSidebarActionDialogs, { ...props })] });
|
|
25432
|
-
}
|
|
25419
|
+
var LazySessionSidebarCreateDialog = lazy2(() => import("./create-project-dialog-DCvdysey-IZUGGDAN.js").then(({ SessionSidebarCreateDialog }) => ({ default: SessionSidebarCreateDialog })));
|
|
25433
25420
|
function SessionSidebar({ data, sessionActions, projectActions = {}, navigationActions = {}, slots = {} }) {
|
|
25434
25421
|
const { sessions, projects = EMPTY_PROJECTS, projectSessions = sessions, activeProjectId, activeSessionId } = data;
|
|
25435
25422
|
const { onNewSession, onNewSessionInProject, onResumeSession, onRenameSession, onDeleteSession } = sessionActions;
|
|
@@ -25437,7 +25424,7 @@ function SessionSidebar({ data, sessionActions, projectActions = {}, navigationA
|
|
|
25437
25424
|
const { onOpenPanelAction, onBrowseDirectories, onOpenSettings } = navigationActions;
|
|
25438
25425
|
const { accountMenu } = slots;
|
|
25439
25426
|
const state = useSessionSidebarState(activeProjectId);
|
|
25440
|
-
const {
|
|
25427
|
+
const { projectById, sortedProjects, sidebarItems, resumeResource, toggleProjectResource, selectSearchResult, renderMenu } = useSessionSidebarViewModel({
|
|
25441
25428
|
sessions,
|
|
25442
25429
|
projects,
|
|
25443
25430
|
projectSessions,
|
|
@@ -25447,112 +25434,74 @@ function SessionSidebar({ data, sessionActions, projectActions = {}, navigationA
|
|
|
25447
25434
|
onNewSessionInProject,
|
|
25448
25435
|
onProjectSelect,
|
|
25449
25436
|
onResumeSession,
|
|
25450
|
-
onCreateProject,
|
|
25451
25437
|
onForkSessionIntoProject,
|
|
25452
25438
|
onOpenPanelAction,
|
|
25453
|
-
onBrowseDirectories,
|
|
25454
|
-
createOpen: state.createOpen,
|
|
25455
25439
|
expandedProjectIds: state.expandedProjectIds,
|
|
25456
25440
|
revealedProjectIds: state.revealedProjectIds,
|
|
25457
25441
|
setExpandedProjectIds: state.setExpandedProjectIds,
|
|
25458
25442
|
setRevealedProjectIds: state.setRevealedProjectIds,
|
|
25459
25443
|
setSearchOpen: state.setSearchOpen,
|
|
25460
|
-
|
|
25461
|
-
|
|
25462
|
-
|
|
25463
|
-
|
|
25464
|
-
|
|
25465
|
-
|
|
25466
|
-
|
|
25467
|
-
|
|
25468
|
-
|
|
25469
|
-
|
|
25470
|
-
|
|
25471
|
-
|
|
25472
|
-
|
|
25473
|
-
|
|
25474
|
-
|
|
25475
|
-
|
|
25476
|
-
|
|
25477
|
-
|
|
25478
|
-
|
|
25479
|
-
|
|
25480
|
-
|
|
25481
|
-
|
|
25482
|
-
|
|
25483
|
-
|
|
25484
|
-
|
|
25485
|
-
|
|
25486
|
-
|
|
25487
|
-
|
|
25488
|
-
|
|
25489
|
-
|
|
25490
|
-
|
|
25491
|
-
|
|
25492
|
-
|
|
25493
|
-
|
|
25494
|
-
|
|
25495
|
-
|
|
25496
|
-
|
|
25497
|
-
|
|
25498
|
-
|
|
25499
|
-
|
|
25500
|
-
|
|
25501
|
-
|
|
25502
|
-
|
|
25503
|
-
|
|
25504
|
-
|
|
25505
|
-
|
|
25506
|
-
|
|
25507
|
-
|
|
25508
|
-
|
|
25509
|
-
|
|
25510
|
-
|
|
25511
|
-
|
|
25512
|
-
|
|
25513
|
-
|
|
25514
|
-
|
|
25515
|
-
|
|
25516
|
-
|
|
25517
|
-
|
|
25518
|
-
|
|
25519
|
-
createOpen: state.createOpen,
|
|
25520
|
-
setCreateOpen: state.setCreateOpen,
|
|
25521
|
-
directoryBrowser: state.directoryBrowser,
|
|
25522
|
-
setDirectoryBrowser: state.setDirectoryBrowser,
|
|
25523
|
-
directoryBrowseLoading: state.directoryBrowseLoading,
|
|
25524
|
-
directoryBrowseError: state.directoryBrowseError,
|
|
25525
|
-
setDirectoryBrowseError: state.setDirectoryBrowseError,
|
|
25526
|
-
directoryToken: state.directoryToken,
|
|
25527
|
-
setDirectoryToken: state.setDirectoryToken,
|
|
25528
|
-
createName: state.createName,
|
|
25529
|
-
setCreateName: state.setCreateName,
|
|
25530
|
-
createPath: state.createPath,
|
|
25531
|
-
setCreatePath: state.setCreatePath,
|
|
25532
|
-
renameTarget: state.renameTarget,
|
|
25533
|
-
setRenameTarget: state.setRenameTarget,
|
|
25534
|
-
renameTitle: state.renameTitle,
|
|
25535
|
-
setRenameTitle: state.setRenameTitle,
|
|
25536
|
-
renameProjectTarget: state.renameProjectTarget,
|
|
25537
|
-
setRenameProjectTarget: state.setRenameProjectTarget,
|
|
25538
|
-
renameProjectName: state.renameProjectName,
|
|
25539
|
-
setRenameProjectName: state.setRenameProjectName,
|
|
25540
|
-
deleteTarget: state.deleteTarget,
|
|
25541
|
-
setDeleteTarget: state.setDeleteTarget,
|
|
25542
|
-
unregisterTarget: state.unregisterTarget,
|
|
25543
|
-
setUnregisterTarget: state.setUnregisterTarget,
|
|
25544
|
-
forkTarget: state.forkTarget,
|
|
25545
|
-
setForkTarget: state.setForkTarget,
|
|
25546
|
-
forkProjectId: state.forkProjectId,
|
|
25547
|
-
setForkProjectId: state.setForkProjectId,
|
|
25548
|
-
createSubmitting: state.createSubmitting,
|
|
25549
|
-
createSubmitError: state.createSubmitError,
|
|
25550
|
-
setCreateSubmitError: state.setCreateSubmitError,
|
|
25551
|
-
loadDirectories,
|
|
25552
|
-
submitCreate
|
|
25553
|
-
})] });
|
|
25444
|
+
setActiveDialog: state.setActiveDialog
|
|
25445
|
+
});
|
|
25446
|
+
const setActiveDialog = state.setActiveDialog;
|
|
25447
|
+
const handleOpenCreateProject = useCallback12(() => {
|
|
25448
|
+
setActiveDialog({ kind: "create-project" });
|
|
25449
|
+
}, [setActiveDialog]);
|
|
25450
|
+
const isCreateOpen = state.activeDialog?.kind === "create-project";
|
|
25451
|
+
return /* @__PURE__ */ jsxs3(Fragment$1, { children: [
|
|
25452
|
+
/* @__PURE__ */ jsx7(SessionSidebarNavigation, {
|
|
25453
|
+
brandMenuOpen: state.brandMenuOpen,
|
|
25454
|
+
setBrandMenuOpen: state.setBrandMenuOpen,
|
|
25455
|
+
searchOpen: state.searchOpen,
|
|
25456
|
+
setSearchOpen: state.setSearchOpen,
|
|
25457
|
+
query: state.query,
|
|
25458
|
+
setQuery: state.setQuery,
|
|
25459
|
+
projectActionsOpen: state.projectActionsOpen,
|
|
25460
|
+
setProjectActionsOpen: state.setProjectActionsOpen,
|
|
25461
|
+
expandedProjectIds: state.expandedProjectIds,
|
|
25462
|
+
setExpandedProjectIds: state.setExpandedProjectIds,
|
|
25463
|
+
onOpenCreateProject: handleOpenCreateProject,
|
|
25464
|
+
projects,
|
|
25465
|
+
projectSessions,
|
|
25466
|
+
sidebarItems,
|
|
25467
|
+
sortedProjects,
|
|
25468
|
+
projectById,
|
|
25469
|
+
activeProjectId,
|
|
25470
|
+
activeSessionId,
|
|
25471
|
+
onNewSession,
|
|
25472
|
+
onNewSessionInProject,
|
|
25473
|
+
onProjectSelect,
|
|
25474
|
+
onRenameSession,
|
|
25475
|
+
onCreateProject,
|
|
25476
|
+
onOpenSettings,
|
|
25477
|
+
accountMenu,
|
|
25478
|
+
resumeResource,
|
|
25479
|
+
toggleProjectResource,
|
|
25480
|
+
selectSearchResult,
|
|
25481
|
+
renderMenu
|
|
25482
|
+
}),
|
|
25483
|
+
isCreateOpen ? /* @__PURE__ */ jsx7(Suspense2, {
|
|
25484
|
+
fallback: null,
|
|
25485
|
+
children: /* @__PURE__ */ jsx7(LazySessionSidebarCreateDialog, {
|
|
25486
|
+
open: isCreateOpen,
|
|
25487
|
+
onClose: state.closeDialog,
|
|
25488
|
+
onBrowseDirectories,
|
|
25489
|
+
onCreateProject
|
|
25490
|
+
})
|
|
25491
|
+
}) : null,
|
|
25492
|
+
/* @__PURE__ */ jsx7(SessionSidebarActionDialogs, {
|
|
25493
|
+
activeDialog: state.activeDialog,
|
|
25494
|
+
onClose: state.closeDialog,
|
|
25495
|
+
projects,
|
|
25496
|
+
onRenameSession,
|
|
25497
|
+
onDeleteSession,
|
|
25498
|
+
onRenameProject,
|
|
25499
|
+
onUnregisterProject,
|
|
25500
|
+
onForkSessionIntoProject
|
|
25501
|
+
})
|
|
25502
|
+
] });
|
|
25554
25503
|
}
|
|
25555
|
-
var LazySubagentChatPanel = lazy2(() => import("./subagent-chat-panel-
|
|
25504
|
+
var LazySubagentChatPanel = lazy2(() => import("./subagent-chat-panel-Cg2CxshI-WWGFHTIF.js").then(({ SubagentChatPanel }) => ({ default: SubagentChatPanel })));
|
|
25556
25505
|
function ChatWorkspaceShell() {
|
|
25557
25506
|
const { session, conversation, composer, panels, dialogs, chrome, agentTabs } = useChatWorkspaceData();
|
|
25558
25507
|
const toggleCommandPalette = useCallback12(() => {
|
|
@@ -25746,6 +25695,7 @@ function ChatWorkspaceShell() {
|
|
|
25746
25695
|
panel: /* @__PURE__ */ jsx7(UiErrorBoundary, { children: /* @__PURE__ */ jsx7(RightPanelShell, {
|
|
25747
25696
|
handleResourceCanvasResizeStart: panels.handleResourceCanvasResizeStart,
|
|
25748
25697
|
onClose: closeRightPanel,
|
|
25698
|
+
onResourceCanvasWidthChange: panels.handleResourceCanvasWidthChange,
|
|
25749
25699
|
resourceCanvasWidth: panels.resourceCanvasWidth
|
|
25750
25700
|
}) }),
|
|
25751
25701
|
children: /* @__PURE__ */ jsx7("div", {
|
|
@@ -25834,6 +25784,7 @@ export {
|
|
|
25834
25784
|
rlmStatusIcon,
|
|
25835
25785
|
RIGHT_PANEL_LAUNCHER_DEFINITIONS,
|
|
25836
25786
|
pathEntryLabel,
|
|
25787
|
+
directoryErrorMessage,
|
|
25837
25788
|
AlertDialog$1,
|
|
25838
25789
|
AlertDialogContent,
|
|
25839
25790
|
AlertDialogTitle,
|