pilotswarm 0.5.46 → 0.5.47
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/mcp/README.md +1 -0
- package/mcp/dist/src/tools/providers.d.ts.map +1 -1
- package/mcp/dist/src/tools/providers.js +15 -3
- package/mcp/dist/src/tools/providers.js.map +1 -1
- package/package.json +2 -2
- package/tui/src/app.js +7 -11
- package/tui/src/node-sdk-transport.js +16 -0
- package/ui/core/src/controller.js +265 -68
- package/ui/core/src/history.js +37 -0
- package/ui/core/src/reducer.js +51 -4
- package/ui/core/src/selectors.js +63 -15
- package/ui/core/src/state.js +11 -0
- package/ui/react/src/components.js +1 -0
- package/ui/react/src/web-app.js +611 -103
- package/web/dist/assets/{abnfDiagram-VRR7QNED-GXM5pEfT.js → abnfDiagram-VRR7QNED-VPL8m_9W.js} +1 -1
- package/web/dist/assets/{arc-D52-xt6J.js → arc-T5I3-c1B.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-Bxh49GyJ.js → architectureDiagram-ZJ3FMSHR-DEP70bg6.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-D8LSE94K.js → blockDiagram-677ZJIJ3-CvBu1MbO.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-Dcs1NVIx.js → c4Diagram-LMCZKHZV-B5qwF4gm.js} +1 -1
- package/web/dist/assets/channel-D5LojeMw.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-Dy3zu7gI.js → chunk-2Q5K7J3B-zVW8dS7X.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-5v78VX3T.js → chunk-32BRIVSS-DWctxZZS.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-DUJMCfdj.js → chunk-5VM5RSS4-Bq7_Vmf9.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-DYyT1So9.js → chunk-EX3LRPZG-B8CFB3v-.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-Buzzx5R2.js → chunk-JWPE2WC7-B7gLPjgZ.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-B8fOWRD7.js → chunk-MOJQB5TN-B2x6q12r.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F-Bp04YO26.js → chunk-RYQCIY6F-XorU9Stx.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-Gw6h8gPE.js → chunk-V7JOEXUC-CsLa6pw5.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-ASf4dPE-.js → chunk-VR4S4FIN-BBv9mwmj.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-C4B-MNNk.js → chunk-XXDRQBXY-Cjm4mm6l.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-C5edc5Or.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-C5edc5Or.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-C0S415ey.js → cose-bilkent-JH36ORCC-Zw9ZQbVl.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-LWUlL1XB.js → cynefin-VYW2F7L2-BYnR9YLM.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-ClnNDuqy.js → cynefinDiagram-TSTJHNR4-Cx8L0dOv.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-CRMTDGPv.js → dagre-VKFMJZFB-7GaqVcqz.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-Cjt1nFI8.js → diagram-FQU43EPY-BWSRPJvU.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-DynrWO-8.js → diagram-G47NLZAW-BELuAE1e.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-CkEgxg4T.js → diagram-NH7WQ7WH-DGXhPpri.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-DzB43wzH.js → diagram-OA4YK3LP-DV8HqN0T.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-DqxH3-sW.js → diagram-WEI45ONY-Clv1X3ZL.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-5NxDrqIa.js → ebnfDiagram-CCIWWBDH-TpQx36oi.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-OfiKzPj4.js → erDiagram-Q63AITRT-DVVWd00c.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-DsqfPM3s.js → flowDiagram-23GEKE2U-Cdz_8_Dw.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-N48fLign.js → ganttDiagram-NO4QXBWP-zlco-o7u.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-rn1cXRYh.js → gitGraphDiagram-IHSO6WYX-CfAZW1En.js} +1 -1
- package/web/dist/assets/index-CMtzFJre.css +1 -0
- package/web/dist/assets/{index-BHp6FirC.js → index-tQXCQojP.js} +5 -5
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-CjJ3TLmy.js → infoDiagram-FWYZ7A6U-0R-8efwI.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-DvCylaIQ.js → ishikawaDiagram-FXEZZL3T-lPpoXGlp.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-B_Ethynx.js → journeyDiagram-5HDEW3XC-D05vSVqu.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-BlQuhDqn.js → kanban-definition-HUTT4EX6-ClaDdESv.js} +1 -1
- package/web/dist/assets/{linear-DIwvxXrN.js → linear-CUnhHMvY.js} +1 -1
- package/web/dist/assets/{mermaid.core-CfAsl9Pc.js → mermaid.core-DaYS-X8Y.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-BxJep4HE.js → mindmap-definition-LN4V7U3C-N480VHds.js} +1 -1
- package/web/dist/assets/{papaparse.min-BjO79nbw.js → papaparse.min-CNTcNgd8.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-yceXoFi0.js → pegDiagram-2B236MQR-CVWyJ5ck.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-BNBzpT5B.js → pieDiagram-ENE6RG2P-UR9uohPf.js} +1 -1
- package/web/dist/assets/pilotswarm-BG6hk0oE.js +97 -0
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-DCg1DTax.js → quadrantDiagram-ABIIQ3AL-D2SIOetn.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-DQdy8xST.js → railroadDiagram-RFXS5EU6-OgN6qgOU.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-N8PYSqS8.js → requirementDiagram-TGXJPOKE-BSUURBBz.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-DK9WhfTA.js → sankeyDiagram-HTMAVEWB-BBZhmSBZ.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-DEpALkWi.js → sequenceDiagram-DBY2YBRQ-C10IDNdW.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-CKOEPe9x.js → sizeCapture-X5ZJPWSS-B9787MHa.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-Dwwyy0hH.js → stateDiagram-2N3HPSRC-BmSBo7es.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BqpsfoJI.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-hDoJpKdQ.js → swimlanes-5IMT3BWC-DOXpv_KQ.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-k8WG_bWt.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-CPXnQ7LH.js → timeline-definition-FHXFAJF6-SjhGfPdI.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-CYsOwGTT.js → vennDiagram-L72KCM5P-BiujYen6.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-DKh__oEb.js → wardleyDiagram-EHGQE667-6nLXBvwc.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-Bws7l8k9.js → xychartDiagram-FW5EYKEG-Di7ioTvW.js} +1 -1
- package/web/dist/index.html +3 -3
- package/web/runtime.js +12 -0
- package/web/dist/assets/channel-DE0-pG_Z.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-B0o6by6m.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-B0o6by6m.js +0 -1
- package/web/dist/assets/index-DEymVbi5.css +0 -1
- package/web/dist/assets/pilotswarm-DewDyJhu.js +0 -97
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-CRKYt8KU.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-DtnCdOQI.js +0 -8
package/mcp/README.md
CHANGED
|
@@ -521,6 +521,7 @@ metadata is owner/admin only.
|
|
|
521
521
|
| `get_provider_usage_grid` | Fixed day/week/month usage and quota cells for every visible provider/model |
|
|
522
522
|
| `get_provider_usage` | Historical totals, daily chart data, and bounded breakdowns (up to 365 days) |
|
|
523
523
|
| `create_my_provider` / `delete_my_provider` | Create/delete the caller's personal provider instance |
|
|
524
|
+
| `manage_provider` (`update_credential`) | Replace the caller's personal provider credential without replacing the provider |
|
|
524
525
|
| `create_provider` / `delete_provider` | Admin shared-provider lifecycle |
|
|
525
526
|
| `set_model_default` | User or cluster default routing |
|
|
526
527
|
| `set_system_model_default` / `set_system_session_model` | Admin system routing and per-agent overrides |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,QA0Y1E"}
|
|
@@ -48,25 +48,37 @@ export function registerProviderTools(server, ctx) {
|
|
|
48
48
|
}, withToolErrors(async () => jsonResult(await ctx.mgmt.getProviderUsageGrid(viewer))));
|
|
49
49
|
server.registerTool("manage_provider", {
|
|
50
50
|
title: "Manage Provider",
|
|
51
|
-
description: "Create or delete a provider.\n"
|
|
51
|
+
description: "Create, update the credential on, or delete a provider.\n"
|
|
52
52
|
+ " create — needs a type and the credentials that type requires; the name is cluster-unique and "
|
|
53
53
|
+ "cannot be changed afterwards\n"
|
|
54
|
+
+ " update_credential — replaces the key on a provider (mine:true = your own; mine:false = a "
|
|
55
|
+
+ "shared one, admins only) and changes "
|
|
56
|
+
+ "nothing else: the name, type, base URL, defaults, system-session routing and usage history all "
|
|
57
|
+
+ "stay. Use this to rotate an expired key rather than deleting and re-creating.\n"
|
|
54
58
|
+ " delete — sessions naming it are not moved anywhere: they wait until the name exists again, and "
|
|
55
59
|
+ "waitingSessions says how many. Re-creating the name is the intended rescue.\n"
|
|
56
60
|
+ "mine:true makes (or removes) a provider of your own, on your own credentials, that nobody else "
|
|
57
61
|
+ "sees — anyone may. mine:false is a shared provider the whole cluster may spend from — admins only.",
|
|
58
62
|
inputSchema: {
|
|
59
|
-
action: z.enum(["create", "delete", "clear_routing"]).describe("The operation to perform"),
|
|
63
|
+
action: z.enum(["create", "update_credential", "delete", "clear_routing"]).describe("The operation to perform"),
|
|
60
64
|
name: z.string().min(1).describe("The provider name — letters, numbers, dot, dash and underscore, never a colon"),
|
|
61
65
|
mine: z.boolean().describe("true = your own personal provider; false = a shared one everyone may use (admin)"),
|
|
62
66
|
type: z.string().min(1).optional().describe("Provider type from the deployment's model-providers file (create) — the typeId list_providers shows on existing rows"),
|
|
63
|
-
credentials: z.record(z.string(), z.any()).optional().describe("The credentials that type requires, e.g. {\"apiKey\": \"…\"} (create)"),
|
|
67
|
+
credentials: z.record(z.string(), z.any()).optional().describe("The credentials that type requires, e.g. {\"apiKey\": \"…\"} (create, update_credential)"),
|
|
64
68
|
base_url: z.string().optional().describe("Endpoint to use instead of the type's own (create)"),
|
|
65
69
|
},
|
|
66
70
|
}, withToolErrors(async ({ action, name, mine, type, credentials, base_url }) => {
|
|
67
71
|
if (action === "clear_routing") {
|
|
68
72
|
return jsonResult(await ctx.mgmt.clearProviderRoutingDependencies(viewer, name));
|
|
69
73
|
}
|
|
74
|
+
if (action === "update_credential") {
|
|
75
|
+
// Same mine:true/false split as delete just below: your own
|
|
76
|
+
// provider, or the cluster's. The shared one is admin-only and
|
|
77
|
+
// refused in SQL, not here.
|
|
78
|
+
return jsonResult(mine
|
|
79
|
+
? await ctx.mgmt.updateMyProviderCredential(viewer, { name, credentials: credentials ?? null })
|
|
80
|
+
: await ctx.mgmt.updateSharedProviderCredential(viewer, { name, credentials: credentials ?? null }));
|
|
81
|
+
}
|
|
70
82
|
if (action === "delete") {
|
|
71
83
|
return jsonResult(mine
|
|
72
84
|
? await ctx.mgmt.deleteMyProvider(viewer, name)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pilotswarm",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.47",
|
|
4
4
|
"description": "PilotSwarm application package: terminal UI, browser portal + Web API server, and MCP server — one install, three bins.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"ink": "^6.8.0",
|
|
82
82
|
"jose": "^6.2.2",
|
|
83
83
|
"mermaid": "^11.16.0",
|
|
84
|
-
"pilotswarm-sdk": "0.5.
|
|
84
|
+
"pilotswarm-sdk": "0.5.47",
|
|
85
85
|
"react": "^19.2.4",
|
|
86
86
|
"react-dom": "^19.2.4",
|
|
87
87
|
"ws": "^8.18.2"
|
package/tui/src/app.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { useInput, useStdin } from "ink";
|
|
3
3
|
import { UiPlatformProvider, SharedPilotSwarmApp } from "pilotswarm/ui-react";
|
|
4
|
-
import { UI_COMMANDS, selectNodeMapView } from "pilotswarm/ui-core";
|
|
4
|
+
import { UI_COMMANDS, selectAdminConsole, selectNodeMapView } from "pilotswarm/ui-core";
|
|
5
5
|
import { PILOTSWARM_CLI_VERSION_LABEL } from "./version.js";
|
|
6
6
|
|
|
7
7
|
const MOUSE_INPUT_PATTERN = /\u001b\[<(\d+);(\d+);(\d+)([mM])/gu;
|
|
@@ -415,6 +415,12 @@ export function PilotSwarmTuiApp({ controller, platform, onRequestExit }) {
|
|
|
415
415
|
controller.beginAdminCreateGithubProvider();
|
|
416
416
|
return;
|
|
417
417
|
}
|
|
418
|
+
if (plainShortcut && input === "U" && providerPage === "mine") {
|
|
419
|
+
const view = selectAdminConsole(controller.getState()).modelProviders;
|
|
420
|
+
const provider = view.myProviders.find((row) => row.name === view.selection?.providerName);
|
|
421
|
+
controller.beginAdminUpdateProviderCredential(provider);
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
418
424
|
if (plainShortcut && input === "E" && providerPage === "shared" && adminState?.profile?.isAdmin) {
|
|
419
425
|
controller.beginAdminCreateProvider({ shared: true });
|
|
420
426
|
return;
|
|
@@ -566,16 +572,6 @@ export function PilotSwarmTuiApp({ controller, platform, onRequestExit }) {
|
|
|
566
572
|
controller.handleCommand(UI_COMMANDS.MODAL_PANE_NEXT).catch(() => {});
|
|
567
573
|
return;
|
|
568
574
|
}
|
|
569
|
-
// Agent-picker disclosure. The block this sits in ends in a
|
|
570
|
-
// `return`, so arrows never reach the pane handler below — the
|
|
571
|
-
// picker's "Enter or → to open" hint named a key the TUI dropped
|
|
572
|
-
// on the floor.
|
|
573
|
-
if (modal.type === "sessionAgentPicker" && (key.leftArrow || key.rightArrow)) {
|
|
574
|
-
controller.handleCommand(
|
|
575
|
-
key.rightArrow ? UI_COMMANDS.MODAL_PANE_NEXT : UI_COMMANDS.MODAL_PANE_PREV,
|
|
576
|
-
).catch(() => {});
|
|
577
|
-
return;
|
|
578
|
-
}
|
|
579
575
|
if (modal.type === "sessionOwnerFilter") {
|
|
580
576
|
if (input === " ") {
|
|
581
577
|
controller.handleCommand(UI_COMMANDS.MODAL_CONFIRM).catch(() => {});
|
|
@@ -674,6 +674,13 @@ export class NodeSdkTransport {
|
|
|
674
674
|
if (!pkg.enabled || !pkg.active) continue;
|
|
675
675
|
const ownerKey = principalKey(pkg.owner);
|
|
676
676
|
const mine = pkg.scope === "user" && (viewerKey === null || ownerKey === viewerKey);
|
|
677
|
+
// Someone else's user-scoped package is not creatable by anyone
|
|
678
|
+
// but its owner — not even an admin. The catalog hands admins
|
|
679
|
+
// every user's packages so the Agent Package MANAGER can
|
|
680
|
+
// administer them; the picker is a "what can I start" list, and
|
|
681
|
+
// listing agents an admin should not instantiate (and naming
|
|
682
|
+
// whose they are) belongs to the manager, not here.
|
|
683
|
+
if (pkg.scope === "user" && !mine) continue;
|
|
677
684
|
const agents = Array.isArray(pkg.active.manifest?.agents) ? pkg.active.manifest.agents : [];
|
|
678
685
|
for (const agent of agents) {
|
|
679
686
|
if (!agent?.name) continue;
|
|
@@ -1558,6 +1565,15 @@ export class NodeSdkTransport {
|
|
|
1558
1565
|
return this.mgmt.createMyProvider(await this._modelProviderViewer(), input || {});
|
|
1559
1566
|
}
|
|
1560
1567
|
|
|
1568
|
+
async updateMyProviderCredential(input) {
|
|
1569
|
+
return this.mgmt.updateMyProviderCredential(await this._modelProviderViewer(), input || {});
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
/** Rotate a SHARED provider's key. Admin-only, enforced in SQL. */
|
|
1573
|
+
async updateSharedProviderCredential(input) {
|
|
1574
|
+
return this.mgmt.updateSharedProviderCredential(await this._modelProviderViewer(), input || {});
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1561
1577
|
async deleteProvider(name) {
|
|
1562
1578
|
return this.mgmt.deleteProvider(await this._modelProviderViewer(), name);
|
|
1563
1579
|
}
|
|
@@ -579,7 +579,7 @@ function buildSessionOwnerFilterItems(state) {
|
|
|
579
579
|
id: "all",
|
|
580
580
|
kind: "all",
|
|
581
581
|
label: "All",
|
|
582
|
-
description: "
|
|
582
|
+
description: "Every session you can see — your own, ones shared with you, and system sessions.",
|
|
583
583
|
},
|
|
584
584
|
{
|
|
585
585
|
id: "system",
|
|
@@ -893,7 +893,127 @@ export function agentPickerInitialIndex(items = []) {
|
|
|
893
893
|
return firstClosed >= 0 ? firstClosed : 0;
|
|
894
894
|
}
|
|
895
895
|
|
|
896
|
-
|
|
896
|
+
/** How the picker may be ordered. `used` is per-person; the rest are stable. */
|
|
897
|
+
export const AGENT_PICKER_SORTS = ["used", "name", "package"];
|
|
898
|
+
export const AGENT_PICKER_DEFAULT_SORT = "used";
|
|
899
|
+
|
|
900
|
+
/** Profile-settings key holding this person's per-agent start counts. */
|
|
901
|
+
export const AGENT_USAGE_SETTING = "agentPickerUsage";
|
|
902
|
+
|
|
903
|
+
/** Everything a query is matched against, lowercased once per agent. */
|
|
904
|
+
function agentHaystack(agent) {
|
|
905
|
+
return [
|
|
906
|
+
agent?.label, agent?.agentName, agent?.title, agent?.description,
|
|
907
|
+
agent?.packageTitle, agent?.packageName,
|
|
908
|
+
...(Array.isArray(agent?.tools) ? agent.tools : []),
|
|
909
|
+
].filter(Boolean).join(" ").toLowerCase();
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
/**
|
|
913
|
+
* Lexical match: every whitespace-separated term must appear somewhere in the
|
|
914
|
+
* agent's text. AND rather than OR, because "rcakit pg" should narrow to one
|
|
915
|
+
* agent rather than widen to everything mentioning either word.
|
|
916
|
+
*
|
|
917
|
+
* The score only ranks matches against each other — a name hit outranks a
|
|
918
|
+
* description hit, and a prefix outranks a mid-word hit, so typing "rca" puts
|
|
919
|
+
* the agents CALLED rcakit above the ones that merely mention it.
|
|
920
|
+
*/
|
|
921
|
+
export function scoreAgentMatch(agent, query) {
|
|
922
|
+
const terms = String(query || "").toLowerCase().split(/\s+/).filter(Boolean);
|
|
923
|
+
if (terms.length === 0) return 0;
|
|
924
|
+
const hay = agentHaystack(agent);
|
|
925
|
+
const name = `${agent?.label || ""} ${agent?.agentName || ""}`.toLowerCase();
|
|
926
|
+
let score = 0;
|
|
927
|
+
for (const term of terms) {
|
|
928
|
+
if (!hay.includes(term)) return -1; // every term must land
|
|
929
|
+
if (name.startsWith(term)) score += 6;
|
|
930
|
+
else if (new RegExp(`\\b${term.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}`).test(name)) score += 4;
|
|
931
|
+
else if (name.includes(term)) score += 3;
|
|
932
|
+
else score += 1;
|
|
933
|
+
}
|
|
934
|
+
return score;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
function agentUsageCount(usage, agent) {
|
|
938
|
+
if (!usage || !agent?.agentName) return 0;
|
|
939
|
+
return Number(usage[String(agent.agentName)]) || 0;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
function compareAgentsForSort(sort, usage) {
|
|
943
|
+
const byName = (a, b) => String(a.label || a.agentName || "")
|
|
944
|
+
.localeCompare(String(b.label || b.agentName || ""), undefined, { sensitivity: "base" });
|
|
945
|
+
if (sort === "name") return byName;
|
|
946
|
+
if (sort === "package") {
|
|
947
|
+
return (a, b) => String(a.packageTitle || a.packageName || "")
|
|
948
|
+
.localeCompare(String(b.packageTitle || b.packageName || ""), undefined, { sensitivity: "base" })
|
|
949
|
+
|| byName(a, b);
|
|
950
|
+
}
|
|
951
|
+
// "used": most-started first, then alphabetical so the long tail of
|
|
952
|
+
// never-started agents is not in arbitrary order.
|
|
953
|
+
return (a, b) => agentUsageCount(usage, b) - agentUsageCount(usage, a) || byName(a, b);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
/**
|
|
957
|
+
* The picker list: ONE ROW PER AGENT.
|
|
958
|
+
*
|
|
959
|
+
* The old shape gave each package a header row and then repeated its agents
|
|
960
|
+
* beneath. Nearly every package holds exactly one agent, so that spent two
|
|
961
|
+
* rows saying the same thing twice and pushed the list past a screen. The
|
|
962
|
+
* package is still shown — as trailing metadata on the row it belongs to,
|
|
963
|
+
* and as a sort key — but it no longer costs a row of its own.
|
|
964
|
+
*/
|
|
965
|
+
export function buildAgentPickerItems(catalog = [], opts = {}) {
|
|
966
|
+
const {
|
|
967
|
+
query = "",
|
|
968
|
+
sort = AGENT_PICKER_DEFAULT_SORT,
|
|
969
|
+
usage = null,
|
|
970
|
+
genericItem = null,
|
|
971
|
+
} = opts || {};
|
|
972
|
+
|
|
973
|
+
// Generic sits ABOVE everything and never filters out on an empty query:
|
|
974
|
+
// it is not an agent, it is the absence of one, and it is the most common
|
|
975
|
+
// pick. A typed query does filter it, so search can reach past it.
|
|
976
|
+
const items = [];
|
|
977
|
+
const terms = String(query || "").trim();
|
|
978
|
+
if (genericItem && (!terms || scoreAgentMatch({ label: genericItem.label, description: genericItem.description }, terms) >= 0)) {
|
|
979
|
+
items.push({ ...genericItem, depth: 0 });
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
// Composition still decides whether an agent can be STARTED — `startedBy`
|
|
983
|
+
// resolving inside its own set is what makes it called-only. The flat list
|
|
984
|
+
// drops the nesting, not that derivation, so each set still goes through
|
|
985
|
+
// orderAgentsByComposition; only its ordering is discarded here.
|
|
986
|
+
const raw = catalog.filter((agent) => agent && agent.kind !== "section");
|
|
987
|
+
const sets = new Map();
|
|
988
|
+
for (const agent of raw) {
|
|
989
|
+
const key = agent.builtin ? "builtin" : agentPickerPackageKey(agent);
|
|
990
|
+
if (!sets.has(key)) sets.set(key, []);
|
|
991
|
+
sets.get(key).push(agent);
|
|
992
|
+
}
|
|
993
|
+
const agents = [];
|
|
994
|
+
for (const set of sets.values()) {
|
|
995
|
+
for (const agent of orderAgentsByComposition(set)) agents.push({ ...agent, depth: 0 });
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
const scored = terms
|
|
999
|
+
? agents.map((agent) => ({ agent, score: scoreAgentMatch(agent, terms) })).filter((row) => row.score >= 0)
|
|
1000
|
+
: agents.map((agent) => ({ agent, score: 0 }));
|
|
1001
|
+
|
|
1002
|
+
const compare = compareAgentsForSort(sort, usage);
|
|
1003
|
+
scored.sort((a, b) => (terms ? b.score - a.score : 0) || compare(a.agent, b.agent));
|
|
1004
|
+
|
|
1005
|
+
for (const { agent } of scored) {
|
|
1006
|
+
items.push({
|
|
1007
|
+
...agent,
|
|
1008
|
+
depth: 0,
|
|
1009
|
+
usageCount: agentUsageCount(usage, agent),
|
|
1010
|
+
});
|
|
1011
|
+
}
|
|
1012
|
+
return items;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
/** @deprecated the grouped shape; kept only for the TUI's collapse tests. */
|
|
1016
|
+
export function buildGroupedAgentPickerItems(catalog = [], collapsedKeys = [], genericItem = null) {
|
|
897
1017
|
const collapsed = new Set(collapsedKeys);
|
|
898
1018
|
const items = [];
|
|
899
1019
|
|
|
@@ -3163,6 +3283,15 @@ export class PilotSwarmUiController {
|
|
|
3163
3283
|
}
|
|
3164
3284
|
}
|
|
3165
3285
|
|
|
3286
|
+
/**
|
|
3287
|
+
* Drop a failed provider mutation's error. Called when the sheet that
|
|
3288
|
+
* raised it closes — the failure was that sheet's, and a banner outliving
|
|
3289
|
+
* it describes a change the person already abandoned.
|
|
3290
|
+
*/
|
|
3291
|
+
dismissAdminModelProviderMutationError() {
|
|
3292
|
+
this.dispatch({ type: "admin/modelProviders/mutationDismissed" });
|
|
3293
|
+
}
|
|
3294
|
+
|
|
3166
3295
|
async _runAdminModelProviderMutation(pending, run) {
|
|
3167
3296
|
this.dispatch({ type: "admin/modelProviders/mutationPending", pending });
|
|
3168
3297
|
try {
|
|
@@ -3188,6 +3317,28 @@ export class PilotSwarmUiController {
|
|
|
3188
3317
|
}));
|
|
3189
3318
|
}
|
|
3190
3319
|
|
|
3320
|
+
/**
|
|
3321
|
+
* Rotate a provider's key in place.
|
|
3322
|
+
*
|
|
3323
|
+
* Two ops, one per scope, the same split deleteAdminProvider uses: a
|
|
3324
|
+
* personal provider answers to its owner, a shared one to an admin. Both
|
|
3325
|
+
* change ONLY the key — the name, type, base URL, defaults, system-session
|
|
3326
|
+
* routing and usage history all stay, which is the whole reason this
|
|
3327
|
+
* exists rather than delete-and-recreate.
|
|
3328
|
+
*/
|
|
3329
|
+
async updateAdminProviderCredential({ name, credentials, shared = false } = {}) {
|
|
3330
|
+
const op = shared ? "updateSharedProviderCredential" : "updateMyProviderCredential";
|
|
3331
|
+
if (typeof this.transport[op] !== "function") {
|
|
3332
|
+
const error = shared
|
|
3333
|
+
? "Shared provider credential updates are not available on this transport."
|
|
3334
|
+
: "Provider credential updates are not available on this transport.";
|
|
3335
|
+
this.dispatch({ type: "admin/modelProviders/mutationFailed", error });
|
|
3336
|
+
return { ok: false, result: null, error };
|
|
3337
|
+
}
|
|
3338
|
+
return this._runAdminModelProviderMutation("updateCredential", () =>
|
|
3339
|
+
this.transport[op]({ name, credentials }));
|
|
3340
|
+
}
|
|
3341
|
+
|
|
3191
3342
|
async deleteAdminProvider(name, { shared = false } = {}) {
|
|
3192
3343
|
const op = shared ? "deleteProvider" : "deleteMyProvider";
|
|
3193
3344
|
if (typeof this.transport[op] !== "function") {
|
|
@@ -3265,13 +3416,25 @@ export class PilotSwarmUiController {
|
|
|
3265
3416
|
name = `${base}-${suffix}`;
|
|
3266
3417
|
suffix += 1;
|
|
3267
3418
|
}
|
|
3268
|
-
this.dispatch({ type: "admin/modelProviders/createBegin", name, typeId, shared });
|
|
3419
|
+
this.dispatch({ type: "admin/modelProviders/createBegin", name, typeId, shared, mode: "create" });
|
|
3269
3420
|
}
|
|
3270
3421
|
|
|
3271
3422
|
beginAdminCreateGithubProvider() {
|
|
3272
3423
|
this.beginAdminCreateProvider({ shared: false });
|
|
3273
3424
|
}
|
|
3274
3425
|
|
|
3426
|
+
beginAdminUpdateProviderCredential(provider) {
|
|
3427
|
+
if (!provider?.name || provider.class === "shared") return;
|
|
3428
|
+
this.dispatch({
|
|
3429
|
+
type: "admin/modelProviders/createBegin",
|
|
3430
|
+
name: provider.name,
|
|
3431
|
+
typeId: provider.typeId,
|
|
3432
|
+
shared: false,
|
|
3433
|
+
mode: "update",
|
|
3434
|
+
stage: "credential",
|
|
3435
|
+
});
|
|
3436
|
+
}
|
|
3437
|
+
|
|
3275
3438
|
cycleAdminProviderCreateType() {
|
|
3276
3439
|
const providers = selectAdminConsole(this.getState()).modelProviders;
|
|
3277
3440
|
const create = this.getState().admin?.modelProviders?.create;
|
|
@@ -3342,7 +3505,9 @@ export class PilotSwarmUiController {
|
|
|
3342
3505
|
};
|
|
3343
3506
|
// Clear the credential from shared state before any network await.
|
|
3344
3507
|
this.dispatch({ type: "admin/modelProviders/createSaving" });
|
|
3345
|
-
const outcome =
|
|
3508
|
+
const outcome = create.mode === "update"
|
|
3509
|
+
? await this.updateAdminProviderCredential({ name: input.name, credentials: input.credentials })
|
|
3510
|
+
: await this.createAdminProvider(input);
|
|
3346
3511
|
this.dispatch(outcome?.ok
|
|
3347
3512
|
? { type: "admin/modelProviders/createEnd" }
|
|
3348
3513
|
: { type: "admin/modelProviders/createFailed", error: outcome?.error });
|
|
@@ -5648,6 +5813,10 @@ export class PilotSwarmUiController {
|
|
|
5648
5813
|
try {
|
|
5649
5814
|
const requestOptions = this.applyActiveGroupDefault(options);
|
|
5650
5815
|
const created = await this.transport.createSessionForAgent(agentName, requestOptions);
|
|
5816
|
+
// Count the start for this person's "most used" ordering. Deliberately
|
|
5817
|
+
// not awaited: the picker's sort order must never delay opening the
|
|
5818
|
+
// session that was just created, and a lost count only reorders a list.
|
|
5819
|
+
this._recordAgentPickerUse(agentName);
|
|
5651
5820
|
await this.placeCreatedSessionInGroup(created, requestOptions.groupId ?? null);
|
|
5652
5821
|
await this.refreshSessions();
|
|
5653
5822
|
await this.loadSession(created.sessionId);
|
|
@@ -6143,18 +6312,14 @@ export class PilotSwarmUiController {
|
|
|
6143
6312
|
}
|
|
6144
6313
|
: null;
|
|
6145
6314
|
|
|
6146
|
-
//
|
|
6147
|
-
//
|
|
6148
|
-
//
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
AGENT_PICKER_MINE_KEY,
|
|
6155
|
-
...new Set(catalog.filter((item) => !item.builtin).map((item) => agentPickerPackageKey(item))),
|
|
6156
|
-
];
|
|
6157
|
-
const items = buildAgentPickerItems(catalog, collapsed, genericItem);
|
|
6315
|
+
// Per-person start counts, so "most used" means most used BY YOU.
|
|
6316
|
+
// Best-effort: a profile that cannot be read just sorts alphabetically
|
|
6317
|
+
// rather than failing the picker open.
|
|
6318
|
+
const usage = await this._loadAgentPickerUsage();
|
|
6319
|
+
const sort = AGENT_PICKER_SORTS.includes(this._agentPickerSort)
|
|
6320
|
+
? this._agentPickerSort
|
|
6321
|
+
: AGENT_PICKER_DEFAULT_SORT;
|
|
6322
|
+
const items = buildAgentPickerItems(catalog, { query: "", sort, usage, genericItem });
|
|
6158
6323
|
|
|
6159
6324
|
this.dispatch({
|
|
6160
6325
|
type: "ui/modal",
|
|
@@ -6163,8 +6328,10 @@ export class PilotSwarmUiController {
|
|
|
6163
6328
|
title: "Select agent for new session",
|
|
6164
6329
|
catalog,
|
|
6165
6330
|
genericItem,
|
|
6166
|
-
collapsed,
|
|
6167
6331
|
items,
|
|
6332
|
+
query: "",
|
|
6333
|
+
sort,
|
|
6334
|
+
usage,
|
|
6168
6335
|
// Land somewhere Enter does something useful. First choice is a
|
|
6169
6336
|
// real agent row; with none visible (no generic, no baked
|
|
6170
6337
|
// agents, every package closed) fall back to the first CLOSED
|
|
@@ -7715,61 +7882,96 @@ export class PilotSwarmUiController {
|
|
|
7715
7882
|
* cursor shifts every index below it, and re-using the old number would
|
|
7716
7883
|
* silently move the highlight onto a different agent.
|
|
7717
7884
|
*/
|
|
7718
|
-
|
|
7885
|
+
/**
|
|
7886
|
+
* This person's per-agent start counts, from their profile settings.
|
|
7887
|
+
* Best-effort by design: a profile that cannot be read sorts the picker
|
|
7888
|
+
* alphabetically instead of refusing to open.
|
|
7889
|
+
*/
|
|
7890
|
+
async _loadAgentPickerUsage() {
|
|
7891
|
+
try {
|
|
7892
|
+
if (typeof this.transport.getCurrentUserProfile !== "function") return null;
|
|
7893
|
+
const profile = await this.transport.getCurrentUserProfile();
|
|
7894
|
+
const raw = profile?.profileSettings?.[AGENT_USAGE_SETTING];
|
|
7895
|
+
if (!raw || typeof raw !== "object") return {};
|
|
7896
|
+
const usage = {};
|
|
7897
|
+
for (const [name, count] of Object.entries(raw)) {
|
|
7898
|
+
const n = Number(count);
|
|
7899
|
+
if (Number.isFinite(n) && n > 0) usage[name] = n;
|
|
7900
|
+
}
|
|
7901
|
+
return usage;
|
|
7902
|
+
} catch {
|
|
7903
|
+
return null;
|
|
7904
|
+
}
|
|
7905
|
+
}
|
|
7906
|
+
|
|
7907
|
+
/**
|
|
7908
|
+
* Count one start. Read-modify-write against the whole settings document,
|
|
7909
|
+
* because that is the shape the API takes — so a concurrent write from
|
|
7910
|
+
* another tab can lose a count. A miscount only reorders a picker, which
|
|
7911
|
+
* is not worth a locking protocol.
|
|
7912
|
+
*/
|
|
7913
|
+
async _recordAgentPickerUse(agentName) {
|
|
7914
|
+
const name = String(agentName || "").trim();
|
|
7915
|
+
if (!name) return;
|
|
7916
|
+
try {
|
|
7917
|
+
if (typeof this.transport.getCurrentUserProfile !== "function"
|
|
7918
|
+
|| typeof this.transport.setCurrentUserProfileSettings !== "function") return;
|
|
7919
|
+
const profile = await this.transport.getCurrentUserProfile();
|
|
7920
|
+
const settings = { ...(profile?.profileSettings || {}) };
|
|
7921
|
+
const usage = { ...(settings[AGENT_USAGE_SETTING] || {}) };
|
|
7922
|
+
usage[name] = (Number(usage[name]) || 0) + 1;
|
|
7923
|
+
settings[AGENT_USAGE_SETTING] = usage;
|
|
7924
|
+
// Into state before the network: the portal's own profile save
|
|
7925
|
+
// fires on the very activeSessionId change this create causes,
|
|
7926
|
+
// and it writes the whole document from state. If state does not
|
|
7927
|
+
// have the new count by then, that save erases it.
|
|
7928
|
+
this.dispatch({ type: "ui/agentPickerUsage", usage });
|
|
7929
|
+
await this.transport.setCurrentUserProfileSettings({ settings });
|
|
7930
|
+
} catch {
|
|
7931
|
+
// Never let bookkeeping fail a session create.
|
|
7932
|
+
}
|
|
7933
|
+
}
|
|
7934
|
+
|
|
7935
|
+
/** Re-run the list against a new query or sort, keeping the selection. */
|
|
7936
|
+
_refreshAgentPicker(patch) {
|
|
7719
7937
|
const modal = this.getState().ui.modal;
|
|
7720
|
-
if (!modal || modal.type !== "sessionAgentPicker"
|
|
7721
|
-
const
|
|
7722
|
-
const
|
|
7723
|
-
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7938
|
+
if (!modal || modal.type !== "sessionAgentPicker") return;
|
|
7939
|
+
const next = { ...modal, ...patch };
|
|
7940
|
+
const items = buildAgentPickerItems(next.catalog || [], {
|
|
7941
|
+
query: next.query,
|
|
7942
|
+
sort: next.sort,
|
|
7943
|
+
usage: next.usage,
|
|
7944
|
+
genericItem: next.genericItem || null,
|
|
7945
|
+
});
|
|
7946
|
+
// Keep the same agent selected when it survives the new list; land on
|
|
7947
|
+
// the first row when it does not, so Enter always does something.
|
|
7729
7948
|
const selectedId = modal.items?.[modal.selectedIndex || 0]?.id;
|
|
7730
|
-
|
|
7731
|
-
if (nextIndex < 0) {
|
|
7732
|
-
// The selected row was inside the section that just closed — land
|
|
7733
|
-
// on that section's own header, which is where it went.
|
|
7734
|
-
nextIndex = Math.max(0, items.findIndex((item) => item.sectionKey === sectionKey));
|
|
7735
|
-
}
|
|
7949
|
+
const keptIndex = items.findIndex((item) => item.id === selectedId);
|
|
7736
7950
|
this.dispatch({
|
|
7737
7951
|
type: "ui/modal",
|
|
7738
|
-
modal: { ...
|
|
7952
|
+
modal: { ...next, items, selectedIndex: keptIndex >= 0 ? keptIndex : 0 },
|
|
7739
7953
|
});
|
|
7740
7954
|
}
|
|
7741
7955
|
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
* the cursor is already on a leaf — the same shape as the session tree.
|
|
7746
|
-
*/
|
|
7747
|
-
moveAgentPickerSection(delta) {
|
|
7748
|
-
const modal = this.getState().ui.modal;
|
|
7749
|
-
if (!modal || modal.type !== "sessionAgentPicker") return false;
|
|
7750
|
-
const items = Array.isArray(modal.items) ? modal.items : [];
|
|
7751
|
-
const index = Math.max(0, Math.min(Number(modal.selectedIndex) || 0, items.length - 1));
|
|
7752
|
-
const item = items[index];
|
|
7753
|
-
if (!item) return false;
|
|
7956
|
+
setAgentPickerQuery(query) {
|
|
7957
|
+
this._refreshAgentPicker({ query: String(query ?? "") });
|
|
7958
|
+
}
|
|
7754
7959
|
|
|
7755
|
-
|
|
7756
|
-
|
|
7757
|
-
|
|
7758
|
-
|
|
7759
|
-
|
|
7760
|
-
return false;
|
|
7761
|
-
}
|
|
7960
|
+
setAgentPickerSort(sort) {
|
|
7961
|
+
if (!AGENT_PICKER_SORTS.includes(sort)) return;
|
|
7962
|
+
this._agentPickerSort = sort; // remembered for the next open
|
|
7963
|
+
this._refreshAgentPicker({ sort });
|
|
7964
|
+
}
|
|
7762
7965
|
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
}
|
|
7966
|
+
/**
|
|
7967
|
+
* Left/right on the agent picker: nothing.
|
|
7968
|
+
*
|
|
7969
|
+
* These keys used to open and close package headings. The picker is a flat
|
|
7970
|
+
* list of agents now, so there is nothing to expand — and returning false
|
|
7971
|
+
* matters, because that is what lets the keystroke reach the search box and
|
|
7972
|
+
* move the caret instead of being swallowed here.
|
|
7973
|
+
*/
|
|
7974
|
+
moveAgentPickerSection() {
|
|
7773
7975
|
return false;
|
|
7774
7976
|
}
|
|
7775
7977
|
|
|
@@ -7992,11 +8194,6 @@ export class PilotSwarmUiController {
|
|
|
7992
8194
|
}
|
|
7993
8195
|
if (modal.type === "sessionAgentPicker") {
|
|
7994
8196
|
const item = modal.items?.[modal.selectedIndex || 0];
|
|
7995
|
-
// Enter on a heading opens or closes it; the dialog stays up.
|
|
7996
|
-
if (item?.kind === "section") {
|
|
7997
|
-
this.toggleAgentPickerSection(item.sectionKey);
|
|
7998
|
-
return;
|
|
7999
|
-
}
|
|
8000
8197
|
// A called-only agent is rendered so the package's composition is
|
|
8001
8198
|
// visible, but starting one cold is not a thing you can do. Refuse
|
|
8002
8199
|
// here rather than letting the create fail after the dialog closes.
|