@productbrain/cli 0.1.0-beta.8509 → 0.1.0-beta.8514

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.
@@ -1,452 +0,0 @@
1
- /**
2
- * pb audit — unit tests.
3
- * BET-182 Slice 2: CLI command + auto-fix.
4
- *
5
- * Verifies:
6
- * 1. JSON mode: correct structure on pipe (mock kernelCall with fixture)
7
- * 2. TTY mode: PASS gates collapsed, FAIL gates expanded
8
- * 3. Exit codes: 0/1/2/3 for each verdict
9
- * 4. --gate flag: only specified gate runs
10
- * 5. --phase flag: passed through to MCP call
11
- * 6. --fix: calls update with fix values, reruns audit, stops after 1 rerun
12
- * 7. Batch mode: multiple entryIds processed sequentially
13
- * 8. Edge case: entry not found returns error
14
- */
15
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
16
- import { runAudit } from '../commands/audit.js';
17
- import { setOutputMode } from '../lib/runner.js';
18
- import { clearVocabCache, setCachedVocabCtx } from '../lib/workspaceVocabCache.js';
19
- const kernelCallMock = vi.fn();
20
- const kernelCallWithSessionMock = vi.fn();
21
- vi.mock('../lib/client.js', () => ({
22
- kernelCall: (...args) => kernelCallMock(...args),
23
- kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
24
- }));
25
- vi.mock('../lib/config.js', () => ({
26
- getConfigOrGuide: vi.fn((_fn) => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
27
- }));
28
- // Session mock — controlled per test
29
- let mockSession = { sessionId: 'sess-test' };
30
- vi.mock('../lib/session.js', () => ({
31
- readSession: () => mockSession,
32
- }));
33
- // ─── Fixtures ───────────────────────────────────────────────────────────────
34
- const PASS_FIXTURE = {
35
- entryId: 'BET-182',
36
- entryName: 'CLI Audit Gate',
37
- phase: 'shaping',
38
- verdict: 'pass',
39
- gates: [
40
- { gate: 'intentional-relations', status: 'pass', blocking: true, detail: '3 intentional relations found' },
41
- { gate: 'strategic-anchor', status: 'pass', blocking: true, detail: 'Linked to WS-5' },
42
- { gate: 'field-completeness', status: 'pass', blocking: true, detail: 'All 4 required fields populated' },
43
- ],
44
- summary: { total: 3, passed: 3, failed: 0, warned: 0 },
45
- elapsed_ms: 42,
46
- };
47
- const FAIL_FIXTURE = {
48
- entryId: 'BET-200',
49
- entryName: 'Broken Bet',
50
- phase: 'shaping',
51
- verdict: 'fail',
52
- gates: [
53
- { gate: 'intentional-relations', status: 'fail', blocking: true, detail: '0 intentional relations', fix: "Set field 'problem' to 'needs definition'", fixType: 'exact' },
54
- { gate: 'strategic-anchor', status: 'pass', blocking: true, detail: 'Linked to WS-5' },
55
- { gate: 'field-completeness', status: 'fail', blocking: true, detail: 'Missing: appetite, doneWhen', fix: "Set field 'appetite' to '6 weeks'", fixType: 'exact', hint: 'STD-113 requires these fields' },
56
- ],
57
- summary: { total: 3, passed: 1, failed: 2, warned: 0 },
58
- elapsed_ms: 55,
59
- };
60
- const WARN_FIXTURE = {
61
- entryId: 'BET-201',
62
- entryName: 'Warn Bet',
63
- phase: 'handoff',
64
- verdict: 'warn',
65
- gates: [
66
- { gate: 'auto-link-noise', status: 'warn', blocking: false, detail: '2 auto-link relations found', hint: 'Consider removing auto-link noise' },
67
- { gate: 'strategic-anchor', status: 'pass', blocking: true, detail: 'Linked to WS-5' },
68
- ],
69
- summary: { total: 2, passed: 1, failed: 0, warned: 1 },
70
- elapsed_ms: 33,
71
- };
72
- // ─── Helpers ────────────────────────────────────────────────────────────────
73
- let stdoutOutput;
74
- let stderrOutput;
75
- let stdoutWriteSpy;
76
- let stderrWriteSpy;
77
- let exitSpy;
78
- // WP-744 / 1e-B: auto mode no longer infers JSON from stdout's TTY-ness — only PB_JSON=1 opts
79
- // in. `json=true` simulates piping to a JSON consumer; `json=false` simulates the default card.
80
- function withJsonMode(json, fn) {
81
- return async () => {
82
- const original = process.env.PB_JSON;
83
- if (json) {
84
- process.env.PB_JSON = '1';
85
- }
86
- else {
87
- delete process.env.PB_JSON;
88
- }
89
- try {
90
- await fn();
91
- }
92
- finally {
93
- if (original === undefined) {
94
- delete process.env.PB_JSON;
95
- }
96
- else {
97
- process.env.PB_JSON = original;
98
- }
99
- }
100
- };
101
- }
102
- /**
103
- * Catch process.exit without actually exiting.
104
- * Returns the exit code that was called with.
105
- */
106
- function catchExit() {
107
- const state = { code: undefined };
108
- exitSpy = vi.spyOn(process, 'exit').mockImplementation(((code) => {
109
- state.code = code;
110
- throw new Error(`process.exit(${code})`);
111
- }));
112
- return state;
113
- }
114
- beforeEach(() => {
115
- stdoutOutput = '';
116
- stderrOutput = '';
117
- stdoutWriteSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
118
- stdoutOutput += String(chunk);
119
- return true;
120
- });
121
- stderrWriteSpy = vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
122
- stderrOutput += String(chunk);
123
- return true;
124
- });
125
- setOutputMode('auto');
126
- mockSession = { sessionId: 'sess-test' };
127
- vi.clearAllMocks();
128
- // WP-438 S1: prime the workspace vocab cache so runAudit's chain.getVocabulary
129
- // call short-circuits — keeps these tests' kernelCall sequences intact.
130
- clearVocabCache();
131
- setCachedVocabCtx('pb_sk_test', { collectionLabels: { work_package: { singular: 'Bet', plural: 'Bets' } } });
132
- });
133
- afterEach(() => {
134
- stdoutWriteSpy.mockRestore();
135
- stderrWriteSpy.mockRestore();
136
- exitSpy?.mockRestore();
137
- setOutputMode('auto');
138
- });
139
- // ─── Tests ──────────────────────────────────────────────────────────────────
140
- describe('runAudit — JSON mode (non-TTY)', () => {
141
- it('outputs correct JSON structure on pipe', withJsonMode(true, async () => {
142
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
143
- const exit = catchExit();
144
- await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
145
- const parsed = JSON.parse(stdoutOutput);
146
- expect(parsed.entryId).toBe('BET-182');
147
- expect(parsed.entryName).toBe('CLI Audit Gate');
148
- expect(parsed.verdict).toBe('pass');
149
- expect(parsed.gates).toHaveLength(3);
150
- expect(parsed.summary).toEqual({ total: 3, passed: 3, failed: 0, warned: 0 });
151
- expect(parsed.elapsed_ms).toBe(42);
152
- expect(exit.code).toBe(0);
153
- }));
154
- it('calls chain.auditBet with correct entryId', withJsonMode(true, async () => {
155
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
156
- catchExit();
157
- await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
158
- expect(kernelCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
159
- }));
160
- it('strips Convex internals from JSON output', withJsonMode(true, async () => {
161
- const fixtureWithInternals = {
162
- ...PASS_FIXTURE,
163
- _id: 'sys-internal-id',
164
- _creationTime: 123456,
165
- };
166
- kernelCallMock.mockResolvedValue(fixtureWithInternals);
167
- catchExit();
168
- await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
169
- const parsed = JSON.parse(stdoutOutput);
170
- expect(parsed).not.toHaveProperty('_id');
171
- expect(parsed).not.toHaveProperty('_creationTime');
172
- }));
173
- });
174
- describe('runAudit — TTY mode', () => {
175
- it('collapses PASS gates (shows count), expands FAIL gates', withJsonMode(false, async () => {
176
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
177
- catchExit();
178
- await expect(runAudit({ entryIds: ['BET-200'] })).rejects.toThrow('process.exit');
179
- // FAIL gates should be expanded with detail
180
- expect(stdoutOutput).toContain('intentional-relations');
181
- expect(stdoutOutput).toContain('0 intentional relations');
182
- expect(stdoutOutput).toContain('field-completeness');
183
- expect(stdoutOutput).toContain('Missing: appetite, doneWhen');
184
- // PASS gate should be in collapsed summary
185
- expect(stdoutOutput).toContain('PASS: 1 gate(s)');
186
- expect(stdoutOutput).toContain('strategic-anchor');
187
- }));
188
- it('shows WARN gates expanded with hints', withJsonMode(false, async () => {
189
- kernelCallMock.mockResolvedValue(WARN_FIXTURE);
190
- catchExit();
191
- await expect(runAudit({ entryIds: ['BET-201'] })).rejects.toThrow('process.exit');
192
- expect(stdoutOutput).toContain('WARN:');
193
- expect(stdoutOutput).toContain('auto-link-noise');
194
- expect(stdoutOutput).toContain('2 auto-link relations found');
195
- expect(stdoutOutput).toContain('Consider removing auto-link noise');
196
- }));
197
- it('--verbose expands all gates including PASS', withJsonMode(false, async () => {
198
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
199
- catchExit();
200
- await expect(runAudit({ entryIds: ['BET-182'], verbose: true })).rejects.toThrow('process.exit');
201
- // PASS gates should show detail, not just count
202
- expect(stdoutOutput).toContain('PASS:');
203
- expect(stdoutOutput).toContain('intentional-relations: 3 intentional relations found');
204
- expect(stdoutOutput).toContain('strategic-anchor: Linked to WS-5');
205
- // Should NOT have the collapsed format
206
- expect(stdoutOutput).not.toContain('gate(s)');
207
- }));
208
- });
209
- describe('runAudit — exit codes', () => {
210
- it('exit 0 for pass verdict', withJsonMode(true, async () => {
211
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
212
- const exit = catchExit();
213
- await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
214
- expect(exit.code).toBe(0);
215
- }));
216
- it('exit 1 for fail verdict', withJsonMode(true, async () => {
217
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
218
- const exit = catchExit();
219
- await expect(runAudit({ entryIds: ['BET-200'] })).rejects.toThrow('process.exit');
220
- expect(exit.code).toBe(1);
221
- }));
222
- it('exit 2 for warn verdict', withJsonMode(true, async () => {
223
- kernelCallMock.mockResolvedValue(WARN_FIXTURE);
224
- const exit = catchExit();
225
- await expect(runAudit({ entryIds: ['BET-201'] })).rejects.toThrow('process.exit');
226
- expect(exit.code).toBe(2);
227
- }));
228
- it('exit 3 for error (entry not found)', withJsonMode(true, async () => {
229
- kernelCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
230
- const exit = catchExit();
231
- await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
232
- expect(exit.code).toBe(3);
233
- }));
234
- });
235
- describe('runAudit — --gate flag', () => {
236
- it('filters JSON output to only specified gate(s)', withJsonMode(true, async () => {
237
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
238
- catchExit();
239
- await expect(runAudit({ entryIds: ['BET-200'], gate: ['field-completeness'] })).rejects.toThrow('process.exit');
240
- const parsed = JSON.parse(stdoutOutput);
241
- // Only the filtered gate should appear
242
- expect(parsed.gates).toHaveLength(1);
243
- expect(parsed.gates[0].gate).toBe('field-completeness');
244
- }));
245
- it('filters TTY output to only specified gate(s)', withJsonMode(false, async () => {
246
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
247
- catchExit();
248
- await expect(runAudit({ entryIds: ['BET-200'], gate: ['field-completeness'] })).rejects.toThrow('process.exit');
249
- // Should show the filtered gate
250
- expect(stdoutOutput).toContain('field-completeness');
251
- // Should NOT show other gates
252
- expect(stdoutOutput).not.toContain('intentional-relations');
253
- }));
254
- it('supports multiple --gate values', withJsonMode(true, async () => {
255
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
256
- catchExit();
257
- await expect(runAudit({ entryIds: ['BET-200'], gate: ['intentional-relations', 'field-completeness'] })).rejects.toThrow('process.exit');
258
- const parsed = JSON.parse(stdoutOutput);
259
- expect(parsed.gates).toHaveLength(2);
260
- const gateNames = parsed.gates.map((g) => g.gate);
261
- expect(gateNames).toContain('intentional-relations');
262
- expect(gateNames).toContain('field-completeness');
263
- }));
264
- });
265
- describe('runAudit — --phase flag', () => {
266
- it('passes phase through to MCP call', withJsonMode(true, async () => {
267
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
268
- catchExit();
269
- await expect(runAudit({ entryIds: ['BET-182'], phase: 'handoff' })).rejects.toThrow('process.exit');
270
- expect(kernelCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182', phase: 'handoff' });
271
- }));
272
- it('omits phase from MCP call when not specified', withJsonMode(true, async () => {
273
- kernelCallMock.mockResolvedValue(PASS_FIXTURE);
274
- catchExit();
275
- await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
276
- expect(kernelCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
277
- }));
278
- });
279
- describe('runAudit — --fix', () => {
280
- it('calls updateEntry for exact fixes and reruns audit once', withJsonMode(true, async () => {
281
- // First call: failing audit
282
- // Second call (after fix): passing audit
283
- kernelCallMock
284
- .mockResolvedValueOnce(FAIL_FIXTURE)
285
- .mockResolvedValueOnce({ ...PASS_FIXTURE, entryId: 'BET-200', entryName: 'Broken Bet' });
286
- kernelCallWithSessionMock.mockResolvedValue({ id: 'result-id', warnings: [] });
287
- const exit = catchExit();
288
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
289
- // Should have called updateEntry for each exact fix
290
- expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
291
- entryId: 'BET-200',
292
- data: { problem: 'needs definition' },
293
- changeNote: 'Auto-fix via pb audit: set problem',
294
- });
295
- expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
296
- entryId: 'BET-200',
297
- data: { appetite: '6 weeks' },
298
- changeNote: 'Auto-fix via pb audit: set appetite',
299
- });
300
- // Should have rerun the audit (2 kernelCall invocations total)
301
- expect(kernelCallMock).toHaveBeenCalledTimes(2);
302
- // Exit code should reflect the rerun result (pass = 0)
303
- expect(exit.code).toBe(0);
304
- }));
305
- it('does not count a coherency-refused update as an applied fix, and does not rerun (WP-465 #36)', withJsonMode(false, async () => {
306
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
307
- // Both auto-fix updates are refused by the coherency gate (RETURNED, not thrown).
308
- kernelCallWithSessionMock.mockResolvedValue({
309
- outcome: 'refused',
310
- refusal: { reason: 'Not linked to the strategic spine.' },
311
- });
312
- const exit = catchExit();
313
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
314
- // The fixes were attempted but refused — so the audit must NOT be rerun (applied === 0).
315
- expect(kernelCallMock).toHaveBeenCalledTimes(1);
316
- // The refusal is surfaced, and the original failing verdict stands.
317
- expect(stderrOutput).toContain('Fix refused');
318
- expect(stderrOutput).toContain('Not linked to the strategic spine.');
319
- expect(exit.code).toBe(1); // fail verdict stands — refusal applied nothing
320
- }));
321
- // PR B (WP-757): same defect class as the CLI/MCP update receipts — a --fix write can be
322
- // silently stripped by server-side normalization (unknown field on this entry's collection)
323
- // with NO refusal and NO throw, yet executeFixActions used to print "Fixed:" and count it
324
- // as applied regardless, because it never read normalization.rejected at all.
325
- it('does not count a server-rejected field as an applied fix, and does not rerun', withJsonMode(false, async () => {
326
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
327
- // Neither refused nor thrown — a normal success envelope, but the field itself was
328
- // stripped by normalizeEntryData (unrecognized on this collection).
329
- kernelCallWithSessionMock.mockImplementation((_fn, args) => {
330
- const fieldKey = Object.keys(args.data)[0];
331
- return Promise.resolve({
332
- id: 'result-id',
333
- warnings: [`Unknown field "${fieldKey}" dropped.`],
334
- normalization: { remapped: {}, rejected: [fieldKey], accepted: [] },
335
- });
336
- });
337
- const exit = catchExit();
338
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
339
- // Both fixes were attempted but server-rejected — so the audit must NOT be rerun.
340
- expect(kernelCallMock).toHaveBeenCalledTimes(1);
341
- // The rejection is surfaced, never printed as "Fixed:".
342
- expect(stderrOutput).toContain('Fix rejected');
343
- expect(stderrOutput).not.toContain('Fixed:');
344
- expect(exit.code).toBe(1); // fail verdict stands — nothing actually applied
345
- }));
346
- it('does not fix when no session is active', withJsonMode(true, async () => {
347
- mockSession = null;
348
- kernelCallMock.mockResolvedValue(FAIL_FIXTURE);
349
- catchExit();
350
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
351
- // Should NOT have called updateEntry
352
- expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
353
- // Should still show the result
354
- const parsed = JSON.parse(stdoutOutput);
355
- expect(parsed.verdict).toBe('fail');
356
- }));
357
- it('skips non-exact fixType gates', withJsonMode(true, async () => {
358
- const manualFixFixture = {
359
- ...FAIL_FIXTURE,
360
- gates: [
361
- { gate: 'intentional-relations', status: 'fail', blocking: true, detail: '0 relations', fix: 'Add relations manually', fixType: 'manual' },
362
- { gate: 'strategic-anchor', status: 'pass', blocking: true, detail: 'OK' },
363
- ],
364
- };
365
- kernelCallMock.mockResolvedValue(manualFixFixture);
366
- catchExit();
367
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
368
- // No exact fixes → no updateEntry calls, no rerun
369
- expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
370
- expect(kernelCallMock).toHaveBeenCalledTimes(1);
371
- }));
372
- it('stops after one rerun even if issues remain', withJsonMode(true, async () => {
373
- // Both calls return failing audit (fix didn't resolve everything)
374
- kernelCallMock
375
- .mockResolvedValueOnce(FAIL_FIXTURE)
376
- .mockResolvedValueOnce(FAIL_FIXTURE);
377
- kernelCallWithSessionMock.mockResolvedValue({ id: 'result-id', warnings: [] });
378
- const exit = catchExit();
379
- await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
380
- // Should have run audit exactly 2 times (initial + 1 rerun), not 3
381
- expect(kernelCallMock).toHaveBeenCalledTimes(2);
382
- expect(exit.code).toBe(1);
383
- }));
384
- });
385
- describe('runAudit — batch mode', () => {
386
- it('audits multiple bets sequentially', withJsonMode(true, async () => {
387
- kernelCallMock
388
- .mockResolvedValueOnce(PASS_FIXTURE)
389
- .mockResolvedValueOnce(FAIL_FIXTURE);
390
- const exit = catchExit();
391
- await expect(runAudit({ entryIds: ['BET-182', 'BET-200'] })).rejects.toThrow('process.exit');
392
- // Both auditBet calls should have been made
393
- expect(kernelCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
394
- expect(kernelCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-200' });
395
- // Exit code should be worst verdict (fail = 1)
396
- expect(exit.code).toBe(1);
397
- // Should have batch summary as last line of output
398
- const lines = stdoutOutput.trim().split('\n');
399
- const lastLine = lines[lines.length - 1];
400
- const batchSummary = JSON.parse(lastLine);
401
- expect(batchSummary.batch).toBe(true);
402
- expect(batchSummary.count).toBe(2);
403
- expect(batchSummary.passed).toBe(1);
404
- expect(batchSummary.failed).toBe(1);
405
- }));
406
- it('shows separator between entries in TTY mode', withJsonMode(false, async () => {
407
- kernelCallMock
408
- .mockResolvedValueOnce(PASS_FIXTURE)
409
- .mockResolvedValueOnce(WARN_FIXTURE);
410
- catchExit();
411
- await expect(runAudit({ entryIds: ['BET-182', 'BET-201'] })).rejects.toThrow('process.exit');
412
- // Should have separator
413
- expect(stdoutOutput).toContain('---');
414
- // Both entries present
415
- expect(stdoutOutput).toContain('BET-182');
416
- expect(stdoutOutput).toContain('BET-201');
417
- }));
418
- it('continues after error on one entry', withJsonMode(true, async () => {
419
- kernelCallMock
420
- .mockRejectedValueOnce(new Error('Entry "BET-999" not found.'))
421
- .mockResolvedValueOnce(PASS_FIXTURE);
422
- const exit = catchExit();
423
- await expect(runAudit({ entryIds: ['BET-999', 'BET-182'] })).rejects.toThrow('process.exit');
424
- // Error is worst (3 > 0)
425
- expect(exit.code).toBe(3);
426
- // stderr should have the error
427
- expect(stderrOutput).toContain('BET-999');
428
- // stdout should have the successful result
429
- expect(stdoutOutput).toContain('BET-182');
430
- }));
431
- });
432
- describe('runAudit — error handling', () => {
433
- it('outputs JSON error on pipe when entry not found', withJsonMode(true, async () => {
434
- kernelCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
435
- const exit = catchExit();
436
- await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
437
- expect(exit.code).toBe(3);
438
- const errParsed = JSON.parse(stderrOutput);
439
- expect(errParsed).toHaveProperty('error');
440
- expect(errParsed.error).toContain('BET-999');
441
- expect(errParsed.entryId).toBe('BET-999');
442
- }));
443
- it('outputs human error in TTY when entry not found', withJsonMode(false, async () => {
444
- kernelCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
445
- const exit = catchExit();
446
- await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
447
- expect(exit.code).toBe(3);
448
- expect(stderrOutput).toContain('Error auditing BET-999');
449
- expect(stderrOutput).toContain('not found');
450
- }));
451
- });
452
- //# sourceMappingURL=audit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../../src/__tests__/audit.test.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * pb audit <BET-ID> [BET-ID...] — automated RULE-384 hygiene checker.
3
- * BET-182 Slice 2: CLI command + auto-fix.
4
- *
5
- * Calls chain.auditBet via MCP, formats result for TTY or JSON,
6
- * and exits with code based on verdict:
7
- * 0 = pass, 1 = fail, 2 = warn, 3 = error
8
- *
9
- * Flags:
10
- * --phase shaping|handoff — override phase detection
11
- * --gate gate-name — run only specified gate(s), repeatable
12
- * --fix — auto-execute "exact" fixType fixes via pb update
13
- * --verbose — show all gates including PASS detail
14
- *
15
- * Chain: BET-182, RULE-384, STD-65 (structured output), STD-101
16
- */
17
- export interface AuditOptions {
18
- entryIds: string[];
19
- phase?: 'shaping' | 'handoff';
20
- gate?: string[];
21
- fix?: boolean;
22
- verbose?: boolean;
23
- }
24
- export declare function runAudit(options: AuditOptions): Promise<void>;
25
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmLD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DnE"}