agent-nuvira 1.58.8 → 1.59.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +3 -0
  2. package/dist/cli/audit.d.ts +26 -0
  3. package/dist/cli/audit.d.ts.map +1 -0
  4. package/dist/cli/audit.js +141 -0
  5. package/dist/cli/audit.js.map +1 -0
  6. package/dist/cli/config.d.ts.map +1 -1
  7. package/dist/cli/config.js +29 -1
  8. package/dist/cli/config.js.map +1 -1
  9. package/dist/cli/doctor.d.ts +79 -1
  10. package/dist/cli/doctor.d.ts.map +1 -1
  11. package/dist/cli/doctor.js +136 -5
  12. package/dist/cli/doctor.js.map +1 -1
  13. package/dist/cli/router.d.ts.map +1 -1
  14. package/dist/cli/router.js +3 -0
  15. package/dist/cli/router.js.map +1 -1
  16. package/dist/config/types.d.ts +25 -0
  17. package/dist/config/types.d.ts.map +1 -1
  18. package/dist/enterprise/audit-chain.d.ts +153 -0
  19. package/dist/enterprise/audit-chain.d.ts.map +1 -0
  20. package/dist/enterprise/audit-chain.js +403 -0
  21. package/dist/enterprise/audit-chain.js.map +1 -0
  22. package/dist/enterprise/secrets.d.ts +61 -0
  23. package/dist/enterprise/secrets.d.ts.map +1 -0
  24. package/dist/enterprise/secrets.js +155 -0
  25. package/dist/enterprise/secrets.js.map +1 -0
  26. package/dist/learning/model-registry.d.ts +19 -4
  27. package/dist/learning/model-registry.d.ts.map +1 -1
  28. package/dist/learning/model-registry.js +14 -10
  29. package/dist/learning/model-registry.js.map +1 -1
  30. package/dist/learning/quota-ledger.d.ts.map +1 -1
  31. package/dist/learning/quota-ledger.js +4 -7
  32. package/dist/learning/quota-ledger.js.map +1 -1
  33. package/dist/utils/env.d.ts.map +1 -1
  34. package/dist/utils/env.js +5 -1
  35. package/dist/utils/env.js.map +1 -1
  36. package/dist/utils/logger.d.ts.map +1 -1
  37. package/dist/utils/logger.js +28 -6
  38. package/dist/utils/logger.js.map +1 -1
  39. package/package.json +1 -1
package/README.md CHANGED
@@ -2024,6 +2024,9 @@ npx tsc --noEmit
2024
2024
  | **v1.53.0** | Aug 2026 | Per-action "learned from real usage" telemetry everywhere (chat/execute/plan/edit/skill/learn/ci/doctor all write the registry; dashboard panel + `models status --verbose` show who killed/verified what); daily timeline chart in the dashboard; recovery loop (a later real success un-parks + re-verifies a recovered provider); hermetic E2E failover test (`tests/e2e/`) proving "registry learns the block, next pick skips it"; 2,996 tests |
2025
2025
  | **v1.54.0** | Aug 2026 | VS Code extension telemetry attribution — the extension tags every IDE-driven LLM call with `BUFF_TELEMETRY_ACTION` (`ide-chat` / `ide-inline` / `ide-<command>`) so IDE usage gets its own rows in the per-action "learned from real usage" registry log + dashboard panel; 3,002 tests |
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
+ | **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 |
2028
+ | **v1.59.0** | Aug 2026 | P6 Enterprise Hardening begins: M6.2 secret-redaction scrubber (every log + audit line scrubbed; `BUFF_NO_REDACT` debug escape) + M6.3 tamper-evident SHA-256 hash-chained audit (`buff audit verify/export`, sidecar head state, legacy-compat) — `doctor --enterprise` audit checks now detect tampering with the exact line; 3,275 tests |
2029
+ | **v1.58.9** | Aug 2026 | P7 M7.4 opt-in gateway telemetry/usage-health flags (`routing.gatewayTelemetry.enabled` + `healthFlags`, OFF by default, privacy-safe — aggregates only, never prompt content) surfaced via `doctor --enterprise`; 3,232 tests |
2027
2030
  | **v1.58.8** | Aug 2026 | **Permanent fix for the persistent dashboard "server unreachable / Failed to fetch" issue** — server now binds BOTH IPv4 + IPv6 loopback (macOS resolves `localhost` → ::1 first), CLI opens deterministic 127.0.0.1 |
2028
2031
  | **v1.58.7** | Aug 2026 | M4.4 conservative compression (lossless-for-code, off by default) + `partial` mid-stream telemetry + `buff doctor --enterprise` self-check (gateway, secrets, audit, RBAC) + upgrade guide (P7 M7.2) |
2029
2032
  | **v1.58.6** | Aug 2026 | Fixed `routing.*` config never surviving a reload — `loadConfig` now merges the routing section (bandit/quota/governance/contextWindows/nuviraSidecar), so `buff config set routing.*` persists across restarts (regression test) |
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Audit command — P6 M6.3 tamper-evident audit trail.
3
+ *
4
+ * Usage:
5
+ * buff audit verify — Verify the hash chain of the built-in
6
+ * audit stores (quota-events + model-
7
+ * registry-actions) in ~/.buff/memory
8
+ * buff audit verify --file <path> — Verify a specific JSONL audit file
9
+ * buff audit verify --json — Machine-readable verdict (exit 0/1/2)
10
+ * buff audit export [--file <path>] — SIEM-friendly CEF export of a store
11
+ * (defaults to quota-events)
12
+ * buff audit export --out <path> — Write export to a file
13
+ *
14
+ * The stores are hash-chained (SHA-256) and secret-scrubbed: every record's
15
+ * `chain.hash = sha256(prevHash ‖ canonical(record))`, and the chain head is
16
+ * persisted in a sidecar `<file>.chain.json`, so tampering — even a single
17
+ * flipped byte — is detected on verify.
18
+ */
19
+ import { Command } from 'commander';
20
+ import { BaseCommand } from './commands.js';
21
+ export declare class AuditCommand extends BaseCommand {
22
+ create(): Command;
23
+ private createVerifyCommand;
24
+ private createExportCommand;
25
+ }
26
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiD5C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,MAAM,IAAI,OAAO;IAQjB,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,mBAAmB;CAsB5B"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Audit command — P6 M6.3 tamper-evident audit trail.
3
+ *
4
+ * Usage:
5
+ * buff audit verify — Verify the hash chain of the built-in
6
+ * audit stores (quota-events + model-
7
+ * registry-actions) in ~/.buff/memory
8
+ * buff audit verify --file <path> — Verify a specific JSONL audit file
9
+ * buff audit verify --json — Machine-readable verdict (exit 0/1/2)
10
+ * buff audit export [--file <path>] — SIEM-friendly CEF export of a store
11
+ * (defaults to quota-events)
12
+ * buff audit export --out <path> — Write export to a file
13
+ *
14
+ * The stores are hash-chained (SHA-256) and secret-scrubbed: every record's
15
+ * `chain.hash = sha256(prevHash ‖ canonical(record))`, and the chain head is
16
+ * persisted in a sidecar `<file>.chain.json`, so tampering — even a single
17
+ * flipped byte — is detected on verify.
18
+ */
19
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
20
+ import { Command } from 'commander';
21
+ import { BaseCommand } from './commands.js';
22
+ import { logger } from '../utils/logger.js';
23
+ import { verifyAuditFile, exportCefLines, auditFilePath, } from '../enterprise/audit-chain.js';
24
+ import { join, basename } from 'node:path';
25
+ import { homedir } from 'node:os';
26
+ const BUILTIN_CHAINS = [
27
+ { id: 'quota-events', label: 'quota-events.jsonl (quota failover timeline)' },
28
+ { id: 'model-registry-actions', label: 'model-registry-actions.jsonl (registry action telemetry)' },
29
+ ];
30
+ function memoryDir() {
31
+ return process.env.BUFF_MEMORY_DIR || join(homedir(), '.buff', 'memory');
32
+ }
33
+ /** Resolve a --file path or fall back to a builtin store id. */
34
+ function resolvePath(chainIdOrFile, builtin) {
35
+ if (chainIdOrFile) {
36
+ if (chainIdOrFile.endsWith('.jsonl') || chainIdOrFile.includes('/')) {
37
+ return chainIdOrFile;
38
+ }
39
+ return auditFilePath(chainIdOrFile);
40
+ }
41
+ return join(memoryDir(), builtin);
42
+ }
43
+ function renderVerifyResult(r) {
44
+ const icon = r.verdict === 'ok' ? '✅' : r.verdict === 'tampered' ? '❌' : r.verdict === 'corrupt' ? '❌' : '⚠️';
45
+ const lines = [];
46
+ lines.push(`${icon} ${r.chainId}`);
47
+ lines.push(` Records: ${r.totalLines} (${r.legacyLines} legacy pre-chain, ${r.corruptLines} corrupt)`);
48
+ if (r.verdict === 'ok') {
49
+ lines.push(` Chain intact — head ${r.recomputedHead?.slice(0, 12)}…${r.recomputedHead ? ' matches stored sidecar' : ''}`);
50
+ }
51
+ else if (r.verdict === 'tampered') {
52
+ lines.push(` ⚠️ TAMPER DETECTED — first broken record at line ${r.tamperLine}`);
53
+ lines.push(` Stored head ${r.storedHead?.slice(0, 12) ?? '(none)'} ≠ recomputed ${r.recomputedHead?.slice(0, 12) ?? '(none)'}`);
54
+ }
55
+ else if (r.verdict === 'legacy') {
56
+ lines.push(' ⚠️ Legacy un-chained store (pre-M6.3) — records readable, chain starts on next write.');
57
+ }
58
+ else {
59
+ lines.push(` ⚠️ Corrupt lines detected (${r.corruptLines}). Restore from backup — audit trails are append-only.`);
60
+ }
61
+ return lines.join('\n');
62
+ }
63
+ export class AuditCommand extends BaseCommand {
64
+ create() {
65
+ const command = new Command('audit')
66
+ .description('Verify and export the tamper-evident (hash-chained) audit trail (P6 M6.3)')
67
+ .addCommand(this.createVerifyCommand())
68
+ .addCommand(this.createExportCommand());
69
+ return command;
70
+ }
71
+ createVerifyCommand() {
72
+ return new Command('verify')
73
+ .description('Verify hash-chain integrity of audit stores (tamper detection)')
74
+ .option('-f, --file <path>', 'Verify a specific JSONL audit file (default: built-in stores)')
75
+ .option('--json', 'Machine-readable JSON verdict (exit 0 = ok, 1 = tampered/corrupt, 2 = legacy)')
76
+ .action((options) => {
77
+ const chains = options?.file
78
+ ? [{ id: options.file, label: options.file }]
79
+ : BUILTIN_CHAINS;
80
+ const results = [];
81
+ for (const chain of chains) {
82
+ // The sidecar chain id is the STORE name (basename sans .jsonl) —
83
+ // not the full path — so readHeadState's chainId match succeeds.
84
+ const id = basename(chain.id).replace(/\.jsonl$/, '');
85
+ const path = resolvePath(options?.file, chain.id);
86
+ if (!existsSync(path)) {
87
+ results.push({
88
+ chainId: id,
89
+ totalLines: 0,
90
+ legacyLines: 0,
91
+ corruptLines: 0,
92
+ tamperLine: 0,
93
+ recomputedHead: null,
94
+ storedHead: null,
95
+ headMatches: false,
96
+ verdict: 'legacy',
97
+ });
98
+ if (!options?.json)
99
+ logger.warn(`${id}: store not found (${path}) — nothing to verify yet`);
100
+ continue;
101
+ }
102
+ results.push(verifyAuditFile(path, id));
103
+ }
104
+ if (options?.json) {
105
+ console.log(JSON.stringify(results, null, 2));
106
+ }
107
+ else {
108
+ logger.highlight('\n ── Audit Chain Verification (P6 M6.3) ──\n');
109
+ for (const r of results)
110
+ console.log(renderVerifyResult(r));
111
+ console.log('');
112
+ const worst = results.reduce((w, r) => Math.max(w, r.verdict === 'ok' ? 0 : r.verdict === 'legacy' ? 2 : 1), 0);
113
+ process.exitCode = worst;
114
+ }
115
+ });
116
+ }
117
+ createExportCommand() {
118
+ return new Command('export')
119
+ .description('Export an audit store as SIEM-friendly CEF lines')
120
+ .option('-f, --file <path>', 'Audit file to export (default: quota-events)')
121
+ .option('--out <path>', 'Write the export to a file (default: stdout)')
122
+ .action((options) => {
123
+ const path = resolvePath(options?.file, 'quota-events.jsonl');
124
+ if (!existsSync(path)) {
125
+ logger.error(`Store not found: ${path}`);
126
+ process.exitCode = 1;
127
+ return;
128
+ }
129
+ const raw = readFileSync(path, 'utf-8');
130
+ const lines = exportCefLines(raw.split('\n').filter((l) => l.trim()));
131
+ if (options?.out) {
132
+ writeFileSync(options.out, `${lines.join('\n')}\n`, 'utf-8');
133
+ logger.success(`Exported ${lines.length} record(s) to ${options.out}`);
134
+ }
135
+ else {
136
+ console.log(lines.join('\n'));
137
+ }
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,MAAM,IAAI,OAAO;IAejB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,aAAa;IAkErB,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,QAAQ;IAwVhB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,UAAU;CAOnB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,MAAM,IAAI,OAAO;IAejB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,aAAa;IAkErB,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,QAAQ;IAiXhB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,UAAU;CAOnB"}
@@ -503,8 +503,36 @@ export class ConfigCommand extends BaseCommand {
503
503
  return;
504
504
  }
505
505
  }
506
+ else if (parts.length === 3 && parts[0] === 'routing' && parts[1] === 'gatewayTelemetry') {
507
+ // M7.4 — routing.gatewayTelemetry.enabled (boolean, DEFAULT FALSE) |
508
+ // routing.gatewayTelemetry.healthFlags (boolean). OPT-IN, privacy-
509
+ // preserving: enabling never captures prompt content — it only reports
510
+ // aggregate gateway usage/health numbers (requests, tokens, error
511
+ // rates) via `buff doctor --enterprise`.
512
+ const field = parts[2];
513
+ const existing = config.routing?.gatewayTelemetry || {};
514
+ if (field !== 'enabled' && field !== 'healthFlags') {
515
+ logger.error(`Unknown gatewayTelemetry config key: ${field}. Valid keys: enabled, healthFlags`);
516
+ return;
517
+ }
518
+ const lower = value.trim().toLowerCase();
519
+ let typedValue;
520
+ if (lower === 'true' || lower === '1' || lower === 'yes') {
521
+ typedValue = true;
522
+ }
523
+ else if (lower === 'false' || lower === '0' || lower === 'no') {
524
+ typedValue = false;
525
+ }
526
+ else {
527
+ logger.error(`Invalid boolean value for ${key}: "${value}". Use true or false.`);
528
+ return;
529
+ }
530
+ this.configManager.save({
531
+ routing: { gatewayTelemetry: { ...existing, [field]: typedValue } },
532
+ });
533
+ }
506
534
  else {
507
- logger.error(`Invalid config key format: ${key}. Expected formats:\n defaultProvider\n providers.<name>.<field>\n providers.<name>.apiKeys "k1,k2"\n pricing.<provider>.inputPer1K\n pricing.<provider>.outputPer1K\n history.retentionDays\n history.semanticSearch\n fallback.enabled\n fallback.providers\n routing.bandit\n routing.allowPaid\n routing.quota.<provider>.requestsPerWindow\n routing.governance.allowProviders "groq,local"\n routing.nuviraSidecar.enabled\n routing.compression.enabled (M4.4, DEFAULT FALSE)`);
535
+ logger.error(`Invalid config key format: ${key}. Expected formats:\n defaultProvider\n providers.<name>.<field>\n providers.<name>.apiKeys "k1,k2"\n pricing.<provider>.inputPer1K\n pricing.<provider>.outputPer1K\n history.retentionDays\n history.semanticSearch\n fallback.enabled\n fallback.providers\n routing.bandit\n routing.allowPaid\n routing.quota.<provider>.requestsPerWindow\n routing.governance.allowProviders "groq,local"\n routing.nuviraSidecar.enabled\n routing.compression.enabled (M4.4, DEFAULT FALSE)\n routing.gatewayTelemetry.enabled (M7.4, DEFAULT FALSE)`);
508
536
  return;
509
537
  }
510
538
  logger.success(`Set ${key} = ${value}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
@@ -87,10 +87,71 @@ export declare function auditJsonlIntegrity(filePath: string): {
87
87
  * plaintext `~/.buff/buffconfig.json`? Pure + testable (env passed in).
88
88
  */
89
89
  export declare function checkSecretsBackend(config: BuffConfig, env: Record<string, string | undefined>): CheckResult;
90
+ /**
91
+ * One provider's gateway usage-health flags (M7.4). Aggregated from the
92
+ * quota ledger + cost tracker — NEVER from captured prompt content.
93
+ */
94
+ export interface GatewayUsageFlags {
95
+ provider: string;
96
+ /** Total requests tracked for this provider (quota ledger). */
97
+ requests: number;
98
+ /** Total tokens consumed for this provider (quota ledger). */
99
+ tokens: number;
100
+ /** Estimated spend in USD (cost tracker). */
101
+ costUsd: number;
102
+ /** Whether the provider is currently parked (window exhausted / cooldown). */
103
+ parked: boolean;
104
+ /** Ms until the current window resets (0 when not parked). */
105
+ resetsInMs: number;
106
+ }
107
+ /** Aggregate gateway usage-health view (M7.4), fed to checkGatewayTelemetry. */
108
+ export interface GatewayUsage {
109
+ /** Per-provider health flags, sorted by provider name. */
110
+ providers: GatewayUsageFlags[];
111
+ /** Sum of requests across all tracked providers. */
112
+ totalRequests: number;
113
+ /** Sum of tokens across all tracked providers. */
114
+ totalTokens: number;
115
+ /** Sum of estimated spend in USD across all tracked providers. */
116
+ totalCostUsd: number;
117
+ }
118
+ /**
119
+ * M7.4 telemetry/usage-health check. OPT-IN AND OFF BY DEFAULT: privacy-
120
+ * preserving by construction — the numbers come from aggregate quota/cost
121
+ * tracking, never prompt content. When the flag is off (default) the check is
122
+ * an INFORMATIVE warn with the exact enable command, never a failure; when on
123
+ * it reports the aggregate headline, plus per-provider health flags when
124
+ * `healthFlags` is also enabled.
125
+ */
126
+ export declare function checkGatewayTelemetry(config: BuffConfig, usage: GatewayUsage): CheckResult;
127
+ /**
128
+ * Build the M7.4 aggregate gateway-usage view from the quota ledger + cost
129
+ * tracker singletons (aggregate counts only — never prompt content).
130
+ * Best-effort: any read failure degrades to an empty usage view.
131
+ *
132
+ * @param configManager When provided, its `routing.quota` limits are used to
133
+ * compute quota-configured parking (window exhausted), so the per-provider
134
+ * health flags show parked state accurately.
135
+ */
136
+ export declare function buildGatewayUsage(configManager?: import('../config/manager.js').ConfigManager): GatewayUsage;
137
+ /**
138
+ * P6 M6.3 chain-integrity check, built from a pure verify result (callers
139
+ * run `verifyAuditFile` — this function never touches the filesystem).
140
+ * Legacy pre-chain stores verify as a WARN (records readable; chain starts on
141
+ * the next write); broken chains are a FAIL with the exact tamper line.
142
+ */
143
+ export declare function checkAuditChainIntegrity(name: string, verify: {
144
+ totalLines: number;
145
+ legacyLines: number;
146
+ corruptLines: number;
147
+ tamperLine: number;
148
+ verdict: string;
149
+ }): CheckResult;
90
150
  /**
91
151
  * The full M7.1 enterprise self-check, built from pure inputs so it is
92
152
  * trivially testable: config snapshot + env + gateway probe result + audit
93
- * file paths. Returns the ordered CheckResult[] the CLI renders.
153
+ * file paths + opt-in gateway usage (M7.4). Returns the ordered CheckResult[]
154
+ * the CLI renders.
94
155
  */
95
156
  export declare function buildEnterpriseChecks(inputs: {
96
157
  config: BuffConfig;
@@ -101,6 +162,23 @@ export declare function buildEnterpriseChecks(inputs: {
101
162
  name: string;
102
163
  path: string;
103
164
  }>;
165
+ /** M7.4 opt-in gateway usage-health flags (default: empty = no tracked usage). */
166
+ gatewayUsage?: GatewayUsage;
167
+ /**
168
+ * P6 M6.3 pre-computed chain-verify results (pure core, file I/O done by
169
+ * the caller) — keyed by audit-file name. When present, an extra chain
170
+ * integrity check per audit file is appended after the JSONL-integrity one.
171
+ */
172
+ auditChains?: Array<{
173
+ name: string;
174
+ result: {
175
+ totalLines: number;
176
+ legacyLines: number;
177
+ corruptLines: number;
178
+ tamperLine: number;
179
+ verdict: string;
180
+ };
181
+ }>;
104
182
  }): CheckResult[];
105
183
  export declare class DoctorCommand extends BaseCommand {
106
184
  create(): Command;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOnE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,MAAM,EAAE,YAAY,CAAC;IACrB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,SAAO,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAgBA;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,WAAW,CA6Cb;AA+DD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,GAAG,WAAW,EAAE,CAyChB;AAID,qBAAa,aAAc,SAAQ,WAAW;IAC5C,MAAM,IAAI,OAAO;YA+BH,YAAY;YAqJZ,YAAY;YA4BZ,eAAe;IA4E7B;;OAEG;IACH,OAAO,CAAC,aAAa;YA0CP,WAAW;YAyBX,iBAAiB;YAiCjB,aAAa;IAuL3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,aAAa;YA6BP,OAAO;IAiDrB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,sBAAsB;YAMhB,WAAW;CAW1B"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,9 @@ import { BaseCommand } from './commands.js';
27
27
  import { ProviderFactory } from '../inference/factory.js';
28
28
  import { getPluginRegistry } from '../plugins/registry.js';
29
29
  import { recordRegistryFailure } from '../learning/provider-fallback.js';
30
+ import { getQuotaLedger } from '../learning/quota-ledger.js';
31
+ import { getCostTracker } from '../learning/cost-tracker.js';
32
+ import { verifyAuditFile } from '../enterprise/audit-chain.js';
30
33
  import { logger } from '../utils/logger.js';
31
34
  // ─── Constants ──────────────────────────────────────────────────────────────
32
35
  const PROVIDER_LABELS = {
@@ -255,10 +258,124 @@ function checkGatewayHealth(probe, configured) {
255
258
  fix: 'docker compose -f docker-compose.nuvira.yml up -d · or check providers.nuvira.baseUrl / apiKey',
256
259
  };
257
260
  }
261
+ /**
262
+ * M7.4 telemetry/usage-health check. OPT-IN AND OFF BY DEFAULT: privacy-
263
+ * preserving by construction — the numbers come from aggregate quota/cost
264
+ * tracking, never prompt content. When the flag is off (default) the check is
265
+ * an INFORMATIVE warn with the exact enable command, never a failure; when on
266
+ * it reports the aggregate headline, plus per-provider health flags when
267
+ * `healthFlags` is also enabled.
268
+ */
269
+ export function checkGatewayTelemetry(config, usage) {
270
+ const telemetry = config.routing?.gatewayTelemetry;
271
+ const enabled = telemetry?.enabled === true;
272
+ if (!enabled) {
273
+ return {
274
+ name: 'Telemetry / Usage Health',
275
+ status: 'warn',
276
+ message: 'Gateway usage-health telemetry OFF (privacy-preserving default)',
277
+ detail: 'No prompt content is ever captured — enabling only reports aggregate requests/tokens/cost. ' +
278
+ 'Set routing.gatewayTelemetry.enabled true to surface usage-health in this report.',
279
+ fix: 'buff config set routing.gatewayTelemetry.enabled true',
280
+ };
281
+ }
282
+ const showFlags = telemetry?.healthFlags === true;
283
+ const totalLines = [
284
+ `${usage.totalRequests} call(s) · ${usage.totalTokens.toLocaleString()} token(s) · $${usage.totalCostUsd.toFixed(4)} est. cost`,
285
+ 'Aggregates only — no prompts, no payloads stored by this check (privacy-safe).',
286
+ ];
287
+ if (showFlags) {
288
+ for (const p of usage.providers) {
289
+ totalLines.push(` ${p.provider}: ${p.requests} call(s) · ${p.tokens.toLocaleString()} tok · $${p.costUsd.toFixed(4)}${p.parked ? ' · ⛔ parked' : ''}${p.parked ? ` · resets in ${Math.ceil(p.resetsInMs / 60000)}m` : ''}`);
290
+ }
291
+ }
292
+ return {
293
+ name: 'Telemetry / Usage Health',
294
+ status: usage.totalRequests > 0 ? 'pass' : 'warn',
295
+ message: `Gateway telemetry ON — ${totalLines[0]}`,
296
+ detail: totalLines.join('\n'),
297
+ };
298
+ }
299
+ /**
300
+ * Build the M7.4 aggregate gateway-usage view from the quota ledger + cost
301
+ * tracker singletons (aggregate counts only — never prompt content).
302
+ * Best-effort: any read failure degrades to an empty usage view.
303
+ *
304
+ * @param configManager When provided, its `routing.quota` limits are used to
305
+ * compute quota-configured parking (window exhausted), so the per-provider
306
+ * health flags show parked state accurately.
307
+ */
308
+ export function buildGatewayUsage(configManager) {
309
+ try {
310
+ const statuses = getQuotaLedger().getStatus(configManager);
311
+ const cost = getCostTracker().getSummary();
312
+ const byProvider = cost?.byProvider || {};
313
+ const providers = statuses
314
+ .map((s) => ({
315
+ provider: s.provider,
316
+ requests: s.requests,
317
+ tokens: s.tokensConsumed,
318
+ costUsd: byProvider[s.provider] || 0,
319
+ parked: s.parked,
320
+ resetsInMs: s.parked ? s.resetsInMs : 0,
321
+ }))
322
+ .sort((a, b) => a.provider.localeCompare(b.provider));
323
+ return {
324
+ providers,
325
+ totalRequests: providers.reduce((a, p) => a + p.requests, 0),
326
+ totalTokens: providers.reduce((a, p) => a + p.tokens, 0),
327
+ totalCostUsd: providers.reduce((a, p) => a + p.costUsd, 0),
328
+ };
329
+ }
330
+ catch {
331
+ return { providers: [], totalRequests: 0, totalTokens: 0, totalCostUsd: 0 };
332
+ }
333
+ }
334
+ /**
335
+ * P6 M6.3 chain-integrity check, built from a pure verify result (callers
336
+ * run `verifyAuditFile` — this function never touches the filesystem).
337
+ * Legacy pre-chain stores verify as a WARN (records readable; chain starts on
338
+ * the next write); broken chains are a FAIL with the exact tamper line.
339
+ */
340
+ export function checkAuditChainIntegrity(name, verify) {
341
+ if (verify.verdict === 'tampered') {
342
+ return {
343
+ name: `Audit Chain: ${name}`,
344
+ status: 'fail',
345
+ message: `TAMPER DETECTED — first broken record at line ${verify.tamperLine}`,
346
+ detail: `${verify.totalLines} record(s), ${verify.legacyLines} legacy. Stored head ≠ recomputed chain head.`,
347
+ fix: 'Restore the file from backup; audit trails are append-only by design.',
348
+ };
349
+ }
350
+ if (verify.verdict === 'corrupt') {
351
+ return {
352
+ name: `Audit Chain: ${name}`,
353
+ status: 'fail',
354
+ message: `${verify.corruptLines} corrupt line(s) — truncated write or tampering`,
355
+ detail: `Hash chain cannot be trusted past a corrupt line. Restore from backup.`,
356
+ fix: 'Restore the file from backup; audit trails are append-only by design.',
357
+ };
358
+ }
359
+ if (verify.verdict === 'legacy') {
360
+ return {
361
+ name: `Audit Chain: ${name}`,
362
+ status: 'warn',
363
+ message: `${verify.totalLines} legacy pre-chain record(s) — readable, chain starts on next write`,
364
+ detail: 'Pre-M6.3 lines are outside the hash chain. New writes are chained and verified.',
365
+ };
366
+ }
367
+ return {
368
+ name: `Audit Chain: ${name}`,
369
+ status: 'pass',
370
+ message: `${verify.totalLines} record(s), hash chain intact (tamper-evident)`,
371
+ detail: `Head matches the persisted sidecar state — no tampering detected.`,
372
+ };
373
+ }
258
374
  /**
259
375
  * The full M7.1 enterprise self-check, built from pure inputs so it is
260
376
  * trivially testable: config snapshot + env + gateway probe result + audit
261
- * file paths. Returns the ordered CheckResult[] the CLI renders.
377
+ * file paths + opt-in gateway usage (M7.4). Returns the ordered CheckResult[]
378
+ * the CLI renders.
262
379
  */
263
380
  export function buildEnterpriseChecks(inputs) {
264
381
  const checks = [];
@@ -287,8 +404,14 @@ export function buildEnterpriseChecks(inputs) {
287
404
  fix: corrupt > 0 ? 'Restore the file from backup; audit trails are append-only by design.' : undefined,
288
405
  });
289
406
  }
407
+ // 3b. P6 M6.3 hash-chain integrity (per audit file, when results provided)
408
+ for (const chain of inputs.auditChains || []) {
409
+ checks.push(checkAuditChainIntegrity(chain.name, chain.result));
410
+ }
290
411
  // 4. RBAC / governance policy
291
412
  checks.push(checkRbacConfig(inputs.config));
413
+ // 5. M7.4 opt-in gateway telemetry / usage health (off by default)
414
+ checks.push(checkGatewayTelemetry(inputs.config, inputs.gatewayUsage || { providers: [], totalRequests: 0, totalTokens: 0, totalCostUsd: 0 }));
292
415
  return checks;
293
416
  }
294
417
  // ─── DoctorCommand ──────────────────────────────────────────────────────────
@@ -344,15 +467,23 @@ export class DoctorCommand extends BaseCommand {
344
467
  // Best-effort — a probe failure is reported as a fail check below.
345
468
  }
346
469
  const memoryDir = join(homedir(), '.buff', 'memory');
470
+ const auditFiles = [
471
+ { name: 'quota-events.jsonl', path: join(memoryDir, 'quota-events.jsonl') },
472
+ { name: 'model-registry-actions.jsonl', path: join(memoryDir, 'model-registry-actions.jsonl') },
473
+ ];
347
474
  const enterpriseChecks = buildEnterpriseChecks({
348
475
  config: all,
349
476
  env: { ...process.env },
350
477
  gatewayProbe,
351
478
  gatewayConfigured,
352
- auditFiles: [
353
- { name: 'quota-events.jsonl', path: join(memoryDir, 'quota-events.jsonl') },
354
- { name: 'model-registry-actions.jsonl', path: join(memoryDir, 'model-registry-actions.jsonl') },
355
- ],
479
+ auditFiles,
480
+ // P6 M6.3: chain verification for each audit store (file I/O here,
481
+ // pure core in the check).
482
+ auditChains: auditFiles.map((f) => ({
483
+ name: f.name,
484
+ result: verifyAuditFile(f.path, f.name.replace(/\.jsonl$/, '')),
485
+ })),
486
+ gatewayUsage: buildGatewayUsage(this.configManager),
356
487
  });
357
488
  console.log('');
358
489
  this.renderEnterpriseSection(enterpriseChecks);