agent-nuvira 1.59.6 → 1.59.7
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/README.md +1 -0
- package/dist/cli/admin.d.ts +11 -0
- package/dist/cli/admin.d.ts.map +1 -1
- package/dist/cli/admin.js +118 -0
- package/dist/cli/admin.js.map +1 -1
- package/dist/enterprise/rbac.d.ts +86 -0
- package/dist/enterprise/rbac.d.ts.map +1 -0
- package/dist/enterprise/rbac.js +165 -0
- package/dist/enterprise/rbac.js.map +1 -0
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +22 -1
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +27 -0
- package/dist/web-dashboard/server.js.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/{index-BvmQSDzu.js → index-Dp5IHQ5s.js} +44 -44
- package/src/web-dashboard/public/assets/{index-BvmQSDzu.js.map → index-Dp5IHQ5s.js.map} +1 -1
- package/src/web-dashboard/public/index.html +1 -1
package/README.md
CHANGED
|
@@ -2026,6 +2026,7 @@ npx tsc --noEmit
|
|
|
2026
2026
|
| **v1.55.0** | Aug 2026 | `buff models unblock <provider>` escape hatch — manually release a registry-blocked provider (demote unavailable→unverified, clear quota parks + ledger cooldown, live re-probe with honest `stillBlocked`); also fixed the pre-existing `models status --json` / `refresh --json` flag-shadowing bug; 3,011 tests |
|
|
2027
2027
|
| **v1.59.4** | Aug 2026 | P6 M6.6 Software Bill of Materials: `buff sbom` (CycloneDX 1.5 from lockfile, `--reproducible` pins), `sbom verify` (drift/tamper), `sbom licenses` (copyleft/unknown audit), `doctor --enterprise` Supply Chain check; 3,313 tests |
|
|
2028
2028
|
| **v1.59.5** | Aug 2026 | Dashboard surfaces mid-stream flakiness end-to-end: violet `⏸ flaky N%` chips on registry rows (mirroring the CLI's `model explain` chip), `⏸ N flaky` provider badges, and a **Flaky mid-stream** stats card — the exact signal `routing.partialFlakiness` uses to deprioritize providers; 3,313 root tests |
|
|
2029
|
+
| **v1.59.7** | Aug 2026 | P6 M6.1 **RBAC** — `buff admin role add/remove/list` + `whoami` (admin/operator/viewer permission matrix over the admin surface; OIDC adapter interface; legacy single-user stays permissive until roles assigned) + dashboard **governance policy card** (live `routing.governance.*`) + CLI **flakiness trend tags** (`healing`/`worsening` in `models status`); 3,348 root tests |
|
|
2029
2030
|
| **v1.59.6** | Aug 2026 | P6 M6.5 **Admin governance API** (`buff admin policy/allow/deny/allow-model/deny-model/max-cost/pii-min/unblock/clear` over the M2.4 policy) + dashboard **flakiness healing sparklines** (per-entry `partialHistory` trajectory, never hard-wiped) + Requests panel `⏸ N` partial chips (partials excluded from error rate); 3,328 root tests |
|
|
2030
2031
|
| **v1.59.3** | Aug 2026 | `config set routing.<gate>` now accepts the boolean soft-signal keys (`capabilityFit`, `contextFit`, `partialFlakiness`); 3,286 tests |
|
|
2031
2032
|
| **v1.59.2** | Aug 2026 | P4 M4.4 partial flakiness now feeds the ROUTER: registry `partialRate` EMA (bumped by mid-stream interruptions, healed by clean successes, never flips status) → reliability penalty (capped 40%) gated by `routing.partialFlakiness` (default ON) + transparent `⏸ flaky` chip in `models explain`; 3,284 tests |
|
package/dist/cli/admin.d.ts
CHANGED
|
@@ -24,6 +24,15 @@
|
|
|
24
24
|
import { Command } from 'commander';
|
|
25
25
|
import { BaseCommand } from './commands.js';
|
|
26
26
|
export declare class AdminCommand extends BaseCommand {
|
|
27
|
+
/** P6 M6.1 RBAC — local role file + OIDC adapter seam (see enterprise/rbac.ts). */
|
|
28
|
+
private rbac;
|
|
29
|
+
/**
|
|
30
|
+
* Enforce an RBAC action for the current identity; returns false (after
|
|
31
|
+
* logging) when denied. Legacy single-user mode (no role file) stays fully
|
|
32
|
+
* permissive — enabling RBAC never locks you out; once roles are assigned,
|
|
33
|
+
* policy writes require `admin`. Callers abort on false.
|
|
34
|
+
*/
|
|
35
|
+
private guard;
|
|
27
36
|
create(): Command;
|
|
28
37
|
private policyCommand;
|
|
29
38
|
private showPolicy;
|
|
@@ -37,5 +46,7 @@ export declare class AdminCommand extends BaseCommand {
|
|
|
37
46
|
private piiMinCommand;
|
|
38
47
|
private unblockCommand;
|
|
39
48
|
private clearCommand;
|
|
49
|
+
private roleCommand;
|
|
50
|
+
private whoamiCommand;
|
|
40
51
|
}
|
|
41
52
|
//# sourceMappingURL=admin.d.ts.map
|
package/dist/cli/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB5C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,mFAAmF;IACnF,OAAO,CAAC,IAAI,CAAqB;IAEjC;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAcb,MAAM,IAAI,OAAO;IAqBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,aAAa;CAqBtB"}
|
package/dist/cli/admin.js
CHANGED
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
import { Command } from 'commander';
|
|
25
25
|
import { BaseCommand } from './commands.js';
|
|
26
26
|
import { logger } from '../utils/logger.js';
|
|
27
|
+
import { RbacManager, RbacError, ROLES } from '../enterprise/rbac.js';
|
|
27
28
|
/** The governance fields `buff admin clear` accepts. */
|
|
28
29
|
const GOVERNANCE_FIELDS = [
|
|
29
30
|
'allowProviders', 'denyProviders', 'allowModels', 'denyModels',
|
|
@@ -34,6 +35,29 @@ function appendUnique(current, additions) {
|
|
|
34
35
|
return [...new Set([...(current || []), ...additions])];
|
|
35
36
|
}
|
|
36
37
|
export class AdminCommand extends BaseCommand {
|
|
38
|
+
/** P6 M6.1 RBAC — local role file + OIDC adapter seam (see enterprise/rbac.ts). */
|
|
39
|
+
rbac = new RbacManager();
|
|
40
|
+
/**
|
|
41
|
+
* Enforce an RBAC action for the current identity; returns false (after
|
|
42
|
+
* logging) when denied. Legacy single-user mode (no role file) stays fully
|
|
43
|
+
* permissive — enabling RBAC never locks you out; once roles are assigned,
|
|
44
|
+
* policy writes require `admin`. Callers abort on false.
|
|
45
|
+
*/
|
|
46
|
+
guard(action) {
|
|
47
|
+
if (this.rbac.isLegacyMode())
|
|
48
|
+
return true;
|
|
49
|
+
try {
|
|
50
|
+
this.rbac.requireCan(action);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (err instanceof RbacError) {
|
|
55
|
+
logger.error(`⛔ ${err.message}`);
|
|
56
|
+
logger.error(' Run `buff admin role add <you> admin` once as the initial admin.');
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
37
61
|
create() {
|
|
38
62
|
return new Command('admin')
|
|
39
63
|
.description('Admin governance policy for Auto routing (P6 M6.5) — allow/deny providers & models, hard cost cap, PII privacy, unblock control')
|
|
@@ -46,6 +70,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
46
70
|
.addCommand(this.piiMinCommand())
|
|
47
71
|
.addCommand(this.unblockCommand())
|
|
48
72
|
.addCommand(this.clearCommand())
|
|
73
|
+
.addCommand(this.roleCommand())
|
|
74
|
+
.addCommand(this.whoamiCommand())
|
|
49
75
|
.action(() => {
|
|
50
76
|
this.showPolicy(false);
|
|
51
77
|
});
|
|
@@ -131,6 +157,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
131
157
|
.description('Add providers to the allow-list (empty = all providers allowed)')
|
|
132
158
|
.argument('<providers...>', 'Provider ids (e.g. groq local)')
|
|
133
159
|
.action((providers) => {
|
|
160
|
+
if (!this.guard('policy.write'))
|
|
161
|
+
return;
|
|
134
162
|
this.setListField('allowProviders', providers);
|
|
135
163
|
});
|
|
136
164
|
}
|
|
@@ -139,6 +167,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
139
167
|
.description('Add providers to the deny-list (wins over the allow-list)')
|
|
140
168
|
.argument('<providers...>', 'Provider ids (e.g. gemini openrouter)')
|
|
141
169
|
.action((providers) => {
|
|
170
|
+
if (!this.guard('policy.write'))
|
|
171
|
+
return;
|
|
142
172
|
this.setListField('denyProviders', providers);
|
|
143
173
|
});
|
|
144
174
|
}
|
|
@@ -148,6 +178,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
148
178
|
.description('Add models to the allow-list — a provider survives only if one of its candidate models is listed')
|
|
149
179
|
.argument('<models...>', 'Model ids (e.g. llama-3.3-70b-versatile)')
|
|
150
180
|
.action((models) => {
|
|
181
|
+
if (!this.guard('policy.write'))
|
|
182
|
+
return;
|
|
151
183
|
this.setListField('allowModels', models);
|
|
152
184
|
});
|
|
153
185
|
}
|
|
@@ -156,6 +188,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
156
188
|
.description('Add models to the deny-list (wins over the allow-list)')
|
|
157
189
|
.argument('<models...>', 'Model ids')
|
|
158
190
|
.action((models) => {
|
|
191
|
+
if (!this.guard('policy.write'))
|
|
192
|
+
return;
|
|
159
193
|
this.setListField('denyModels', models);
|
|
160
194
|
});
|
|
161
195
|
}
|
|
@@ -173,6 +207,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
173
207
|
.description('Set the admin hard max cost per call (USD); joins routing.maxCostUsd (stricter wins)')
|
|
174
208
|
.argument('<usd>', 'Max cost per call in USD (e.g. 0.01)')
|
|
175
209
|
.action((usd) => {
|
|
210
|
+
if (!this.guard('policy.write'))
|
|
211
|
+
return;
|
|
176
212
|
const num = Number(usd);
|
|
177
213
|
if (isNaN(num) || num < 0) {
|
|
178
214
|
logger.error(`Invalid max-cost "${usd}". Must be a non-negative number (USD).`);
|
|
@@ -191,6 +227,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
191
227
|
.description('Set the minimum privacy score (0-1) required when a task matches a PII pattern (default 1.0 = local-only)')
|
|
192
228
|
.argument('<score>', '0 to 1 (1.0 = only fully-local providers may serve PII)')
|
|
193
229
|
.action((score) => {
|
|
230
|
+
if (!this.guard('policy.write'))
|
|
231
|
+
return;
|
|
194
232
|
const num = Number(score);
|
|
195
233
|
if (isNaN(num) || num < 0 || num > 1) {
|
|
196
234
|
logger.error(`Invalid pii-min "${score}". Must be between 0 and 1.`);
|
|
@@ -209,6 +247,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
209
247
|
.description('Control whether `buff models unblock` may override REGISTRY-learned blocks (false = admin-hard)')
|
|
210
248
|
.argument('<on|off>', 'on (escape hatch open, default) or off (admin-hard)')
|
|
211
249
|
.action((mode) => {
|
|
250
|
+
if (!this.guard('policy.write'))
|
|
251
|
+
return;
|
|
212
252
|
const lower = mode.trim().toLowerCase();
|
|
213
253
|
if (lower !== 'on' && lower !== 'off') {
|
|
214
254
|
logger.error(`Invalid unblock "${mode}". Use "on" or "off".`);
|
|
@@ -227,6 +267,8 @@ export class AdminCommand extends BaseCommand {
|
|
|
227
267
|
.description('Remove one governance rule (the policy becomes permissive on that field)')
|
|
228
268
|
.argument('<field>', `Field to clear: ${GOVERNANCE_FIELDS.join(', ')}`)
|
|
229
269
|
.action((field) => {
|
|
270
|
+
if (!this.guard('policy.write'))
|
|
271
|
+
return;
|
|
230
272
|
if (!GOVERNANCE_FIELDS.includes(field)) {
|
|
231
273
|
logger.error(`Unknown governance field "${field}". Valid: ${GOVERNANCE_FIELDS.join(', ')}`);
|
|
232
274
|
return;
|
|
@@ -239,5 +281,81 @@ export class AdminCommand extends BaseCommand {
|
|
|
239
281
|
logger.success(`Cleared governance.${field}`);
|
|
240
282
|
});
|
|
241
283
|
}
|
|
284
|
+
// ─── role add / remove / list (P6 M6.1 RBAC — admin only) ────────────────
|
|
285
|
+
roleCommand() {
|
|
286
|
+
return new Command('role')
|
|
287
|
+
.description('Manage RBAC roles over the admin surface (P6 M6.1 — requires admin role)')
|
|
288
|
+
.addCommand(new Command('add')
|
|
289
|
+
.description('Assign a role to a user (first assignment exits legacy single-user mode)')
|
|
290
|
+
.argument('<user>', 'Username (OS user, or the OIDC subject for token mode)')
|
|
291
|
+
.argument('<role>', `Role: ${ROLES.join(' | ')}`)
|
|
292
|
+
.action((user, role) => {
|
|
293
|
+
if (!this.guard('role.manage'))
|
|
294
|
+
return;
|
|
295
|
+
try {
|
|
296
|
+
const r = this.rbac.assignRole(user, role, 'local');
|
|
297
|
+
logger.success(`${user} → ${r.role}`);
|
|
298
|
+
logger.info('Policy writes now require the admin role. Run `buff admin whoami` to confirm yours.');
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
if (err instanceof RbacError)
|
|
302
|
+
logger.error(`⛔ ${err.message}`);
|
|
303
|
+
else
|
|
304
|
+
throw err;
|
|
305
|
+
}
|
|
306
|
+
}))
|
|
307
|
+
.addCommand(new Command('remove')
|
|
308
|
+
.description('Remove a user\'s role assignment (if none remain, legacy permissive mode resumes)')
|
|
309
|
+
.argument('<user>', 'Username')
|
|
310
|
+
.action((user) => {
|
|
311
|
+
if (!this.guard('role.manage'))
|
|
312
|
+
return;
|
|
313
|
+
if (this.rbac.removeUser(user))
|
|
314
|
+
logger.success(`Removed role for ${user}`);
|
|
315
|
+
else
|
|
316
|
+
logger.error(`No role assignment found for ${user}`);
|
|
317
|
+
}))
|
|
318
|
+
.addCommand(new Command('list')
|
|
319
|
+
.description('List all role assignments')
|
|
320
|
+
.action(() => {
|
|
321
|
+
if (!this.guard('role.manage'))
|
|
322
|
+
return;
|
|
323
|
+
const users = this.rbac.listUsers();
|
|
324
|
+
logger.highlight('\n ── RBAC Role Assignments (P6 M6.1) ──\n');
|
|
325
|
+
if (users.length === 0) {
|
|
326
|
+
console.log(' Legacy single-user mode — no roles assigned, everything allowed.');
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
for (const u of users) {
|
|
330
|
+
console.log(` ${u.user.padEnd(22)} ${u.role.padEnd(9)} via ${u.via || 'local'} · added ${new Date(u.addedAt).toLocaleString()}`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
console.log('');
|
|
334
|
+
}));
|
|
335
|
+
}
|
|
336
|
+
// ─── whoami ──────────────────────────────────────────────────────────────
|
|
337
|
+
whoamiCommand() {
|
|
338
|
+
return new Command('whoami')
|
|
339
|
+
.description('Show the current identity and its effective RBAC permissions')
|
|
340
|
+
.action(() => {
|
|
341
|
+
const user = RbacManager.currentIdentity();
|
|
342
|
+
const role = this.rbac.getRole(user);
|
|
343
|
+
logger.highlight('\n ── RBAC Identity (P6 M6.1) ──\n');
|
|
344
|
+
console.log(` User: ${user}`);
|
|
345
|
+
if (role) {
|
|
346
|
+
console.log(` Role: ${role}`);
|
|
347
|
+
console.log(` Can: ${this.rbac.permissionsFor(role).join(', ')}`);
|
|
348
|
+
}
|
|
349
|
+
else if (this.rbac.isLegacyMode()) {
|
|
350
|
+
console.log(' Role: none (legacy single-user mode — full access)');
|
|
351
|
+
console.log(' Can: everything (until roles are assigned)');
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
console.log(' Role: unassigned (viewer-equivalent — read-only)');
|
|
355
|
+
console.log(' Can: policy.read');
|
|
356
|
+
}
|
|
357
|
+
console.log('');
|
|
358
|
+
});
|
|
359
|
+
}
|
|
242
360
|
}
|
|
243
361
|
//# sourceMappingURL=admin.js.map
|
package/dist/cli/admin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RbacManager — P6 M6.1 role-based access control over the admin/governance
|
|
3
|
+
* surface.
|
|
4
|
+
*
|
|
5
|
+
* Minimal first milestone, deliberately:
|
|
6
|
+
* - A local role file (`~/.buff/rbac.json`, or BUFF_CONFIG_DIR override) maps
|
|
7
|
+
* OS user → role. **Legacy single-user mode**: when the file has no users,
|
|
8
|
+
* everything stays allowed — enabling RBAC can never lock you out.
|
|
9
|
+
* - A permission matrix (admin / operator / viewer) gates the `buff admin`
|
|
10
|
+
* surface: policy *writes* and role management require `admin`; policy
|
|
11
|
+
* *reads* are open to every role; `operator` may run routing/models.
|
|
12
|
+
* - An **OIDC adapter interface** is the seam for token-backed identity: a
|
|
13
|
+
* future gateway can implement `OidcAdapter.verify(token)` and swap in
|
|
14
|
+
* verified identities without touching the enforcement paths.
|
|
15
|
+
*
|
|
16
|
+
* The identity for local mode is the OS username (`process.env.USER`), with
|
|
17
|
+
* `BUFF_ACT_AS` as an override for CI/tests/multi-tenant tooling.
|
|
18
|
+
*/
|
|
19
|
+
/** Built-in roles — least privilege by default (viewer is read-only). */
|
|
20
|
+
export type Role = 'admin' | 'operator' | 'viewer';
|
|
21
|
+
export declare const ROLES: readonly Role[];
|
|
22
|
+
/** One user's role assignment in the local role file. */
|
|
23
|
+
export interface RbacUser {
|
|
24
|
+
role: Role;
|
|
25
|
+
/** Epoch ms the assignment was written. */
|
|
26
|
+
addedAt: number;
|
|
27
|
+
/** How the identity was established: 'local' (OS user) or 'oidc'. */
|
|
28
|
+
via?: 'local' | 'oidc';
|
|
29
|
+
}
|
|
30
|
+
/** Actions on the admin/enterprise surface that roles gate. */
|
|
31
|
+
export type AdminAction = 'policy.read' | 'policy.write' | 'role.manage' | 'credential.write' | 'routing.operate';
|
|
32
|
+
/** Thrown when the current identity lacks permission for an action. */
|
|
33
|
+
export declare class RbacError extends Error {
|
|
34
|
+
constructor(message: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* OIDC adapter interface — the seam for token-backed identity. Implement this
|
|
38
|
+
* to verify a bearer token into a verified identity; the gateway milestone
|
|
39
|
+
* (M6.4) will wire it in. `groups` may map to roles downstream.
|
|
40
|
+
*/
|
|
41
|
+
export interface OidcAdapter {
|
|
42
|
+
/** Verify a bearer token → identity, or null when invalid/expired. */
|
|
43
|
+
verify(token: string): Promise<{
|
|
44
|
+
sub: string;
|
|
45
|
+
email?: string;
|
|
46
|
+
groups?: string[];
|
|
47
|
+
} | null>;
|
|
48
|
+
}
|
|
49
|
+
/** Default adapter: no token mode — identity is always the local OS user. */
|
|
50
|
+
export declare class NoOidcAdapter implements OidcAdapter {
|
|
51
|
+
verify(): Promise<null>;
|
|
52
|
+
}
|
|
53
|
+
export declare class RbacManager {
|
|
54
|
+
private users;
|
|
55
|
+
private path;
|
|
56
|
+
constructor(path?: string);
|
|
57
|
+
/** The acting identity — OS user, overridable via BUFF_ACT_AS (CI/tests). */
|
|
58
|
+
static currentIdentity(): string;
|
|
59
|
+
/** Single-user legacy mode: no role file / no users → fully permissive. */
|
|
60
|
+
isLegacyMode(): boolean;
|
|
61
|
+
/** Role assigned to a user, or undefined when unassigned. */
|
|
62
|
+
getRole(user: string): Role | undefined;
|
|
63
|
+
/** May `user` perform `action`? Unassigned users have no permissions. */
|
|
64
|
+
can(user: string, action: AdminAction): boolean;
|
|
65
|
+
/** Permissions granted to a role (for `whoami` / diagnostics). */
|
|
66
|
+
permissionsFor(role: Role): AdminAction[];
|
|
67
|
+
/**
|
|
68
|
+
* Enforce `action` for the current identity. Throws RbacError when denied.
|
|
69
|
+
* Callers SHOULD check `isLegacyMode()` first (legacy = permissive), unless
|
|
70
|
+
* they intend to be strict even before RBAC is configured.
|
|
71
|
+
*/
|
|
72
|
+
requireCan(action: AdminAction, user?: string): void;
|
|
73
|
+
/** Assign (or re-assign) a role. Persists. */
|
|
74
|
+
assignRole(user: string, role: Role, via?: 'local' | 'oidc'): RbacUser;
|
|
75
|
+
/** Remove a user's role assignment. Returns true when one existed. */
|
|
76
|
+
removeUser(user: string): boolean;
|
|
77
|
+
/** All assigned users, sorted by name. */
|
|
78
|
+
listUsers(): Array<{
|
|
79
|
+
user: string;
|
|
80
|
+
} & RbacUser>;
|
|
81
|
+
/** Reset to legacy mode (tests / recovery). */
|
|
82
|
+
reset(): void;
|
|
83
|
+
private load;
|
|
84
|
+
private persist;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=rbac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/enterprise/rbac.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,yEAAyE;AACzE,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AACnD,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAAoC,CAAC;AAEtE,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,iBAAiB,CAAC;AAgBtB,uEAAuE;AACvE,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAC3F;AAED,6EAA6E;AAC7E,qBAAa,aAAc,YAAW,WAAW;IACzC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B;AAcD,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,CAAC,EAAE,MAAM;IAKzB,6EAA6E;IAC7E,MAAM,CAAC,eAAe,IAAI,MAAM;IAIhC,2EAA2E;IAC3E,YAAY,IAAI,OAAO;IAIvB,6DAA6D;IAC7D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,yEAAyE;IACzE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO;IAM/C,kEAAkE;IAClE,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE;IAIzC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAE,MAAsC,GAAG,IAAI;IAQnF,8CAA8C;IAC9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,OAAO,GAAG,MAAgB,GAAG,QAAQ;IAa/E,sEAAsE;IACtE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOjC,0CAA0C;IAC1C,SAAS,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC;IAM/C,+CAA+C;IAC/C,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,OAAO;CAShB"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RbacManager — P6 M6.1 role-based access control over the admin/governance
|
|
3
|
+
* surface.
|
|
4
|
+
*
|
|
5
|
+
* Minimal first milestone, deliberately:
|
|
6
|
+
* - A local role file (`~/.buff/rbac.json`, or BUFF_CONFIG_DIR override) maps
|
|
7
|
+
* OS user → role. **Legacy single-user mode**: when the file has no users,
|
|
8
|
+
* everything stays allowed — enabling RBAC can never lock you out.
|
|
9
|
+
* - A permission matrix (admin / operator / viewer) gates the `buff admin`
|
|
10
|
+
* surface: policy *writes* and role management require `admin`; policy
|
|
11
|
+
* *reads* are open to every role; `operator` may run routing/models.
|
|
12
|
+
* - An **OIDC adapter interface** is the seam for token-backed identity: a
|
|
13
|
+
* future gateway can implement `OidcAdapter.verify(token)` and swap in
|
|
14
|
+
* verified identities without touching the enforcement paths.
|
|
15
|
+
*
|
|
16
|
+
* The identity for local mode is the OS username (`process.env.USER`), with
|
|
17
|
+
* `BUFF_ACT_AS` as an override for CI/tests/multi-tenant tooling.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
20
|
+
import { join } from 'node:path';
|
|
21
|
+
import { homedir } from 'node:os';
|
|
22
|
+
import { logger } from '../utils/logger.js';
|
|
23
|
+
export const ROLES = ['admin', 'operator', 'viewer'];
|
|
24
|
+
const PERMISSION_MATRIX = {
|
|
25
|
+
admin: new Set(['policy.read', 'policy.write', 'role.manage', 'credential.write', 'routing.operate']),
|
|
26
|
+
operator: new Set(['policy.read', 'routing.operate']),
|
|
27
|
+
viewer: new Set(['policy.read']),
|
|
28
|
+
};
|
|
29
|
+
const REQUIRED_ROLE_HINT = {
|
|
30
|
+
'policy.read': 'any role',
|
|
31
|
+
'policy.write': 'admin',
|
|
32
|
+
'role.manage': 'admin',
|
|
33
|
+
'credential.write': 'admin',
|
|
34
|
+
'routing.operate': 'admin or operator',
|
|
35
|
+
};
|
|
36
|
+
/** Thrown when the current identity lacks permission for an action. */
|
|
37
|
+
export class RbacError extends Error {
|
|
38
|
+
constructor(message) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.name = 'RbacError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Default adapter: no token mode — identity is always the local OS user. */
|
|
44
|
+
export class NoOidcAdapter {
|
|
45
|
+
async verify() {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ─── Manager ────────────────────────────────────────────────────────────────
|
|
50
|
+
function rbacPath() {
|
|
51
|
+
const dir = process.env.BUFF_CONFIG_DIR || join(homedir(), '.buff');
|
|
52
|
+
return join(dir, 'rbac.json');
|
|
53
|
+
}
|
|
54
|
+
export class RbacManager {
|
|
55
|
+
users;
|
|
56
|
+
path;
|
|
57
|
+
constructor(path) {
|
|
58
|
+
this.path = path || rbacPath();
|
|
59
|
+
this.users = this.load();
|
|
60
|
+
}
|
|
61
|
+
/** The acting identity — OS user, overridable via BUFF_ACT_AS (CI/tests). */
|
|
62
|
+
static currentIdentity() {
|
|
63
|
+
return process.env.BUFF_ACT_AS || process.env.USER || 'local';
|
|
64
|
+
}
|
|
65
|
+
/** Single-user legacy mode: no role file / no users → fully permissive. */
|
|
66
|
+
isLegacyMode() {
|
|
67
|
+
return Object.keys(this.users).length === 0;
|
|
68
|
+
}
|
|
69
|
+
/** Role assigned to a user, or undefined when unassigned. */
|
|
70
|
+
getRole(user) {
|
|
71
|
+
return this.users[user]?.role;
|
|
72
|
+
}
|
|
73
|
+
/** May `user` perform `action`? Unassigned users have no permissions. */
|
|
74
|
+
can(user, action) {
|
|
75
|
+
const role = this.getRole(user);
|
|
76
|
+
if (!role)
|
|
77
|
+
return false;
|
|
78
|
+
return PERMISSION_MATRIX[role].has(action);
|
|
79
|
+
}
|
|
80
|
+
/** Permissions granted to a role (for `whoami` / diagnostics). */
|
|
81
|
+
permissionsFor(role) {
|
|
82
|
+
return [...PERMISSION_MATRIX[role]];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Enforce `action` for the current identity. Throws RbacError when denied.
|
|
86
|
+
* Callers SHOULD check `isLegacyMode()` first (legacy = permissive), unless
|
|
87
|
+
* they intend to be strict even before RBAC is configured.
|
|
88
|
+
*/
|
|
89
|
+
requireCan(action, user = RbacManager.currentIdentity()) {
|
|
90
|
+
if (this.can(user, action))
|
|
91
|
+
return;
|
|
92
|
+
const role = this.getRole(user) || 'unassigned';
|
|
93
|
+
throw new RbacError(`Access denied — role '${role}' cannot '${action}' (requires ${REQUIRED_ROLE_HINT[action]}). User: ${user}`);
|
|
94
|
+
}
|
|
95
|
+
/** Assign (or re-assign) a role. Persists. */
|
|
96
|
+
assignRole(user, role, via = 'local') {
|
|
97
|
+
if (!ROLES.includes(role)) {
|
|
98
|
+
throw new RbacError(`Invalid role "${role}". Valid: ${ROLES.join(', ')}`);
|
|
99
|
+
}
|
|
100
|
+
if (!user || !user.trim()) {
|
|
101
|
+
throw new RbacError('A non-empty username is required.');
|
|
102
|
+
}
|
|
103
|
+
const record = { role, addedAt: Date.now(), via };
|
|
104
|
+
this.users[user] = record;
|
|
105
|
+
this.persist();
|
|
106
|
+
return record;
|
|
107
|
+
}
|
|
108
|
+
/** Remove a user's role assignment. Returns true when one existed. */
|
|
109
|
+
removeUser(user) {
|
|
110
|
+
if (!(user in this.users))
|
|
111
|
+
return false;
|
|
112
|
+
delete this.users[user];
|
|
113
|
+
this.persist();
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
/** All assigned users, sorted by name. */
|
|
117
|
+
listUsers() {
|
|
118
|
+
return Object.entries(this.users)
|
|
119
|
+
.map(([user, u]) => ({ user, ...u }))
|
|
120
|
+
.sort((a, b) => a.user.localeCompare(b.user));
|
|
121
|
+
}
|
|
122
|
+
/** Reset to legacy mode (tests / recovery). */
|
|
123
|
+
reset() {
|
|
124
|
+
this.users = {};
|
|
125
|
+
try {
|
|
126
|
+
writeFileSync(this.path, JSON.stringify({ version: 1, users: {} }, null, 2), 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
catch { /* best-effort */ }
|
|
129
|
+
}
|
|
130
|
+
// ─── Persistence ──────────────────────────────────────────────────────────
|
|
131
|
+
load() {
|
|
132
|
+
try {
|
|
133
|
+
if (!existsSync(this.path))
|
|
134
|
+
return {};
|
|
135
|
+
const raw = readFileSync(this.path, 'utf-8');
|
|
136
|
+
const data = JSON.parse(raw);
|
|
137
|
+
if (!data || typeof data !== 'object' || !data.users)
|
|
138
|
+
return {};
|
|
139
|
+
const users = {};
|
|
140
|
+
for (const [user, u] of Object.entries(data.users)) {
|
|
141
|
+
if (u && typeof u === 'object' && ROLES.includes(u.role))
|
|
142
|
+
users[user] = u;
|
|
143
|
+
}
|
|
144
|
+
return users;
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
// A misconfigured role file must not silently downgrade to permissive —
|
|
148
|
+
// surface it so an operator notices, then fall back safely (legacy mode).
|
|
149
|
+
logger.warn(`rbac.json unreadable (${err instanceof Error ? err.message : String(err)}) — falling back to legacy permissive mode`);
|
|
150
|
+
return {};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
persist() {
|
|
154
|
+
try {
|
|
155
|
+
const dir = process.env.BUFF_CONFIG_DIR || join(homedir(), '.buff');
|
|
156
|
+
if (!existsSync(dir))
|
|
157
|
+
mkdirSync(dir, { recursive: true });
|
|
158
|
+
writeFileSync(this.path, JSON.stringify({ version: 1, users: this.users }, null, 2), 'utf-8');
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// Best-effort — a failed RBAC write must never break the command.
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=rbac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/enterprise/rbac.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C,MAAM,CAAC,MAAM,KAAK,GAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAmBtE,MAAM,iBAAiB,GAA2C;IAChE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IACrG,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACrD,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,kBAAkB,GAAgC;IACtD,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,OAAO;IACvB,aAAa,EAAE,OAAO;IACtB,kBAAkB,EAAE,OAAO;IAC3B,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,uEAAuE;AACvE,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAYD,6EAA6E;AAC7E,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAOD,+EAA+E;AAE/E,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,OAAO,WAAW;IACd,KAAK,CAA2B;IAChC,IAAI,CAAS;IAErB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,eAAe;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;IAChE,CAAC;IAED,2EAA2E;IAC3E,YAAY;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,6DAA6D;IAC7D,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAChC,CAAC;IAED,yEAAyE;IACzE,GAAG,CAAC,IAAY,EAAE,MAAmB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,kEAAkE;IAClE,cAAc,CAAC,IAAU;QACvB,OAAO,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,MAAmB,EAAE,OAAe,WAAW,CAAC,eAAe,EAAE;QAC1E,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,OAAO;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;QAChD,MAAM,IAAI,SAAS,CACjB,yBAAyB,IAAI,aAAa,MAAM,eAAe,kBAAkB,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,UAAU,CAAC,IAAY,EAAE,IAAU,EAAE,MAAwB,OAAO;QAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,iBAAiB,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sEAAsE;IACtE,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,SAAS;QACP,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;aACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,+CAA+C;IAC/C,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC5H,CAAC;IAED,6EAA6E;IAErE,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YAChE,MAAM,KAAK,GAA6B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,0EAA0E;YAC1E,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YACnI,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,OAAO;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/learning/model-registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/learning/model-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1093,6 +1093,27 @@ export class ModelRegistry {
|
|
|
1093
1093
|
lines.push(` ${p.provider}: ${p.verified} verified · ${p.unavailable} unavailable${p.parked ? ` · ${p.parked} parked` : ''}`);
|
|
1094
1094
|
for (const m of verified) {
|
|
1095
1095
|
const lat = m.latencyMs !== undefined ? ` · ${m.latencyMs}ms` : '';
|
|
1096
|
+
// P4 M4.4 flakiness trend: when a trajectory exists, surface whether
|
|
1097
|
+
// the model is HEALING (clean successes decay the EMA) or WORSENING
|
|
1098
|
+
// (more mid-stream interruptions) — one glance at `models status`.
|
|
1099
|
+
let flaky = '';
|
|
1100
|
+
if (m.partialRate !== undefined && m.partialRate > 0) {
|
|
1101
|
+
const pct = Math.round(m.partialRate * 100);
|
|
1102
|
+
const h = m.partialHistory;
|
|
1103
|
+
if (h && h.length >= 2) {
|
|
1104
|
+
const first = h[0].rate;
|
|
1105
|
+
const last = h[h.length - 1].rate;
|
|
1106
|
+
if (last < first)
|
|
1107
|
+
flaky = ` · ⏸ flaky ${pct}% healing`;
|
|
1108
|
+
else if (last > first)
|
|
1109
|
+
flaky = ` · ⏸ flaky ${pct}% worsening`;
|
|
1110
|
+
else
|
|
1111
|
+
flaky = ` · ⏸ flaky ${pct}%`;
|
|
1112
|
+
}
|
|
1113
|
+
else {
|
|
1114
|
+
flaky = ` · ⏸ flaky ${pct}%`;
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1096
1117
|
// Unified-store quota telemetry: remaining tokens + time-to-wait (resets
|
|
1097
1118
|
// in) come from the same sub-ms FAISS/JSON snapshot routing reads.
|
|
1098
1119
|
const tokens = m.remainingTokens !== undefined && m.remainingTokens >= 0
|
|
@@ -1101,7 +1122,7 @@ export class ModelRegistry {
|
|
|
1101
1122
|
const resets = m.resetsInMs !== undefined && m.resetsInMs > 0
|
|
1102
1123
|
? ` · resets in ${this.formatMs(m.resetsInMs)}`
|
|
1103
1124
|
: '';
|
|
1104
|
-
lines.push(` ✅ ${m.model}${lat}${tokens}${resets}`);
|
|
1125
|
+
lines.push(` ✅ ${m.model}${lat}${flaky}${tokens}${resets}`);
|
|
1105
1126
|
}
|
|
1106
1127
|
for (const m of unavailable.slice(0, 3)) {
|
|
1107
1128
|
const wait = m.quotaParkedUntil > now ? ` · retry in ${this.formatMs(m.quotaParkedUntil - now)}` : '';
|