pilotswarm 0.5.52 → 0.5.53

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 (75) hide show
  1. package/mcp/dist/src/tools/providers.d.ts.map +1 -1
  2. package/mcp/dist/src/tools/providers.js +8 -0
  3. package/mcp/dist/src/tools/providers.js.map +1 -1
  4. package/package.json +2 -2
  5. package/ui/core/src/controller.js +24 -1
  6. package/ui/core/src/reducer.js +25 -1
  7. package/ui/core/src/selectors.js +61 -0
  8. package/ui/core/src/state.js +9 -0
  9. package/ui/react/src/web-app.js +175 -21
  10. package/web/dist/assets/{abnfDiagram-VRR7QNED-Dcw4A-hB.js → abnfDiagram-VRR7QNED-Cccg5mUx.js} +1 -1
  11. package/web/dist/assets/{arc-XzDjfCV-.js → arc-DFWp1OiI.js} +1 -1
  12. package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-Br9AHRsm.js → architectureDiagram-ZJ3FMSHR-o2B4-sJ1.js} +1 -1
  13. package/web/dist/assets/{blockDiagram-677ZJIJ3-Dncy40T9.js → blockDiagram-677ZJIJ3-Cf_7Cm38.js} +1 -1
  14. package/web/dist/assets/{c4Diagram-LMCZKHZV-h3Wfl-xs.js → c4Diagram-LMCZKHZV-CKXuPB0d.js} +1 -1
  15. package/web/dist/assets/channel-CIBN5O06.js +1 -0
  16. package/web/dist/assets/{chunk-2Q5K7J3B-BRPoZMS7.js → chunk-2Q5K7J3B-CZC3HwzC.js} +1 -1
  17. package/web/dist/assets/{chunk-32BRIVSS-BzOGF46D.js → chunk-32BRIVSS-7_X1k3eB.js} +1 -1
  18. package/web/dist/assets/{chunk-5VM5RSS4-qxZ6yZ_t.js → chunk-5VM5RSS4-E2rxT4um.js} +1 -1
  19. package/web/dist/assets/{chunk-EX3LRPZG-CcvtCsDk.js → chunk-EX3LRPZG-BbW37HWx.js} +1 -1
  20. package/web/dist/assets/{chunk-JWPE2WC7-sPBZfXag.js → chunk-JWPE2WC7-dj0DOnPl.js} +1 -1
  21. package/web/dist/assets/{chunk-MOJQB5TN-0QOtPHz1.js → chunk-MOJQB5TN-TeWalpvK.js} +1 -1
  22. package/web/dist/assets/{chunk-RYQCIY6F-CV87zKxh.js → chunk-RYQCIY6F-ClHcH2bN.js} +1 -1
  23. package/web/dist/assets/{chunk-V7JOEXUC-DQkZAWyU.js → chunk-V7JOEXUC-Dy5XEnNL.js} +1 -1
  24. package/web/dist/assets/{chunk-VR4S4FIN-ohbQ_scj.js → chunk-VR4S4FIN-Den_q-0P.js} +1 -1
  25. package/web/dist/assets/{chunk-XXDRQBXY-CDQGR6jd.js → chunk-XXDRQBXY-DZ1s-8xB.js} +1 -1
  26. package/web/dist/assets/classDiagram-OUVF2IWQ-Bq-5VkDc.js +1 -0
  27. package/web/dist/assets/classDiagram-v2-EOCWNBFH-Bq-5VkDc.js +1 -0
  28. package/web/dist/assets/{cose-bilkent-JH36ORCC-WvmQPFiy.js → cose-bilkent-JH36ORCC-CKAukUTf.js} +1 -1
  29. package/web/dist/assets/{cynefin-VYW2F7L2-DquCg-BR.js → cynefin-VYW2F7L2-CM8y129F.js} +1 -1
  30. package/web/dist/assets/{cynefinDiagram-TSTJHNR4-eP4YghoJ.js → cynefinDiagram-TSTJHNR4-DLryvwYt.js} +1 -1
  31. package/web/dist/assets/{dagre-VKFMJZFB-B1kV-4ia.js → dagre-VKFMJZFB-BO0LMWmO.js} +1 -1
  32. package/web/dist/assets/{diagram-FQU43EPY-5LqpmHmp.js → diagram-FQU43EPY-DiFLu7v2.js} +1 -1
  33. package/web/dist/assets/{diagram-G47NLZAW-Cgcn8eZf.js → diagram-G47NLZAW-DMkq9we0.js} +1 -1
  34. package/web/dist/assets/{diagram-NH7WQ7WH-DZsYgS0w.js → diagram-NH7WQ7WH-CxVQL8Dq.js} +1 -1
  35. package/web/dist/assets/{diagram-OA4YK3LP-BF-prFlR.js → diagram-OA4YK3LP-B5TrTlUc.js} +1 -1
  36. package/web/dist/assets/{diagram-WEI45ONY-BbpXHIRI.js → diagram-WEI45ONY-Ca38mf1v.js} +1 -1
  37. package/web/dist/assets/{ebnfDiagram-CCIWWBDH-CmSrEwoV.js → ebnfDiagram-CCIWWBDH-DZR_44LD.js} +1 -1
  38. package/web/dist/assets/{erDiagram-Q63AITRT-C_qTHJ92.js → erDiagram-Q63AITRT-Ca8mmsU1.js} +1 -1
  39. package/web/dist/assets/{flowDiagram-23GEKE2U-CcKMrw33.js → flowDiagram-23GEKE2U-C0DFTCS6.js} +1 -1
  40. package/web/dist/assets/{ganttDiagram-NO4QXBWP-C6iDGo_F.js → ganttDiagram-NO4QXBWP-COqaqM45.js} +1 -1
  41. package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-BabA6JSg.js → gitGraphDiagram-IHSO6WYX-Cwb9oGjZ.js} +1 -1
  42. package/web/dist/assets/{index-D1hpvm4I.js → index-0isomVdq.js} +4 -4
  43. package/web/dist/assets/{infoDiagram-FWYZ7A6U-B5lMiSNO.js → infoDiagram-FWYZ7A6U-CdPnS1-j.js} +1 -1
  44. package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-BiVJxfHu.js → ishikawaDiagram-FXEZZL3T-D4Muo2uw.js} +1 -1
  45. package/web/dist/assets/{journeyDiagram-5HDEW3XC-y1Lw7qmn.js → journeyDiagram-5HDEW3XC-0uVdJDiB.js} +1 -1
  46. package/web/dist/assets/{kanban-definition-HUTT4EX6-CfNFiLCu.js → kanban-definition-HUTT4EX6-DWQU6DYI.js} +1 -1
  47. package/web/dist/assets/{linear-DtEaMDnX.js → linear-BOxgX8xV.js} +1 -1
  48. package/web/dist/assets/{mermaid.core-DuM5Gnr2.js → mermaid.core-C8tHn40J.js} +4 -4
  49. package/web/dist/assets/{mindmap-definition-LN4V7U3C-MeRS48LY.js → mindmap-definition-LN4V7U3C-C8NH0hQq.js} +1 -1
  50. package/web/dist/assets/{papaparse.min-ajK_kXWW.js → papaparse.min-CwI0VkgN.js} +1 -1
  51. package/web/dist/assets/{pegDiagram-2B236MQR-5eMup_03.js → pegDiagram-2B236MQR-CksEEUgN.js} +1 -1
  52. package/web/dist/assets/{pieDiagram-ENE6RG2P-DShSSLBb.js → pieDiagram-ENE6RG2P-Bq2Bv0cw.js} +1 -1
  53. package/web/dist/assets/pilotswarm-uebRfMjg.js +99 -0
  54. package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-DEUY048r.js → quadrantDiagram-ABIIQ3AL-vvpwUrN5.js} +1 -1
  55. package/web/dist/assets/{railroadDiagram-RFXS5EU6-DVaCLItZ.js → railroadDiagram-RFXS5EU6-yXGWn-zZ.js} +1 -1
  56. package/web/dist/assets/{requirementDiagram-TGXJPOKE-BRHsQhAz.js → requirementDiagram-TGXJPOKE-Bt1Q6Y60.js} +1 -1
  57. package/web/dist/assets/{sankeyDiagram-HTMAVEWB-BS2bXDW3.js → sankeyDiagram-HTMAVEWB-CPNAfqgE.js} +1 -1
  58. package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-Dupbh7Gw.js → sequenceDiagram-DBY2YBRQ-Dz432FWB.js} +1 -1
  59. package/web/dist/assets/{sizeCapture-X5ZJPWSS-DtWNIMGp.js → sizeCapture-X5ZJPWSS-Cokz6gNF.js} +1 -1
  60. package/web/dist/assets/{stateDiagram-2N3HPSRC-B-swtPzt.js → stateDiagram-2N3HPSRC-ojQCUdRE.js} +1 -1
  61. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BliVrz4U.js +1 -0
  62. package/web/dist/assets/{swimlanes-5IMT3BWC-CQXYLRHN.js → swimlanes-5IMT3BWC-DyTOkc1R.js} +2 -2
  63. package/web/dist/assets/swimlanesDiagram-G3AALYLV-DmwmYUnc.js +8 -0
  64. package/web/dist/assets/{timeline-definition-FHXFAJF6-CKdXY_ox.js → timeline-definition-FHXFAJF6-DmuhBBl6.js} +1 -1
  65. package/web/dist/assets/{vennDiagram-L72KCM5P-D82ZRrFW.js → vennDiagram-L72KCM5P-gTxQuU5b.js} +1 -1
  66. package/web/dist/assets/{wardleyDiagram-EHGQE667-95lZ3zmA.js → wardleyDiagram-EHGQE667-YNXbSRf2.js} +1 -1
  67. package/web/dist/assets/{xychartDiagram-FW5EYKEG-_o61JwnS.js → xychartDiagram-FW5EYKEG-D7loT9cv.js} +1 -1
  68. package/web/dist/index.html +2 -2
  69. package/web/runtime.js +8 -0
  70. package/web/dist/assets/channel-LnDcK-_Y.js +0 -1
  71. package/web/dist/assets/classDiagram-OUVF2IWQ-rJcYNS_I.js +0 -1
  72. package/web/dist/assets/classDiagram-v2-EOCWNBFH-rJcYNS_I.js +0 -1
  73. package/web/dist/assets/pilotswarm-BuroYLs1.js +0 -97
  74. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-5llIgH2Q.js +0 -1
  75. package/web/dist/assets/swimlanesDiagram-G3AALYLV-DGa9Igsk.js +0 -8
@@ -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,QA6Z1E"}
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,QA4a1E"}
@@ -269,6 +269,14 @@ export function registerProviderTools(server, ctx) {
269
269
  providers: z.array(z.string()).optional().describe("Only these providers, by name; absent means all"),
270
270
  },
271
271
  }, withToolErrors(async ({ days, providers }) => jsonResult(await ctx.mgmt.getProviderUsageSummary(viewer, { days, providers }))));
272
+ server.registerTool("get_provider_usage_agents", {
273
+ title: "Get Usage By Agent",
274
+ description: "The agent pivot from the same usage ledger: one row per AGENT that ran the turns — tokens, turns, sessions, the models it ran and its own per-day totals — plus a flat day-by-agent series. Turns from a session bound to no agent report as '(none)'; their tokens are real. Same viewer scoping as the cluster summary: admins see the whole cluster, everyone else their own turns. Use it to find which agent is spending, and its tokens-per-turn average (total / turns; a ledger row is one turn).",
275
+ inputSchema: {
276
+ days: z.number().int().min(1).max(365).optional().describe("Days of history (default 14; 14, 30 or 90 are the portal's choices)"),
277
+ providers: z.array(z.string()).optional().describe("Only these providers, by name; absent means all"),
278
+ },
279
+ }, withToolErrors(async ({ days, providers }) => jsonResult(await ctx.mgmt.getProviderUsageAgents(viewer, { days, providers }))));
272
280
  server.registerTool("get_provider_usage", {
273
281
  title: "Get Provider Usage",
274
282
  description: "Where the tokens went: totals (tokens, turns, sessions), a per-day series, and one breakdown, all "
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,GAAkB;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAEvD,MAAM,CAAC,YAAY,CACf,gBAAgB,EAChB;QACI,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACP,iGAAiG;cAC/F,mGAAmG;cACnG,mGAAmG;cACnG,8FAA8F;QACpG,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAC/E,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,qBAAqB,EACrB;QACI,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACP,qGAAqG;cACnG,kGAAkG;cAClG,8FAA8F;QACpG,WAAW,EAAE;YACT,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;SAC/G;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAC3G,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,yBAAyB,EACzB;QACI,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACP,oGAAoG;cAClG,qFAAqF;cACrF,6FAA6F;cAC7F,4FAA4F;cAC5F,qCAAqC;QAC3C,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CACtF,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,iBAAiB,EACjB;QACI,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACP,2DAA2D;cACzD,iGAAiG;cACjG,gCAAgC;cAChC,6FAA6F;cAC7F,uCAAuC;cACvC,iGAAiG;cACjG,iFAAiF;cACjF,mGAAmG;cACnG,+EAA+E;cAC/E,iGAAiG;cACjG,oGAAoG;QAC1G,WAAW,EAAE;YACT,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC/G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YACjH,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;YAC9G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;YACnK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;YAC1J,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SACjG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzE,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACjC,4DAA4D;YAC5D,+DAA+D;YAC/D,4BAA4B;YAC5B,OAAO,UAAU,CAAC,IAAI;gBAClB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;gBAC/F,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,IAAI;gBAClB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC/C,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC1F,OAAO,UAAU,CAAC,IAAI;YAClB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;YAChD,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACI,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACP,iGAAiG;cAC/F,oGAAoG;cACpG,oGAAoG;cACpG,qGAAqG;cACrG,gGAAgG;cAChG,+FAA+F;QACrG,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YACpH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;SACvI;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,MAAM,IAAI,IAAI;YAC5B,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC;YACjD,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,wBAAwB,EACxB;QACI,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACP,oGAAoG;cAClG,kGAAkG;cAClG,mGAAmG;cACnG,mGAAmG;cACnG,2EAA2E;QACjF,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SACzG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAC1H,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,eAAe,EACf;QACI,KAAK,EAAE,eAAe;QACtB,WAAW,EACP,+FAA+F;cAC7F,sGAAsG;cACtG,0FAA0F;QAChG,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;SAC9H;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAChE,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS;QACvD,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7B,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC,CACnD,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,uBAAuB,EACvB;QACI,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACP,kGAAkG;cAChG,oGAAoG;cACpG,wGAAwG;QAC9G,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAC7E,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACI,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACP,kGAAkG;cAChG,2GAA2G;QACjH,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAClF,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,sBAAsB,EACtB;QACI,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACP,sGAAsG;cACpG,iGAAiG;cACjG,qGAAqG;cACrG,4EAA4E;QAClF,WAAW,EAAE;YACT,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;YACrH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACrG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;SACxG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACpE,MAAM,KAAK,GAAG;YACV,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC1B,KAAK,EAAE,KAAK,IAAI,IAAI;YACpB,SAAS,EAAE,SAAS,IAAI,IAAI;YAC5B,OAAO,EAAE,OAAO,IAAI,IAAI;SAC3B,CAAC;QACF,OAAO,UAAU,CAAC,KAAK,KAAK,SAAS;YACjC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;YACjD,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACP,oGAAoG;cAClG,iDAAiD;QACvD,WAAW,EAAE;YACT,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;YACzF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE;SACzD;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAC/E,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QACnC,KAAK;QACL,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,eAAe,EAAE,SAAS,IAAI,IAAI;QAClC,WAAW,EAAE,OAAO,IAAI,IAAI;KAC/B,CAAC,CACL,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,yBAAyB,EACzB;QACI,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACP,oGAAoG;cAClG,iEAAiE;QACvE,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;SACvB;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CACtD,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CACrE,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,sCAAsC,EACtC;QACI,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,qGAAqG;QAClH,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAC,CAClG,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,gCAAgC,EAChC;QACI,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACP,qGAAqG;cACnG,iFAAiF;QACvF,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1B;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CACzC,MAAM,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CACrE,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,0BAA0B,EAC1B;QACI,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACP,gGAAgG;cAC9F,8FAA8F;QACpG,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;YACzF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE;YACtD,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;SACnF;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,UAAU,CAC7F,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;QACzC,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,eAAe,EAAE,SAAS,IAAI,IAAI;QAClC,WAAW,EAAE,OAAO,IAAI,IAAI;QAC5B,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,KAAK;KACtF,CAAC,CACL,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,6BAA6B,EAC7B;QACI,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACP,qGAAqG;cACnG,oGAAoG;QAC1G,WAAW,EAAE;YACT,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC1F,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1D;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/E,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7F,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YAC3D,OAAO,EAAE,QAAQ;YACjB,QAAQ;YACR,KAAK;YACL,eAAe,EAAE,SAAS,IAAI,IAAI;YAClC,WAAW,EAAE,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,4BAA4B,EAC5B;QACI,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACP,oGAAoG;cAClG,gGAAgG;cAChG,kGAAkG;cAClG,iGAAiG;cACjG,4FAA4F;QAClG,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wGAAwG,CAAC;YACpK,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SACxG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CACzC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CACvF,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACI,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACP,oGAAoG;cAClG,mGAAmG;cACnG,mGAAmG;cACnG,oGAAoG;cACpG,+FAA+F;cAC/F,YAAY;QAClB,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACrG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAC1H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC/D,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wFAAwF,CAAC;YACtK,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC7I,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;SACpJ;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1G,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC/C,IAAI;QACJ,WAAW,EAAE,aAAa;QAC1B,QAAQ;QACR,KAAK;QACL,SAAS,EAAE,UAAU;QACrB,WAAW,EAAE,YAAY;QACzB,SAAS;QACT,KAAK;KACR,CAAC,CAAC,CAAC,CACX,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,sBAAsB,EACtB;QACI,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACP,oGAAoG;cAClG,+FAA+F;cAC/F,sEAAsE;QAC5E,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CACpF,CAAC;AACN,CAAC"}
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.52",
3
+ "version": "0.5.53",
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.52",
84
+ "pilotswarm-sdk": "0.5.53",
85
85
  "react": "^19.2.4",
86
86
  "react-dom": "^19.2.4",
87
87
  "ws": "^8.18.2"
@@ -4159,6 +4159,7 @@ export class PilotSwarmUiController {
4159
4159
  setBudgetTab(tab) {
4160
4160
  this.dispatch({ type: "budget/tab", tab });
4161
4161
  if (tab === "summary") this.loadUsageSummary().catch(() => {});
4162
+ if (tab === "agents") this.loadUsageAgents().catch(() => {});
4162
4163
  }
4163
4164
 
4164
4165
  /**
@@ -4168,7 +4169,29 @@ export class PilotSwarmUiController {
4168
4169
  */
4169
4170
  async setUsageSummaryFilter({ days, providers, preset } = {}) {
4170
4171
  this.dispatch({ type: "budget/summary/filter", days, providers, preset });
4171
- await this.loadUsageSummary();
4172
+ // One filter drives both ledger views; refresh whichever have data.
4173
+ const jobs = [this.loadUsageSummary()];
4174
+ if (this.getState().budget?.agents?.data || this.getState().budget?.tab === "agents") jobs.push(this.loadUsageAgents());
4175
+ await Promise.all(jobs);
4176
+ }
4177
+
4178
+ /** Read the per-agent pivot for the current summary filter. */
4179
+ async loadUsageAgents() {
4180
+ if (typeof this.transport.getProviderUsageAgents !== "function") {
4181
+ this.dispatch({ type: "budget/agents/failed", error: "The agent pivot is not available on this transport." });
4182
+ return;
4183
+ }
4184
+ const filter = this.getState().budget?.summary || {};
4185
+ this.dispatch({ type: "budget/agents/loading" });
4186
+ try {
4187
+ const data = await this.transport.getProviderUsageAgents({
4188
+ days: filter.days || 14,
4189
+ ...(Array.isArray(filter.providers) && filter.providers.length ? { providers: filter.providers } : {}),
4190
+ });
4191
+ this.dispatch({ type: "budget/agents/loaded", data, fetchedAt: Date.now() });
4192
+ } catch (error) {
4193
+ this.dispatch({ type: "budget/agents/failed", error: budgetRefusalMessage(error) });
4194
+ }
4172
4195
  }
4173
4196
 
4174
4197
  /**
@@ -1039,7 +1039,7 @@ export function appReducer(state, action) {
1039
1039
 
1040
1040
  // ── Budget screen: tab + the Cluster summary ─────────────────
1041
1041
  case "budget/tab": {
1042
- const tab = action.tab === "summary" ? "summary" : "providers";
1042
+ const tab = ["summary", "agents"].includes(action.tab) ? action.tab : "providers";
1043
1043
  if (state.budget.tab === tab) return state;
1044
1044
  return { ...state, budget: { ...state.budget, tab } };
1045
1045
  }
@@ -1069,6 +1069,30 @@ export function appReducer(state, action) {
1069
1069
  },
1070
1070
  },
1071
1071
  };
1072
+ case "budget/agents/loading":
1073
+ return { ...state, budget: { ...state.budget, agents: { ...state.budget.agents, loading: true } } };
1074
+ case "budget/agents/loaded":
1075
+ return {
1076
+ ...state,
1077
+ budget: {
1078
+ ...state.budget,
1079
+ agents: {
1080
+ ...state.budget.agents,
1081
+ loading: false,
1082
+ error: null,
1083
+ fetchedAt: Number(action.fetchedAt) || Date.now(),
1084
+ data: action.data && typeof action.data === "object" ? action.data : null,
1085
+ },
1086
+ },
1087
+ };
1088
+ case "budget/agents/failed":
1089
+ return {
1090
+ ...state,
1091
+ budget: {
1092
+ ...state.budget,
1093
+ agents: { ...state.budget.agents, loading: false, error: String(action.error || "The agent pivot could not be read.") },
1094
+ },
1095
+ };
1072
1096
  case "budget/summary/failed":
1073
1097
  // Keep the last answer on screen; say the read failed beside it.
1074
1098
  return {
@@ -5049,6 +5049,67 @@ function budgetTableRow(raw, { overall, selectedProvider, selectedScope = "*", n
5049
5049
  * (the database returns only days that had turns), the per-model rows with
5050
5050
  * a sparkline aligned to those same days, and the charge-class split.
5051
5051
  */
5052
+
5053
+ /**
5054
+ * The Agents tab view: per-agent aggregates (with tokens-per-turn and share
5055
+ * derived here so every renderer agrees), the day×agent series for the
5056
+ * stacked chart, and the same filter state the Cluster summary holds — one
5057
+ * filter, two views of the same ledger rows.
5058
+ */
5059
+ export function selectUsageAgents(state) {
5060
+ const budget = state.budget || {};
5061
+ const slice = budget.agents || {};
5062
+ const filter = budget.summary || {};
5063
+ const data = slice.data && typeof slice.data === "object" ? slice.data : null;
5064
+ const days = [14, 30, 90].includes(Number(filter.days)) ? Number(filter.days) : 14;
5065
+
5066
+ const agents = (Array.isArray(data?.agents) ? data.agents : []).map((a) => {
5067
+ const turns = Number(a.turns) || 0;
5068
+ const total = Number(a.total) || 0;
5069
+ return {
5070
+ agent: String(a.agent || "(none)"),
5071
+ models: Array.isArray(a.models) ? a.models.map(String) : [],
5072
+ turns,
5073
+ sessions: Number(a.sessions) || 0,
5074
+ input: Number(a.input) || 0,
5075
+ output: Number(a.output) || 0,
5076
+ cacheRead: Number(a.cacheRead) || 0,
5077
+ cacheWrite: Number(a.cacheWrite) || 0,
5078
+ total,
5079
+ perTurn: turns > 0 ? total / turns : 0,
5080
+ daily: Array.isArray(a.daily) ? a.daily : [],
5081
+ };
5082
+ });
5083
+ const windowTotal = agents.reduce((sum, a) => sum + a.total, 0);
5084
+ for (const a of agents) a.share = windowTotal > 0 ? a.total / windowTotal : 0;
5085
+
5086
+ // Day axis mirrors selectUsageSummary: every UTC day of the window,
5087
+ // oldest first, so a quiet day is a zero column, not a missing one.
5088
+ const today = typeof data?.today === "string" ? data.today : new Date().toISOString().slice(0, 10);
5089
+ const dayKeys = [];
5090
+ {
5091
+ const end = new Date(`${today}T00:00:00Z`).getTime();
5092
+ for (let i = days - 1; i >= 0; i -= 1) dayKeys.push(new Date(end - i * 86_400_000).toISOString().slice(0, 10));
5093
+ }
5094
+ const daily = new Map(dayKeys.map((d) => [d, new Map()]));
5095
+ for (const row of Array.isArray(data?.daily) ? data.daily : []) {
5096
+ const perDay = daily.get(row.day);
5097
+ if (perDay) perDay.set(String(row.agent || "(none)"), Number(row.total) || 0);
5098
+ }
5099
+
5100
+ return {
5101
+ loading: Boolean(slice.loading),
5102
+ error: slice.error || null,
5103
+ loaded: Boolean(data),
5104
+ days,
5105
+ scope: data?.scope === "cluster" ? "cluster" : "mine",
5106
+ agents,
5107
+ windowTotal,
5108
+ dayKeys,
5109
+ daily,
5110
+ };
5111
+ }
5112
+
5052
5113
  export function selectUsageSummary(state) {
5053
5114
  const budget = state.budget || {};
5054
5115
  const summary = budget.summary || {};
@@ -550,6 +550,15 @@ export function createInitialState({ mode = "local", branding = null, docs = nul
550
550
  // The last answer, verbatim from getProviderUsageSummary.
551
551
  data: null,
552
552
  },
553
+ // The Agents tab: the per-agent pivot over the same window and
554
+ // provider filter as the Cluster summary (one filter, two views).
555
+ agents: {
556
+ loading: false,
557
+ error: null,
558
+ fetchedAt: 0,
559
+ // The last answer, verbatim from getProviderUsageAgents.
560
+ data: null,
561
+ },
553
562
  // A first load, with nothing on screen yet.
554
563
  loading: false,
555
564
  // A re-read WITH numbers already on screen. Separate from
@@ -48,6 +48,7 @@ import {
48
48
  selectNavigationError,
49
49
  selectProviderTable,
50
50
  selectUsageSummary,
51
+ selectUsageAgents,
51
52
  selectReasoningEffortPickerModal,
52
53
  selectContextTierPickerModal,
53
54
  selectRenameSessionModal,
@@ -10978,6 +10979,172 @@ function budgetViewDeps(state) {
10978
10979
  ];
10979
10980
  }
10980
10981
 
10982
+
10983
+ // ─── Agents tab ─────────────────────────────────────────────────────────
10984
+
10985
+ /** Categorical fills for agent segments — readable on light and dark. */
10986
+ const AGENT_PALETTE = ["#5b8def", "#e8833a", "#3fb27f", "#c95d63", "#8f6fd8", "#2fa8bf", "#c9a227", "#d1699e", "#7a9a3b", "#8a8a8a"];
10987
+ const agentColor = (i) => AGENT_PALETTE[i % AGENT_PALETTE.length];
10988
+
10989
+ /** Stacked-by-agent daily bars, linear axis — same geometry as SummaryChart. */
10990
+ function AgentStackChart({ view, included }) {
10991
+ const W = 720; const H = 210; const padL = 58; const padB = 22; const padT = 8;
10992
+ const order = view.agents.filter((a) => included.has(a.agent)).map((a) => a.agent);
10993
+ const totals = view.dayKeys.map((day) => {
10994
+ const perDay = view.daily.get(day) || new Map();
10995
+ return order.reduce((sum, agent) => sum + (perDay.get(agent) || 0), 0);
10996
+ });
10997
+ const max = Math.max(0, ...totals) || 1;
10998
+ const innerH = H - padB - padT;
10999
+ const y = (v) => innerH - (v / max) * innerH;
11000
+ const n = Math.max(1, view.dayKeys.length);
11001
+ const slot = (W - padL) / n;
11002
+ const barW = Math.max(3, slot * 0.66);
11003
+ const labelEvery = n > 40 ? 10 : (n > 20 ? 5 : 1);
11004
+ return React.createElement("svg", {
11005
+ className: "ps-summary-chart", viewBox: `0 0 ${W} ${H}`, role: "img",
11006
+ "aria-label": `Tokens per day by agent, ${n} days`,
11007
+ },
11008
+ [0, 0.25, 0.5, 0.75, 1].map((f) => React.createElement("g", { key: f },
11009
+ React.createElement("line", { x1: padL, x2: W, y1: padT + innerH - f * innerH, y2: padT + innerH - f * innerH, className: "ps-summary-chart__grid" }),
11010
+ React.createElement("text", { x: padL - 6, y: padT + innerH - f * innerH + 3, className: "ps-summary-chart__tick", textAnchor: "end" }, summaryTokens(f * max)))),
11011
+ view.dayKeys.map((day, i) => {
11012
+ const perDay = view.daily.get(day) || new Map();
11013
+ const x = padL + i * slot + (slot - barW) / 2;
11014
+ let cum = 0;
11015
+ const segs = order.map((agent, ai) => {
11016
+ const v = perDay.get(agent) || 0;
11017
+ if (v <= 0) return null;
11018
+ const y0 = padT + y(cum); cum += v; const y1 = padT + y(cum);
11019
+ return React.createElement("rect", { key: agent, x, y: y1, width: barW, height: Math.max(0.5, y0 - y1 - 0.5), fill: agentColor(view.agents.findIndex((a) => a.agent === agent)) });
11020
+ });
11021
+ const title = `${day}: ${summaryTokens(cum)} tokens\n` + order
11022
+ .map((agent) => [agent, perDay.get(agent) || 0]).filter(([, v]) => v > 0)
11023
+ .sort((a, b) => b[1] - a[1]).map(([agent, v]) => `${agent}: ${summaryTokens(v)}`).join("\n");
11024
+ return React.createElement("g", { key: day, className: "ps-summary-chart__bar" },
11025
+ React.createElement("title", null, title),
11026
+ segs,
11027
+ (i % labelEvery === 0 || i === n - 1)
11028
+ ? React.createElement("text", { x: x + barW / 2, y: H - 6, className: "ps-summary-chart__day", textAnchor: "middle" }, day.slice(5))
11029
+ : null);
11030
+ }));
11031
+ }
11032
+
11033
+ const AGENT_SORTS = {
11034
+ agent: (a, b) => a.agent.localeCompare(b.agent),
11035
+ turns: (a, b) => b.turns - a.turns,
11036
+ sessions: (a, b) => b.sessions - a.sessions,
11037
+ total: (a, b) => b.total - a.total,
11038
+ perTurn: (a, b) => b.perTurn - a.perTurn,
11039
+ cacheRead: (a, b) => b.cacheRead - a.cacheRead,
11040
+ };
11041
+
11042
+ function agentsViewDeps(state) {
11043
+ const a = state.budget?.agents || {};
11044
+ const s = state.budget?.summary || {};
11045
+ return [a.loading, a.error, a.fetchedAt, s.days, s.preset, (s.providers || []).join(","), (state.budget?.grid || []).length];
11046
+ }
11047
+
11048
+ /**
11049
+ * The Agents tab: the same ledger rows as the Cluster summary, pivoted by
11050
+ * the agent that ran the turn. The checkbox on each row slices the chart;
11051
+ * clicking a column header re-sorts the table. '(none)' is a session bound
11052
+ * to no agent — its tokens are real, so it is a row, not an omission.
11053
+ */
11054
+ function AgentUsagePane({ controller }) {
11055
+ const deps = useControllerSelector(controller, agentsViewDeps, shallowEqualObject);
11056
+ const view = React.useMemo(() => selectUsageAgents(controller.getState()), [controller, deps]);
11057
+ const summaryView = React.useMemo(() => selectUsageSummary(controller.getState()), [controller, deps]);
11058
+ React.useEffect(() => {
11059
+ if (!view.loaded && !view.loading && !view.error) controller.loadUsageAgents().catch(() => {});
11060
+ }, [controller]);
11061
+
11062
+ const [excluded, setExcluded] = React.useState(() => new Set());
11063
+ const [sortKey, setSortKey] = React.useState("total");
11064
+ const included = React.useMemo(() => new Set(view.agents.map((a) => a.agent).filter((name) => !excluded.has(name))), [view, excluded]);
11065
+ const toggleAgent = (name) => setExcluded((prev) => {
11066
+ const next = new Set(prev);
11067
+ if (next.has(name)) next.delete(name); else next.add(name);
11068
+ return next;
11069
+ });
11070
+ const rows = React.useMemo(() => [...view.agents].sort(AGENT_SORTS[sortKey] || AGENT_SORTS.total), [view, sortKey]);
11071
+ const setRange = (days) => controller.setUsageSummaryFilter({ days }).catch(() => {});
11072
+ const setProviders = ({ preset, providers }) => controller.setUsageSummaryFilter({ preset, providers }).catch(() => {});
11073
+ const sortableHead = (key, label, title) => React.createElement("th", {
11074
+ key: label, title: title || "Click to sort by this column",
11075
+ style: { cursor: "pointer" },
11076
+ onClick: () => setSortKey(key),
11077
+ }, label, sortKey === key ? " ▾" : "");
11078
+
11079
+ return React.createElement("div", { className: `ps-summary${view.loading ? " is-loading" : ""}` },
11080
+ React.createElement("div", { className: "ps-summary__filters" },
11081
+ React.createElement(SummaryProviderPicker, { view: summaryView, onChange: setProviders }),
11082
+ React.createElement("div", { className: "ps-budget-seg", role: "group", "aria-label": "Window" },
11083
+ SUMMARY_RANGES.map((days) => React.createElement("button", {
11084
+ key: days, type: "button",
11085
+ className: `ps-budget-seg__button${view.days === days ? " is-on" : ""}`,
11086
+ "aria-pressed": view.days === days,
11087
+ onClick: () => setRange(days),
11088
+ }, `${days}d`))),
11089
+ React.createElement("span", { className: "ps-summary__scope" },
11090
+ view.scope === "cluster" ? "Whole cluster, system sessions included" : "Your own turns")),
11091
+ view.error ? React.createElement("div", { className: "ps-budget-empty is-error", role: "alert" },
11092
+ React.createElement("div", null, "The agent pivot could not be read. "),
11093
+ React.createElement("div", { className: "ps-budget-sub" }, view.error)) : null,
11094
+ React.createElement("div", { className: "ps-summary__card" },
11095
+ React.createElement("div", { className: "ps-summary__card-head" },
11096
+ React.createElement("b", null, "Tokens per day, by agent"),
11097
+ React.createElement("span", { className: "ps-summary__muted" },
11098
+ `last ${view.days} days · ${summaryTokens(view.windowTotal)} tokens · untick a row below to slice the chart`)),
11099
+ view.loaded || view.windowTotal > 0
11100
+ ? React.createElement(AgentStackChart, { view, included })
11101
+ : null,
11102
+ React.createElement("div", { className: "ps-summary__legend", style: { flexWrap: "wrap", marginTop: "6px" } },
11103
+ view.agents.map((a, i) => included.has(a.agent) ? React.createElement("span", { key: a.agent },
11104
+ React.createElement("i", { className: "ps-summary-dot", style: { background: agentColor(i) } }), a.agent) : null))),
11105
+ React.createElement("div", { className: "ps-summary__card" },
11106
+ React.createElement("div", { className: "ps-summary__card-head" },
11107
+ React.createElement("b", null, "By agent"),
11108
+ React.createElement("span", { className: "ps-summary__muted" }, "tokens/turn is the window average — a ledger row is one turn")),
11109
+ view.agents.length === 0
11110
+ ? React.createElement("div", { className: "ps-budget-empty" }, view.loaded ? "No token usage in this window." : (view.loading ? "Reading…" : ""))
11111
+ : React.createElement("div", { className: "ps-summary__table-wrap" },
11112
+ React.createElement("table", { className: "ps-summary__table" },
11113
+ React.createElement("thead", null, React.createElement("tr", null,
11114
+ React.createElement("th", { title: "Untick to remove this agent from the chart" }, ""),
11115
+ sortableHead("agent", "Agent"),
11116
+ React.createElement("th", { title: "Distinct model names this agent ran in the window" }, "Models"),
11117
+ sortableHead("turns", "Turns"),
11118
+ sortableHead("sessions", "Sessions"),
11119
+ sortableHead("total", "Total"),
11120
+ sortableHead("perTurn", "Tok/turn", "Window average: total tokens over ledger turns"),
11121
+ sortableHead("cacheRead", "Cache read"),
11122
+ React.createElement("th", null, "Cache write"),
11123
+ React.createElement("th", null, "Share"),
11124
+ React.createElement("th", null, "Trend"))),
11125
+ React.createElement("tbody", null, rows.map((a) => React.createElement("tr", { key: a.agent },
11126
+ React.createElement("td", null, React.createElement("input", {
11127
+ type: "checkbox", checked: !excluded.has(a.agent),
11128
+ onChange: () => toggleAgent(a.agent), "aria-label": `Include ${a.agent} in the chart`,
11129
+ })),
11130
+ React.createElement("td", { className: "is-model" },
11131
+ React.createElement("i", { className: "ps-summary-dot", style: { background: agentColor(view.agents.findIndex((x) => x.agent === a.agent)) } }),
11132
+ " ", a.agent),
11133
+ React.createElement("td", { title: a.models.join(", ") }, a.models.length <= 2 ? a.models.join(", ") : `${a.models.slice(0, 2).join(", ")} +${a.models.length - 2}`),
11134
+ React.createElement("td", null, a.turns),
11135
+ React.createElement("td", null, a.sessions),
11136
+ React.createElement("td", { className: "is-total" }, summaryTokens(a.total)),
11137
+ React.createElement("td", null, summaryTokens(Math.round(a.perTurn))),
11138
+ React.createElement("td", null, summaryTokens(a.cacheRead)),
11139
+ React.createElement("td", null, summaryTokens(a.cacheWrite)),
11140
+ React.createElement("td", { className: "is-share" },
11141
+ React.createElement("i", { className: "ps-summary-share", style: { width: `${Math.max(1, Math.round(a.share * 100))}px` } }),
11142
+ `${(a.share * 100).toFixed(a.share < 0.1 ? 1 : 0)}%`),
11143
+ React.createElement("td", null, React.createElement(SummarySparkline, {
11144
+ values: view.dayKeys.map((day) => { const found = a.daily.find((d) => d.day === day); return found ? Number(found.total) || 0 : 0; }),
11145
+ })))))))));
11146
+ }
11147
+
10981
11148
  // ─── Cluster summary tab ────────────────────────────────────────────────
10982
11149
 
10983
11150
  const SUMMARY_RANGES = [14, 30, 90];
@@ -11077,24 +11244,12 @@ function summaryTokens(n) {
11077
11244
  * Linear by default; when one day is more than ten times the median of the
11078
11245
  * others, the axis goes to log10(1 + n) so the rest are not hairlines.
11079
11246
  */
11080
- /**
11081
- * Log or linear? Log when one day is more than ten times the median of the
11082
- * days that had anything — otherwise a spike turns every other day into a
11083
- * hairline. Shared by the chart and the card header that names the scale.
11084
- */
11085
- function summaryLogScale(series) {
11086
- const totals = series.map((d) => d.total);
11087
- const max = Math.max(0, ...totals);
11088
- const sorted = totals.filter((t) => t > 0).sort((a, b) => a - b);
11089
- const median = sorted.length ? sorted[Math.floor(sorted.length / 2)] : 0;
11090
- return median > 0 && max > median * 10;
11091
- }
11092
-
11093
11247
  function SummaryChart({ series }) {
11094
11248
  const W = 720; const H = 190; const padL = 58; const padB = 22; const padT = 8;
11095
11249
  const totals = series.map((d) => d.total);
11096
11250
  const max = Math.max(0, ...totals);
11097
- const log = summaryLogScale(series);
11251
+ // Variant B: strictly linear. A spike is allowed to tower; composition
11252
+ const log = false;
11098
11253
  const scale = (v) => (log ? Math.log10(1 + v) : v);
11099
11254
  const top = scale(max) || 1;
11100
11255
  const innerH = H - padB - padT;
@@ -11143,6 +11298,7 @@ function SummaryChart({ series }) {
11143
11298
  }));
11144
11299
  }
11145
11300
 
11301
+
11146
11302
  function SummarySparkline({ values }) {
11147
11303
  const max = Math.max(0, ...values);
11148
11304
  // 90 days at 4px is a 450px column; narrower bars past a month.
@@ -11217,11 +11373,7 @@ function ClusterSummaryPane({ controller }) {
11217
11373
  React.createElement("span", { title: "The part of the input written to the cache" }, React.createElement("i", { className: "ps-summary-dot is-cache-w" }), "cache write"),
11218
11374
  React.createElement("span", null, React.createElement("i", { className: "ps-summary-dot is-out" }), "output")),
11219
11375
  React.createElement("span", { className: "ps-summary__muted" }, `${rangeLabel} · ${summaryTokens(view.windowTotal)} tokens`),
11220
- // Named here, not painted over the bars: a spike is exactly
11221
- // when the tallest bar reaches the top-right corner.
11222
- summaryLogScale(view.series)
11223
- ? React.createElement("span", { className: "ps-summary__tag", title: "One day is more than ten times the median, so the axis is log10 — otherwise every other day is a hairline." }, "log scale")
11224
- : null),
11376
+ null),
11225
11377
  view.windowTotal > 0 || view.loaded
11226
11378
  ? React.createElement(SummaryChart, { series: view.series })
11227
11379
  : null,
@@ -11562,7 +11714,7 @@ function ProviderBudgetView({ controller }) {
11562
11714
  // Two tabs: the per-provider table (meters, people's turns, limits)
11563
11715
  // and the Cluster summary (the ledger, every turn, by model).
11564
11716
  React.createElement("div", { className: "ps-budget-tabs", role: "tablist" },
11565
- [["providers", "Providers"], ["summary", "Cluster summary"]].map(([id, label]) => React.createElement("button", {
11717
+ [["providers", "Providers"], ["summary", "Cluster summary"], ["agents", "Agents"]].map(([id, label]) => React.createElement("button", {
11566
11718
  key: id, type: "button", role: "tab",
11567
11719
  "aria-selected": (controller.getState().budget?.tab || "providers") === id,
11568
11720
  className: `ps-budget-tab${(controller.getState().budget?.tab || "providers") === id ? " is-on" : ""}`,
@@ -11570,7 +11722,9 @@ function ProviderBudgetView({ controller }) {
11570
11722
  }, label))),
11571
11723
  (controller.getState().budget?.tab || "providers") === "summary"
11572
11724
  ? React.createElement("div", { className: "ps-budget" }, React.createElement(ClusterSummaryPane, { controller }))
11573
- : React.createElement("div", { className: "ps-budget" }, body),
11725
+ : (controller.getState().budget?.tab === "agents"
11726
+ ? React.createElement("div", { className: "ps-budget" }, React.createElement(AgentUsagePane, { controller }))
11727
+ : React.createElement("div", { className: "ps-budget" }, body)),
11574
11728
  sheetEl);
11575
11729
  }
11576
11730
 
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-0QOtPHz1.js";import{p as f}from"./chunk-JWPE2WC7-sPBZfXag.js";import{_ as n,l as o}from"./mermaid.core-DuM5Gnr2.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DquCg-BR.js";import"./pilotswarm-BuroYLs1.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-TeWalpvK.js";import{p as f}from"./chunk-JWPE2WC7-dj0DOnPl.js";import{_ as n,l as o}from"./mermaid.core-C8tHn40J.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-CM8y129F.js";import"./pilotswarm-uebRfMjg.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-DuM5Gnr2.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-C8tHn40J.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};