agent-nuvira 1.59.5 → 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 CHANGED
@@ -2026,6 +2026,8 @@ 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 |
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 |
2029
2031
  | **v1.59.3** | Aug 2026 | `config set routing.<gate>` now accepts the boolean soft-signal keys (`capabilityFit`, `contextFit`, `partialFlakiness`); 3,286 tests |
2030
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 |
2031
2033
  | **v1.59.1** | Aug 2026 | Dashboard: P4 M4.4 partial mid-stream interruption chips surface end-to-end (violet `⏸` timeline segment, day chips with streamed-chunk tooltip, per-action Partial section + stat); 3,276 tests |
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Admin command — P6 M6.5 governance policy surface for Auto routing.
3
+ *
4
+ * The M2.4 admin schema (routing.governance.*) is enforced inside the
5
+ * auto-router's hard-constraint slot on every pick — violating providers are
6
+ * ELIMINATED, never just scored lower. This command promotes that raw config
7
+ * surface into a first-class admin API:
8
+ *
9
+ * buff admin — Show the current policy (alias for `policy`)
10
+ * buff admin policy [--json] — Current allow/deny policy + enforcement status
11
+ * buff admin allow <provider...> — Add providers to governance.allowProviders
12
+ * buff admin deny <provider...> — Add providers to governance.denyProviders
13
+ * buff admin allow-model <m...> — Add models to governance.allowModels
14
+ * buff admin deny-model <m...> — Add models to governance.denyModels
15
+ * buff admin max-cost <usd> — Admin hard max cost per call (joins routing.maxCostUsd)
16
+ * buff admin pii-min <0..1> — Min privacy score for PII-matching tasks (default 1.0)
17
+ * buff admin unblock on|off — May `buff models unblock` override registry blocks?
18
+ * buff admin clear <field> — Remove one governance field (policy becomes permissive on it)
19
+ *
20
+ * All writes go through ConfigManager.save() — the same file/path the config
21
+ * CLI writes — so `buff config get routing.governance.<key>` agrees with the
22
+ * admin surface. Everything is additive: an empty policy is fully permissive.
23
+ */
24
+ import { Command } from 'commander';
25
+ import { BaseCommand } from './commands.js';
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;
36
+ create(): Command;
37
+ private policyCommand;
38
+ private showPolicy;
39
+ private describeEnforcement;
40
+ private allowCommand;
41
+ private denyCommand;
42
+ private allowModelCommand;
43
+ private denyModelCommand;
44
+ private setListField;
45
+ private maxCostCommand;
46
+ private piiMinCommand;
47
+ private unblockCommand;
48
+ private clearCommand;
49
+ private roleCommand;
50
+ private whoamiCommand;
51
+ }
52
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +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;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"}
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Admin command — P6 M6.5 governance policy surface for Auto routing.
3
+ *
4
+ * The M2.4 admin schema (routing.governance.*) is enforced inside the
5
+ * auto-router's hard-constraint slot on every pick — violating providers are
6
+ * ELIMINATED, never just scored lower. This command promotes that raw config
7
+ * surface into a first-class admin API:
8
+ *
9
+ * buff admin — Show the current policy (alias for `policy`)
10
+ * buff admin policy [--json] — Current allow/deny policy + enforcement status
11
+ * buff admin allow <provider...> — Add providers to governance.allowProviders
12
+ * buff admin deny <provider...> — Add providers to governance.denyProviders
13
+ * buff admin allow-model <m...> — Add models to governance.allowModels
14
+ * buff admin deny-model <m...> — Add models to governance.denyModels
15
+ * buff admin max-cost <usd> — Admin hard max cost per call (joins routing.maxCostUsd)
16
+ * buff admin pii-min <0..1> — Min privacy score for PII-matching tasks (default 1.0)
17
+ * buff admin unblock on|off — May `buff models unblock` override registry blocks?
18
+ * buff admin clear <field> — Remove one governance field (policy becomes permissive on it)
19
+ *
20
+ * All writes go through ConfigManager.save() — the same file/path the config
21
+ * CLI writes — so `buff config get routing.governance.<key>` agrees with the
22
+ * admin surface. Everything is additive: an empty policy is fully permissive.
23
+ */
24
+ import { Command } from 'commander';
25
+ import { BaseCommand } from './commands.js';
26
+ import { logger } from '../utils/logger.js';
27
+ import { RbacManager, RbacError, ROLES } from '../enterprise/rbac.js';
28
+ /** The governance fields `buff admin clear` accepts. */
29
+ const GOVERNANCE_FIELDS = [
30
+ 'allowProviders', 'denyProviders', 'allowModels', 'denyModels',
31
+ 'maxCostUsd', 'minPrivacyForPii', 'piiPatterns', 'allowUnblock',
32
+ ];
33
+ /** Union-append to a comma/space list field (deduped, order preserved). */
34
+ function appendUnique(current, additions) {
35
+ return [...new Set([...(current || []), ...additions])];
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
+ }
61
+ create() {
62
+ return new Command('admin')
63
+ .description('Admin governance policy for Auto routing (P6 M6.5) — allow/deny providers & models, hard cost cap, PII privacy, unblock control')
64
+ .addCommand(this.policyCommand())
65
+ .addCommand(this.allowCommand())
66
+ .addCommand(this.denyCommand())
67
+ .addCommand(this.allowModelCommand())
68
+ .addCommand(this.denyModelCommand())
69
+ .addCommand(this.maxCostCommand())
70
+ .addCommand(this.piiMinCommand())
71
+ .addCommand(this.unblockCommand())
72
+ .addCommand(this.clearCommand())
73
+ .addCommand(this.roleCommand())
74
+ .addCommand(this.whoamiCommand())
75
+ .action(() => {
76
+ this.showPolicy(false);
77
+ });
78
+ }
79
+ // ─── policy ─────────────────────────────────────────────────────────────
80
+ policyCommand() {
81
+ return new Command('policy')
82
+ .description('Show the current governance policy + enforcement status')
83
+ .option('--json', 'Machine-readable JSON output')
84
+ .action((options) => {
85
+ this.showPolicy(options?.json === true);
86
+ });
87
+ }
88
+ showPolicy(json) {
89
+ const gov = this.configManager.getAll().routing?.governance || {};
90
+ if (json) {
91
+ console.log(JSON.stringify({ governance: gov, enforced: this.describeEnforcement() }, null, 2));
92
+ return;
93
+ }
94
+ const hasAny = GOVERNANCE_FIELDS.some((f) => gov[f] !== undefined);
95
+ logger.highlight('\n ── Admin Governance Policy (P6 M6.5) ──\n');
96
+ if (!hasAny) {
97
+ console.log(' ⚖️ Policy is EMPTY — fully permissive. Auto routing may use any provider × model.');
98
+ console.log(' Add rules with: buff admin allow <provider> · buff admin deny <provider>');
99
+ console.log(' buff admin allow-model <model> · buff admin max-cost <usd>');
100
+ }
101
+ else {
102
+ const row = (label, value) => {
103
+ const rendered = Array.isArray(value)
104
+ ? value.join(', ')
105
+ : typeof value === 'number'
106
+ ? label.toLowerCase().includes('cost')
107
+ ? `$${value}`
108
+ : String(value)
109
+ : String(value);
110
+ console.log(` ${label}: ${rendered || '(none)'}`);
111
+ };
112
+ if (gov.allowProviders?.length)
113
+ row('allowProviders', gov.allowProviders);
114
+ else
115
+ console.log(' allowProviders: (none — all providers allowed)');
116
+ if (gov.denyProviders?.length)
117
+ row('denyProviders', gov.denyProviders);
118
+ else
119
+ console.log(' denyProviders: (none)');
120
+ if (gov.allowModels?.length)
121
+ row('allowModels', gov.allowModels);
122
+ else
123
+ console.log(' allowModels: (none — all models allowed)');
124
+ if (gov.denyModels?.length)
125
+ row('denyModels', gov.denyModels);
126
+ else
127
+ console.log(' denyModels: (none)');
128
+ row('maxCostUsd', gov.maxCostUsd ?? '(none — no admin cost cap)');
129
+ row('minPrivacyForPii', gov.minPrivacyForPii ?? '1.0 (local-only for PII)');
130
+ if (gov.piiPatterns?.length)
131
+ row('piiPatterns', gov.piiPatterns);
132
+ else
133
+ console.log(' piiPatterns: (none — no PII domain guard)');
134
+ row('allowUnblock', gov.allowUnblock ?? 'true (unblock escape hatch open)');
135
+ }
136
+ console.log(`\n ${this.describeEnforcement()}`);
137
+ console.log(' Rules are admin-HARD: violating providers are eliminated, never just scored lower.');
138
+ console.log('');
139
+ }
140
+ describeEnforcement() {
141
+ const gov = this.configManager.getAll().routing?.governance;
142
+ const rules = [
143
+ gov?.allowProviders?.length ? 'provider allow-list' : null,
144
+ gov?.denyProviders?.length ? 'provider deny-list' : null,
145
+ gov?.allowModels?.length ? 'model allow-list' : null,
146
+ gov?.denyModels?.length ? 'model deny-list' : null,
147
+ gov?.maxCostUsd !== undefined ? 'admin cost cap' : null,
148
+ gov?.piiPatterns?.length ? 'PII privacy guard' : null,
149
+ ].filter(Boolean);
150
+ return rules.length > 0
151
+ ? `Enforced on every Auto pick (${rules.join(', ')})`
152
+ : 'No rules active — every provider × model is eligible';
153
+ }
154
+ // ─── allow / deny providers ──────────────────────────────────────────────
155
+ allowCommand() {
156
+ return new Command('allow')
157
+ .description('Add providers to the allow-list (empty = all providers allowed)')
158
+ .argument('<providers...>', 'Provider ids (e.g. groq local)')
159
+ .action((providers) => {
160
+ if (!this.guard('policy.write'))
161
+ return;
162
+ this.setListField('allowProviders', providers);
163
+ });
164
+ }
165
+ denyCommand() {
166
+ return new Command('deny')
167
+ .description('Add providers to the deny-list (wins over the allow-list)')
168
+ .argument('<providers...>', 'Provider ids (e.g. gemini openrouter)')
169
+ .action((providers) => {
170
+ if (!this.guard('policy.write'))
171
+ return;
172
+ this.setListField('denyProviders', providers);
173
+ });
174
+ }
175
+ // ─── allow-model / deny-model ────────────────────────────────────────────
176
+ allowModelCommand() {
177
+ return new Command('allow-model')
178
+ .description('Add models to the allow-list — a provider survives only if one of its candidate models is listed')
179
+ .argument('<models...>', 'Model ids (e.g. llama-3.3-70b-versatile)')
180
+ .action((models) => {
181
+ if (!this.guard('policy.write'))
182
+ return;
183
+ this.setListField('allowModels', models);
184
+ });
185
+ }
186
+ denyModelCommand() {
187
+ return new Command('deny-model')
188
+ .description('Add models to the deny-list (wins over the allow-list)')
189
+ .argument('<models...>', 'Model ids')
190
+ .action((models) => {
191
+ if (!this.guard('policy.write'))
192
+ return;
193
+ this.setListField('denyModels', models);
194
+ });
195
+ }
196
+ setListField(field, values) {
197
+ const gov = this.configManager.getAll().routing?.governance || {};
198
+ const merged = appendUnique(gov[field], values);
199
+ this.configManager.save({
200
+ routing: { governance: { ...gov, [field]: merged } },
201
+ });
202
+ logger.success(`${field} = ${merged.join(', ')}`);
203
+ }
204
+ // ─── max-cost ────────────────────────────────────────────────────────────
205
+ maxCostCommand() {
206
+ return new Command('max-cost')
207
+ .description('Set the admin hard max cost per call (USD); joins routing.maxCostUsd (stricter wins)')
208
+ .argument('<usd>', 'Max cost per call in USD (e.g. 0.01)')
209
+ .action((usd) => {
210
+ if (!this.guard('policy.write'))
211
+ return;
212
+ const num = Number(usd);
213
+ if (isNaN(num) || num < 0) {
214
+ logger.error(`Invalid max-cost "${usd}". Must be a non-negative number (USD).`);
215
+ return;
216
+ }
217
+ const gov = this.configManager.getAll().routing?.governance || {};
218
+ this.configManager.save({
219
+ routing: { governance: { ...gov, maxCostUsd: num } },
220
+ });
221
+ logger.success(`governance.maxCostUsd = ${num}`);
222
+ });
223
+ }
224
+ // ─── pii-min ─────────────────────────────────────────────────────────────
225
+ piiMinCommand() {
226
+ return new Command('pii-min')
227
+ .description('Set the minimum privacy score (0-1) required when a task matches a PII pattern (default 1.0 = local-only)')
228
+ .argument('<score>', '0 to 1 (1.0 = only fully-local providers may serve PII)')
229
+ .action((score) => {
230
+ if (!this.guard('policy.write'))
231
+ return;
232
+ const num = Number(score);
233
+ if (isNaN(num) || num < 0 || num > 1) {
234
+ logger.error(`Invalid pii-min "${score}". Must be between 0 and 1.`);
235
+ return;
236
+ }
237
+ const gov = this.configManager.getAll().routing?.governance || {};
238
+ this.configManager.save({
239
+ routing: { governance: { ...gov, minPrivacyForPii: num } },
240
+ });
241
+ logger.success(`governance.minPrivacyForPii = ${num}`);
242
+ });
243
+ }
244
+ // ─── unblock on|off ──────────────────────────────────────────────────────
245
+ unblockCommand() {
246
+ return new Command('unblock')
247
+ .description('Control whether `buff models unblock` may override REGISTRY-learned blocks (false = admin-hard)')
248
+ .argument('<on|off>', 'on (escape hatch open, default) or off (admin-hard)')
249
+ .action((mode) => {
250
+ if (!this.guard('policy.write'))
251
+ return;
252
+ const lower = mode.trim().toLowerCase();
253
+ if (lower !== 'on' && lower !== 'off') {
254
+ logger.error(`Invalid unblock "${mode}". Use "on" or "off".`);
255
+ return;
256
+ }
257
+ const gov = this.configManager.getAll().routing?.governance || {};
258
+ this.configManager.save({
259
+ routing: { governance: { ...gov, allowUnblock: lower === 'on' } },
260
+ });
261
+ logger.success(`governance.allowUnblock = ${lower === 'on'} (${lower === 'on' ? 'unblock allowed' : 'registry blocks are admin-hard'})`);
262
+ });
263
+ }
264
+ // ─── clear <field> ───────────────────────────────────────────────────────
265
+ clearCommand() {
266
+ return new Command('clear')
267
+ .description('Remove one governance rule (the policy becomes permissive on that field)')
268
+ .argument('<field>', `Field to clear: ${GOVERNANCE_FIELDS.join(', ')}`)
269
+ .action((field) => {
270
+ if (!this.guard('policy.write'))
271
+ return;
272
+ if (!GOVERNANCE_FIELDS.includes(field)) {
273
+ logger.error(`Unknown governance field "${field}". Valid: ${GOVERNANCE_FIELDS.join(', ')}`);
274
+ return;
275
+ }
276
+ const gov = this.configManager.getAll().routing?.governance || {};
277
+ const { [field]: _removed, ...rest } = gov;
278
+ this.configManager.save({
279
+ routing: { governance: rest },
280
+ });
281
+ logger.success(`Cleared governance.${field}`);
282
+ });
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
+ }
360
+ }
361
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/cli/admin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA0C9D;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CA8InC;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAoD/C"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA2C9D;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAgJnC;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAoD/C"}
@@ -35,6 +35,7 @@ import { ProviderCommand } from './provider.js';
35
35
  import { SecurityCommand } from './security.js';
36
36
  import { AuditCommand } from './audit.js';
37
37
  import { SbomCommand } from './sbom.js';
38
+ import { AdminCommand } from './admin.js';
38
39
  import { FeedbackCommand } from './feedback.js';
39
40
  import { MarketplaceCommand } from './marketplace.js';
40
41
  import { MCPCommand } from './mcp.js';
@@ -59,10 +60,12 @@ export function createCLI() {
59
60
  const chatCmd = new ChatCommand();
60
61
  const editCmd = new EditCommand();
61
62
  const planCmd = new PlanCommand();
63
+ const adminCmd = new AdminCommand();
62
64
  const configCmd = new ConfigCommand();
63
65
  const cacheCmd = new CacheCommand();
64
66
  const modelsCmd = new ModelsCommand();
65
67
  const executeCmd = new ExecuteCommand();
68
+ program.addCommand(adminCmd.create());
66
69
  program.addCommand(chatCmd.create());
67
70
  program.addCommand(editCmd.create());
68
71
  program.addCommand(planCmd.create());
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/cli/router.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"}