local-operator-ui 0.31.19 → 0.31.20
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/out/main/index.js +84 -98
- package/out/renderer/assets/{_basePickBy-BjXXwW6E.js → _basePickBy-_G13yD_N.js} +1 -1
- package/out/renderer/assets/{_baseUniq-xIg3idQF.js → _baseUniq-cZFY6WR-.js} +1 -1
- package/out/renderer/assets/{agent-details-page-D2QdVqJp.js → agent-details-page-DohUpAW5.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-BitfELv8.js → agent-hub-page-D2Wo_RcW.js} +1 -1
- package/out/renderer/assets/{agents-page-Cl1j7rwO.js → agents-page-Bme3mW2i.js} +2 -2
- package/out/renderer/assets/{aida-control-BqbEHtVs.js → aida-control-DVTI-DZP.js} +1 -1
- package/out/renderer/assets/{arc-Ceouzeia.js → arc-_ZSLPSD3.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-BGSLJh-o.js → architectureDiagram-IEHRJDOE-BMozIO-d.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BmQJgCM-.js → blockDiagram-JOT3LUYC-CnCGGby6.js} +1 -1
- package/out/renderer/assets/{book-open-tLP18D-k.js → book-open-BWKY7M9P.js} +1 -1
- package/out/renderer/assets/browser-page-Ca86jJVo.js +1 -0
- package/out/renderer/assets/{browser-webauthn-prompt-k5jzjWeZ.js → browser-webauthn-prompt-Zq7Sensn.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-Yk9CQYyQ.js → c4Diagram-VJAJSXHY-D6vlxi2G.js} +1 -1
- package/out/renderer/assets/channel-DBxTgGZs.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-DizR_fDb.js → chunk-4BMEZGHF-CgxwmKpR.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-BtTz6zUt.js → chunk-A2AXSNBT-DL4YbfpC.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-D1a4VfuY.js → chunk-AEK57VVT-C7STzYq2.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-bed23kTE.js → chunk-D6G4REZN-BiGlWxbN.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-KfGYL-ag.js → chunk-RZ5BOZE2-FPI-zkVi.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-B1igQQgc.js → chunk-XZIHB7SX-pQtxBw7K.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-oRXPz12L.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-oRXPz12L.js +1 -0
- package/out/renderer/assets/clone-CWgQ1AK5.js +1 -0
- package/out/renderer/assets/{console-mirror-CqlxE8VR.js → console-mirror-CG9RcMIb.js} +1 -1
- package/out/renderer/assets/{consoleCapture-Bgq6O6hd.js → consoleCapture-CpTo2RAv.js} +1 -1
- package/out/renderer/assets/{dagre-OKDRZEBW-BlwfTwwA.js → dagre-OKDRZEBW-BoM7akd9.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-jsDlGkgc.js → diagram-SSKATNLV-D9w1aNay.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-DP8qnarm.js → diagram-VNBRO52H-D6xO4h26.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-Tc8DPglp.js → erDiagram-Q7BY3M3F-lgEC_hRU.js} +1 -1
- package/out/renderer/assets/{error-boundary-X9vF0zez.js → error-boundary-DVk48CIF.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-C0iWuz_e.js → flowDiagram-4HSFHLVR-B8gXHejR.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-CXzAhOwO.js → ganttDiagram-APWFNJXF-Ds8ML93J.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-c3OKkh69.js → gitGraphDiagram-7IBYFJ6S-D5gdmSVh.js} +1 -1
- package/out/renderer/assets/{graph-BNpclJqw.js → graph-DNi4FjaS.js} +1 -1
- package/out/renderer/assets/{index-BgDCWTEy.js → index-40tBsZ9r.js} +1 -1
- package/out/renderer/assets/{index-BsveCKct.js → index-BhRzR-VW.js} +380 -375
- package/out/renderer/assets/{index-D4_JjH_R.js → index-BlalL3ro.js} +1 -1
- package/out/renderer/assets/index-FjyWTJXV.css +1 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-BDTgzxhS.js +2 -0
- package/out/renderer/assets/{installer-Durl4Nt6.js → installer-BgW1Tkr8.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-DdWl9wJG.js → journeyDiagram-U35MCT3I-BdnGNrZc.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-D6rkiZvG.js → kanban-definition-NDS4AKOZ-BuQLa1-R.js} +1 -1
- package/out/renderer/assets/{layout-BQqWsgv9.js → layout-Pvac8TnM.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-xSUV6wUg.js → legacy-agents-page-BR_oPhtA.js} +1 -1
- package/out/renderer/assets/{mermaid.core-DLc2GDBk.js → mermaid.core-Dol6F2oY.js} +5 -5
- package/out/renderer/assets/{mesh-page-D1Hn61zc.js → mesh-page-CcSpUIcL.js} +1 -1
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-BPp31SFM.js → mindmap-definition-ALO5MXBD-DDnWPtbR.js} +1 -1
- package/out/renderer/assets/{mini-dIYd4lBf.js → mini-D1QQjR0V.js} +1 -1
- package/out/renderer/assets/{org-surface-gate-CQZDYvz1.js → org-surface-gate-_kP5Dpsg.js} +1 -1
- package/out/renderer/assets/{page-header-Ct_E4hXM.js → page-header-B3RA2AMB.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-InajJAb7.js → pieDiagram-IB7DONF6-Dc1zeStB.js} +1 -1
- package/out/renderer/assets/{projects-page-Cq4-43oz.js → projects-page-Cb7bJ1ue.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DllpcIGZ.js → quadrantDiagram-7GDLP6J5-AlzvyKPw.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-o49sXvJd.js → radar-MK3ICKWK-BLuijs-X.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-DCKuV_IZ.js → radient-auth-buttons-gtgUk3ts.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-DEB_P2Er.js → requirementDiagram-KVF5MWMF-CfgMH9Xy.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-1sqsEoj5.js → sankeyDiagram-QLVOVGJD-CGSaFjvZ.js} +1 -1
- package/out/renderer/assets/{schedules-page-D6uKCgBE.js → schedules-page-yCFUUqqb.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-DBKLSCMO.js → sequenceDiagram-X6HHIX6F-BKLpPHnF.js} +1 -1
- package/out/renderer/assets/{settings-page-DuO8dHwe.js → settings-page-6S9zTaN7.js} +1 -1
- package/out/renderer/assets/{settings-section-yg8wX_kN.js → settings-section-D3WEX0WK.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-CirIxYQ4.js → stateDiagram-DGXRK772-CukEj5Ge.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CaoB6DdD.js +1 -0
- package/out/renderer/assets/{textarea-CPyoWJfR.js → textarea-BX6EeK34.js} +1 -1
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-HxrDshvA.js → timeline-definition-BDJGKUSR-ZSpHRGCR.js} +1 -1
- package/out/renderer/assets/{ui-preferences-store-CyKvDymq.js → ui-preferences-store-DjUQd2R7.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-CJP2OhpP.js → use-download-agent-mutation-BwZi8Zfx.js} +1 -1
- package/out/renderer/assets/{use-memberships-query-Q96GogTV.js → use-memberships-query-CSOmeH29.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-BXsPMfju.js → xychartDiagram-VJFVF3MP-B4P41D_W.js} +1 -1
- package/out/renderer/console-capture.html +5 -5
- package/out/renderer/index.html +8 -8
- package/out/renderer/installer.html +5 -5
- package/out/renderer/mini.html +6 -6
- package/package.json +2 -2
- package/out/renderer/assets/browser-page-ChmnhnuO.js +0 -1
- package/out/renderer/assets/channel-CoXp_5DQ.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-DLxyNS1q.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-DLxyNS1q.js +0 -1
- package/out/renderer/assets/clone-1ZAhWRhd.js +0 -1
- package/out/renderer/assets/index-R0cHU6YS.css +0 -1
- package/out/renderer/assets/infoDiagram-PH2N3AL5-C6rpQuUJ.js +0 -2
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BektpfMe.js +0 -1
- /package/out/renderer/assets/{index-C17iOszj.js → index-VKe88JN9.js} +0 -0
package/out/main/index.js
CHANGED
|
@@ -32904,10 +32904,10 @@ async function waitForFleetIdle(input) {
|
|
|
32904
32904
|
fleet: (await input.readRoster())?.length ?? 0
|
|
32905
32905
|
};
|
|
32906
32906
|
}
|
|
32907
|
-
function fleetDrainRefusalSentence(outcome
|
|
32907
|
+
function fleetDrainRefusalSentence(outcome) {
|
|
32908
32908
|
const minutes = Math.max(1, Math.round(outcome.waitedMs / 6e4));
|
|
32909
32909
|
const waited = `${minutes} minute${minutes === 1 ? "" : "s"}`;
|
|
32910
|
-
const closing =
|
|
32910
|
+
const closing = "Nothing was installed and the server keeps running the build it loaded; the app will offer this update again.";
|
|
32911
32911
|
if (outcome.because === "unknown") {
|
|
32912
32912
|
const lead2 = outcome.credentialsRefused ? "The server refused this app's credentials, so the app could not read which sessions are running on this machine." : "The app could not read which sessions are running on this machine, so it did not update the server.";
|
|
32913
32913
|
return `${lead2}
|
|
@@ -32977,7 +32977,10 @@ async function reengageDisplacedSessions(input) {
|
|
|
32977
32977
|
const finalRead = await input.readRoster();
|
|
32978
32978
|
if (finalRead !== null) after = finalRead;
|
|
32979
32979
|
const displaced = displacedSessions(input.before, after);
|
|
32980
|
-
const
|
|
32980
|
+
const stillLiveAtEnd = stillLiveIn(finalRead) ?? stillLive;
|
|
32981
|
+
const stillResident = snapshot2.filter(
|
|
32982
|
+
(row) => stillLiveAtEnd.has(row.sessionId)
|
|
32983
|
+
);
|
|
32981
32984
|
const engaged = [];
|
|
32982
32985
|
const failed = [];
|
|
32983
32986
|
for (const row of displaced) {
|
|
@@ -34280,15 +34283,17 @@ class UpdateService {
|
|
|
34280
34283
|
*/
|
|
34281
34284
|
installPreflightInFlight = false;
|
|
34282
34285
|
/**
|
|
34283
|
-
* How long
|
|
34284
|
-
* re-reads it.
|
|
34286
|
+
* How long the rebuild install leg may hold back for the fleet, and how often
|
|
34287
|
+
* it re-reads it.
|
|
34285
34288
|
*
|
|
34286
|
-
* FIELDS rather than the module's constants read in place, because
|
|
34287
|
-
*
|
|
34288
|
-
*
|
|
34289
|
-
*
|
|
34290
|
-
*
|
|
34291
|
-
*
|
|
34289
|
+
* FIELDS rather than the module's constants read in place, because the wait has
|
|
34290
|
+
* to be drivable in milliseconds instead of ten minutes
|
|
34291
|
+
* (`scripts/update-robustness.test.mjs`, the same lever `waitForBackendVersion`
|
|
34292
|
+
* and the install budgets already are). The values they start at are the host
|
|
34293
|
+
* tool's own, in `backend/fleet-drain.ts`, where the reasoning for the ten
|
|
34294
|
+
* minutes lives - and where the module head records that the press reaching
|
|
34295
|
+
* this pair is now only the REBUILD route's install leg (the operator's
|
|
34296
|
+
* directive removed the restart-leg drains).
|
|
34292
34297
|
*/
|
|
34293
34298
|
fleetDrainBudgetMs = FLEET_DRAIN_BUDGET_MS;
|
|
34294
34299
|
fleetDrainPollMs = FLEET_DRAIN_POLL_MS;
|
|
@@ -34317,13 +34322,17 @@ class UpdateService {
|
|
|
34317
34322
|
sessionEngageBeatMs = SESSION_ENGAGE_BEAT_MS;
|
|
34318
34323
|
sessionEngageHoldMs = SESSION_ENGAGE_HOLD_MS;
|
|
34319
34324
|
/**
|
|
34320
|
-
* How long the press IN FLIGHT has already spent waiting for the fleet.
|
|
34325
|
+
* How long the rebuild press IN FLIGHT has already spent waiting for the fleet.
|
|
34321
34326
|
*
|
|
34322
|
-
* The budget above
|
|
34323
|
-
*
|
|
34324
|
-
* restart - so a per-drain budget
|
|
34325
|
-
*
|
|
34326
|
-
*
|
|
34327
|
+
* The budget above belongs to the PRESS, not to each drain (review round 1,
|
|
34328
|
+
* m2): when the restart legs still drained, a rebuild press drained twice -
|
|
34329
|
+
* once before the install and once before the restart - so a per-drain budget
|
|
34330
|
+
* let one press hold the button for twenty minutes while the panel promised
|
|
34331
|
+
* ten. The restart-leg drains are gone (2026-09-29 directive), so the ledger
|
|
34332
|
+
* now carries at most one leg's spend; it is kept because the promise the
|
|
34333
|
+
* draining copy makes is about the press, and because it is the seam the wait
|
|
34334
|
+
* is driven through. Reset at the top of every press, in `updateBackend`,
|
|
34335
|
+
* because the guarantee is about one press.
|
|
34327
34336
|
*/
|
|
34328
34337
|
fleetDrainSpentMs = 0;
|
|
34329
34338
|
/**
|
|
@@ -37081,13 +37090,16 @@ ${heal.removed.join("\n")}`,
|
|
|
37081
37090
|
* publishes a generation and restarts a daemon. It is the managed global
|
|
37082
37091
|
* arm's own wording, aimed at this arm's mechanism.
|
|
37083
37092
|
*
|
|
37084
|
-
* AND IT NO LONGER PROMISES A DROPPED TURN
|
|
37085
|
-
*
|
|
37086
|
-
*
|
|
37087
|
-
*
|
|
37088
|
-
*
|
|
37093
|
+
* AND IT NO LONGER PROMISES A DROPPED TURN - AND NO LONGER PRICES A WAIT. It
|
|
37094
|
+
* did both at different times, because it described what the press used to
|
|
37095
|
+
* do; the operator's directive of 2026-09-29 removed the fleet wait from the
|
|
37096
|
+
* restart legs ("we don't need to wait for all sessions to drain and turn
|
|
37097
|
+
* over... on idle they should switch over"), so the honest consequence names
|
|
37098
|
+
* the sequence, the promised absence of dropped work, and the fleet effect
|
|
37099
|
+
* that remains - sessions still working move onto the new build when they
|
|
37100
|
+
* next stop or go idle - with the cost stated as the time it takes.
|
|
37089
37101
|
*/
|
|
37090
|
-
remedy: "The app publishes the new build beside the one the server is using
|
|
37102
|
+
remedy: "The app publishes the new build beside the one the server is using and then moves the server onto it, so nothing in flight is cut off. Sessions that are still working move onto the new build when they next stop or go idle. This can take a minute or two.",
|
|
37091
37103
|
detail: `The app started this server itself (${startupMode}).`,
|
|
37092
37104
|
sourceBuild: false,
|
|
37093
37105
|
/*
|
|
@@ -37761,15 +37773,19 @@ ${heal.removed.join("\n")}`,
|
|
|
37761
37773
|
return this.backendService?.servingInstall().owned.owned ?? false;
|
|
37762
37774
|
}
|
|
37763
37775
|
/**
|
|
37764
|
-
* Wait for the fleet this app can see to go idle, or refuse the
|
|
37776
|
+
* Wait for the fleet this app can see to go idle, or refuse the rebuild.
|
|
37765
37777
|
*
|
|
37766
|
-
* THE ONE GATE
|
|
37767
|
-
*
|
|
37768
|
-
*
|
|
37769
|
-
*
|
|
37770
|
-
*
|
|
37771
|
-
* drain
|
|
37772
|
-
*
|
|
37778
|
+
* THE ONE REMAINING GATE, AND IT GUARDS THE ONE ROUTE THAT CAN CUT A TURN. This
|
|
37779
|
+
* used to stand in front of every restart and every in-place install. The
|
|
37780
|
+
* operator's directive of 2026-09-29 removed it from the RESTART legs - a
|
|
37781
|
+
* daemon bounce cuts no turns, because session runtimes are detached and
|
|
37782
|
+
* converge onto the new build at their own next idle (see the module head in
|
|
37783
|
+
* `backend/fleet-drain.ts`) - so what is left is the route it still has to
|
|
37784
|
+
* guard: the checkout REBUILD's install leg, which rewrites a tree a live
|
|
37785
|
+
* runtime is reading (`update-install.ts`). There the operator's rule stands:
|
|
37786
|
+
* nothing kills runtimes en masse, so the app waits for the fleet to drain
|
|
37787
|
+
* before the rebuild starts, and REFUSES with a remedy at the end of its
|
|
37788
|
+
* budget rather than cutting off a turn on a timer.
|
|
37773
37789
|
*
|
|
37774
37790
|
* WHY THE MANAGER'S OWN READERS. `servingWorkState` is the app's existing
|
|
37775
37791
|
* busy signal (see `servingWorkStateFromSessions`) and `servingSessionFleet`
|
|
@@ -37784,7 +37800,7 @@ ${heal.removed.join("\n")}`,
|
|
|
37784
37800
|
* when the update was refused and the caller must not proceed
|
|
37785
37801
|
*/
|
|
37786
37802
|
async drainFleetForUpdate(input) {
|
|
37787
|
-
const { backend
|
|
37803
|
+
const { backend } = input;
|
|
37788
37804
|
const spentMs = this.fleetDrainSpentMs;
|
|
37789
37805
|
const remainingMs = Math.max(0, this.fleetDrainBudgetMs - spentMs);
|
|
37790
37806
|
const outcome = await waitForFleetIdle({
|
|
@@ -37811,7 +37827,7 @@ ${heal.removed.join("\n")}`,
|
|
|
37811
37827
|
waitedMs: spentMs + elapsedMs
|
|
37812
37828
|
});
|
|
37813
37829
|
logger.info(
|
|
37814
|
-
`Update waiting for the fleet to drain before
|
|
37830
|
+
`Update waiting for the fleet to drain before the rebuild may start (${Math.round(elapsedMs / 1e3)}s so far)`,
|
|
37815
37831
|
LogFileType.UPDATE_SERVICE
|
|
37816
37832
|
);
|
|
37817
37833
|
}
|
|
@@ -37819,19 +37835,16 @@ ${heal.removed.join("\n")}`,
|
|
|
37819
37835
|
this.fleetDrainSpentMs = spentMs + outcome.waitedMs;
|
|
37820
37836
|
if (outcome.kind === "drained") {
|
|
37821
37837
|
logger.info(
|
|
37822
|
-
`The fleet is idle (${outcome.fleet} session(s) on the roster, ${outcome.waitedMs}ms waited); the
|
|
37838
|
+
`The fleet is idle (${outcome.fleet} session(s) on the roster, ${outcome.waitedMs}ms waited); the rebuild may start`,
|
|
37823
37839
|
LogFileType.UPDATE_SERVICE
|
|
37824
37840
|
);
|
|
37825
37841
|
return true;
|
|
37826
37842
|
}
|
|
37827
|
-
const message = fleetDrainRefusalSentence(
|
|
37828
|
-
outcome,
|
|
37829
|
-
input.installLanded === true
|
|
37830
|
-
);
|
|
37843
|
+
const message = fleetDrainRefusalSentence(outcome);
|
|
37831
37844
|
const command = input.command ?? null;
|
|
37832
37845
|
const pressWaitedMs = spentMs + outcome.waitedMs;
|
|
37833
37846
|
logger.warn(
|
|
37834
|
-
`Refusing to
|
|
37847
|
+
`Refusing to install: the fleet did not drain in ${pressWaitedMs}ms (${outcome.because}, ${outcome.busy.length} mid-turn, this leg spent ${outcome.waitedMs}ms). ${message}${command ? ` By hand: ${command}` : ""}`,
|
|
37835
37848
|
LogFileType.UPDATE_SERVICE
|
|
37836
37849
|
);
|
|
37837
37850
|
this.sendToRenderer("backend-update-error", {
|
|
@@ -37848,17 +37861,7 @@ ${heal.removed.join("\n")}`,
|
|
|
37848
37861
|
because: outcome.because,
|
|
37849
37862
|
waitedMs: pressWaitedMs,
|
|
37850
37863
|
command,
|
|
37851
|
-
credentialsRefused: outcome.credentialsRefused === true
|
|
37852
|
-
/*
|
|
37853
|
-
* WHICH REFUSAL THIS IS (design round 2, D6). The heading is the reader's
|
|
37854
|
-
* takeaway from a panel they have been looking at for ten minutes, and the
|
|
37855
|
-
* three refusal sites are not the same event: the install leg's refusal left
|
|
37856
|
-
* nothing on disk, while the two restart-leg refusals happen AFTER the build
|
|
37857
|
-
* landed. "The update didn't start" is false on the second pair - the
|
|
37858
|
-
* producer's own doc for `installLanded` says so - so the fact travels with
|
|
37859
|
-
* the report and the panel keys its heading on it.
|
|
37860
|
-
*/
|
|
37861
|
-
installLanded: input.installLanded === true
|
|
37864
|
+
credentialsRefused: outcome.credentialsRefused === true
|
|
37862
37865
|
}
|
|
37863
37866
|
});
|
|
37864
37867
|
return false;
|
|
@@ -37867,15 +37870,22 @@ ${heal.removed.join("\n")}`,
|
|
|
37867
37870
|
* Put back the runtimes a restart displaced, and say what came back.
|
|
37868
37871
|
*
|
|
37869
37872
|
* Step 5 of the host tool's own order (`~/tools/lop-fleet-update`): the app
|
|
37870
|
-
* snapshots the fleet,
|
|
37871
|
-
*
|
|
37872
|
-
*
|
|
37873
|
-
*
|
|
37874
|
-
*
|
|
37875
|
-
* BEST EFFORT AND NEVER A BLOCKER:
|
|
37876
|
-
*
|
|
37877
|
-
*
|
|
37878
|
-
*
|
|
37873
|
+
* snapshots the fleet, moves the server, and then re-engages what the move
|
|
37874
|
+
* displaced - the unwatched `daemon`-kind sessions in particular, which nothing
|
|
37875
|
+
* else revives. `reengageDisplacedSessions` owns the retire wait and the
|
|
37876
|
+
* ordering rules.
|
|
37877
|
+
*
|
|
37878
|
+
* BEST EFFORT AND NEVER A BLOCKER: a displace list that will not come back is a
|
|
37879
|
+
* logged fact rather than a failed update. That is deliberate - a `warm` the
|
|
37880
|
+
* daemon refuses must not turn a landed update into an error panel.
|
|
37881
|
+
*
|
|
37882
|
+
* THE RESULT IS RETURNED FOR THE COMPLETION'S COUNT (2026-09-29): the caller
|
|
37883
|
+
* reads `stillResident` - the pre-swap runtimes still resident in the freshest
|
|
37884
|
+
* read at the wait's end, which in the ordinary flow are the sessions still on
|
|
37885
|
+
* the old build - into `sessionsOnOldBuild`. It is a liveness reading rather
|
|
37886
|
+
* than a build read (the field's own docblock names the one narrow over-count).
|
|
37887
|
+
* A failure here answers null and the count is reported as not measured, so
|
|
37888
|
+
* the notice degrades to the numberless sentence rather than inventing a zero.
|
|
37879
37889
|
*/
|
|
37880
37890
|
async reengageFleetAfterRestart(backend, before) {
|
|
37881
37891
|
try {
|
|
@@ -37897,7 +37907,7 @@ ${heal.removed.join("\n")}`,
|
|
|
37897
37907
|
LogFileType.UPDATE_SERVICE
|
|
37898
37908
|
);
|
|
37899
37909
|
}
|
|
37900
|
-
return;
|
|
37910
|
+
return result;
|
|
37901
37911
|
}
|
|
37902
37912
|
if (result.failed.length > 0) {
|
|
37903
37913
|
logger.warn(
|
|
@@ -37905,11 +37915,13 @@ ${heal.removed.join("\n")}`,
|
|
|
37905
37915
|
LogFileType.UPDATE_SERVICE
|
|
37906
37916
|
);
|
|
37907
37917
|
}
|
|
37918
|
+
return result;
|
|
37908
37919
|
} catch (error) {
|
|
37909
37920
|
logger.warn(
|
|
37910
37921
|
`Could not re-engage the sessions a restart displaced: ${error instanceof Error ? error.message : String(error)}`,
|
|
37911
37922
|
LogFileType.UPDATE_SERVICE
|
|
37912
37923
|
);
|
|
37924
|
+
return null;
|
|
37913
37925
|
}
|
|
37914
37926
|
}
|
|
37915
37927
|
/**
|
|
@@ -37958,9 +37970,11 @@ ${heal.removed.join("\n")}`,
|
|
|
37958
37970
|
*
|
|
37959
37971
|
* NOT `sessions.message`, deliberately: a message would admit a turn in every
|
|
37960
37972
|
* conversation this machine holds, which is work and spend the user did not ask
|
|
37961
|
-
* for
|
|
37962
|
-
*
|
|
37963
|
-
* server moved
|
|
37973
|
+
* for - and since the operator's directive removed the restart-leg drains
|
|
37974
|
+
* (2026-09-29), a re-engaged session may legitimately have been mid-turn when
|
|
37975
|
+
* the server moved: a daemon bounce cuts no turns, and the session's own turn
|
|
37976
|
+
* kept running in its detached runtime. This call starts a runtime; it never
|
|
37977
|
+
* touches a turn.
|
|
37964
37978
|
*/
|
|
37965
37979
|
async engageSessionRuntime(backend, row) {
|
|
37966
37980
|
const relay = backend.getStreamRelay();
|
|
@@ -38419,8 +38433,7 @@ ${heal.removed.join("\n")}`,
|
|
|
38419
38433
|
const fleetBeforeInstall = rebuildRoute ? await this.readFleetSnapshot(backend) : null;
|
|
38420
38434
|
if (rebuildRoute && !await this.drainFleetForUpdate({
|
|
38421
38435
|
backend,
|
|
38422
|
-
command: freshPlan.updateCommand ?? null
|
|
38423
|
-
what: "install"
|
|
38436
|
+
command: freshPlan.updateCommand ?? null
|
|
38424
38437
|
})) {
|
|
38425
38438
|
return false;
|
|
38426
38439
|
}
|
|
@@ -38539,23 +38552,6 @@ ${heal.removed.join("\n")}`,
|
|
|
38539
38552
|
});
|
|
38540
38553
|
return true;
|
|
38541
38554
|
}
|
|
38542
|
-
if (!await this.drainFleetForUpdate({
|
|
38543
|
-
backend,
|
|
38544
|
-
command: freshPlan.updateCommand ?? null,
|
|
38545
|
-
what: "restart",
|
|
38546
|
-
/*
|
|
38547
|
-
* A press with nothing left to install has no install to report as
|
|
38548
|
-
* landed, and saying one was would be the one false thing in the
|
|
38549
|
-
* refusal.
|
|
38550
|
-
*/
|
|
38551
|
-
installLanded: !installAlreadyCurrent
|
|
38552
|
-
})) {
|
|
38553
|
-
logger.info(
|
|
38554
|
-
installAlreadyCurrent ? "Nothing was left to install; the restart was refused because the fleet did not drain. The daemon keeps serving the build it loaded." : "The install landed; the restart was refused because the fleet did not drain. The daemon keeps serving the build it loaded.",
|
|
38555
|
-
LogFileType.UPDATE_SERVICE
|
|
38556
|
-
);
|
|
38557
|
-
return false;
|
|
38558
|
-
}
|
|
38559
38555
|
logger.info(
|
|
38560
38556
|
"Restarting backend service onto the updated install...",
|
|
38561
38557
|
LogFileType.UPDATE_SERVICE
|
|
@@ -38619,13 +38615,12 @@ ${heal.removed.join("\n")}`,
|
|
|
38619
38615
|
fleetBeforeInstall,
|
|
38620
38616
|
fleetBeforeRestart
|
|
38621
38617
|
);
|
|
38622
|
-
|
|
38623
|
-
await this.reengageFleetAfterRestart(backend, reengageSnapshot);
|
|
38624
|
-
}
|
|
38618
|
+
const reengage = reengageSnapshot !== null ? await this.reengageFleetAfterRestart(backend, reengageSnapshot) : null;
|
|
38625
38619
|
this.sendToRenderer("backend-update-completed", {
|
|
38626
38620
|
installVersion: after,
|
|
38627
38621
|
runningVersion: reported,
|
|
38628
|
-
restarted: true
|
|
38622
|
+
restarted: true,
|
|
38623
|
+
sessionsOnOldBuild: reengage?.stillResident.length ?? null
|
|
38629
38624
|
});
|
|
38630
38625
|
return true;
|
|
38631
38626
|
}
|
|
@@ -38974,14 +38969,6 @@ ${reason}` : ""}`,
|
|
|
38974
38969
|
return true;
|
|
38975
38970
|
}
|
|
38976
38971
|
const fleetAfterPublish = await this.readFleetSnapshot(backend);
|
|
38977
|
-
if (!await this.drainFleetForUpdate({
|
|
38978
|
-
backend,
|
|
38979
|
-
command: null,
|
|
38980
|
-
what: "restart",
|
|
38981
|
-
installLanded: outcome.replaced
|
|
38982
|
-
})) {
|
|
38983
|
-
return false;
|
|
38984
|
-
}
|
|
38985
38972
|
logger.info(
|
|
38986
38973
|
"Restarting backend service onto the published environment...",
|
|
38987
38974
|
LogFileType.UPDATE_SERVICE
|
|
@@ -39070,13 +39057,12 @@ ${reason}` : ""}`,
|
|
|
39070
39057
|
fleetAfterPublish,
|
|
39071
39058
|
fleetBeforeRestart
|
|
39072
39059
|
);
|
|
39073
|
-
|
|
39074
|
-
await this.reengageFleetAfterRestart(backend, reengageSnapshot);
|
|
39075
|
-
}
|
|
39060
|
+
const reengage = reengageSnapshot !== null ? await this.reengageFleetAfterRestart(backend, reengageSnapshot) : null;
|
|
39076
39061
|
this.sendToRenderer("backend-update-completed", {
|
|
39077
39062
|
installVersion,
|
|
39078
39063
|
runningVersion: running,
|
|
39079
|
-
restarted: true
|
|
39064
|
+
restarted: true,
|
|
39065
|
+
sessionsOnOldBuild: reengage?.stillResident.length ?? null
|
|
39080
39066
|
});
|
|
39081
39067
|
return true;
|
|
39082
39068
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-
|
|
1
|
+
import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-cZFY6WR-.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-Dol6F2oY.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-DLc2GDBk.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
|
|
1
|
+
import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-Dol6F2oY.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
|
package/out/renderer/assets/{agent-details-page-D2QdVqJp.js → agent-details-page-DohUpAW5.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as F,j as e,c as G}from"./index-
|
|
1
|
+
import{r as F,j as e,c as G}from"./index-VKe88JN9.js";import{l as ue,c as he,u as xe,d as ge,g as je,i as fe,a as pe,b as ye,e as ve}from"./use-memberships-query-CSOmeH29.js";import{b as ne,a as I,y as we}from"./aida-control-DVTI-DZP.js";import{a9 as b,aa as K,a4 as Y,ab as B,ac as be,ad as Ce,ae as ie,e as re,a as Ne,af as Ae,B as ke,ag as Se,ah as De,ai as J,a3 as Ee,aj as Fe,ak as Te}from"./index-BhRzR-VW.js";import{c as _e,L as Pe,a as ee,B as l,S as z,b as oe,d as L,e as M,f as v,X as qe,g as w,A as te,h as se,i as ae}from"./textarea-BX6EeK34.js";import{f as W,u as Le,i as Me,a as ze,b as Ie,c as Ke,O as Be,H as Oe,A as Qe}from"./use-download-agent-mutation-BwZi8Zfx.js";import"./ui-preferences-store-DjUQd2R7.js";import"./error-boundary-DVk48CIF.js";import"./console-mirror-CG9RcMIb.js";import"./en-US-BkS8Ixxl.js";import"./book-open-BWKY7M9P.js";/**
|
|
2
2
|
* @license lucide-react v0.507.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r,j as e,c as L}from"./index-
|
|
1
|
+
import{r,j as e,c as L}from"./index-VKe88JN9.js";import{b as Ee,C as Ie,a as Le,i as he,y as pe,u as Fe,I as Me}from"./aida-control-DVTI-DZP.js";import{o as be,u as $e,a as De,C as Ue,b as Ye}from"./org-surface-gate-_kP5Dpsg.js";import{P as qe}from"./page-header-B3RA2AMB.js";import{c as Ve,g as V,B as N,f as m,A as Q,h as W,i as G,q as se,r as te,s as ne,t as ie,u as B,I as Be}from"./textarea-BX6EeK34.js";import{e as je,a9 as re,ag as He,ah as ge,aV as Qe,r as We,aa as Ge,aW as Ze,ab as Xe,aX as Je,a5 as Ke,aY as ea,aZ as aa}from"./index-BhRzR-VW.js";import{e as sa,f as ta,p as na,P as ia,b as ra,h as la}from"./use-memberships-query-CSOmeH29.js";import{O as oa,A as ca,f as da,H as ua,a as ma,b as ha,c as ga,d as ve,C as xa,u as fa,i as pa}from"./use-download-agent-mutation-BwZi8Zfx.js";import{R as ba}from"./radient-auth-buttons-gtgUk3ts.js";import"./ui-preferences-store-DjUQd2R7.js";import"./error-boundary-DVk48CIF.js";import"./console-mirror-CG9RcMIb.js";import"./en-US-BkS8Ixxl.js";import"./book-open-BWKY7M9P.js";/**
|
|
2
2
|
* @license lucide-react v0.507.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./legacy-agents-page-
|
|
2
|
-
import{u as O,a as Q,b as J,c as V,d as W,B as G,U as H,P as X,r as Y,_ as Z,e as $}from"./index-BsveCKct.js";import{j as e,r as n,c as w}from"./index-C17iOszj.js";import{u as ee,d as te,a as ae,b as se,c as z,e as L}from"./aida-control-BqbEHtVs.js";import{B as h}from"./textarea-CPyoWJfR.js";import"./ui-preferences-store-CyKvDymq.js";import"./error-boundary-X9vF0zez.js";import"./console-mirror-CqlxE8VR.js";const ne=n.lazy(()=>Z(()=>import("./legacy-agents-page-xSUV6wUg.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(t=>({default:t.LegacyAgentsPage}))),m="w-full rounded-md border border-control bg-surface px-3 py-2 text-body-sm text-ink";function T({profile:t,creating:E,onSaved:b}){const[j,r]=n.useState(!1),[v,c]=n.useState(E),[p,x]=n.useState(t?.name??""),[g,y]=n.useState(t?.kind??"role"),[P,d]=n.useState(t?.description??""),[N,u]=n.useState(t?.instructions??""),[_,D]=n.useState(t?.tools?.join(", ")??""),[I,k]=n.useState(t?.effort??"inherit"),[U,R]=n.useState(t?.delegate??!1),[f,a]=n.useState(!1),[o,l]=n.useState(null),i=n.useRef(null),C=$(),S=E||j,K=async s=>{if(s.preventDefault(),f)return;const M={kind:g,description:P,instructions:N,tools:_.split(",").map(q=>q.trim()).filter(Boolean),effort:I,delegate:U},A=JSON.stringify({name:p,fields:M,fresh:S});if(i.current&&i.current.body!==A){l("The previous save has not been confirmed. Retry it unchanged or reload the profile to reconcile before editing again.");return}i.current??={id:crypto.randomUUID(),body:A},a(!0),l(null);try{const q=await L({op:S?"profiles.create":"profiles.update",requestId:i.current.id,name:p,fields:M});i.current=null,c(!1),b(q.name)}catch(q){l(q instanceof Error?q.message:"Profile could not be saved.")}finally{a(!1)}},F=async()=>{if(!(!t||f)){a(!0),l(null);try{const s=await L({op:"profiles.install",name:t.name,requestId:crypto.randomUUID()});c(!1),r(!1),i.current=null,x(s.name),y(s.kind),d(s.description??""),u(s.instructions??""),D(s.tools?.join(", ")??""),k(s.effort??"inherit"),R(s.delegate??!1),b(s.name)}catch(s){l(s instanceof Error?s.message:"Profile could not be installed.")}finally{a(!1)}}};return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:S?j?"Extend agent":"Create agent":t?.name}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"Reusable instructions shared by agent commands, subagents and teams. Chats remain separate."})]}),t&&!S&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("span",{className:"text-meta text-ink-muted",children:[t.source==="builtin"?"Built-in":t.source==="installed"?"Installed":"Custom",t.divergent_fields?.length?" · Modified":""," ·"," ",t.kind]}),t.source==="builtin"?e.jsx(h,{variant:"outline",onClick:F,disabled:f,children:"Install"}):e.jsx(h,{variant:"outline",onClick:()=>c(!0),children:"Edit"}),e.jsx(h,{variant:"outline",onClick:()=>{r(!0),c(!0),x(""),i.current=null},children:"Extend"}),e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"agent",name:t.name}),C("/chat")},children:"New chat"})]}),o&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:o}),!v&&t?.source==="builtin"&&e.jsx("p",{id:"builtin-readonly",className:"text-body-sm text-ink-muted",children:"Built-in agents are read-only. Install this one to edit it, or Extend it to start a separate agent from its instructions."}),e.jsxs("form",{onSubmit:K,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:!v||f,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,value:p,disabled:!S,required:!0,"aria-describedby":t?.source==="builtin"?"builtin-readonly":void 0,onChange:s=>x(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Kind"}),e.jsxs("select",{className:m,value:g,disabled:!S,onChange:s=>y(s.target.value),children:[e.jsx("option",{value:"role",children:"Role"}),e.jsx("option",{value:"specialist",children:"Specialist"})]})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"When to use this agent"}),e.jsx("input",{className:m,value:P,maxLength:8e3,onChange:s=>d(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Instructions"}),e.jsx("textarea",{className:w(m,"min-h-52"),value:N,required:!0,maxLength:8e3,onChange:s=>u(s.target.value)})]}),g==="role"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Allowed tools"}),e.jsx("input",{className:m,value:_,onChange:s=>D(s.target.value),placeholder:"All tools when empty; otherwise comma-separated names"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Effort tier"}),e.jsx("input",{className:m,value:I,onChange:s=>k(s.target.value),"aria-describedby":"effort-help"}),e.jsx("span",{id:"effort-help",className:"text-meta text-ink-muted",children:"Use inherit, or a tier configured in backend settings. Unsupported tiers are rejected before saving."})]}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 text-body-sm",children:[e.jsx("input",{type:"checkbox",checked:U,onChange:s=>R(s.target.checked)}),"May delegate to subagents"]})]})]}),v&&e.jsx(h,{type:"submit",disabled:f,children:f?"Saving…":S?"Create agent":"Save changes"})]}),!v&&t?.packaged_instructions&&t.divergent_fields?.length?e.jsxs("details",{className:"text-body-sm",children:[e.jsx("summary",{children:"Compare packaged instructions"}),e.jsx("pre",{className:"mt-2 whitespace-pre-wrap text-body-sm text-ink-muted",children:t.packaged_instructions})]}):null]})}function B({team:t,onSaved:E}){const[b,j]=n.useState(t?.name??""),[r,v]=n.useState(t?.description??""),[c,p]=n.useState(t?.manager??"manager"),[x,g]=n.useState((t?.members??[]).map(a=>({...a,key:crypto.randomUUID()}))),[y,P]=n.useState(t?.instructions??""),[d,N]=n.useState(t?.project??""),[u,_]=n.useState(!1),[D,I]=n.useState(null),k=n.useRef(null),U=$(),R=async a=>{if(a.preventDefault(),u)return;const o={name:b,description:r,manager:c,members:x.map(({key:i,...C})=>C),instructions:y,project:d},l=JSON.stringify(o);if(k.current&&k.current.body!==l){I("The previous save has not been confirmed. Reload the team before changing that request.");return}k.current??={id:crypto.randomUUID(),body:l},_(!0),I(null);try{const i=t?await L({op:"teams.update",name:t.name,requestId:k.current.id,fields:o}):await L({op:"teams.create",requestId:k.current.id,fields:o});k.current=null,E(i.name)}catch(i){I(i instanceof Error?i.message:"Team could not be saved.")}finally{_(!1)}},f=(a,o)=>g(l=>l.map((i,C)=>C===a?{...i,...o}:i));return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:t?t.name:"Create team"}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"The manager leads the chat. Members retain their own instructions and start only when delegated work."})]}),t&&e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"team",name:t.name}),U("/chat")},children:"New team chat"}),D&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:D}),e.jsxs("form",{onSubmit:R,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:u,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,required:!0,maxLength:64,value:b,onChange:a=>j(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Description"}),e.jsx("input",{className:m,value:r,onChange:a=>v(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Manager agent"}),e.jsx("input",{className:m,required:!0,value:c,onChange:a=>p(a.target.value)})]}),e.jsxs("section",{className:"space-y-2",children:[e.jsx("h2",{className:"text-heading",children:"Members"}),x.map((a,o)=>e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("input",{className:w(m,"w-48 flex-1"),"aria-label":`Member ${o+1} name`,required:!0,value:a.role,onChange:l=>f(o,{role:l.target.value})}),e.jsxs("select",{className:w(m,"w-32"),"aria-label":`Member ${o+1} kind`,value:a.kind,onChange:l=>f(o,{kind:l.target.value}),children:[e.jsx("option",{value:"agent",children:"Agent"}),e.jsx("option",{value:"team",children:"Nested team"})]}),e.jsx("input",{className:w(m,"w-20"),"aria-label":`Member ${o+1} count`,type:"number",min:1,max:16,value:a.count,onChange:l=>f(o,{count:Number(l.target.value)})}),e.jsx(h,{type:"button",variant:"ghost",onClick:()=>g(l=>l.filter((i,C)=>C!==o)),children:"Remove"})]},a.key)),e.jsx(h,{type:"button",variant:"outline",onClick:()=>g(a=>[...a,{role:"",count:1,kind:"agent",key:crypto.randomUUID()}]),children:"Add member"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Collaboration instructions"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:y,onChange:a=>P(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Project brief"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:d,onChange:a=>N(a.target.value)})]})]}),e.jsx(h,{type:"submit",disabled:u,children:u?"Saving…":t?"Save team":"Create team"})]})]})}function me(){const t=O(),{agentId:E}=Q(),[b,j]=J(),r=b.get("kind")==="team"||b.get("create")==="team",v=b.has("create"),c=b.get("name"),p=ee(),x=te(p.data,r?"team_catalogue":"profile_catalogue"),g=V(x&&!r),y=W(x&&r),P=ae(),d=se({queryKey:["desktop",r?"team":"profile",c],enabled:x&&!!c&&!v,queryFn:()=>L({op:r?"teams.get":"profiles.get",name:c??""}),retry:!1}),N=async u=>{await P.invalidateQueries({queryKey:["desktop"]}),j({kind:r?"team":"agent",name:u})};return E?e.jsx(n.Suspense,{fallback:e.jsx("p",{className:"p-6 text-body",children:"Loading saved agent…"}),children:e.jsx(ne,{})}):e.jsxs("div",{className:"flex h-full min-h-0 bg-canvas text-ink",children:[e.jsxs("aside",{ref:t,className:"flex w-64 shrink-0 flex-col gap-4 border-r border-hairline bg-surface p-4",children:[e.jsx("h1",{className:"text-heading",children:"Agents and teams"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(h,{variant:r?"ghost":"outline",onClick:()=>j({kind:"agent"}),children:[e.jsx(G,{className:"size-4"}),"Agents"]}),e.jsxs(h,{variant:r?"outline":"ghost",onClick:()=>j({kind:"team"}),children:[e.jsx(H,{className:"size-4"}),"Teams"]})]}),e.jsxs(h,{variant:"outline",disabled:!x,onClick:()=>j({create:r?"team":"agent"}),children:[e.jsx(X,{className:"size-4"}),r?"Create team":"Create agent"]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(r?y.data:g.data)?.map(u=>e.jsx("button",{type:"button",className:w("flex h-8 w-full items-center rounded-md px-2 text-left text-body-sm hover:bg-row-hover",u.name===c&&Y),onClick:()=>j({kind:r?"team":"agent",name:u.name}),children:e.jsx("span",{className:"truncate",children:u.name})},u.name))})]}),e.jsx("main",{className:"min-w-0 flex-1 overflow-auto p-6",children:x?g.error||y.error||d.error?e.jsxs("div",{role:"alert",children:[e.jsx("p",{className:"text-danger",children:g.error?.message||y.error?.message||d.error?.message}),e.jsx(h,{variant:"outline",onClick:()=>{g.refetch(),y.refetch(),d.refetch()},children:"Retry"})]}):v?r?e.jsx(B,{onSaved:N},"create-team"):e.jsx(T,{creating:!0,onSaved:N},"create-agent"):c&&d.isLoading?e.jsx("p",{"aria-live":"polite",children:"Loading details…"}):c&&d.data?r?e.jsx(B,{team:d.data,onSaved:N},c):e.jsx(T,{profile:d.data,creating:!1,onSaved:N},`${c}:${d.data.source}`):e.jsxs("div",{children:[e.jsx("h2",{className:"text-title",children:r?"Reusable teams":"Reusable agents"}),e.jsx("p",{className:"mt-2 text-body text-ink-muted",children:"Select a definition to view or edit it. A new chat does not change its definition."})]}):e.jsxs("div",{"aria-live":"polite",className:"space-y-3 text-body-sm",children:[e.jsx("p",{children:p.isLoading?"Connecting to the backend…":p.error?p.error.message:"Update the backend to manage reusable agents and teams. Saved chats are unchanged."}),e.jsx(h,{variant:"outline",onClick:()=>void p.refetch(),children:"Retry connection"})]})})]})}export{me as AgentsPage};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./legacy-agents-page-BR_oPhtA.js","./index-VKe88JN9.js","./index-FjyWTJXV.css","./index-BhRzR-VW.js","./aida-control-DVTI-DZP.js","./ui-preferences-store-DjUQd2R7.js","./textarea-BX6EeK34.js","./error-boundary-DVk48CIF.js","./console-mirror-CG9RcMIb.js","./console-mirror-DOrYoP_4.css","./index-CSPo12AE.css","./page-header-B3RA2AMB.js","./settings-section-D3WEX0WK.js","./org-surface-gate-_kP5Dpsg.js","./use-memberships-query-CSOmeH29.js","./radient-auth-buttons-gtgUk3ts.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{u as O,a as Q,b as J,c as V,d as W,B as G,U as H,P as X,r as Y,_ as Z,e as $}from"./index-BhRzR-VW.js";import{j as e,r as n,c as w}from"./index-VKe88JN9.js";import{u as ee,d as te,a as ae,b as se,c as z,e as L}from"./aida-control-DVTI-DZP.js";import{B as h}from"./textarea-BX6EeK34.js";import"./ui-preferences-store-DjUQd2R7.js";import"./error-boundary-DVk48CIF.js";import"./console-mirror-CG9RcMIb.js";const ne=n.lazy(()=>Z(()=>import("./legacy-agents-page-BR_oPhtA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(t=>({default:t.LegacyAgentsPage}))),m="w-full rounded-md border border-control bg-surface px-3 py-2 text-body-sm text-ink";function T({profile:t,creating:E,onSaved:b}){const[j,r]=n.useState(!1),[v,c]=n.useState(E),[p,x]=n.useState(t?.name??""),[g,y]=n.useState(t?.kind??"role"),[P,d]=n.useState(t?.description??""),[N,u]=n.useState(t?.instructions??""),[_,D]=n.useState(t?.tools?.join(", ")??""),[I,k]=n.useState(t?.effort??"inherit"),[U,R]=n.useState(t?.delegate??!1),[f,a]=n.useState(!1),[o,l]=n.useState(null),i=n.useRef(null),C=$(),S=E||j,K=async s=>{if(s.preventDefault(),f)return;const M={kind:g,description:P,instructions:N,tools:_.split(",").map(q=>q.trim()).filter(Boolean),effort:I,delegate:U},A=JSON.stringify({name:p,fields:M,fresh:S});if(i.current&&i.current.body!==A){l("The previous save has not been confirmed. Retry it unchanged or reload the profile to reconcile before editing again.");return}i.current??={id:crypto.randomUUID(),body:A},a(!0),l(null);try{const q=await L({op:S?"profiles.create":"profiles.update",requestId:i.current.id,name:p,fields:M});i.current=null,c(!1),b(q.name)}catch(q){l(q instanceof Error?q.message:"Profile could not be saved.")}finally{a(!1)}},F=async()=>{if(!(!t||f)){a(!0),l(null);try{const s=await L({op:"profiles.install",name:t.name,requestId:crypto.randomUUID()});c(!1),r(!1),i.current=null,x(s.name),y(s.kind),d(s.description??""),u(s.instructions??""),D(s.tools?.join(", ")??""),k(s.effort??"inherit"),R(s.delegate??!1),b(s.name)}catch(s){l(s instanceof Error?s.message:"Profile could not be installed.")}finally{a(!1)}}};return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:S?j?"Extend agent":"Create agent":t?.name}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"Reusable instructions shared by agent commands, subagents and teams. Chats remain separate."})]}),t&&!S&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("span",{className:"text-meta text-ink-muted",children:[t.source==="builtin"?"Built-in":t.source==="installed"?"Installed":"Custom",t.divergent_fields?.length?" · Modified":""," ·"," ",t.kind]}),t.source==="builtin"?e.jsx(h,{variant:"outline",onClick:F,disabled:f,children:"Install"}):e.jsx(h,{variant:"outline",onClick:()=>c(!0),children:"Edit"}),e.jsx(h,{variant:"outline",onClick:()=>{r(!0),c(!0),x(""),i.current=null},children:"Extend"}),e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"agent",name:t.name}),C("/chat")},children:"New chat"})]}),o&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:o}),!v&&t?.source==="builtin"&&e.jsx("p",{id:"builtin-readonly",className:"text-body-sm text-ink-muted",children:"Built-in agents are read-only. Install this one to edit it, or Extend it to start a separate agent from its instructions."}),e.jsxs("form",{onSubmit:K,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:!v||f,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,value:p,disabled:!S,required:!0,"aria-describedby":t?.source==="builtin"?"builtin-readonly":void 0,onChange:s=>x(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Kind"}),e.jsxs("select",{className:m,value:g,disabled:!S,onChange:s=>y(s.target.value),children:[e.jsx("option",{value:"role",children:"Role"}),e.jsx("option",{value:"specialist",children:"Specialist"})]})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"When to use this agent"}),e.jsx("input",{className:m,value:P,maxLength:8e3,onChange:s=>d(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Instructions"}),e.jsx("textarea",{className:w(m,"min-h-52"),value:N,required:!0,maxLength:8e3,onChange:s=>u(s.target.value)})]}),g==="role"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Allowed tools"}),e.jsx("input",{className:m,value:_,onChange:s=>D(s.target.value),placeholder:"All tools when empty; otherwise comma-separated names"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Effort tier"}),e.jsx("input",{className:m,value:I,onChange:s=>k(s.target.value),"aria-describedby":"effort-help"}),e.jsx("span",{id:"effort-help",className:"text-meta text-ink-muted",children:"Use inherit, or a tier configured in backend settings. Unsupported tiers are rejected before saving."})]}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 text-body-sm",children:[e.jsx("input",{type:"checkbox",checked:U,onChange:s=>R(s.target.checked)}),"May delegate to subagents"]})]})]}),v&&e.jsx(h,{type:"submit",disabled:f,children:f?"Saving…":S?"Create agent":"Save changes"})]}),!v&&t?.packaged_instructions&&t.divergent_fields?.length?e.jsxs("details",{className:"text-body-sm",children:[e.jsx("summary",{children:"Compare packaged instructions"}),e.jsx("pre",{className:"mt-2 whitespace-pre-wrap text-body-sm text-ink-muted",children:t.packaged_instructions})]}):null]})}function B({team:t,onSaved:E}){const[b,j]=n.useState(t?.name??""),[r,v]=n.useState(t?.description??""),[c,p]=n.useState(t?.manager??"manager"),[x,g]=n.useState((t?.members??[]).map(a=>({...a,key:crypto.randomUUID()}))),[y,P]=n.useState(t?.instructions??""),[d,N]=n.useState(t?.project??""),[u,_]=n.useState(!1),[D,I]=n.useState(null),k=n.useRef(null),U=$(),R=async a=>{if(a.preventDefault(),u)return;const o={name:b,description:r,manager:c,members:x.map(({key:i,...C})=>C),instructions:y,project:d},l=JSON.stringify(o);if(k.current&&k.current.body!==l){I("The previous save has not been confirmed. Reload the team before changing that request.");return}k.current??={id:crypto.randomUUID(),body:l},_(!0),I(null);try{const i=t?await L({op:"teams.update",name:t.name,requestId:k.current.id,fields:o}):await L({op:"teams.create",requestId:k.current.id,fields:o});k.current=null,E(i.name)}catch(i){I(i instanceof Error?i.message:"Team could not be saved.")}finally{_(!1)}},f=(a,o)=>g(l=>l.map((i,C)=>C===a?{...i,...o}:i));return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:t?t.name:"Create team"}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"The manager leads the chat. Members retain their own instructions and start only when delegated work."})]}),t&&e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"team",name:t.name}),U("/chat")},children:"New team chat"}),D&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:D}),e.jsxs("form",{onSubmit:R,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:u,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,required:!0,maxLength:64,value:b,onChange:a=>j(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Description"}),e.jsx("input",{className:m,value:r,onChange:a=>v(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Manager agent"}),e.jsx("input",{className:m,required:!0,value:c,onChange:a=>p(a.target.value)})]}),e.jsxs("section",{className:"space-y-2",children:[e.jsx("h2",{className:"text-heading",children:"Members"}),x.map((a,o)=>e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("input",{className:w(m,"w-48 flex-1"),"aria-label":`Member ${o+1} name`,required:!0,value:a.role,onChange:l=>f(o,{role:l.target.value})}),e.jsxs("select",{className:w(m,"w-32"),"aria-label":`Member ${o+1} kind`,value:a.kind,onChange:l=>f(o,{kind:l.target.value}),children:[e.jsx("option",{value:"agent",children:"Agent"}),e.jsx("option",{value:"team",children:"Nested team"})]}),e.jsx("input",{className:w(m,"w-20"),"aria-label":`Member ${o+1} count`,type:"number",min:1,max:16,value:a.count,onChange:l=>f(o,{count:Number(l.target.value)})}),e.jsx(h,{type:"button",variant:"ghost",onClick:()=>g(l=>l.filter((i,C)=>C!==o)),children:"Remove"})]},a.key)),e.jsx(h,{type:"button",variant:"outline",onClick:()=>g(a=>[...a,{role:"",count:1,kind:"agent",key:crypto.randomUUID()}]),children:"Add member"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Collaboration instructions"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:y,onChange:a=>P(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Project brief"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:d,onChange:a=>N(a.target.value)})]})]}),e.jsx(h,{type:"submit",disabled:u,children:u?"Saving…":t?"Save team":"Create team"})]})]})}function me(){const t=O(),{agentId:E}=Q(),[b,j]=J(),r=b.get("kind")==="team"||b.get("create")==="team",v=b.has("create"),c=b.get("name"),p=ee(),x=te(p.data,r?"team_catalogue":"profile_catalogue"),g=V(x&&!r),y=W(x&&r),P=ae(),d=se({queryKey:["desktop",r?"team":"profile",c],enabled:x&&!!c&&!v,queryFn:()=>L({op:r?"teams.get":"profiles.get",name:c??""}),retry:!1}),N=async u=>{await P.invalidateQueries({queryKey:["desktop"]}),j({kind:r?"team":"agent",name:u})};return E?e.jsx(n.Suspense,{fallback:e.jsx("p",{className:"p-6 text-body",children:"Loading saved agent…"}),children:e.jsx(ne,{})}):e.jsxs("div",{className:"flex h-full min-h-0 bg-canvas text-ink",children:[e.jsxs("aside",{ref:t,className:"flex w-64 shrink-0 flex-col gap-4 border-r border-hairline bg-surface p-4",children:[e.jsx("h1",{className:"text-heading",children:"Agents and teams"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(h,{variant:r?"ghost":"outline",onClick:()=>j({kind:"agent"}),children:[e.jsx(G,{className:"size-4"}),"Agents"]}),e.jsxs(h,{variant:r?"outline":"ghost",onClick:()=>j({kind:"team"}),children:[e.jsx(H,{className:"size-4"}),"Teams"]})]}),e.jsxs(h,{variant:"outline",disabled:!x,onClick:()=>j({create:r?"team":"agent"}),children:[e.jsx(X,{className:"size-4"}),r?"Create team":"Create agent"]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(r?y.data:g.data)?.map(u=>e.jsx("button",{type:"button",className:w("flex h-8 w-full items-center rounded-md px-2 text-left text-body-sm hover:bg-row-hover",u.name===c&&Y),onClick:()=>j({kind:r?"team":"agent",name:u.name}),children:e.jsx("span",{className:"truncate",children:u.name})},u.name))})]}),e.jsx("main",{className:"min-w-0 flex-1 overflow-auto p-6",children:x?g.error||y.error||d.error?e.jsxs("div",{role:"alert",children:[e.jsx("p",{className:"text-danger",children:g.error?.message||y.error?.message||d.error?.message}),e.jsx(h,{variant:"outline",onClick:()=>{g.refetch(),y.refetch(),d.refetch()},children:"Retry"})]}):v?r?e.jsx(B,{onSaved:N},"create-team"):e.jsx(T,{creating:!0,onSaved:N},"create-agent"):c&&d.isLoading?e.jsx("p",{"aria-live":"polite",children:"Loading details…"}):c&&d.data?r?e.jsx(B,{team:d.data,onSaved:N},c):e.jsx(T,{profile:d.data,creating:!1,onSaved:N},`${c}:${d.data.source}`):e.jsxs("div",{children:[e.jsx("h2",{className:"text-title",children:r?"Reusable teams":"Reusable agents"}),e.jsx("p",{className:"mt-2 text-body text-ink-muted",children:"Select a definition to view or edit it. A new chat does not change its definition."})]}):e.jsxs("div",{"aria-live":"polite",className:"space-y-3 text-body-sm",children:[e.jsx("p",{children:p.isLoading?"Connecting to the backend…":p.error?p.error.message:"Update the backend to manage reusable agents and teams. Saved chats are unchanged."}),e.jsx(h,{variant:"outline",onClick:()=>void p.refetch(),children:"Retry connection"})]})})]})}export{me as AgentsPage};
|