@productbrain/cli 0.1.0-beta.71 → 0.1.0-beta.75

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 (103) hide show
  1. package/dist/__tests__/audit.test.js +44 -44
  2. package/dist/__tests__/capture.test.js +37 -37
  3. package/dist/__tests__/constellation.test.js +14 -14
  4. package/dist/__tests__/context-strategy.test.js +8 -8
  5. package/dist/__tests__/fields.test.js +20 -20
  6. package/dist/__tests__/ingest.test.js +28 -28
  7. package/dist/__tests__/orient.test.js +8 -8
  8. package/dist/__tests__/promote.test.js +15 -15
  9. package/dist/__tests__/proposals.test.js +18 -18
  10. package/dist/__tests__/relate.test.js +14 -14
  11. package/dist/__tests__/session-touch.test.js +11 -11
  12. package/dist/__tests__/session.test.js +2 -2
  13. package/dist/__tests__/setup.test.js +16 -30
  14. package/dist/__tests__/setup.test.js.map +1 -1
  15. package/dist/__tests__/state.test.d.ts +6 -0
  16. package/dist/__tests__/state.test.d.ts.map +1 -0
  17. package/dist/__tests__/state.test.js +97 -0
  18. package/dist/__tests__/state.test.js.map +1 -0
  19. package/dist/__tests__/update.test.js +21 -21
  20. package/dist/__tests__/workspace.test.js +20 -20
  21. package/dist/commands/accept.js +4 -4
  22. package/dist/commands/admin/cockpit.d.ts +4 -2
  23. package/dist/commands/admin/cockpit.d.ts.map +1 -1
  24. package/dist/commands/admin/cockpit.js +219 -10
  25. package/dist/commands/admin/cockpit.js.map +1 -1
  26. package/dist/commands/admin/index.d.ts.map +1 -1
  27. package/dist/commands/admin/index.js +2 -0
  28. package/dist/commands/admin/index.js.map +1 -1
  29. package/dist/commands/admin/inspect.d.ts +9 -0
  30. package/dist/commands/admin/inspect.d.ts.map +1 -1
  31. package/dist/commands/admin/inspect.js +19 -0
  32. package/dist/commands/admin/inspect.js.map +1 -1
  33. package/dist/commands/admin/inspect.test.js +20 -1
  34. package/dist/commands/admin/inspect.test.js.map +1 -1
  35. package/dist/commands/admin/manage.d.ts +8 -0
  36. package/dist/commands/admin/manage.d.ts.map +1 -0
  37. package/dist/commands/admin/manage.js +76 -0
  38. package/dist/commands/admin/manage.js.map +1 -0
  39. package/dist/commands/audit.js +4 -4
  40. package/dist/commands/brief.js +4 -4
  41. package/dist/commands/capture.js +6 -6
  42. package/dist/commands/chain-walk.js +2 -2
  43. package/dist/commands/changes.js +2 -2
  44. package/dist/commands/codex-prep.js +2 -2
  45. package/dist/commands/collections.js +5 -5
  46. package/dist/commands/connect-screens.d.ts +21 -0
  47. package/dist/commands/connect-screens.d.ts.map +1 -0
  48. package/dist/commands/connect-screens.js +79 -0
  49. package/dist/commands/connect-screens.js.map +1 -0
  50. package/dist/commands/constellation.js +2 -2
  51. package/dist/commands/context.js +2 -2
  52. package/dist/commands/cross-cut.js +2 -2
  53. package/dist/commands/doctor.js +3 -3
  54. package/dist/commands/doctor.test.js +1 -1
  55. package/dist/commands/fields.js +2 -2
  56. package/dist/commands/get.js +3 -3
  57. package/dist/commands/handshake.js +5 -5
  58. package/dist/commands/ingest.js +6 -6
  59. package/dist/commands/init.d.ts +1 -1
  60. package/dist/commands/init.d.ts.map +1 -1
  61. package/dist/commands/init.js +1 -9
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/orient.js +2 -2
  64. package/dist/commands/promote.js +4 -4
  65. package/dist/commands/proposals.js +2 -2
  66. package/dist/commands/reject.js +2 -2
  67. package/dist/commands/relate.js +3 -3
  68. package/dist/commands/search.js +2 -2
  69. package/dist/commands/session.js +7 -7
  70. package/dist/commands/setup.d.ts +1 -1
  71. package/dist/commands/setup.d.ts.map +1 -1
  72. package/dist/commands/setup.js +10 -31
  73. package/dist/commands/setup.js.map +1 -1
  74. package/dist/commands/update.js +3 -3
  75. package/dist/commands/usage.d.ts +1 -1
  76. package/dist/commands/usage.js +4 -4
  77. package/dist/commands/verify.js +2 -2
  78. package/dist/commands/welcome.d.ts +21 -0
  79. package/dist/commands/welcome.d.ts.map +1 -0
  80. package/dist/commands/welcome.js +50 -0
  81. package/dist/commands/welcome.js.map +1 -0
  82. package/dist/commands/workspace.js +4 -4
  83. package/dist/generators/chain-rules.d.ts +3 -3
  84. package/dist/generators/chain-rules.js +3 -3
  85. package/dist/generators/chain-rules.test.js +2 -2
  86. package/dist/generators/portable-knowledge.js +1 -1
  87. package/dist/index.js +1 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/lib/activation.js +2 -2
  90. package/dist/lib/activation.test.js +3 -3
  91. package/dist/lib/client.d.ts +4 -4
  92. package/dist/lib/client.d.ts.map +1 -1
  93. package/dist/lib/client.js +8 -9
  94. package/dist/lib/client.js.map +1 -1
  95. package/dist/lib/onboarding-path-b.js +8 -8
  96. package/dist/lib/onboarding-shared.js +2 -2
  97. package/dist/lib/onboarding.js +4 -4
  98. package/dist/lib/state.d.ts +51 -0
  99. package/dist/lib/state.d.ts.map +1 -0
  100. package/dist/lib/state.js +90 -0
  101. package/dist/lib/state.js.map +1 -0
  102. package/dist/lib/workspace-probe.js +2 -2
  103. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  /**
2
- * pb promote — verify convexCallWithSession sequence and args.
2
+ * pb promote — verify kernelCallWithSession sequence and args.
3
3
  * Covers: happy path (direct commit), governance proposal, no session, empty entryId.
4
4
  */
5
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
6
6
  import { runPromote } from '../commands/promote.js';
7
- const convexCallWithSessionMock = vi.fn();
7
+ const kernelCallWithSessionMock = vi.fn();
8
8
  vi.mock('../lib/client.js', () => ({
9
- convexCallWithSession: (...args) => convexCallWithSessionMock(...args),
9
+ kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
10
10
  }));
11
11
  vi.mock('../lib/config.js', () => ({
12
12
  getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
@@ -29,7 +29,7 @@ describe('runPromote', () => {
29
29
  mockSession = { sessionId: 'sess-test' };
30
30
  });
31
31
  it('calls chain.commitEntry with correct args (happy path)', async () => {
32
- convexCallWithSessionMock
32
+ kernelCallWithSessionMock
33
33
  .mockResolvedValueOnce({ name: 'Test entry', collectionSlug: 'tensions', data: { description: 'Valid description' } })
34
34
  .mockResolvedValueOnce([])
35
35
  .mockResolvedValueOnce({
@@ -41,14 +41,14 @@ describe('runPromote', () => {
41
41
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
42
42
  await runPromote({ entryId: 'TEN-951' });
43
43
  writeSpy.mockRestore();
44
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.commitEntry', {
44
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.commitEntry', {
45
45
  entryId: 'TEN-951',
46
46
  author: 'agent:sess-test',
47
47
  sessionId: 'sess-test',
48
48
  });
49
49
  });
50
50
  it('passes commitMessage when --message is provided', async () => {
51
- convexCallWithSessionMock
51
+ kernelCallWithSessionMock
52
52
  .mockResolvedValueOnce({ name: 'Test entry', collectionSlug: 'tensions', data: { description: 'Valid description' } })
53
53
  .mockResolvedValueOnce([])
54
54
  .mockResolvedValueOnce({
@@ -60,7 +60,7 @@ describe('runPromote', () => {
60
60
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
61
61
  await runPromote({ entryId: 'TEN-951', message: 'Validated and ready' });
62
62
  writeSpy.mockRestore();
63
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.commitEntry', {
63
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.commitEntry', {
64
64
  entryId: 'TEN-951',
65
65
  author: 'agent:sess-test',
66
66
  sessionId: 'sess-test',
@@ -68,7 +68,7 @@ describe('runPromote', () => {
68
68
  });
69
69
  });
70
70
  it('displays version result for direct commit', async () => {
71
- convexCallWithSessionMock
71
+ kernelCallWithSessionMock
72
72
  .mockResolvedValueOnce({ name: 'Wave 2 smoke test', collectionSlug: 'tensions', data: { description: 'Valid description' } })
73
73
  .mockResolvedValueOnce([])
74
74
  .mockResolvedValueOnce({
@@ -88,7 +88,7 @@ describe('runPromote', () => {
88
88
  expect(output).toContain('v1');
89
89
  });
90
90
  it('displays proposal result for governance mode', async () => {
91
- convexCallWithSessionMock
91
+ kernelCallWithSessionMock
92
92
  .mockResolvedValueOnce({ name: 'Some governed decision', collectionSlug: 'decisions', data: { rationale: 'Valid description' } })
93
93
  .mockResolvedValueOnce([])
94
94
  .mockResolvedValueOnce({
@@ -107,7 +107,7 @@ describe('runPromote', () => {
107
107
  expect(output).toContain('governance mode');
108
108
  });
109
109
  it('displays quality warnings when present', async () => {
110
- convexCallWithSessionMock
110
+ kernelCallWithSessionMock
111
111
  .mockResolvedValueOnce({ name: 'Test Bet', collectionSlug: 'bets', data: { description: 'Valid description' } })
112
112
  .mockResolvedValueOnce([])
113
113
  .mockResolvedValueOnce({
@@ -132,18 +132,18 @@ describe('runPromote', () => {
132
132
  it('throws CLIError with no active session', async () => {
133
133
  mockSession = null;
134
134
  await expect(runPromote({ entryId: 'TEN-951' })).rejects.toThrow('No active session');
135
- expect(convexCallWithSessionMock).not.toHaveBeenCalled();
135
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
136
136
  });
137
137
  it('throws CLIError with empty entryId', async () => {
138
138
  await expect(runPromote({ entryId: ' ' })).rejects.toThrow('Entry ID is required');
139
- expect(convexCallWithSessionMock).not.toHaveBeenCalled();
139
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
140
140
  });
141
141
  it('handles server errors thrown during commit', async () => {
142
- convexCallWithSessionMock.mockRejectedValue(new Error('Entry not found.'));
142
+ kernelCallWithSessionMock.mockRejectedValue(new Error('Entry not found.'));
143
143
  await expect(runPromote({ entryId: 'TEN-999' })).rejects.toThrow('Entry not found.');
144
144
  });
145
145
  it('blocks promote when semantic contradiction preflight finds a contradiction', async () => {
146
- convexCallWithSessionMock
146
+ kernelCallWithSessionMock
147
147
  .mockResolvedValueOnce({ name: 'Conflicting entry', collectionSlug: 'decisions', data: { rationale: 'Valid description' } })
148
148
  .mockResolvedValueOnce([
149
149
  {
@@ -155,7 +155,7 @@ describe('runPromote', () => {
155
155
  },
156
156
  ]);
157
157
  await expect(runPromote({ entryId: 'DEC-100' })).rejects.toThrow('Commit blocked by contradiction with DEC-42: Directly contradicts the approved baseline.');
158
- expect(convexCallWithSessionMock).not.toHaveBeenCalledWith('chain.commitEntry', expect.anything());
158
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalledWith('chain.commitEntry', expect.anything());
159
159
  });
160
160
  });
161
161
  //# sourceMappingURL=promote.test.js.map
@@ -13,9 +13,9 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
13
13
  import { runProposals } from '../commands/proposals.js';
14
14
  import { runAccept } from '../commands/accept.js';
15
15
  import { runReject } from '../commands/reject.js';
16
- const convexCallMock = vi.fn();
16
+ const kernelCallMock = vi.fn();
17
17
  vi.mock('../lib/client.js', () => ({
18
- convexCall: (...args) => convexCallMock(...args),
18
+ kernelCall: (...args) => kernelCallMock(...args),
19
19
  }));
20
20
  vi.mock('../lib/config.js', () => ({
21
21
  getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
@@ -48,16 +48,16 @@ describe('runProposals', () => {
48
48
  vi.clearAllMocks();
49
49
  });
50
50
  it('formats empty proposal list', async () => {
51
- convexCallMock.mockResolvedValue([]);
51
+ kernelCallMock.mockResolvedValue([]);
52
52
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
53
53
  await runProposals();
54
54
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
55
55
  writeSpy.mockRestore();
56
56
  expect(output).toContain('No open consent proposals');
57
- expect(convexCallMock).toHaveBeenCalledWith('governance.listProposals', {});
57
+ expect(kernelCallMock).toHaveBeenCalledWith('governance.listProposals', {});
58
58
  });
59
59
  it('formats non-empty proposal list with expiry', async () => {
60
- convexCallMock.mockResolvedValue([sampleProposal]);
60
+ kernelCallMock.mockResolvedValue([sampleProposal]);
61
61
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
62
62
  await runProposals();
63
63
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
@@ -74,7 +74,7 @@ describe('runAccept', () => {
74
74
  vi.clearAllMocks();
75
75
  });
76
76
  it('calls governance.respondToProposal with approve verdict', async () => {
77
- convexCallMock.mockResolvedValue({
77
+ kernelCallMock.mockResolvedValue({
78
78
  status: 'approved',
79
79
  proposalId: 'prop-abc123',
80
80
  message: 'Proposal approved. Governs relation created.',
@@ -83,7 +83,7 @@ describe('runAccept', () => {
83
83
  await runAccept({ proposalId: 'prop-abc123' });
84
84
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
85
85
  writeSpy.mockRestore();
86
- expect(convexCallMock).toHaveBeenCalledWith('governance.respondToProposal', {
86
+ expect(kernelCallMock).toHaveBeenCalledWith('governance.respondToProposal', {
87
87
  proposalId: 'prop-abc123',
88
88
  verdict: 'approve',
89
89
  });
@@ -98,9 +98,9 @@ describe('runAccept', () => {
98
98
  };
99
99
  const freshProposal = { ...sampleProposal, _id: 'prop-fresh' };
100
100
  // First call: listProposals
101
- convexCallMock.mockResolvedValueOnce([expiredProposal, freshProposal]);
101
+ kernelCallMock.mockResolvedValueOnce([expiredProposal, freshProposal]);
102
102
  // Second call: respondToProposal for fresh proposal
103
- convexCallMock.mockResolvedValueOnce({
103
+ kernelCallMock.mockResolvedValueOnce({
104
104
  status: 'approved',
105
105
  proposalId: 'prop-fresh',
106
106
  message: 'Proposal approved. Governs relation created.',
@@ -110,9 +110,9 @@ describe('runAccept', () => {
110
110
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
111
111
  writeSpy.mockRestore();
112
112
  // Should have called listProposals, then respondToProposal for fresh only
113
- expect(convexCallMock).toHaveBeenCalledTimes(2);
114
- expect(convexCallMock).toHaveBeenNthCalledWith(1, 'governance.listProposals', {});
115
- expect(convexCallMock).toHaveBeenNthCalledWith(2, 'governance.respondToProposal', {
113
+ expect(kernelCallMock).toHaveBeenCalledTimes(2);
114
+ expect(kernelCallMock).toHaveBeenNthCalledWith(1, 'governance.listProposals', {});
115
+ expect(kernelCallMock).toHaveBeenNthCalledWith(2, 'governance.respondToProposal', {
116
116
  proposalId: 'prop-fresh',
117
117
  verdict: 'approve',
118
118
  });
@@ -122,7 +122,7 @@ describe('runAccept', () => {
122
122
  expect(output).toContain('Expired');
123
123
  });
124
124
  it('--auto with no proposals reports nothing to process', async () => {
125
- convexCallMock.mockResolvedValueOnce([]);
125
+ kernelCallMock.mockResolvedValueOnce([]);
126
126
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
127
127
  await runAccept({ auto: true });
128
128
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
@@ -131,7 +131,7 @@ describe('runAccept', () => {
131
131
  });
132
132
  it('throws CLIError when no proposal-id and no --auto', async () => {
133
133
  await expect(runAccept({})).rejects.toThrow('Proposal ID is required');
134
- expect(convexCallMock).not.toHaveBeenCalled();
134
+ expect(kernelCallMock).not.toHaveBeenCalled();
135
135
  });
136
136
  });
137
137
  describe('runReject', () => {
@@ -139,7 +139,7 @@ describe('runReject', () => {
139
139
  vi.clearAllMocks();
140
140
  });
141
141
  it('calls governance.respondToProposal with reject verdict and reason', async () => {
142
- convexCallMock.mockResolvedValue({
142
+ kernelCallMock.mockResolvedValue({
143
143
  status: 'objected',
144
144
  proposalId: 'prop-abc123',
145
145
  message: 'Proposal rejected: Creates circular governance',
@@ -148,7 +148,7 @@ describe('runReject', () => {
148
148
  await runReject({ proposalId: 'prop-abc123', reason: 'Creates circular governance' });
149
149
  const output = writeSpy.mock.calls.map((c) => String(c[0])).join('');
150
150
  writeSpy.mockRestore();
151
- expect(convexCallMock).toHaveBeenCalledWith('governance.respondToProposal', {
151
+ expect(kernelCallMock).toHaveBeenCalledWith('governance.respondToProposal', {
152
152
  proposalId: 'prop-abc123',
153
153
  verdict: 'reject',
154
154
  reason: 'Creates circular governance',
@@ -157,11 +157,11 @@ describe('runReject', () => {
157
157
  });
158
158
  it('throws CLIError when reason is empty', async () => {
159
159
  await expect(runReject({ proposalId: 'prop-abc123', reason: '' })).rejects.toThrow('reason is required');
160
- expect(convexCallMock).not.toHaveBeenCalled();
160
+ expect(kernelCallMock).not.toHaveBeenCalled();
161
161
  });
162
162
  it('throws CLIError when proposal-id is empty', async () => {
163
163
  await expect(runReject({ proposalId: '', reason: 'Some reason' })).rejects.toThrow('Proposal ID is required');
164
- expect(convexCallMock).not.toHaveBeenCalled();
164
+ expect(kernelCallMock).not.toHaveBeenCalled();
165
165
  });
166
166
  });
167
167
  //# sourceMappingURL=proposals.test.js.map
@@ -1,12 +1,12 @@
1
1
  /**
2
- * pb relate / pb unrelate — verify convexCallWithSession sequence and args.
2
+ * pb relate / pb unrelate — verify kernelCallWithSession sequence and args.
3
3
  * TEN-341 test contract: happy paths, no session.
4
4
  */
5
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
6
6
  import { runRelate, runUnrelate } from '../commands/relate.js';
7
- const convexCallWithSessionMock = vi.fn();
7
+ const kernelCallWithSessionMock = vi.fn();
8
8
  vi.mock('../lib/client.js', () => ({
9
- convexCallWithSession: (...args) => convexCallWithSessionMock(...args),
9
+ kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
10
10
  }));
11
11
  vi.mock('../lib/config.js', () => ({
12
12
  getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
@@ -19,11 +19,11 @@ describe('runRelate', () => {
19
19
  beforeEach(() => {
20
20
  vi.clearAllMocks();
21
21
  mockSession = { sessionId: 'sess-test' };
22
- convexCallWithSessionMock.mockResolvedValue({});
22
+ kernelCallWithSessionMock.mockResolvedValue({});
23
23
  });
24
24
  it('calls chain.createEntryRelation with correct args', async () => {
25
25
  await runRelate({ fromId: 'BET-151', type: 'informed_by', toId: 'DEC-264' });
26
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
26
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
27
27
  fromEntryId: 'BET-151',
28
28
  toEntryId: 'DEC-264',
29
29
  type: 'informed_by',
@@ -31,7 +31,7 @@ describe('runRelate', () => {
31
31
  });
32
32
  it('passes ifMissing=true when --if-missing flag is set', async () => {
33
33
  await runRelate({ fromId: 'BET-151', type: 'part_of', toId: 'FEAT-77', ifMissing: true });
34
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
34
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
35
35
  fromEntryId: 'BET-151',
36
36
  toEntryId: 'FEAT-77',
37
37
  type: 'part_of',
@@ -40,14 +40,14 @@ describe('runRelate', () => {
40
40
  });
41
41
  it('does not pass ifMissing when flag is not set', async () => {
42
42
  await runRelate({ fromId: 'BET-151', type: 'part_of', toId: 'FEAT-77' });
43
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
43
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.createEntryRelation', {
44
44
  fromEntryId: 'BET-151',
45
45
  toEntryId: 'FEAT-77',
46
46
  type: 'part_of',
47
47
  });
48
48
  });
49
49
  it('handles alreadyExists=true response gracefully and reflects it in output', async () => {
50
- convexCallWithSessionMock.mockResolvedValue({ alreadyExists: true });
50
+ kernelCallWithSessionMock.mockResolvedValue({ alreadyExists: true });
51
51
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
52
52
  await runRelate({ fromId: 'BET-151', type: 'part_of', toId: 'FEAT-77', ifMissing: true });
53
53
  const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
@@ -56,7 +56,7 @@ describe('runRelate', () => {
56
56
  expect(output).toContain('alreadyExists');
57
57
  });
58
58
  it('surfaces proposal_created when backend returns a proposal instead of a relation', async () => {
59
- convexCallWithSessionMock.mockResolvedValue({
59
+ kernelCallWithSessionMock.mockResolvedValue({
60
60
  status: 'proposal_created',
61
61
  proposalId: 'prop-123',
62
62
  fromEntryId: 'STD-2',
@@ -73,22 +73,22 @@ describe('runRelate', () => {
73
73
  it('throws CLIError with no active session', async () => {
74
74
  mockSession = null;
75
75
  await expect(runRelate({ fromId: 'A', type: 'x', toId: 'B' })).rejects.toThrow('No active session');
76
- expect(convexCallWithSessionMock).not.toHaveBeenCalled();
76
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
77
77
  });
78
78
  it('throws CLIError with empty args', async () => {
79
79
  await expect(runRelate({ fromId: '', type: 'x', toId: 'B' })).rejects.toThrow('All arguments required');
80
- expect(convexCallWithSessionMock).not.toHaveBeenCalled();
80
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
81
81
  });
82
82
  });
83
83
  describe('runUnrelate', () => {
84
84
  beforeEach(() => {
85
85
  vi.clearAllMocks();
86
86
  mockSession = { sessionId: 'sess-test' };
87
- convexCallWithSessionMock.mockResolvedValue({});
87
+ kernelCallWithSessionMock.mockResolvedValue({});
88
88
  });
89
89
  it('calls chain.removeEntryRelation with correct args', async () => {
90
90
  await runUnrelate({ fromId: 'BET-151', type: 'part_of', toId: 'FEAT-77' });
91
- expect(convexCallWithSessionMock).toHaveBeenCalledWith('chain.removeEntryRelation', {
91
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.removeEntryRelation', {
92
92
  fromEntryId: 'BET-151',
93
93
  toEntryId: 'FEAT-77',
94
94
  type: 'part_of',
@@ -97,7 +97,7 @@ describe('runUnrelate', () => {
97
97
  it('throws CLIError with no active session', async () => {
98
98
  mockSession = null;
99
99
  await expect(runUnrelate({ fromId: 'A', type: 'x', toId: 'B' })).rejects.toThrow('No active session');
100
- expect(convexCallWithSessionMock).not.toHaveBeenCalled();
100
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
101
101
  });
102
102
  });
103
103
  //# sourceMappingURL=relate.test.js.map
@@ -1,13 +1,13 @@
1
1
  /**
2
- * session-touch — verify convexCallWithSession auto-renews the session TTL.
2
+ * session-touch — verify kernelCallWithSession auto-renews the session TTL.
3
3
  * BET-181 Slice 1: Session Auto-Renew on Write.
4
4
  *
5
5
  * Done-when criteria tested:
6
- * 1. After a successful convexCallWithSession, agent.touchSession is called with the current session ID
7
- * 2. Touch happens in exactly ONE place (convexCallWithSession) — not per-command
6
+ * 1. After a successful kernelCallWithSession, agent.touchSession is called with the current session ID
7
+ * 2. Touch happens in exactly ONE place (kernelCallWithSession) — not per-command
8
8
  * 3. Touch is fire-and-forget (does not block the write response)
9
9
  * 4. When no session is active (session.json absent), no touch is attempted
10
- * 5. When convexCallWithSession fails (write error), touch is NOT called
10
+ * 5. When kernelCallWithSession fails (write error), touch is NOT called
11
11
  */
12
12
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
13
13
  // We need to control what readSession() returns per test.
@@ -19,7 +19,7 @@ vi.mock('../lib/config.js', () => ({
19
19
  getConfig: vi.fn(() => ({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
20
20
  }));
21
21
  // Import the module under test AFTER setting up mocks.
22
- import { convexCallWithSession } from '../lib/client.js';
22
+ import { kernelCallWithSession } from '../lib/client.js';
23
23
  // Helper: build a fetch mock that returns different responses based on `fn`.
24
24
  function makeFetch({ writeOk = true, writeData = { ok: true }, } = {}) {
25
25
  return vi.fn(async (_input, init) => {
@@ -43,7 +43,7 @@ async function flushMicrotasks() {
43
43
  await Promise.resolve();
44
44
  await Promise.resolve();
45
45
  }
46
- describe('convexCallWithSession — session touch on write', () => {
46
+ describe('kernelCallWithSession — session touch on write', () => {
47
47
  beforeEach(() => {
48
48
  vi.clearAllMocks();
49
49
  mockSession = {
@@ -59,7 +59,7 @@ describe('convexCallWithSession — session touch on write', () => {
59
59
  });
60
60
  it('calls agent.touchSession with the current session ID after a successful write', async () => {
61
61
  global.fetch = makeFetch({ writeOk: true, writeData: { entryId: 'BET-181' } });
62
- await convexCallWithSession('chain.updateEntry', { entryId: 'BET-181', name: 'New name' });
62
+ await kernelCallWithSession('chain.updateEntry', { entryId: 'BET-181', name: 'New name' });
63
63
  await flushMicrotasks();
64
64
  const calls = global.fetch.mock.calls;
65
65
  // Expect exactly 2 fetch calls: the write + the touch
@@ -75,7 +75,7 @@ describe('convexCallWithSession — session touch on write', () => {
75
75
  it('does NOT call agent.touchSession when no session is active', async () => {
76
76
  mockSession = null;
77
77
  global.fetch = makeFetch({ writeOk: true });
78
- await convexCallWithSession('chain.updateEntry', { entryId: 'BET-100' });
78
+ await kernelCallWithSession('chain.updateEntry', { entryId: 'BET-100' });
79
79
  await flushMicrotasks();
80
80
  const calls = global.fetch.mock.calls;
81
81
  // Only the write call — no touch
@@ -85,7 +85,7 @@ describe('convexCallWithSession — session touch on write', () => {
85
85
  });
86
86
  it('does NOT call agent.touchSession when the write fails', async () => {
87
87
  global.fetch = makeFetch({ writeOk: false });
88
- await expect(convexCallWithSession('chain.updateEntry', { entryId: 'BET-100' })).rejects.toThrow('Server error');
88
+ await expect(kernelCallWithSession('chain.updateEntry', { entryId: 'BET-100' })).rejects.toThrow('Server error');
89
89
  await flushMicrotasks();
90
90
  const calls = global.fetch.mock.calls;
91
91
  // Only the write call — no touch because write threw
@@ -106,7 +106,7 @@ describe('convexCallWithSession — session touch on write', () => {
106
106
  };
107
107
  });
108
108
  // Should resolve successfully despite touch throwing
109
- const result = await convexCallWithSession('chain.updateEntry', { entryId: 'BET-181' });
109
+ const result = await kernelCallWithSession('chain.updateEntry', { entryId: 'BET-181' });
110
110
  await flushMicrotasks();
111
111
  expect(result).toEqual({ entryId: 'BET-181' });
112
112
  });
@@ -123,7 +123,7 @@ describe('convexCallWithSession — session touch on write', () => {
123
123
  order.push('write-complete');
124
124
  return { ok: true, json: async () => ({ data: { entryId: 'BET-181' } }) };
125
125
  });
126
- await convexCallWithSession('chain.updateEntry', { entryId: 'BET-181' });
126
+ await kernelCallWithSession('chain.updateEntry', { entryId: 'BET-181' });
127
127
  // Write has resolved — touch has NOT yet completed (it's still pending)
128
128
  expect(order).toEqual(['write-complete']);
129
129
  // After waiting for the touch to finish
@@ -5,8 +5,8 @@
5
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
6
6
  import { runSessionId } from '../commands/session.js';
7
7
  vi.mock('../lib/client.js', () => ({
8
- convexCall: vi.fn(),
9
- convexCallWithSession: vi.fn(),
8
+ kernelCall: vi.fn(),
9
+ kernelCallWithSession: vi.fn(),
10
10
  }));
11
11
  vi.mock('../lib/config.js', () => ({
12
12
  getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * pb setup — guided onboarding tests.
3
- * WP-301 Slice 3, WP-304 (LLM onboarding). Verifies:
4
- * - setup with valid existing config goes to onboarding conversation
3
+ * WP-301 Slice 3. Verifies:
4
+ * - setup with valid existing config skips login and shows setup complete
5
5
  * - setup with no config triggers login prompt
6
6
  * - setup tracks telemetry events
7
7
  */
@@ -14,11 +14,11 @@ vi.mock('../lib/telemetry.js', () => ({
14
14
  },
15
15
  initTelemetry: vi.fn(),
16
16
  }));
17
- const convexCallMock = vi.fn();
18
- const convexCallWithSessionMock = vi.fn();
17
+ const kernelCallMock = vi.fn();
18
+ const kernelCallWithSessionMock = vi.fn();
19
19
  vi.mock('../lib/client.js', () => ({
20
- convexCall: (...args) => convexCallMock(...args),
21
- convexCallWithSession: (...args) => convexCallWithSessionMock(...args),
20
+ kernelCall: (...args) => kernelCallMock(...args),
21
+ kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
22
22
  }));
23
23
  let mockConfig = {
24
24
  apiKey: 'pb_sk_test_key_1234',
@@ -47,19 +47,6 @@ const runLoginMock = vi.fn();
47
47
  vi.mock('../commands/login.js', () => ({
48
48
  runLogin: () => runLoginMock(),
49
49
  }));
50
- // Mock both onboarding paths — they have their own test files
51
- const runOnboardingMock = vi.fn();
52
- vi.mock('../lib/onboarding.js', () => ({
53
- runOnboardingConversation: (...args) => runOnboardingMock(...args),
54
- }));
55
- const runOnboardingPathBMock = vi.fn();
56
- vi.mock('../lib/onboarding-path-b.js', () => ({
57
- runOnboardingPathB: (...args) => runOnboardingPathBMock(...args),
58
- }));
59
- vi.mock('../lib/experiment.js', () => ({
60
- isExperimentActive: () => false,
61
- assignOnboardingPath: () => 'B',
62
- }));
63
50
  let confirmAnswers = [];
64
51
  let confirmIndex = 0;
65
52
  vi.mock('../lib/prompts.js', () => ({
@@ -77,15 +64,14 @@ import { runSetup } from '../commands/setup.js';
77
64
  describe('runSetup', () => {
78
65
  beforeEach(() => {
79
66
  vi.clearAllMocks();
80
- runOnboardingPathBMock.mockReset();
81
67
  telemetryEvents.length = 0;
82
68
  confirmAnswers = [];
83
69
  confirmIndex = 0;
84
70
  mockConfig = { apiKey: 'pb_sk_test_key_1234', siteUrl: 'https://test.convex.site' };
85
71
  mockSession = null;
86
72
  });
87
- it('skips login when valid config exists and runs onboarding', async () => {
88
- convexCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
73
+ it('skips login when valid config exists and shows setup complete', async () => {
74
+ kernelCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
89
75
  const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
90
76
  await runSetup();
91
77
  // Should NOT call runLogin
@@ -94,8 +80,8 @@ describe('runSetup', () => {
94
80
  expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('pb_sk_'));
95
81
  // Should show workspace name
96
82
  expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Test Workspace'));
97
- // Should call onboarding path B (default path)
98
- expect(runOnboardingPathBMock).toHaveBeenCalledWith('Test Workspace');
83
+ // Should show setup complete message
84
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Setup complete'));
99
85
  logSpy.mockRestore();
100
86
  });
101
87
  it('triggers login prompt when no valid config exists', async () => {
@@ -118,23 +104,23 @@ describe('runSetup', () => {
118
104
  runLoginMock.mockImplementation(() => {
119
105
  mockConfig = { apiKey: 'pb_sk_new_key', siteUrl: 'https://test.convex.site' };
120
106
  });
121
- convexCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
107
+ kernelCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
122
108
  const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
123
109
  await runSetup();
124
110
  expect(runLoginMock).toHaveBeenCalledOnce();
125
111
  expect(telemetryEvents).toContain('key_validated');
126
- // Should call onboarding path B after login (default path)
127
- expect(runOnboardingPathBMock).toHaveBeenCalledWith('Test Workspace');
112
+ // Should show setup complete message after login
113
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Setup complete'));
128
114
  logSpy.mockRestore();
129
115
  });
130
116
  it('handles workspace verification failure gracefully', async () => {
131
- convexCallMock.mockRejectedValueOnce(new Error('Network error')); // resolveWorkspace fails
117
+ kernelCallMock.mockRejectedValueOnce(new Error('Network error')); // resolveWorkspace fails
132
118
  const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
133
119
  await runSetup();
134
120
  // Should warn about connection
135
121
  expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Could not verify'));
136
- // Should NOT call onboarding
137
- expect(runOnboardingMock).not.toHaveBeenCalled();
122
+ // Should NOT call runLogin (config was valid, workspace probe failed)
123
+ expect(runLoginMock).not.toHaveBeenCalled();
138
124
  logSpy.mockRestore();
139
125
  });
140
126
  });
@@ -1 +1 @@
1
- {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Unit tests for resolveSetupState() and detectRenderTier().
3
+ * WP-325 S1 — foundation module, four stage paths + three render tier paths.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=state.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/state.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}