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.
Files changed (82) hide show
  1. package/mcp/README.md +1 -0
  2. package/mcp/dist/src/tools/providers.d.ts.map +1 -1
  3. package/mcp/dist/src/tools/providers.js +15 -3
  4. package/mcp/dist/src/tools/providers.js.map +1 -1
  5. package/package.json +2 -2
  6. package/tui/src/app.js +7 -11
  7. package/tui/src/node-sdk-transport.js +16 -0
  8. package/ui/core/src/controller.js +265 -68
  9. package/ui/core/src/history.js +37 -0
  10. package/ui/core/src/reducer.js +51 -4
  11. package/ui/core/src/selectors.js +63 -15
  12. package/ui/core/src/state.js +11 -0
  13. package/ui/react/src/components.js +1 -0
  14. package/ui/react/src/web-app.js +611 -103
  15. package/web/dist/assets/{abnfDiagram-VRR7QNED-GXM5pEfT.js → abnfDiagram-VRR7QNED-VPL8m_9W.js} +1 -1
  16. package/web/dist/assets/{arc-D52-xt6J.js → arc-T5I3-c1B.js} +1 -1
  17. package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-Bxh49GyJ.js → architectureDiagram-ZJ3FMSHR-DEP70bg6.js} +1 -1
  18. package/web/dist/assets/{blockDiagram-677ZJIJ3-D8LSE94K.js → blockDiagram-677ZJIJ3-CvBu1MbO.js} +1 -1
  19. package/web/dist/assets/{c4Diagram-LMCZKHZV-Dcs1NVIx.js → c4Diagram-LMCZKHZV-B5qwF4gm.js} +1 -1
  20. package/web/dist/assets/channel-D5LojeMw.js +1 -0
  21. package/web/dist/assets/{chunk-2Q5K7J3B-Dy3zu7gI.js → chunk-2Q5K7J3B-zVW8dS7X.js} +1 -1
  22. package/web/dist/assets/{chunk-32BRIVSS-5v78VX3T.js → chunk-32BRIVSS-DWctxZZS.js} +1 -1
  23. package/web/dist/assets/{chunk-5VM5RSS4-DUJMCfdj.js → chunk-5VM5RSS4-Bq7_Vmf9.js} +1 -1
  24. package/web/dist/assets/{chunk-EX3LRPZG-DYyT1So9.js → chunk-EX3LRPZG-B8CFB3v-.js} +1 -1
  25. package/web/dist/assets/{chunk-JWPE2WC7-Buzzx5R2.js → chunk-JWPE2WC7-B7gLPjgZ.js} +1 -1
  26. package/web/dist/assets/{chunk-MOJQB5TN-B8fOWRD7.js → chunk-MOJQB5TN-B2x6q12r.js} +1 -1
  27. package/web/dist/assets/{chunk-RYQCIY6F-Bp04YO26.js → chunk-RYQCIY6F-XorU9Stx.js} +1 -1
  28. package/web/dist/assets/{chunk-V7JOEXUC-Gw6h8gPE.js → chunk-V7JOEXUC-CsLa6pw5.js} +1 -1
  29. package/web/dist/assets/{chunk-VR4S4FIN-ASf4dPE-.js → chunk-VR4S4FIN-BBv9mwmj.js} +1 -1
  30. package/web/dist/assets/{chunk-XXDRQBXY-C4B-MNNk.js → chunk-XXDRQBXY-Cjm4mm6l.js} +1 -1
  31. package/web/dist/assets/classDiagram-OUVF2IWQ-C5edc5Or.js +1 -0
  32. package/web/dist/assets/classDiagram-v2-EOCWNBFH-C5edc5Or.js +1 -0
  33. package/web/dist/assets/{cose-bilkent-JH36ORCC-C0S415ey.js → cose-bilkent-JH36ORCC-Zw9ZQbVl.js} +1 -1
  34. package/web/dist/assets/{cynefin-VYW2F7L2-LWUlL1XB.js → cynefin-VYW2F7L2-BYnR9YLM.js} +1 -1
  35. package/web/dist/assets/{cynefinDiagram-TSTJHNR4-ClnNDuqy.js → cynefinDiagram-TSTJHNR4-Cx8L0dOv.js} +1 -1
  36. package/web/dist/assets/{dagre-VKFMJZFB-CRMTDGPv.js → dagre-VKFMJZFB-7GaqVcqz.js} +1 -1
  37. package/web/dist/assets/{diagram-FQU43EPY-Cjt1nFI8.js → diagram-FQU43EPY-BWSRPJvU.js} +1 -1
  38. package/web/dist/assets/{diagram-G47NLZAW-DynrWO-8.js → diagram-G47NLZAW-BELuAE1e.js} +1 -1
  39. package/web/dist/assets/{diagram-NH7WQ7WH-CkEgxg4T.js → diagram-NH7WQ7WH-DGXhPpri.js} +1 -1
  40. package/web/dist/assets/{diagram-OA4YK3LP-DzB43wzH.js → diagram-OA4YK3LP-DV8HqN0T.js} +1 -1
  41. package/web/dist/assets/{diagram-WEI45ONY-DqxH3-sW.js → diagram-WEI45ONY-Clv1X3ZL.js} +1 -1
  42. package/web/dist/assets/{ebnfDiagram-CCIWWBDH-5NxDrqIa.js → ebnfDiagram-CCIWWBDH-TpQx36oi.js} +1 -1
  43. package/web/dist/assets/{erDiagram-Q63AITRT-OfiKzPj4.js → erDiagram-Q63AITRT-DVVWd00c.js} +1 -1
  44. package/web/dist/assets/{flowDiagram-23GEKE2U-DsqfPM3s.js → flowDiagram-23GEKE2U-Cdz_8_Dw.js} +1 -1
  45. package/web/dist/assets/{ganttDiagram-NO4QXBWP-N48fLign.js → ganttDiagram-NO4QXBWP-zlco-o7u.js} +1 -1
  46. package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-rn1cXRYh.js → gitGraphDiagram-IHSO6WYX-CfAZW1En.js} +1 -1
  47. package/web/dist/assets/index-CMtzFJre.css +1 -0
  48. package/web/dist/assets/{index-BHp6FirC.js → index-tQXCQojP.js} +5 -5
  49. package/web/dist/assets/{infoDiagram-FWYZ7A6U-CjJ3TLmy.js → infoDiagram-FWYZ7A6U-0R-8efwI.js} +1 -1
  50. package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-DvCylaIQ.js → ishikawaDiagram-FXEZZL3T-lPpoXGlp.js} +1 -1
  51. package/web/dist/assets/{journeyDiagram-5HDEW3XC-B_Ethynx.js → journeyDiagram-5HDEW3XC-D05vSVqu.js} +1 -1
  52. package/web/dist/assets/{kanban-definition-HUTT4EX6-BlQuhDqn.js → kanban-definition-HUTT4EX6-ClaDdESv.js} +1 -1
  53. package/web/dist/assets/{linear-DIwvxXrN.js → linear-CUnhHMvY.js} +1 -1
  54. package/web/dist/assets/{mermaid.core-CfAsl9Pc.js → mermaid.core-DaYS-X8Y.js} +4 -4
  55. package/web/dist/assets/{mindmap-definition-LN4V7U3C-BxJep4HE.js → mindmap-definition-LN4V7U3C-N480VHds.js} +1 -1
  56. package/web/dist/assets/{papaparse.min-BjO79nbw.js → papaparse.min-CNTcNgd8.js} +1 -1
  57. package/web/dist/assets/{pegDiagram-2B236MQR-yceXoFi0.js → pegDiagram-2B236MQR-CVWyJ5ck.js} +1 -1
  58. package/web/dist/assets/{pieDiagram-ENE6RG2P-BNBzpT5B.js → pieDiagram-ENE6RG2P-UR9uohPf.js} +1 -1
  59. package/web/dist/assets/pilotswarm-BG6hk0oE.js +97 -0
  60. package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-DCg1DTax.js → quadrantDiagram-ABIIQ3AL-D2SIOetn.js} +1 -1
  61. package/web/dist/assets/{railroadDiagram-RFXS5EU6-DQdy8xST.js → railroadDiagram-RFXS5EU6-OgN6qgOU.js} +1 -1
  62. package/web/dist/assets/{requirementDiagram-TGXJPOKE-N8PYSqS8.js → requirementDiagram-TGXJPOKE-BSUURBBz.js} +1 -1
  63. package/web/dist/assets/{sankeyDiagram-HTMAVEWB-DK9WhfTA.js → sankeyDiagram-HTMAVEWB-BBZhmSBZ.js} +1 -1
  64. package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-DEpALkWi.js → sequenceDiagram-DBY2YBRQ-C10IDNdW.js} +1 -1
  65. package/web/dist/assets/{sizeCapture-X5ZJPWSS-CKOEPe9x.js → sizeCapture-X5ZJPWSS-B9787MHa.js} +1 -1
  66. package/web/dist/assets/{stateDiagram-2N3HPSRC-Dwwyy0hH.js → stateDiagram-2N3HPSRC-BmSBo7es.js} +1 -1
  67. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BqpsfoJI.js +1 -0
  68. package/web/dist/assets/{swimlanes-5IMT3BWC-hDoJpKdQ.js → swimlanes-5IMT3BWC-DOXpv_KQ.js} +2 -2
  69. package/web/dist/assets/swimlanesDiagram-G3AALYLV-k8WG_bWt.js +8 -0
  70. package/web/dist/assets/{timeline-definition-FHXFAJF6-CPXnQ7LH.js → timeline-definition-FHXFAJF6-SjhGfPdI.js} +1 -1
  71. package/web/dist/assets/{vennDiagram-L72KCM5P-CYsOwGTT.js → vennDiagram-L72KCM5P-BiujYen6.js} +1 -1
  72. package/web/dist/assets/{wardleyDiagram-EHGQE667-DKh__oEb.js → wardleyDiagram-EHGQE667-6nLXBvwc.js} +1 -1
  73. package/web/dist/assets/{xychartDiagram-FW5EYKEG-Bws7l8k9.js → xychartDiagram-FW5EYKEG-Di7ioTvW.js} +1 -1
  74. package/web/dist/index.html +3 -3
  75. package/web/runtime.js +12 -0
  76. package/web/dist/assets/channel-DE0-pG_Z.js +0 -1
  77. package/web/dist/assets/classDiagram-OUVF2IWQ-B0o6by6m.js +0 -1
  78. package/web/dist/assets/classDiagram-v2-EOCWNBFH-B0o6by6m.js +0 -1
  79. package/web/dist/assets/index-DEymVbi5.css +0 -1
  80. package/web/dist/assets/pilotswarm-DewDyJhu.js +0 -97
  81. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-CRKYt8KU.js +0 -1
  82. 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,QA8X1E"}
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.46",
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.46",
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: "Show every session, including system and unowned sessions.",
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
- export function buildAgentPickerItems(catalog = [], collapsedKeys = [], genericItem = null) {
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 = await this.createAdminProvider(input);
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
- // EVERYTHING starts closed. The dialog opens as a short menu of
6147
- // categories Generic, then whichever of Built-in / Shared / Yours
6148
- // this deployment actually has and you open the one you want. A
6149
- // section expanded by default is a section every other user has to
6150
- // scroll past.
6151
- const collapsed = [
6152
- AGENT_PICKER_BUILTIN_KEY,
6153
- AGENT_PICKER_SHARED_KEY,
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
- toggleAgentPickerSection(sectionKey, force = null) {
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" || !sectionKey) return;
7721
- const collapsed = new Set(modal.collapsed || []);
7722
- const shouldCollapse = force === null ? !collapsed.has(sectionKey) : force;
7723
- if (shouldCollapse === collapsed.has(sectionKey)) return;
7724
- if (shouldCollapse) collapsed.add(sectionKey);
7725
- else collapsed.delete(sectionKey);
7726
-
7727
- const nextCollapsed = [...collapsed];
7728
- const items = buildAgentPickerItems(modal.catalog || [], nextCollapsed, modal.genericItem || null);
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
- let nextIndex = items.findIndex((item) => item.id === selectedId);
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: { ...modal, collapsed: nextCollapsed, items, selectedIndex: nextIndex },
7952
+ modal: { ...next, items, selectedIndex: keptIndex >= 0 ? keptIndex : 0 },
7739
7953
  });
7740
7954
  }
7741
7955
 
7742
- /**
7743
- * Left/right on the agent picker. Right opens a closed section (or steps
7744
- * into it); left closes an open one, or jumps to the parent header when
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
- if (delta > 0) {
7756
- if (item.kind === "section" && item.collapsed) {
7757
- this.toggleAgentPickerSection(item.sectionKey, false);
7758
- return true;
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
- if (item.kind === "section" && !item.collapsed) {
7764
- this.toggleAgentPickerSection(item.sectionKey, true);
7765
- return true;
7766
- }
7767
- for (let i = index - 1; i >= 0; i -= 1) {
7768
- if (items[i].kind === "section" && items[i].depth < item.depth) {
7769
- this.dispatch({ type: "ui/modalSelection", index: i });
7770
- return true;
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.