@productbrain/cli 0.1.0-beta.70 → 0.1.0-beta.71
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/dist/__tests__/audit.test.js +44 -44
- package/dist/__tests__/audit.test.js.map +1 -1
- package/dist/__tests__/capture.test.js +37 -37
- package/dist/__tests__/capture.test.js.map +1 -1
- package/dist/__tests__/constellation.test.js +14 -14
- package/dist/__tests__/constellation.test.js.map +1 -1
- package/dist/__tests__/context-strategy.test.js +8 -8
- package/dist/__tests__/context-strategy.test.js.map +1 -1
- package/dist/__tests__/fields.test.js +20 -20
- package/dist/__tests__/fields.test.js.map +1 -1
- package/dist/__tests__/ingest.test.js +28 -28
- package/dist/__tests__/ingest.test.js.map +1 -1
- package/dist/__tests__/orient.test.js +8 -8
- package/dist/__tests__/orient.test.js.map +1 -1
- package/dist/__tests__/promote.test.js +15 -15
- package/dist/__tests__/promote.test.js.map +1 -1
- package/dist/__tests__/proposals.test.js +18 -18
- package/dist/__tests__/proposals.test.js.map +1 -1
- package/dist/__tests__/relate.test.js +14 -14
- package/dist/__tests__/relate.test.js.map +1 -1
- package/dist/__tests__/session-state-machine.test.d.ts +2 -0
- package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
- package/dist/__tests__/session-state-machine.test.js +154 -0
- package/dist/__tests__/session-state-machine.test.js.map +1 -0
- package/dist/__tests__/session-touch.test.js +11 -11
- package/dist/__tests__/session-touch.test.js.map +1 -1
- package/dist/__tests__/session.test.js +2 -2
- package/dist/__tests__/session.test.js.map +1 -1
- package/dist/__tests__/setup.test.js +7 -7
- package/dist/__tests__/setup.test.js.map +1 -1
- package/dist/__tests__/update.test.js +21 -21
- package/dist/__tests__/update.test.js.map +1 -1
- package/dist/__tests__/workspace.test.js +20 -20
- package/dist/__tests__/workspace.test.js.map +1 -1
- package/dist/commands/accept.js +4 -4
- package/dist/commands/accept.js.map +1 -1
- package/dist/commands/audit.js +4 -4
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/brief.js +4 -4
- package/dist/commands/brief.js.map +1 -1
- package/dist/commands/capture.js +6 -6
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chain-walk.js +2 -2
- package/dist/commands/chain-walk.js.map +1 -1
- package/dist/commands/changes.js +2 -2
- package/dist/commands/changes.js.map +1 -1
- package/dist/commands/codex-prep.js +2 -2
- package/dist/commands/codex-prep.js.map +1 -1
- package/dist/commands/collections.js +5 -5
- package/dist/commands/collections.js.map +1 -1
- package/dist/commands/constellation.js +2 -2
- package/dist/commands/constellation.js.map +1 -1
- package/dist/commands/context.js +2 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/cross-cut.js +2 -2
- package/dist/commands/cross-cut.js.map +1 -1
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +1 -1
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/fields.js +2 -2
- package/dist/commands/fields.js.map +1 -1
- package/dist/commands/get.js +3 -3
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/handshake.js +5 -5
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/ingest.js +6 -6
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/orient.js +2 -2
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/promote.js +4 -4
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/proposals.js +2 -2
- package/dist/commands/proposals.js.map +1 -1
- package/dist/commands/reject.js +2 -2
- package/dist/commands/reject.js.map +1 -1
- package/dist/commands/relate.js +3 -3
- package/dist/commands/relate.js.map +1 -1
- package/dist/commands/search.js +2 -2
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +61 -6
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.js +5 -5
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.js +3 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/usage.d.ts +40 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +232 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/verify.js +2 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workspace.js +4 -4
- package/dist/commands/workspace.js.map +1 -1
- package/dist/generators/chain-rules.d.ts +3 -3
- package/dist/generators/chain-rules.d.ts.map +1 -1
- package/dist/generators/chain-rules.js +3 -3
- package/dist/generators/chain-rules.js.map +1 -1
- package/dist/generators/chain-rules.test.js +2 -2
- package/dist/generators/chain-rules.test.js.map +1 -1
- package/dist/generators/portable-knowledge.js +1 -1
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/activation.js +2 -2
- package/dist/lib/activation.js.map +1 -1
- package/dist/lib/activation.test.js +3 -3
- package/dist/lib/activation.test.js.map +1 -1
- package/dist/lib/client.d.ts +5 -5
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +12 -12
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/onboarding-path-b.js +8 -8
- package/dist/lib/onboarding-path-b.js.map +1 -1
- package/dist/lib/onboarding-shared.js +2 -2
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/onboarding.js +4 -4
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/session.d.ts +25 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +70 -4
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/update-check.d.ts +21 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +144 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/workspace-probe.js +2 -2
- package/dist/lib/workspace-probe.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* BET-182 Slice 2: CLI command + auto-fix.
|
|
4
4
|
*
|
|
5
5
|
* Verifies:
|
|
6
|
-
* 1. JSON mode: correct structure on pipe (mock
|
|
6
|
+
* 1. JSON mode: correct structure on pipe (mock convexCall with fixture)
|
|
7
7
|
* 2. TTY mode: PASS gates collapsed, FAIL gates expanded
|
|
8
8
|
* 3. Exit codes: 0/1/2/3 for each verdict
|
|
9
9
|
* 4. --gate flag: only specified gate runs
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
16
16
|
import { runAudit } from '../commands/audit.js';
|
|
17
17
|
import { setOutputMode } from '../lib/runner.js';
|
|
18
|
-
const
|
|
19
|
-
const
|
|
18
|
+
const convexCallMock = vi.fn();
|
|
19
|
+
const convexCallWithSessionMock = vi.fn();
|
|
20
20
|
vi.mock('../lib/client.js', () => ({
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
convexCall: (...args) => convexCallMock(...args),
|
|
22
|
+
convexCallWithSession: (...args) => convexCallWithSessionMock(...args),
|
|
23
23
|
}));
|
|
24
24
|
vi.mock('../lib/config.js', () => ({
|
|
25
25
|
getConfigOrGuide: vi.fn((_fn) => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
|
|
@@ -122,7 +122,7 @@ afterEach(() => {
|
|
|
122
122
|
// ─── Tests ──────────────────────────────────────────────────────────────────
|
|
123
123
|
describe('runAudit — JSON mode (non-TTY)', () => {
|
|
124
124
|
it('outputs correct JSON structure on pipe', withTty(false, async () => {
|
|
125
|
-
|
|
125
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
126
126
|
const exit = catchExit();
|
|
127
127
|
await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
|
|
128
128
|
const parsed = JSON.parse(stdoutOutput);
|
|
@@ -135,10 +135,10 @@ describe('runAudit — JSON mode (non-TTY)', () => {
|
|
|
135
135
|
expect(exit.code).toBe(0);
|
|
136
136
|
}));
|
|
137
137
|
it('calls chain.auditBet with correct entryId', withTty(false, async () => {
|
|
138
|
-
|
|
138
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
139
139
|
catchExit();
|
|
140
140
|
await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
|
|
141
|
-
expect(
|
|
141
|
+
expect(convexCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
|
|
142
142
|
}));
|
|
143
143
|
it('strips Convex internals from JSON output', withTty(false, async () => {
|
|
144
144
|
const fixtureWithInternals = {
|
|
@@ -146,7 +146,7 @@ describe('runAudit — JSON mode (non-TTY)', () => {
|
|
|
146
146
|
_id: 'sys-internal-id',
|
|
147
147
|
_creationTime: 123456,
|
|
148
148
|
};
|
|
149
|
-
|
|
149
|
+
convexCallMock.mockResolvedValue(fixtureWithInternals);
|
|
150
150
|
catchExit();
|
|
151
151
|
await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
|
|
152
152
|
const parsed = JSON.parse(stdoutOutput);
|
|
@@ -156,7 +156,7 @@ describe('runAudit — JSON mode (non-TTY)', () => {
|
|
|
156
156
|
});
|
|
157
157
|
describe('runAudit — TTY mode', () => {
|
|
158
158
|
it('collapses PASS gates (shows count), expands FAIL gates', withTty(true, async () => {
|
|
159
|
-
|
|
159
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
160
160
|
catchExit();
|
|
161
161
|
await expect(runAudit({ entryIds: ['BET-200'] })).rejects.toThrow('process.exit');
|
|
162
162
|
// FAIL gates should be expanded with detail
|
|
@@ -169,7 +169,7 @@ describe('runAudit — TTY mode', () => {
|
|
|
169
169
|
expect(stdoutOutput).toContain('strategic-anchor');
|
|
170
170
|
}));
|
|
171
171
|
it('shows WARN gates expanded with hints', withTty(true, async () => {
|
|
172
|
-
|
|
172
|
+
convexCallMock.mockResolvedValue(WARN_FIXTURE);
|
|
173
173
|
catchExit();
|
|
174
174
|
await expect(runAudit({ entryIds: ['BET-201'] })).rejects.toThrow('process.exit');
|
|
175
175
|
expect(stdoutOutput).toContain('WARN:');
|
|
@@ -178,7 +178,7 @@ describe('runAudit — TTY mode', () => {
|
|
|
178
178
|
expect(stdoutOutput).toContain('Consider removing auto-link noise');
|
|
179
179
|
}));
|
|
180
180
|
it('--verbose expands all gates including PASS', withTty(true, async () => {
|
|
181
|
-
|
|
181
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
182
182
|
catchExit();
|
|
183
183
|
await expect(runAudit({ entryIds: ['BET-182'], verbose: true })).rejects.toThrow('process.exit');
|
|
184
184
|
// PASS gates should show detail, not just count
|
|
@@ -191,25 +191,25 @@ describe('runAudit — TTY mode', () => {
|
|
|
191
191
|
});
|
|
192
192
|
describe('runAudit — exit codes', () => {
|
|
193
193
|
it('exit 0 for pass verdict', withTty(false, async () => {
|
|
194
|
-
|
|
194
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
195
195
|
const exit = catchExit();
|
|
196
196
|
await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
|
|
197
197
|
expect(exit.code).toBe(0);
|
|
198
198
|
}));
|
|
199
199
|
it('exit 1 for fail verdict', withTty(false, async () => {
|
|
200
|
-
|
|
200
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
201
201
|
const exit = catchExit();
|
|
202
202
|
await expect(runAudit({ entryIds: ['BET-200'] })).rejects.toThrow('process.exit');
|
|
203
203
|
expect(exit.code).toBe(1);
|
|
204
204
|
}));
|
|
205
205
|
it('exit 2 for warn verdict', withTty(false, async () => {
|
|
206
|
-
|
|
206
|
+
convexCallMock.mockResolvedValue(WARN_FIXTURE);
|
|
207
207
|
const exit = catchExit();
|
|
208
208
|
await expect(runAudit({ entryIds: ['BET-201'] })).rejects.toThrow('process.exit');
|
|
209
209
|
expect(exit.code).toBe(2);
|
|
210
210
|
}));
|
|
211
211
|
it('exit 3 for error (entry not found)', withTty(false, async () => {
|
|
212
|
-
|
|
212
|
+
convexCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
|
|
213
213
|
const exit = catchExit();
|
|
214
214
|
await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
|
|
215
215
|
expect(exit.code).toBe(3);
|
|
@@ -217,7 +217,7 @@ describe('runAudit — exit codes', () => {
|
|
|
217
217
|
});
|
|
218
218
|
describe('runAudit — --gate flag', () => {
|
|
219
219
|
it('filters JSON output to only specified gate(s)', withTty(false, async () => {
|
|
220
|
-
|
|
220
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
221
221
|
catchExit();
|
|
222
222
|
await expect(runAudit({ entryIds: ['BET-200'], gate: ['field-completeness'] })).rejects.toThrow('process.exit');
|
|
223
223
|
const parsed = JSON.parse(stdoutOutput);
|
|
@@ -226,7 +226,7 @@ describe('runAudit — --gate flag', () => {
|
|
|
226
226
|
expect(parsed.gates[0].gate).toBe('field-completeness');
|
|
227
227
|
}));
|
|
228
228
|
it('filters TTY output to only specified gate(s)', withTty(true, async () => {
|
|
229
|
-
|
|
229
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
230
230
|
catchExit();
|
|
231
231
|
await expect(runAudit({ entryIds: ['BET-200'], gate: ['field-completeness'] })).rejects.toThrow('process.exit');
|
|
232
232
|
// Should show the filtered gate
|
|
@@ -235,7 +235,7 @@ describe('runAudit — --gate flag', () => {
|
|
|
235
235
|
expect(stdoutOutput).not.toContain('intentional-relations');
|
|
236
236
|
}));
|
|
237
237
|
it('supports multiple --gate values', withTty(false, async () => {
|
|
238
|
-
|
|
238
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
239
239
|
catchExit();
|
|
240
240
|
await expect(runAudit({ entryIds: ['BET-200'], gate: ['intentional-relations', 'field-completeness'] })).rejects.toThrow('process.exit');
|
|
241
241
|
const parsed = JSON.parse(stdoutOutput);
|
|
@@ -247,51 +247,51 @@ describe('runAudit — --gate flag', () => {
|
|
|
247
247
|
});
|
|
248
248
|
describe('runAudit — --phase flag', () => {
|
|
249
249
|
it('passes phase through to MCP call', withTty(false, async () => {
|
|
250
|
-
|
|
250
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
251
251
|
catchExit();
|
|
252
252
|
await expect(runAudit({ entryIds: ['BET-182'], phase: 'handoff' })).rejects.toThrow('process.exit');
|
|
253
|
-
expect(
|
|
253
|
+
expect(convexCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182', phase: 'handoff' });
|
|
254
254
|
}));
|
|
255
255
|
it('omits phase from MCP call when not specified', withTty(false, async () => {
|
|
256
|
-
|
|
256
|
+
convexCallMock.mockResolvedValue(PASS_FIXTURE);
|
|
257
257
|
catchExit();
|
|
258
258
|
await expect(runAudit({ entryIds: ['BET-182'] })).rejects.toThrow('process.exit');
|
|
259
|
-
expect(
|
|
259
|
+
expect(convexCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
|
|
260
260
|
}));
|
|
261
261
|
});
|
|
262
262
|
describe('runAudit — --fix', () => {
|
|
263
263
|
it('calls updateEntry for exact fixes and reruns audit once', withTty(false, async () => {
|
|
264
264
|
// First call: failing audit
|
|
265
265
|
// Second call (after fix): passing audit
|
|
266
|
-
|
|
266
|
+
convexCallMock
|
|
267
267
|
.mockResolvedValueOnce(FAIL_FIXTURE)
|
|
268
268
|
.mockResolvedValueOnce({ ...PASS_FIXTURE, entryId: 'BET-200', entryName: 'Broken Bet' });
|
|
269
|
-
|
|
269
|
+
convexCallWithSessionMock.mockResolvedValue({ id: 'result-id', warnings: [] });
|
|
270
270
|
const exit = catchExit();
|
|
271
271
|
await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
|
|
272
272
|
// Should have called updateEntry for each exact fix
|
|
273
|
-
expect(
|
|
273
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
274
274
|
entryId: 'BET-200',
|
|
275
275
|
data: { problem: 'needs definition' },
|
|
276
276
|
changeNote: 'Auto-fix via pb audit: set problem',
|
|
277
277
|
});
|
|
278
|
-
expect(
|
|
278
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
279
279
|
entryId: 'BET-200',
|
|
280
280
|
data: { appetite: '6 weeks' },
|
|
281
281
|
changeNote: 'Auto-fix via pb audit: set appetite',
|
|
282
282
|
});
|
|
283
|
-
// Should have rerun the audit (2
|
|
284
|
-
expect(
|
|
283
|
+
// Should have rerun the audit (2 convexCall invocations total)
|
|
284
|
+
expect(convexCallMock).toHaveBeenCalledTimes(2);
|
|
285
285
|
// Exit code should reflect the rerun result (pass = 0)
|
|
286
286
|
expect(exit.code).toBe(0);
|
|
287
287
|
}));
|
|
288
288
|
it('does not fix when no session is active', withTty(false, async () => {
|
|
289
289
|
mockSession = null;
|
|
290
|
-
|
|
290
|
+
convexCallMock.mockResolvedValue(FAIL_FIXTURE);
|
|
291
291
|
catchExit();
|
|
292
292
|
await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
|
|
293
293
|
// Should NOT have called updateEntry
|
|
294
|
-
expect(
|
|
294
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalled();
|
|
295
295
|
// Should still show the result
|
|
296
296
|
const parsed = JSON.parse(stdoutOutput);
|
|
297
297
|
expect(parsed.verdict).toBe('fail');
|
|
@@ -304,36 +304,36 @@ describe('runAudit — --fix', () => {
|
|
|
304
304
|
{ gate: 'strategic-anchor', status: 'pass', blocking: true, detail: 'OK' },
|
|
305
305
|
],
|
|
306
306
|
};
|
|
307
|
-
|
|
307
|
+
convexCallMock.mockResolvedValue(manualFixFixture);
|
|
308
308
|
catchExit();
|
|
309
309
|
await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
|
|
310
310
|
// No exact fixes → no updateEntry calls, no rerun
|
|
311
|
-
expect(
|
|
312
|
-
expect(
|
|
311
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalled();
|
|
312
|
+
expect(convexCallMock).toHaveBeenCalledTimes(1);
|
|
313
313
|
}));
|
|
314
314
|
it('stops after one rerun even if issues remain', withTty(false, async () => {
|
|
315
315
|
// Both calls return failing audit (fix didn't resolve everything)
|
|
316
|
-
|
|
316
|
+
convexCallMock
|
|
317
317
|
.mockResolvedValueOnce(FAIL_FIXTURE)
|
|
318
318
|
.mockResolvedValueOnce(FAIL_FIXTURE);
|
|
319
|
-
|
|
319
|
+
convexCallWithSessionMock.mockResolvedValue({ id: 'result-id', warnings: [] });
|
|
320
320
|
const exit = catchExit();
|
|
321
321
|
await expect(runAudit({ entryIds: ['BET-200'], fix: true })).rejects.toThrow('process.exit');
|
|
322
322
|
// Should have run audit exactly 2 times (initial + 1 rerun), not 3
|
|
323
|
-
expect(
|
|
323
|
+
expect(convexCallMock).toHaveBeenCalledTimes(2);
|
|
324
324
|
expect(exit.code).toBe(1);
|
|
325
325
|
}));
|
|
326
326
|
});
|
|
327
327
|
describe('runAudit — batch mode', () => {
|
|
328
328
|
it('audits multiple bets sequentially', withTty(false, async () => {
|
|
329
|
-
|
|
329
|
+
convexCallMock
|
|
330
330
|
.mockResolvedValueOnce(PASS_FIXTURE)
|
|
331
331
|
.mockResolvedValueOnce(FAIL_FIXTURE);
|
|
332
332
|
const exit = catchExit();
|
|
333
333
|
await expect(runAudit({ entryIds: ['BET-182', 'BET-200'] })).rejects.toThrow('process.exit');
|
|
334
334
|
// Both auditBet calls should have been made
|
|
335
|
-
expect(
|
|
336
|
-
expect(
|
|
335
|
+
expect(convexCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-182' });
|
|
336
|
+
expect(convexCallMock).toHaveBeenCalledWith('chain.auditBet', { entryId: 'BET-200' });
|
|
337
337
|
// Exit code should be worst verdict (fail = 1)
|
|
338
338
|
expect(exit.code).toBe(1);
|
|
339
339
|
// Should have batch summary as last line of output
|
|
@@ -346,7 +346,7 @@ describe('runAudit — batch mode', () => {
|
|
|
346
346
|
expect(batchSummary.failed).toBe(1);
|
|
347
347
|
}));
|
|
348
348
|
it('shows separator between entries in TTY mode', withTty(true, async () => {
|
|
349
|
-
|
|
349
|
+
convexCallMock
|
|
350
350
|
.mockResolvedValueOnce(PASS_FIXTURE)
|
|
351
351
|
.mockResolvedValueOnce(WARN_FIXTURE);
|
|
352
352
|
catchExit();
|
|
@@ -358,7 +358,7 @@ describe('runAudit — batch mode', () => {
|
|
|
358
358
|
expect(stdoutOutput).toContain('BET-201');
|
|
359
359
|
}));
|
|
360
360
|
it('continues after error on one entry', withTty(false, async () => {
|
|
361
|
-
|
|
361
|
+
convexCallMock
|
|
362
362
|
.mockRejectedValueOnce(new Error('Entry "BET-999" not found.'))
|
|
363
363
|
.mockResolvedValueOnce(PASS_FIXTURE);
|
|
364
364
|
const exit = catchExit();
|
|
@@ -373,7 +373,7 @@ describe('runAudit — batch mode', () => {
|
|
|
373
373
|
});
|
|
374
374
|
describe('runAudit — error handling', () => {
|
|
375
375
|
it('outputs JSON error on pipe when entry not found', withTty(false, async () => {
|
|
376
|
-
|
|
376
|
+
convexCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
|
|
377
377
|
const exit = catchExit();
|
|
378
378
|
await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
|
|
379
379
|
expect(exit.code).toBe(3);
|
|
@@ -383,7 +383,7 @@ describe('runAudit — error handling', () => {
|
|
|
383
383
|
expect(errParsed.entryId).toBe('BET-999');
|
|
384
384
|
}));
|
|
385
385
|
it('outputs human error in TTY when entry not found', withTty(true, async () => {
|
|
386
|
-
|
|
386
|
+
convexCallMock.mockRejectedValue(new Error('Entry "BET-999" not found.'));
|
|
387
387
|
const exit = catchExit();
|
|
388
388
|
await expect(runAudit({ entryIds: ['BET-999'] })).rejects.toThrow('process.exit');
|
|
389
389
|
expect(exit.code).toBe(3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../../src/__tests__/audit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../../src/__tests__/audit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/B,MAAM,yBAAyB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE1C,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,UAAU,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC3D,qBAAqB,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;CAClF,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAY,EAAE,EAAE,CACvC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAC/E;CACF,CAAC,CAAC,CAAC;AAEJ,qCAAqC;AACrC,IAAI,WAAW,GAAiC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC3E,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;CAC/B,CAAC,CAAC,CAAC;AAEJ,+EAA+E;AAE/E,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,gBAAgB;IAC3B,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,MAAe;IACxB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE;QACnH,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAC/F,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAAE;KACnH;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACtD,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,MAAe;IACxB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,GAAG,EAAE,2CAA2C,EAAE,OAAO,EAAE,OAAgB,EAAE;QAC1L,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAC/F,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAAE,GAAG,EAAE,mCAAmC,EAAE,OAAO,EAAE,OAAgB,EAAE,IAAI,EAAE,+BAA+B,EAAE;KAC3N;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACtD,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,MAAe;IACxB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,IAAI,EAAE,mCAAmC,EAAE;QACvJ,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;KAChG;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACtD,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,+EAA+E;AAE/E,IAAI,YAAoB,CAAC;AACzB,IAAI,YAAoB,CAAC;AACzB,IAAI,cAA2C,CAAC;AAChD,IAAI,cAA2C,CAAC;AAChD,IAAI,OAAoC,CAAC;AAEzC,SAAS,OAAO,CAAC,KAAc,EAAE,EAA8B;IAC7D,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS;IAChB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,SAA+B,EAAE,CAAC;IACxD,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAa,EAAE,EAAE;QACxE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAgB,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,YAAY,GAAG,EAAE,CAAC;IAClB,YAAY,GAAG,EAAE,CAAC;IAClB,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9E,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9E,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACzC,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,cAAc,CAAC,WAAW,EAAE,CAAC;IAC7B,cAAc,CAAC,WAAW,EAAE,CAAC;IAC7B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,aAAa,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,wCAAwC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACrE,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,2CAA2C,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACxE,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,0CAA0C,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,oBAAoB,GAAG;YAC3B,GAAG,YAAY;YACf,GAAG,EAAE,iBAAiB;YACtB,aAAa,EAAE,MAAM;SACtB,CAAC;QACF,cAAc,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;QACvD,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wDAAwD,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACpF,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,4CAA4C;QAC5C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAE9D,2CAA2C;QAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,sCAAsC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAClE,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC9D,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,4CAA4C,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxE,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEjG,gDAAgD;QAChD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,sDAAsD,CAAC,CAAC;QACvF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACnE,uCAAuC;QACvC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,yBAAyB,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACtD,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,yBAAyB,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACtD,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,yBAAyB,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACtD,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,oCAAoC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACjE,cAAc,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+CAA+C,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC5E,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEhH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,uCAAuC;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,8CAA8C,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC1E,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEhH,gCAAgC;QAChC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,8BAA8B;QAC9B,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,iCAAiC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC9D,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEzI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,kCAAkC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC/D,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEpG,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,8CAA8C,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC3E,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,yDAAyD,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACtF,4BAA4B;QAC5B,yCAAyC;QACzC,cAAc;aACX,qBAAqB,CAAC,YAAY,CAAC;aACnC,qBAAqB,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QAE3F,yBAAyB,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/E,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,oDAAoD;QACpD,MAAM,CAAC,yBAAyB,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,EAAE;YAC1E,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;YACrC,UAAU,EAAE,oCAAoC;SACjD,CAAC,CAAC;QACH,MAAM,CAAC,yBAAyB,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,EAAE;YAC1E,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC7B,UAAU,EAAE,qCAAqC;SAClD,CAAC,CAAC;QAEH,+DAA+D;QAC/D,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEhD,uDAAuD;QACvD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,wCAAwC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACrE,WAAW,GAAG,IAAI,CAAC;QACnB,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,qCAAqC;QACrC,MAAM,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,+BAA+B,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,gBAAgB,GAAG;YACvB,GAAG,YAAY;YACf,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAiB,EAAE;gBAC5J,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;aACpF;SACF,CAAC;QACF,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnD,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,kDAAkD;QAClD,MAAM,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,6CAA6C,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC1E,kEAAkE;QAClE,cAAc;aACX,qBAAqB,CAAC,YAAY,CAAC;aACnC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEvC,yBAAyB,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/E,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mCAAmC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAChE,cAAc;aACX,qBAAqB,CAAC,YAAY,CAAC;aACnC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,4CAA4C;QAC5C,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtF,+CAA+C;QAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1B,mDAAmD;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,6CAA6C,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACzE,cAAc;aACX,qBAAqB,CAAC,YAAY,CAAC;aACnC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEvC,SAAS,EAAE,CAAC;QAEZ,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,wBAAwB;QACxB,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,uBAAuB;QACvB,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,oCAAoC,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACjE,cAAc;aACX,qBAAqB,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC9D,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7F,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1B,+BAA+B;QAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,2CAA2C;QAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,iDAAiD,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC9E,cAAc,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,iDAAiD,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC7E,cAAc,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QAEzB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACzD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
7
7
|
import { runCapture } from '../commands/capture.js';
|
|
8
|
-
const
|
|
8
|
+
const convexCallWithSessionMock = vi.fn();
|
|
9
9
|
vi.mock('../lib/client.js', () => ({
|
|
10
|
-
|
|
10
|
+
convexCallWithSession: (...args) => convexCallWithSessionMock(...args),
|
|
11
11
|
}));
|
|
12
12
|
vi.mock('../lib/config.js', () => ({
|
|
13
13
|
getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
|
|
@@ -19,12 +19,12 @@ vi.mock('../lib/session.js', () => ({
|
|
|
19
19
|
}));
|
|
20
20
|
describe('runCapture --link', () => {
|
|
21
21
|
beforeEach(() => {
|
|
22
|
-
|
|
22
|
+
convexCallWithSessionMock.mockReset();
|
|
23
23
|
mockSession = { sessionId: 'sess-test' };
|
|
24
24
|
});
|
|
25
25
|
it('creates entry then links to target with default relation type', async () => {
|
|
26
26
|
// Prefix "TEN:" is extracted → skips classification, routes directly to tensions
|
|
27
|
-
|
|
27
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
28
28
|
if (fn === 'chain.suggestLinksForCapture')
|
|
29
29
|
return Promise.resolve([]);
|
|
30
30
|
if (fn === 'chain.createEntry')
|
|
@@ -36,13 +36,13 @@ describe('runCapture --link', () => {
|
|
|
36
36
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
37
37
|
await runCapture({ text: 'TEN: missing validation', link: 'BET-151' });
|
|
38
38
|
// Verify classification was skipped (no resolveCollection call)
|
|
39
|
-
expect(
|
|
39
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.resolveCollection', expect.anything());
|
|
40
40
|
// Verify prefix was stripped from entry name and routed to correct collection
|
|
41
|
-
expect(
|
|
41
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.objectContaining({
|
|
42
42
|
collectionSlug: 'tensions',
|
|
43
43
|
name: 'missing validation',
|
|
44
44
|
}));
|
|
45
|
-
expect(
|
|
45
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
|
|
46
46
|
fromEntryId: 'TEN-710',
|
|
47
47
|
toEntryId: 'BET-151',
|
|
48
48
|
type: 'surfaces_tension_in',
|
|
@@ -51,7 +51,7 @@ describe('runCapture --link', () => {
|
|
|
51
51
|
});
|
|
52
52
|
it('uses custom relation type when --type provided', async () => {
|
|
53
53
|
// Prefix "INS:" is extracted → skips classification, routes directly to insights
|
|
54
|
-
|
|
54
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
55
55
|
if (fn === 'chain.suggestLinksForCapture')
|
|
56
56
|
return Promise.resolve([]);
|
|
57
57
|
if (fn === 'chain.createEntry')
|
|
@@ -62,8 +62,8 @@ describe('runCapture --link', () => {
|
|
|
62
62
|
});
|
|
63
63
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
64
64
|
await runCapture({ text: 'INS: discovered X', link: 'DEC-264', type: 'informed_by' });
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
65
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.resolveCollection', expect.anything());
|
|
66
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
|
|
67
67
|
fromEntryId: 'INS-50',
|
|
68
68
|
toEntryId: 'DEC-264',
|
|
69
69
|
type: 'informed_by',
|
|
@@ -73,12 +73,12 @@ describe('runCapture --link', () => {
|
|
|
73
73
|
});
|
|
74
74
|
describe('runCapture --json', () => {
|
|
75
75
|
beforeEach(() => {
|
|
76
|
-
|
|
76
|
+
convexCallWithSessionMock.mockReset();
|
|
77
77
|
mockSession = { sessionId: 'sess-test' };
|
|
78
78
|
});
|
|
79
79
|
it('outputs valid JSON with id field and no other stdout', async () => {
|
|
80
80
|
// Prefix "TEN:" is extracted → skips classification
|
|
81
|
-
|
|
81
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
82
82
|
if (fn === 'chain.suggestLinksForCapture')
|
|
83
83
|
return Promise.resolve([]);
|
|
84
84
|
if (fn === 'chain.createEntry')
|
|
@@ -111,14 +111,14 @@ describe('runCapture --json', () => {
|
|
|
111
111
|
});
|
|
112
112
|
describe('runCapture description field routing', () => {
|
|
113
113
|
beforeEach(() => {
|
|
114
|
-
|
|
114
|
+
convexCallWithSessionMock.mockReset();
|
|
115
115
|
mockSession = { sessionId: 'sess-test' };
|
|
116
116
|
});
|
|
117
117
|
it('passes description key to createEntry for assumptions (TEN-1258 — remap happens in Convex)', async () => {
|
|
118
118
|
// The CLI always sends `description` — the Convex write gate remaps it to `belief`
|
|
119
119
|
// for the assumptions collection (TEN-1258). Verify the CLI routes correctly and
|
|
120
120
|
// sends the text as description so the Convex remap can fire.
|
|
121
|
-
|
|
121
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
122
122
|
if (fn === 'chain.suggestLinksForCapture')
|
|
123
123
|
return Promise.resolve([]);
|
|
124
124
|
if (fn === 'chain.createEntry')
|
|
@@ -127,7 +127,7 @@ describe('runCapture description field routing', () => {
|
|
|
127
127
|
});
|
|
128
128
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
129
129
|
await runCapture({ text: 'ASM: users won\'t pay before seeing value' });
|
|
130
|
-
const createCall =
|
|
130
|
+
const createCall = convexCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
|
|
131
131
|
expect(createCall?.[1]).toMatchObject({
|
|
132
132
|
collectionSlug: 'assumptions',
|
|
133
133
|
name: "users won't pay before seeing value",
|
|
@@ -138,21 +138,21 @@ describe('runCapture description field routing', () => {
|
|
|
138
138
|
});
|
|
139
139
|
describe('runCapture classification guard', () => {
|
|
140
140
|
beforeEach(() => {
|
|
141
|
-
|
|
141
|
+
convexCallWithSessionMock.mockReset();
|
|
142
142
|
mockSession = { sessionId: 'sess-test' };
|
|
143
143
|
});
|
|
144
144
|
it('throws CLIError when classification requires review', async () => {
|
|
145
|
-
|
|
145
|
+
convexCallWithSessionMock.mockResolvedValueOnce(null);
|
|
146
146
|
await expect(runCapture({ text: 'Ambiguous capture' })).rejects.toThrow('Classification needs review before capture can continue.');
|
|
147
147
|
});
|
|
148
148
|
});
|
|
149
149
|
describe('runCapture date inference', () => {
|
|
150
150
|
beforeEach(() => {
|
|
151
|
-
|
|
151
|
+
convexCallWithSessionMock.mockReset();
|
|
152
152
|
mockSession = { sessionId: 'sess-test' };
|
|
153
153
|
});
|
|
154
154
|
it('does not default date to today when no source date is present', async () => {
|
|
155
|
-
|
|
155
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
156
156
|
if (fn === 'chain.suggestLinksForCapture')
|
|
157
157
|
return Promise.resolve([]);
|
|
158
158
|
if (fn === 'chain.resolveCollection')
|
|
@@ -163,7 +163,7 @@ describe('runCapture date inference', () => {
|
|
|
163
163
|
});
|
|
164
164
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
165
165
|
await runCapture({ text: 'Decision without explicit source date' });
|
|
166
|
-
const createCall =
|
|
166
|
+
const createCall = convexCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
|
|
167
167
|
expect(createCall?.[1]).toMatchObject({
|
|
168
168
|
collectionSlug: 'decisions',
|
|
169
169
|
data: { description: 'Decision without explicit source date' },
|
|
@@ -172,7 +172,7 @@ describe('runCapture date inference', () => {
|
|
|
172
172
|
writeSpy.mockRestore();
|
|
173
173
|
});
|
|
174
174
|
it('uses inferred source date when the capture text includes one', async () => {
|
|
175
|
-
|
|
175
|
+
convexCallWithSessionMock.mockImplementation((fn) => {
|
|
176
176
|
if (fn === 'chain.suggestLinksForCapture')
|
|
177
177
|
return Promise.resolve([]);
|
|
178
178
|
if (fn === 'chain.resolveCollection')
|
|
@@ -183,7 +183,7 @@ describe('runCapture date inference', () => {
|
|
|
183
183
|
});
|
|
184
184
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
185
185
|
await runCapture({ text: 'Decision from April 1, 2026 steering meeting' });
|
|
186
|
-
const createCall =
|
|
186
|
+
const createCall = convexCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
|
|
187
187
|
expect((createCall?.[1]).data.date).toBe('2026-04-01');
|
|
188
188
|
writeSpy.mockRestore();
|
|
189
189
|
});
|
|
@@ -201,13 +201,13 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
201
201
|
v: 1,
|
|
202
202
|
};
|
|
203
203
|
beforeEach(() => {
|
|
204
|
-
|
|
204
|
+
convexCallWithSessionMock.mockReset();
|
|
205
205
|
mockSession = { sessionId: 'sess-test' };
|
|
206
206
|
delete process.env.PB_GROUNDING_MODE;
|
|
207
207
|
});
|
|
208
208
|
it('fires chain.suggestLinksForCapture in parallel and still calls createEntry', async () => {
|
|
209
209
|
// Prefix-based route skips classification; grounding fires for TEN prefix
|
|
210
|
-
|
|
210
|
+
convexCallWithSessionMock
|
|
211
211
|
.mockImplementation((fn) => {
|
|
212
212
|
if (fn === 'chain.suggestLinksForCapture')
|
|
213
213
|
return Promise.resolve([emptyGrounding]);
|
|
@@ -218,15 +218,15 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
218
218
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
219
219
|
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
220
220
|
await runCapture({ text: 'TEN: grounding test tension' });
|
|
221
|
-
expect(
|
|
221
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.suggestLinksForCapture', expect.objectContaining({
|
|
222
222
|
entries: expect.arrayContaining([expect.objectContaining({ name: 'grounding test tension' })]),
|
|
223
223
|
}));
|
|
224
|
-
expect(
|
|
224
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
|
|
225
225
|
writeSpy.mockRestore();
|
|
226
226
|
stderrSpy.mockRestore();
|
|
227
227
|
});
|
|
228
228
|
it('does NOT block capture when grounding call fails', async () => {
|
|
229
|
-
|
|
229
|
+
convexCallWithSessionMock
|
|
230
230
|
.mockImplementation((fn) => {
|
|
231
231
|
if (fn === 'chain.suggestLinksForCapture')
|
|
232
232
|
return Promise.reject(new Error('network error'));
|
|
@@ -238,13 +238,13 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
238
238
|
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
239
239
|
// Must not throw — grounding failure is fail-open
|
|
240
240
|
await expect(runCapture({ text: 'TEN: grounding failure test' })).resolves.toBeUndefined();
|
|
241
|
-
expect(
|
|
241
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
|
|
242
242
|
writeSpy.mockRestore();
|
|
243
243
|
stderrSpy.mockRestore();
|
|
244
244
|
});
|
|
245
245
|
it('--suggest-only does NOT call createEntry and outputs grounding data', async () => {
|
|
246
246
|
// In test env (non-TTY), isJsonMode() returns true → JSON path is taken.
|
|
247
|
-
|
|
247
|
+
convexCallWithSessionMock
|
|
248
248
|
.mockImplementation((fn) => {
|
|
249
249
|
if (fn === 'chain.suggestLinksForCapture')
|
|
250
250
|
return Promise.resolve([groundingWithDuplicate]);
|
|
@@ -257,7 +257,7 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
257
257
|
});
|
|
258
258
|
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
259
259
|
await runCapture({ text: 'TEN: duplicate candidate', suggestOnly: true });
|
|
260
|
-
expect(
|
|
260
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.createEntry', expect.anything());
|
|
261
261
|
// JSON output contains suggestOnly flag and grounding report
|
|
262
262
|
const jsonLines = stdoutOutput.split('\n').filter((l) => { try {
|
|
263
263
|
JSON.parse(l);
|
|
@@ -274,7 +274,7 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
274
274
|
stderrSpy.mockRestore();
|
|
275
275
|
});
|
|
276
276
|
it('--suggest-only with --json outputs machine-readable object without calling createEntry', async () => {
|
|
277
|
-
|
|
277
|
+
convexCallWithSessionMock
|
|
278
278
|
.mockImplementation((fn) => {
|
|
279
279
|
if (fn === 'chain.suggestLinksForCapture')
|
|
280
280
|
return Promise.resolve([emptyGrounding]);
|
|
@@ -287,7 +287,7 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
287
287
|
});
|
|
288
288
|
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
289
289
|
await runCapture({ text: 'TEN: dry run json', json: true, suggestOnly: true });
|
|
290
|
-
expect(
|
|
290
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.createEntry', expect.anything());
|
|
291
291
|
const jsonLines = stdoutOutput.split('\n').filter((l) => { try {
|
|
292
292
|
JSON.parse(l);
|
|
293
293
|
return true;
|
|
@@ -302,7 +302,7 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
302
302
|
stderrSpy.mockRestore();
|
|
303
303
|
});
|
|
304
304
|
it('banner is suppressed when grounding has no matches (zero-noise floor)', async () => {
|
|
305
|
-
|
|
305
|
+
convexCallWithSessionMock
|
|
306
306
|
.mockImplementation((fn) => {
|
|
307
307
|
if (fn === 'chain.suggestLinksForCapture')
|
|
308
308
|
return Promise.resolve([emptyGrounding]);
|
|
@@ -325,7 +325,7 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
325
325
|
});
|
|
326
326
|
it('PB_GROUNDING_MODE=off skips grounding call entirely', async () => {
|
|
327
327
|
process.env.PB_GROUNDING_MODE = 'off';
|
|
328
|
-
|
|
328
|
+
convexCallWithSessionMock
|
|
329
329
|
.mockImplementation((fn) => {
|
|
330
330
|
if (fn === 'chain.createEntry')
|
|
331
331
|
return Promise.resolve({ docId: 'doc-4', entryId: 'TEN-723' });
|
|
@@ -334,14 +334,14 @@ describe('runCapture WP-319 grounding', () => {
|
|
|
334
334
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
335
335
|
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
336
336
|
await runCapture({ text: 'TEN: no grounding env off' });
|
|
337
|
-
expect(
|
|
338
|
-
expect(
|
|
337
|
+
expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.suggestLinksForCapture', expect.anything());
|
|
338
|
+
expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
|
|
339
339
|
delete process.env.PB_GROUNDING_MODE;
|
|
340
340
|
writeSpy.mockRestore();
|
|
341
341
|
stderrSpy.mockRestore();
|
|
342
342
|
});
|
|
343
343
|
it('--json output stdout is clean (no grounding on stdout)', async () => {
|
|
344
|
-
|
|
344
|
+
convexCallWithSessionMock
|
|
345
345
|
.mockImplementation((fn) => {
|
|
346
346
|
if (fn === 'chain.suggestLinksForCapture')
|
|
347
347
|
return Promise.resolve([groundingWithDuplicate]);
|