pilotswarm 0.5.47 → 0.5.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/mcp/dist/src/tools/providers.d.ts.map +1 -1
- package/mcp/dist/src/tools/providers.js +12 -0
- package/mcp/dist/src/tools/providers.js.map +1 -1
- package/package.json +2 -2
- package/tui/src/node-sdk-transport.js +5 -0
- package/ui/core/src/commands.js +1 -0
- package/ui/core/src/controller.js +85 -3
- package/ui/core/src/history.js +5 -37
- package/ui/core/src/index.js +1 -0
- package/ui/core/src/reducer.js +42 -0
- package/ui/core/src/selectors.js +153 -4
- package/ui/core/src/state.js +20 -0
- package/ui/core/src/table-layout.js +155 -0
- package/ui/react/src/web-app.js +479 -249
- package/web/dist/assets/{abnfDiagram-VRR7QNED-VPL8m_9W.js → abnfDiagram-VRR7QNED-CXF6f3n3.js} +1 -1
- package/web/dist/assets/{arc-T5I3-c1B.js → arc-MlDVINID.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-DEP70bg6.js → architectureDiagram-ZJ3FMSHR-Bdz1J9H-.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-CvBu1MbO.js → blockDiagram-677ZJIJ3-tO706-rr.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-B5qwF4gm.js → c4Diagram-LMCZKHZV-BuZrMrYZ.js} +1 -1
- package/web/dist/assets/channel-moQWQGwr.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-zVW8dS7X.js → chunk-2Q5K7J3B-BWWIPnCk.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-DWctxZZS.js → chunk-32BRIVSS-TyL8x2Q5.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-Bq7_Vmf9.js → chunk-5VM5RSS4-ZTwZyN5B.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-B8CFB3v-.js → chunk-EX3LRPZG-CjWsKz70.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-B7gLPjgZ.js → chunk-JWPE2WC7-BNQrzsa3.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-B2x6q12r.js → chunk-MOJQB5TN-B51xJi0l.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F-XorU9Stx.js → chunk-RYQCIY6F-BCdsh9nc.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-CsLa6pw5.js → chunk-V7JOEXUC-C7FFxC7C.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-BBv9mwmj.js → chunk-VR4S4FIN-DWoFV0Pb.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-Cjm4mm6l.js → chunk-XXDRQBXY-plM48yQb.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-33Sv-tmv.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-33Sv-tmv.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-Zw9ZQbVl.js → cose-bilkent-JH36ORCC-cPPsd8jq.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-BYnR9YLM.js → cynefin-VYW2F7L2-DLoMRcB-.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-Cx8L0dOv.js → cynefinDiagram-TSTJHNR4-DbxB1EcR.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-7GaqVcqz.js → dagre-VKFMJZFB-Cl5J3v7U.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-BWSRPJvU.js → diagram-FQU43EPY-C_5l69HJ.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-BELuAE1e.js → diagram-G47NLZAW-B_nxM69x.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-DGXhPpri.js → diagram-NH7WQ7WH-BogLLCcM.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-DV8HqN0T.js → diagram-OA4YK3LP-1HZ1DJgO.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-Clv1X3ZL.js → diagram-WEI45ONY-CZ9akwtz.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-TpQx36oi.js → ebnfDiagram-CCIWWBDH-CCg2iaF2.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-DVVWd00c.js → erDiagram-Q63AITRT-BCYw6hLk.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-Cdz_8_Dw.js → flowDiagram-23GEKE2U-B3O-UeAj.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-zlco-o7u.js → ganttDiagram-NO4QXBWP-GJzz1tR4.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-CfAZW1En.js → gitGraphDiagram-IHSO6WYX-Ch1cfaOe.js} +1 -1
- package/web/dist/assets/index-BUp5hFdX.css +1 -0
- package/web/dist/assets/{index-tQXCQojP.js → index-wYKm3Bnl.js} +6 -6
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-0R-8efwI.js → infoDiagram-FWYZ7A6U-Bjo2ImAx.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-lPpoXGlp.js → ishikawaDiagram-FXEZZL3T-Cknf936W.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-D05vSVqu.js → journeyDiagram-5HDEW3XC-Chy2vDKP.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-ClaDdESv.js → kanban-definition-HUTT4EX6-BL4WMBwi.js} +1 -1
- package/web/dist/assets/{linear-CUnhHMvY.js → linear-B8XSGnZ8.js} +1 -1
- package/web/dist/assets/{mermaid.core-DaYS-X8Y.js → mermaid.core-CFdkmvEY.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-N480VHds.js → mindmap-definition-LN4V7U3C-CHOBIkSR.js} +1 -1
- package/web/dist/assets/{papaparse.min-CNTcNgd8.js → papaparse.min-DnG1sqyK.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-CVWyJ5ck.js → pegDiagram-2B236MQR-VuMpZEdm.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-UR9uohPf.js → pieDiagram-ENE6RG2P-CkFTLWPp.js} +1 -1
- package/web/dist/assets/pilotswarm-CLJw14xm.js +97 -0
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-D2SIOetn.js → quadrantDiagram-ABIIQ3AL-B74MHjsI.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-OgN6qgOU.js → railroadDiagram-RFXS5EU6-CwcT-BI1.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-BSUURBBz.js → requirementDiagram-TGXJPOKE-CfV8rmaQ.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-BBZhmSBZ.js → sankeyDiagram-HTMAVEWB-BECA4LLx.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-C10IDNdW.js → sequenceDiagram-DBY2YBRQ-C80kbBkw.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-B9787MHa.js → sizeCapture-X5ZJPWSS-BgdLZC94.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-BmSBo7es.js → stateDiagram-2N3HPSRC-DY_mnuOT.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-Dw3VhZ5V.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-DOXpv_KQ.js → swimlanes-5IMT3BWC-9m8kjDvw.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-DoOI0AiK.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-SjhGfPdI.js → timeline-definition-FHXFAJF6-CRDqu4Os.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-BiujYen6.js → vennDiagram-L72KCM5P-B2KNeFvN.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-6nLXBvwc.js → wardleyDiagram-EHGQE667-DC0vN3Ub.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-Di7ioTvW.js → xychartDiagram-FW5EYKEG-DOY6Rwu4.js} +1 -1
- package/web/dist/index.html +3 -3
- package/web/runtime.js +10 -0
- package/web/dist/assets/channel-D5LojeMw.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-C5edc5Or.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-C5edc5Or.js +0 -1
- package/web/dist/assets/index-CMtzFJre.css +0 -1
- package/web/dist/assets/pilotswarm-BG6hk0oE.js +0 -97
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BqpsfoJI.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-k8WG_bWt.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,
|
|
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"}
|
|
@@ -257,6 +257,18 @@ export function registerProviderTools(server, ctx) {
|
|
|
257
257
|
contextTier: context ?? null,
|
|
258
258
|
}));
|
|
259
259
|
}));
|
|
260
|
+
server.registerTool("get_provider_usage_summary", {
|
|
261
|
+
title: "Get Cluster Usage Summary",
|
|
262
|
+
description: "The cluster summary from the usage ledger: token totals for today, the last 7 and the last 30 UTC "
|
|
263
|
+
+ "days (input, output, cache read, cache write, total, turns, sessions), a per-day series for a "
|
|
264
|
+
+ "chart, and the per-MODEL pivot — one row per model name across every provider, reasoning effort "
|
|
265
|
+
+ "and context tier. Admins see the whole cluster, system sessions included (the Providers meters "
|
|
266
|
+
+ "count people's turns only; `classes` shows the split); everyone else sees their own turns.",
|
|
267
|
+
inputSchema: {
|
|
268
|
+
days: z.number().int().min(1).max(365).optional().describe("Days of history for the series and the model table (default 14; 14, 30 or 90 are the portal's choices)"),
|
|
269
|
+
providers: z.array(z.string()).optional().describe("Only these providers, by name; absent means all"),
|
|
270
|
+
},
|
|
271
|
+
}, withToolErrors(async ({ days, providers }) => jsonResult(await ctx.mgmt.getProviderUsageSummary(viewer, { days, providers }))));
|
|
260
272
|
server.registerTool("get_provider_usage", {
|
|
261
273
|
title: "Get Provider Usage",
|
|
262
274
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/tools/providers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pilotswarm",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.49",
|
|
4
4
|
"description": "PilotSwarm application package: terminal UI, browser portal + Web API server, and MCP server — one install, three bins.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"ink": "^6.8.0",
|
|
82
82
|
"jose": "^6.2.2",
|
|
83
83
|
"mermaid": "^11.16.0",
|
|
84
|
-
"pilotswarm-sdk": "0.5.
|
|
84
|
+
"pilotswarm-sdk": "0.5.49",
|
|
85
85
|
"react": "^19.2.4",
|
|
86
86
|
"react-dom": "^19.2.4",
|
|
87
87
|
"ws": "^8.18.2"
|
|
@@ -1569,6 +1569,11 @@ export class NodeSdkTransport {
|
|
|
1569
1569
|
return this.mgmt.updateMyProviderCredential(await this._modelProviderViewer(), input || {});
|
|
1570
1570
|
}
|
|
1571
1571
|
|
|
1572
|
+
/** The cluster summary: totals, a per-day series and the per-model pivot. */
|
|
1573
|
+
async getProviderUsageSummary(query = {}) {
|
|
1574
|
+
return this.mgmt.getProviderUsageSummary(await this._modelProviderViewer(), query || {});
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1572
1577
|
/** Rotate a SHARED provider's key. Admin-only, enforced in SQL. */
|
|
1573
1578
|
async updateSharedProviderCredential(input) {
|
|
1574
1579
|
return this.mgmt.updateSharedProviderCredential(await this._modelProviderViewer(), input || {});
|
package/ui/core/src/commands.js
CHANGED
|
@@ -87,6 +87,7 @@ export const UI_COMMANDS = {
|
|
|
87
87
|
// Admin Console — swaps out sessions+chat for the per-user admin view.
|
|
88
88
|
OPEN_ADMIN_CONSOLE: "openAdminConsole",
|
|
89
89
|
CLOSE_ADMIN_CONSOLE: "closeAdminConsole",
|
|
90
|
+
OPEN_WORKSPACE: "openWorkspace",
|
|
90
91
|
ADMIN_REFRESH_PROFILE: "adminRefreshProfile",
|
|
91
92
|
ADMIN_SHOW_GHCP: "adminShowGhcp",
|
|
92
93
|
ADMIN_SHOW_PACKAGES: "adminShowPackages",
|
|
@@ -3171,6 +3171,8 @@ export class PilotSwarmUiController {
|
|
|
3171
3171
|
* admin view) and refresh the user profile so the UI is current.
|
|
3172
3172
|
*/
|
|
3173
3173
|
async openAdminConsole() {
|
|
3174
|
+
// One MODE at a time — see openBudget.
|
|
3175
|
+
if (this.getState().ui?.budgetOpen) this.closeBudget();
|
|
3174
3176
|
this.dispatch({ type: "admin/visibility", visible: true });
|
|
3175
3177
|
await this.refreshAdminProfile().catch(() => {});
|
|
3176
3178
|
void this.refreshAdminModelProviders().catch(() => {});
|
|
@@ -3182,6 +3184,24 @@ export class PilotSwarmUiController {
|
|
|
3182
3184
|
this.dispatch({ type: "admin/visibility", visible: false });
|
|
3183
3185
|
}
|
|
3184
3186
|
|
|
3187
|
+
/**
|
|
3188
|
+
* The Workspace mode: sessions, chat and the panels. Closes whichever
|
|
3189
|
+
* other mode is up. A real destination, so the toolbar can offer "back
|
|
3190
|
+
* to the workspace" as a button rather than "close whatever is open".
|
|
3191
|
+
*/
|
|
3192
|
+
openWorkspace() {
|
|
3193
|
+
if (this.getState().admin?.visible) this.closeAdminConsole();
|
|
3194
|
+
if (this.getState().ui?.budgetOpen) this.closeBudget();
|
|
3195
|
+
}
|
|
3196
|
+
|
|
3197
|
+
/** Which mode is on screen: "workspace" | "budget" | "admin". */
|
|
3198
|
+
currentMode() {
|
|
3199
|
+
const state = this.getState();
|
|
3200
|
+
if (state.admin?.visible) return "admin";
|
|
3201
|
+
if (state.ui?.budgetOpen) return "budget";
|
|
3202
|
+
return "workspace";
|
|
3203
|
+
}
|
|
3204
|
+
|
|
3185
3205
|
/**
|
|
3186
3206
|
* Land on a freshly created session. Selecting it is not enough: the
|
|
3187
3207
|
* Admin Console REPLACES the workspace, so creating from there left the
|
|
@@ -3435,6 +3455,12 @@ export class PilotSwarmUiController {
|
|
|
3435
3455
|
});
|
|
3436
3456
|
}
|
|
3437
3457
|
|
|
3458
|
+
/** Does the selected provider type authenticate as the worker itself? */
|
|
3459
|
+
_adminProviderTypeUsesWorkloadIdentity(typeId) {
|
|
3460
|
+
const types = selectAdminConsole(this.getState()).modelProviders?.providerTypes || [];
|
|
3461
|
+
return types.find((type) => type.id === typeId)?.usesWorkloadIdentity === true;
|
|
3462
|
+
}
|
|
3463
|
+
|
|
3438
3464
|
cycleAdminProviderCreateType() {
|
|
3439
3465
|
const providers = selectAdminConsole(this.getState()).modelProviders;
|
|
3440
3466
|
const create = this.getState().admin?.modelProviders?.create;
|
|
@@ -3492,16 +3518,26 @@ export class PilotSwarmUiController {
|
|
|
3492
3518
|
async saveAdminProviderCreate() {
|
|
3493
3519
|
const create = this.getState().admin?.modelProviders?.create;
|
|
3494
3520
|
if (!create?.editing || create.saving || create.stage !== "credential") return;
|
|
3521
|
+
// A workload-identity type has no key to type. The stage is still
|
|
3522
|
+
// reached — it is where the person confirms — but the draft is empty
|
|
3523
|
+
// by design, so demanding a credential would make the type
|
|
3524
|
+
// unusable from this screen.
|
|
3525
|
+
const workloadIdentity = this._adminProviderTypeUsesWorkloadIdentity(create.typeId);
|
|
3495
3526
|
const credential = String(create.draft || "").trim();
|
|
3496
|
-
if (!credential) {
|
|
3527
|
+
if (!credential && !workloadIdentity) {
|
|
3497
3528
|
this.dispatch({ type: "admin/modelProviders/createFailed", error: "Enter a provider credential." });
|
|
3498
3529
|
return;
|
|
3499
3530
|
}
|
|
3500
3531
|
const input = {
|
|
3501
3532
|
name: create.name,
|
|
3502
3533
|
type: create.typeId,
|
|
3503
|
-
credentials:
|
|
3504
|
-
|
|
3534
|
+
credentials: workloadIdentity
|
|
3535
|
+
? { kind: "workloadIdentity" }
|
|
3536
|
+
: /github/i.test(create.typeId) ? { githubToken: credential } : { apiKey: credential },
|
|
3537
|
+
// It runs on the worker's identity, which belongs to the
|
|
3538
|
+
// organization, so it can only be shared. The server refuses a
|
|
3539
|
+
// personal one; asking for it here would only earn an error.
|
|
3540
|
+
shared: workloadIdentity ? true : create.shared === true,
|
|
3505
3541
|
};
|
|
3506
3542
|
// Clear the credential from shared state before any network await.
|
|
3507
3543
|
this.dispatch({ type: "admin/modelProviders/createSaving" });
|
|
@@ -4094,6 +4130,10 @@ export class PilotSwarmUiController {
|
|
|
4094
4130
|
* row it names is in it.
|
|
4095
4131
|
*/
|
|
4096
4132
|
async openBudget({ provider = undefined } = {}) {
|
|
4133
|
+
// One MODE at a time: Workspace, Budget or the Admin Console. The two
|
|
4134
|
+
// flags used to be independent, so Budget could open behind an open
|
|
4135
|
+
// Admin Console and the toolbar showed both as active.
|
|
4136
|
+
if (this.getState().admin?.visible) this.closeAdminConsole();
|
|
4097
4137
|
this.dispatch({
|
|
4098
4138
|
type: "ui/budgetOpen",
|
|
4099
4139
|
open: true,
|
|
@@ -4115,6 +4155,45 @@ export class PilotSwarmUiController {
|
|
|
4115
4155
|
this.dispatch({ type: "ui/budgetOpen", open: false });
|
|
4116
4156
|
}
|
|
4117
4157
|
|
|
4158
|
+
/** Which tab of the Budget screen: "providers" or "summary". */
|
|
4159
|
+
setBudgetTab(tab) {
|
|
4160
|
+
this.dispatch({ type: "budget/tab", tab });
|
|
4161
|
+
if (tab === "summary") this.loadUsageSummary().catch(() => {});
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4164
|
+
/**
|
|
4165
|
+
* Change the Cluster summary's window or provider filter and re-read.
|
|
4166
|
+
* `providers` is the exact list to ask for (empty = all); `preset` is
|
|
4167
|
+
* what the picker shows ("all" | "shared" | "users" | "custom").
|
|
4168
|
+
*/
|
|
4169
|
+
async setUsageSummaryFilter({ days, providers, preset } = {}) {
|
|
4170
|
+
this.dispatch({ type: "budget/summary/filter", days, providers, preset });
|
|
4171
|
+
await this.loadUsageSummary();
|
|
4172
|
+
}
|
|
4173
|
+
|
|
4174
|
+
/**
|
|
4175
|
+
* Read the Cluster summary for the current filter. One request; the
|
|
4176
|
+
* database builds the windows, the series and the model pivot over the
|
|
4177
|
+
* same rows, so the three can never disagree.
|
|
4178
|
+
*/
|
|
4179
|
+
async loadUsageSummary() {
|
|
4180
|
+
if (typeof this.transport.getProviderUsageSummary !== "function") {
|
|
4181
|
+
this.dispatch({ type: "budget/summary/failed", error: "The cluster summary is not available on this transport." });
|
|
4182
|
+
return;
|
|
4183
|
+
}
|
|
4184
|
+
const filter = this.getState().budget?.summary || {};
|
|
4185
|
+
this.dispatch({ type: "budget/summary/loading" });
|
|
4186
|
+
try {
|
|
4187
|
+
const data = await this.transport.getProviderUsageSummary({
|
|
4188
|
+
days: filter.days || 14,
|
|
4189
|
+
...(Array.isArray(filter.providers) && filter.providers.length ? { providers: filter.providers } : {}),
|
|
4190
|
+
});
|
|
4191
|
+
this.dispatch({ type: "budget/summary/loaded", data, fetchedAt: Date.now() });
|
|
4192
|
+
} catch (error) {
|
|
4193
|
+
this.dispatch({ type: "budget/summary/failed", error: budgetRefusalMessage(error) });
|
|
4194
|
+
}
|
|
4195
|
+
}
|
|
4196
|
+
|
|
4118
4197
|
/**
|
|
4119
4198
|
* The "show overall usage" tick.
|
|
4120
4199
|
*
|
|
@@ -10402,6 +10481,9 @@ export class PilotSwarmUiController {
|
|
|
10402
10481
|
case UI_COMMANDS.CLOSE_ADMIN_CONSOLE:
|
|
10403
10482
|
this.closeAdminConsole();
|
|
10404
10483
|
return;
|
|
10484
|
+
case UI_COMMANDS.OPEN_WORKSPACE:
|
|
10485
|
+
this.openWorkspace();
|
|
10486
|
+
return;
|
|
10405
10487
|
case UI_COMMANDS.ADMIN_REFRESH_PROFILE:
|
|
10406
10488
|
await this.refreshAdminProfile();
|
|
10407
10489
|
return;
|
package/ui/core/src/history.js
CHANGED
|
@@ -542,27 +542,11 @@ function buildChatMessage(event, role) {
|
|
|
542
542
|
};
|
|
543
543
|
}
|
|
544
544
|
|
|
545
|
-
// The
|
|
546
|
-
//
|
|
547
|
-
//
|
|
548
|
-
//
|
|
549
|
-
//
|
|
550
|
-
const SYSTEM_PROMPT_NOTICE_RE = /rebuilt the full system prompt for model input/i;
|
|
551
|
-
|
|
552
|
-
/**
|
|
553
|
-
* Is this the system prompt itself, rather than internal chatter?
|
|
554
|
-
*
|
|
555
|
-
* It stays in the ACTIVITY feed as before — that is the raw diagnostic
|
|
556
|
-
* stream — and additionally earns one collapsed row in the transcript, the
|
|
557
|
-
* same affordance as a sub-agent response or a canvas action. Visible enough
|
|
558
|
-
* to open when you want to know what the model was told; folded away the rest
|
|
559
|
-
* of the time.
|
|
560
|
-
*/
|
|
561
|
-
export function isSystemPromptNotice(event) {
|
|
562
|
-
if (event?.eventType !== "system.message") return false;
|
|
563
|
-
return SYSTEM_PROMPT_NOTICE_RE.test(messageTextFromEvent(event) || "");
|
|
564
|
-
}
|
|
565
|
-
|
|
545
|
+
// The Copilot SDK echoes the system prompt as a system.message on EVERY
|
|
546
|
+
// turn, and the worker keeps only a 120-char snippet of it (session-proxy.ts,
|
|
547
|
+
// "Full content omitted from CMS"). For one release (0.5.47) each echo also
|
|
548
|
+
// got a collapsed row in the chat pane — one per turn, and opening it showed
|
|
549
|
+
// the snippet, not the prompt. Activity feed only, as before.
|
|
566
550
|
function shouldRenderSystemMessageAsActivity(event) {
|
|
567
551
|
// Most system.message events stay out of the chat pane. They include the
|
|
568
552
|
// per-turn system prompt sent to the LLM plus internal rehydration notices,
|
|
@@ -1141,13 +1125,6 @@ export function buildHistoryModel(events = [], options = {}) {
|
|
|
1141
1125
|
if (shouldRenderSystemMessageAsActivity(event)) {
|
|
1142
1126
|
const activityItem = formatActivity(event);
|
|
1143
1127
|
if (activityItem) activity.push(activityItem);
|
|
1144
|
-
// The system prompt also earns a collapsed row in the
|
|
1145
|
-
// transcript. It stays in the activity feed above — that is
|
|
1146
|
-
// the raw stream — and this is the readable handle on it.
|
|
1147
|
-
if (isSystemPromptNotice(event)) {
|
|
1148
|
-
const message = buildChatMessage(event, "system");
|
|
1149
|
-
if (message) chat.push(message);
|
|
1150
|
-
}
|
|
1151
1128
|
} else {
|
|
1152
1129
|
const message = buildChatMessage(event, "system");
|
|
1153
1130
|
if (message) chat.push(message);
|
|
@@ -1275,15 +1252,6 @@ export function appendEventToHistory(history, event) {
|
|
|
1275
1252
|
next.activity.push(activityItem);
|
|
1276
1253
|
next.activity = clampHistoryItems(next.activity, loadedEventLimit);
|
|
1277
1254
|
}
|
|
1278
|
-
// Same as the bulk path: the system prompt is also worth one
|
|
1279
|
-
// collapsed row in the conversation.
|
|
1280
|
-
if (isSystemPromptNotice(event)) {
|
|
1281
|
-
const message = buildChatMessage(event, "system");
|
|
1282
|
-
if (message) {
|
|
1283
|
-
next.chat.push(message);
|
|
1284
|
-
next.chat = clampHistoryItems(dedupeChatMessages(next.chat), loadedEventLimit);
|
|
1285
|
-
}
|
|
1286
|
-
}
|
|
1287
1255
|
} else {
|
|
1288
1256
|
const message = buildChatMessage(event, "system");
|
|
1289
1257
|
if (!message) return next;
|
package/ui/core/src/index.js
CHANGED
|
@@ -15,3 +15,4 @@ export * from "./controller.js";
|
|
|
15
15
|
export { isThemeLight } from "./themes/helpers.js";
|
|
16
16
|
export * from "./themes/index.js";
|
|
17
17
|
export { validateCanvasAction, formatCanvasActionPrompt, parseCanvasActionContent, isCanvasActionContent, createCanvasActionLimiter, CANVAS_ACTION_PREFIX } from "./canvas-actions.js";
|
|
18
|
+
export * from "./table-layout.js";
|
package/ui/core/src/reducer.js
CHANGED
|
@@ -1037,6 +1037,48 @@ export function appReducer(state, action) {
|
|
|
1037
1037
|
},
|
|
1038
1038
|
};
|
|
1039
1039
|
|
|
1040
|
+
// ── Budget screen: tab + the Cluster summary ─────────────────
|
|
1041
|
+
case "budget/tab": {
|
|
1042
|
+
const tab = action.tab === "summary" ? "summary" : "providers";
|
|
1043
|
+
if (state.budget.tab === tab) return state;
|
|
1044
|
+
return { ...state, budget: { ...state.budget, tab } };
|
|
1045
|
+
}
|
|
1046
|
+
case "budget/summary/filter": {
|
|
1047
|
+
const prev = state.budget.summary;
|
|
1048
|
+
const days = [14, 30, 90].includes(Number(action.days)) ? Number(action.days) : prev.days;
|
|
1049
|
+
const providers = Array.isArray(action.providers)
|
|
1050
|
+
? action.providers.map((p) => String(p ?? "").trim()).filter(Boolean)
|
|
1051
|
+
: prev.providers;
|
|
1052
|
+
const preset = ["all", "shared", "users", "custom"].includes(action.preset) ? action.preset
|
|
1053
|
+
: (Array.isArray(action.providers) ? "custom" : prev.preset);
|
|
1054
|
+
return { ...state, budget: { ...state.budget, summary: { ...prev, days, providers, preset } } };
|
|
1055
|
+
}
|
|
1056
|
+
case "budget/summary/loading":
|
|
1057
|
+
return { ...state, budget: { ...state.budget, summary: { ...state.budget.summary, loading: true } } };
|
|
1058
|
+
case "budget/summary/loaded":
|
|
1059
|
+
return {
|
|
1060
|
+
...state,
|
|
1061
|
+
budget: {
|
|
1062
|
+
...state.budget,
|
|
1063
|
+
summary: {
|
|
1064
|
+
...state.budget.summary,
|
|
1065
|
+
loading: false,
|
|
1066
|
+
error: null,
|
|
1067
|
+
fetchedAt: Number(action.fetchedAt) || Date.now(),
|
|
1068
|
+
data: action.data && typeof action.data === "object" ? action.data : null,
|
|
1069
|
+
},
|
|
1070
|
+
},
|
|
1071
|
+
};
|
|
1072
|
+
case "budget/summary/failed":
|
|
1073
|
+
// Keep the last answer on screen; say the read failed beside it.
|
|
1074
|
+
return {
|
|
1075
|
+
...state,
|
|
1076
|
+
budget: {
|
|
1077
|
+
...state.budget,
|
|
1078
|
+
summary: { ...state.budget.summary, loading: false, error: String(action.error || "The summary could not be read.") },
|
|
1079
|
+
},
|
|
1080
|
+
};
|
|
1081
|
+
|
|
1040
1082
|
case "ui/diagnosticsSplitAdjust":
|
|
1041
1083
|
return {
|
|
1042
1084
|
...state,
|
package/ui/core/src/selectors.js
CHANGED
|
@@ -39,6 +39,22 @@ import { isRecoverableTransportErrorText } from "./session-errors.js";
|
|
|
39
39
|
|
|
40
40
|
export const ACTIVE_HIGHLIGHT_BACKGROUND = "activeHighlightBackground";
|
|
41
41
|
export const ACTIVE_HIGHLIGHT_FOREGROUND = "activeHighlightForeground";
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Provider types that authenticate as the worker rather than with a key.
|
|
45
|
+
*
|
|
46
|
+
* The same rule as `providerTypeUsesWorkloadIdentity` in the SDK, restated
|
|
47
|
+
* because the UI packages do not import from it. Both sides read the `type`
|
|
48
|
+
* field of the deployment's model-providers file, so they agree on the value
|
|
49
|
+
* even though they cannot share the function.
|
|
50
|
+
*/
|
|
51
|
+
export function providerTypeUsesWorkloadIdentity(type) {
|
|
52
|
+
return type === "anthropic-wif";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** What the add-provider form says where the key field would be. */
|
|
56
|
+
export const WORKLOAD_IDENTITY_CREDENTIAL_NOTE =
|
|
57
|
+
"Use the Workload Identity configured in the worker";
|
|
42
58
|
const USER_CHAT_COLOR = "userChat";
|
|
43
59
|
const USER_CHAT_LABEL_COLOR = "userChatLabel";
|
|
44
60
|
// Speaker label for a message from another person in a shared session.
|
|
@@ -3939,11 +3955,19 @@ export function selectAdminConsole(state) {
|
|
|
3939
3955
|
providerTypeMap.set(model.providerId, {
|
|
3940
3956
|
id: model.providerId,
|
|
3941
3957
|
label: model.providerType || model.providerId,
|
|
3958
|
+
// Carried on the type so that no screen has to know which type
|
|
3959
|
+
// names mean "no key": the add-provider form asks for a
|
|
3960
|
+
// credential unless this says the worker already holds one.
|
|
3961
|
+
usesWorkloadIdentity: providerTypeUsesWorkloadIdentity(model.providerType),
|
|
3942
3962
|
});
|
|
3943
3963
|
}
|
|
3944
3964
|
const providerSummary = (provider) => ({
|
|
3945
3965
|
name: provider.name,
|
|
3946
3966
|
typeId: provider.typeId || provider.type || null,
|
|
3967
|
+
// There is no key on this one to rotate, so the screens that offer
|
|
3968
|
+
// "Update key" leave it off rather than offering an action the server
|
|
3969
|
+
// refuses.
|
|
3970
|
+
usesWorkloadIdentity: providerTypeMap.get(provider.typeId || provider.type)?.usesWorkloadIdentity === true,
|
|
3947
3971
|
class: provider.class === "shared" ? "shared" : "personal",
|
|
3948
3972
|
hasCredential: Boolean(provider.hasCredential),
|
|
3949
3973
|
usableByMe: provider.usableByMe !== false,
|
|
@@ -4680,6 +4704,12 @@ export function selectAdminProviderCreateModal(state, maxWidth = 76) {
|
|
|
4680
4704
|
? "Add GitHub Copilot provider"
|
|
4681
4705
|
: `Add ${create.typeId || "model"} provider`;
|
|
4682
4706
|
const value = String(create.draft || "");
|
|
4707
|
+
// A workload-identity type has no key to ask for. The stage still exists
|
|
4708
|
+
// — it is where the person confirms what they are adding — but it prompts
|
|
4709
|
+
// instead of demanding, and nothing is typed into it.
|
|
4710
|
+
const typeRow = (admin.modelProviders?.models || [])
|
|
4711
|
+
.find((model) => model?.providerId === create.typeId);
|
|
4712
|
+
const workloadIdentity = providerTypeUsesWorkloadIdentity(typeRow?.providerType);
|
|
4683
4713
|
return {
|
|
4684
4714
|
type: "adminProviderCreate",
|
|
4685
4715
|
title: updating
|
|
@@ -4687,10 +4717,12 @@ export function selectAdminProviderCreateModal(state, maxWidth = 76) {
|
|
|
4687
4717
|
: credentialStage
|
|
4688
4718
|
? (shared ? "Add shared model provider" : ownTitle)
|
|
4689
4719
|
: (shared ? "Name the shared provider" : ownTitle),
|
|
4690
|
-
label: credentialStage ? "credential" : "provider name",
|
|
4691
|
-
displayValue: credentialStage && value ? "•".repeat(value.length) : value,
|
|
4720
|
+
label: credentialStage ? (workloadIdentity ? "authentication" : "credential") : "provider name",
|
|
4721
|
+
displayValue: credentialStage && value && !workloadIdentity ? "•".repeat(value.length) : value,
|
|
4692
4722
|
cursorIndex: Math.max(0, Math.min(Number(create.cursorIndex) || 0, value.length)),
|
|
4693
|
-
placeholder: credentialStage
|
|
4723
|
+
placeholder: credentialStage
|
|
4724
|
+
? (workloadIdentity ? WORKLOAD_IDENTITY_CREDENTIAL_NOTE : "Paste token")
|
|
4725
|
+
: "my-ghcp",
|
|
4694
4726
|
saving: Boolean(create.saving),
|
|
4695
4727
|
error: create.error || null,
|
|
4696
4728
|
idealWidth: Math.max(56, Math.min(maxWidth, 76)),
|
|
@@ -4698,6 +4730,9 @@ export function selectAdminProviderCreateModal(state, maxWidth = 76) {
|
|
|
4698
4730
|
? [
|
|
4699
4731
|
{ text: `Provider ${create.name}`, color: "white", bold: true },
|
|
4700
4732
|
{ text: `Type ${create.typeId}`, color: "cyan" },
|
|
4733
|
+
...(workloadIdentity
|
|
4734
|
+
? [{ text: WORKLOAD_IDENTITY_CREDENTIAL_NOTE, color: "gray" }]
|
|
4735
|
+
: []),
|
|
4701
4736
|
{ text: shared ? "Shared" : "Only you", color: "gray" },
|
|
4702
4737
|
]
|
|
4703
4738
|
: [
|
|
@@ -4706,7 +4741,9 @@ export function selectAdminProviderCreateModal(state, maxWidth = 76) {
|
|
|
4706
4741
|
{ text: "Letters, numbers, dot, dash, and underscore only.", color: "gray" },
|
|
4707
4742
|
],
|
|
4708
4743
|
helpLines: credentialStage
|
|
4709
|
-
?
|
|
4744
|
+
? workloadIdentity
|
|
4745
|
+
? ["No key needed", "Enter create provider", "Esc cancel"]
|
|
4746
|
+
: ["Type/paste credential", `Enter ${updating ? "update key" : "create provider"}`, "Esc cancel and clear"]
|
|
4710
4747
|
: ["Type provider name", "Tab next provider type", "Enter continue to credential", "Esc cancel"],
|
|
4711
4748
|
};
|
|
4712
4749
|
}
|
|
@@ -4829,9 +4866,30 @@ function budgetCell(raw, overall, nowMs) {
|
|
|
4829
4866
|
// At 100/100 the two numbers are the story; the case this exists for is a
|
|
4830
4867
|
// cell reading 13% of your share on a provider that has nothing left.
|
|
4831
4868
|
const blockedButLooksFine = !overall && providerExhausted && (pct == null || pct < 100);
|
|
4869
|
+
// What the used figure is made of, for the pair on screen. A limit is on
|
|
4870
|
+
// the total — input + output — and the cache figures are parts OF the
|
|
4871
|
+
// input (what was served from the cache, what was written to it), not
|
|
4872
|
+
// additions to it. The parts are the meter's own turns over the meter's
|
|
4873
|
+
// own window, so input + output is the used figure beside them.
|
|
4874
|
+
const part = (key) => {
|
|
4875
|
+
const v = overall ? raw?.[key] : raw?.[`your${key[0].toUpperCase()}${key.slice(1)}`];
|
|
4876
|
+
return v == null ? null : Number(v);
|
|
4877
|
+
};
|
|
4878
|
+
const splitInput = part("inputTokens");
|
|
4879
|
+
const split = Number.isFinite(splitInput) ? {
|
|
4880
|
+
input: splitInput,
|
|
4881
|
+
output: part("outputTokens") || 0,
|
|
4882
|
+
cacheRead: part("cacheReadTokens") || 0,
|
|
4883
|
+
cacheWrite: part("cacheWriteTokens") || 0,
|
|
4884
|
+
} : null;
|
|
4885
|
+
const splitText = split
|
|
4886
|
+
? `in ${formatCompactNumber(split.input)} (cache r ${formatCompactNumber(split.cacheRead)} · w ${formatCompactNumber(split.cacheWrite)}) · out ${formatCompactNumber(split.output)}`
|
|
4887
|
+
: null;
|
|
4832
4888
|
return {
|
|
4833
4889
|
providerExhausted: blockedButLooksFine,
|
|
4834
4890
|
ruleId: raw?.ruleId || null,
|
|
4891
|
+
split,
|
|
4892
|
+
splitText,
|
|
4835
4893
|
usedTokens: known ? usedTokens : null,
|
|
4836
4894
|
quotaTokens: Number.isFinite(quotaTokens) ? quotaTokens : null,
|
|
4837
4895
|
usedLabel,
|
|
@@ -4974,6 +5032,97 @@ function budgetTableRow(raw, { overall, selectedProvider, selectedScope = "*", n
|
|
|
4974
5032
|
* Rows are NOT sorted here. The server returns them in render order and a
|
|
4975
5033
|
* sort would move a model row out from under the provider it belongs to.
|
|
4976
5034
|
*/
|
|
5035
|
+
/**
|
|
5036
|
+
* The Cluster summary tab's view: the filter as the picker shows it, the
|
|
5037
|
+
* three KPI windows, a chart series with every day of the window present
|
|
5038
|
+
* (the database returns only days that had turns), the per-model rows with
|
|
5039
|
+
* a sparkline aligned to those same days, and the charge-class split.
|
|
5040
|
+
*/
|
|
5041
|
+
export function selectUsageSummary(state) {
|
|
5042
|
+
const budget = state.budget || {};
|
|
5043
|
+
const summary = budget.summary || {};
|
|
5044
|
+
const data = summary.data && typeof summary.data === "object" ? summary.data : null;
|
|
5045
|
+
const days = [14, 30, 90].includes(Number(summary.days)) ? Number(summary.days) : 14;
|
|
5046
|
+
|
|
5047
|
+
// Provider choices come from the grid the Providers tab already read:
|
|
5048
|
+
// one entry per provider row, with its class, so the picker can offer
|
|
5049
|
+
// Shared / Users as presets and each name as a checkbox.
|
|
5050
|
+
const providers = [];
|
|
5051
|
+
const seen = new Set();
|
|
5052
|
+
for (const row of Array.isArray(budget.grid) ? budget.grid : []) {
|
|
5053
|
+
if (row?.rowKind !== "provider" || !row?.providerName || seen.has(row.providerName)) continue;
|
|
5054
|
+
seen.add(row.providerName);
|
|
5055
|
+
providers.push({ name: row.providerName, class: row.class === "shared" ? "shared" : "personal" });
|
|
5056
|
+
}
|
|
5057
|
+
const selected = new Set(Array.isArray(summary.providers) ? summary.providers : []);
|
|
5058
|
+
const preset = summary.preset || "all";
|
|
5059
|
+
|
|
5060
|
+
// Every UTC day of the window, oldest first, ending on the server's
|
|
5061
|
+
// "today" — so a quiet day is a zero bar, not a missing one.
|
|
5062
|
+
const today = typeof data?.today === "string" ? data.today : new Date().toISOString().slice(0, 10);
|
|
5063
|
+
const dayKeys = [];
|
|
5064
|
+
{
|
|
5065
|
+
const end = new Date(`${today}T00:00:00Z`).getTime();
|
|
5066
|
+
for (let i = days - 1; i >= 0; i -= 1) dayKeys.push(new Date(end - i * 86_400_000).toISOString().slice(0, 10));
|
|
5067
|
+
}
|
|
5068
|
+
const byDay = new Map((Array.isArray(data?.daily) ? data.daily : []).map((d) => [d.day, d]));
|
|
5069
|
+
const series = dayKeys.map((day) => {
|
|
5070
|
+
const d = byDay.get(day) || {};
|
|
5071
|
+
return {
|
|
5072
|
+
day,
|
|
5073
|
+
input: Number(d.input) || 0,
|
|
5074
|
+
output: Number(d.output) || 0,
|
|
5075
|
+
cacheRead: Number(d.cacheRead) || 0,
|
|
5076
|
+
cacheWrite: Number(d.cacheWrite) || 0,
|
|
5077
|
+
total: Number(d.total) || 0,
|
|
5078
|
+
turns: Number(d.turns) || 0,
|
|
5079
|
+
};
|
|
5080
|
+
});
|
|
5081
|
+
const windowTotal = series.reduce((sum, d) => sum + d.total, 0);
|
|
5082
|
+
const models = (Array.isArray(data?.models) ? data.models : []).map((m) => {
|
|
5083
|
+
const spark = new Map((Array.isArray(m.daily) ? m.daily : []).map((d) => [d.day, Number(d.total) || 0]));
|
|
5084
|
+
const total = Number(m.total) || 0;
|
|
5085
|
+
return {
|
|
5086
|
+
model: String(m.model || "?"),
|
|
5087
|
+
providers: Number(m.providers) || 0,
|
|
5088
|
+
turns: Number(m.turns) || 0,
|
|
5089
|
+
input: Number(m.input) || 0,
|
|
5090
|
+
output: Number(m.output) || 0,
|
|
5091
|
+
cacheRead: Number(m.cacheRead) || 0,
|
|
5092
|
+
cacheWrite: Number(m.cacheWrite) || 0,
|
|
5093
|
+
total,
|
|
5094
|
+
share: windowTotal > 0 ? total / windowTotal : 0,
|
|
5095
|
+
sparkline: dayKeys.map((day) => spark.get(day) || 0),
|
|
5096
|
+
};
|
|
5097
|
+
});
|
|
5098
|
+
const win = (key) => {
|
|
5099
|
+
const w = data?.windows?.[key] || {};
|
|
5100
|
+
return {
|
|
5101
|
+
input: Number(w.input) || 0, output: Number(w.output) || 0,
|
|
5102
|
+
cacheRead: Number(w.cacheRead) || 0, cacheWrite: Number(w.cacheWrite) || 0,
|
|
5103
|
+
total: Number(w.total) || 0, turns: Number(w.turns) || 0, sessions: Number(w.sessions) || 0,
|
|
5104
|
+
};
|
|
5105
|
+
};
|
|
5106
|
+
return {
|
|
5107
|
+
loading: Boolean(summary.loading),
|
|
5108
|
+
error: summary.error || null,
|
|
5109
|
+
loaded: Boolean(data),
|
|
5110
|
+
scope: data?.scope === "mine" ? "mine" : "cluster",
|
|
5111
|
+
days,
|
|
5112
|
+
today,
|
|
5113
|
+
preset,
|
|
5114
|
+
selectedProviders: Array.from(selected),
|
|
5115
|
+
providers,
|
|
5116
|
+
windows: { day: win("day"), week: win("week"), month: win("month") },
|
|
5117
|
+
series,
|
|
5118
|
+
windowTotal,
|
|
5119
|
+
models,
|
|
5120
|
+
classes: (Array.isArray(data?.classes) ? data.classes : []).map((c) => ({
|
|
5121
|
+
chargeClass: String(c.chargeClass || "?"), total: Number(c.total) || 0, turns: Number(c.turns) || 0,
|
|
5122
|
+
})),
|
|
5123
|
+
};
|
|
5124
|
+
}
|
|
5125
|
+
|
|
4977
5126
|
export function selectProviderTable(state) {
|
|
4978
5127
|
const budget = state.budget || {};
|
|
4979
5128
|
const nowMs = Date.now();
|
package/ui/core/src/state.js
CHANGED
|
@@ -530,6 +530,26 @@ export function createInitialState({ mode = "local", branding = null, docs = nul
|
|
|
530
530
|
// why on the session row too, not only on this screen. See
|
|
531
531
|
// docs/proposals/providers-and-budgets-meters.md.
|
|
532
532
|
budget: {
|
|
533
|
+
// Which tab of the Budget screen is up: the per-provider table
|
|
534
|
+
// ("providers") or the cluster summary ("summary").
|
|
535
|
+
tab: "providers",
|
|
536
|
+
// The Cluster summary tab: totals for today / week / month, the
|
|
537
|
+
// per-day series and the per-model pivot, over a provider filter.
|
|
538
|
+
summary: {
|
|
539
|
+
loading: false,
|
|
540
|
+
error: null,
|
|
541
|
+
fetchedAt: 0,
|
|
542
|
+
// 14, 30 or 90 — the chart's and the model table's window.
|
|
543
|
+
days: 14,
|
|
544
|
+
// Provider filter. `preset` is what the picker shows as the
|
|
545
|
+
// headline choice; `providers` is the exact list the request
|
|
546
|
+
// carried (empty = every provider). A custom pick clears the
|
|
547
|
+
// preset.
|
|
548
|
+
preset: "all",
|
|
549
|
+
providers: [],
|
|
550
|
+
// The last answer, verbatim from getProviderUsageSummary.
|
|
551
|
+
data: null,
|
|
552
|
+
},
|
|
533
553
|
// A first load, with nothing on screen yet.
|
|
534
554
|
loading: false,
|
|
535
555
|
// A re-read WITH numbers already on screen. Separate from
|