@productbrain/cli 0.1.0-beta.32 → 0.1.0-beta.35

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 (169) hide show
  1. package/dist/__tests__/capture.test.js +2 -11
  2. package/dist/__tests__/capture.test.js.map +1 -1
  3. package/dist/__tests__/config.test.d.ts +8 -0
  4. package/dist/__tests__/config.test.d.ts.map +1 -0
  5. package/dist/__tests__/config.test.js +166 -0
  6. package/dist/__tests__/config.test.js.map +1 -0
  7. package/dist/__tests__/constellation.test.js +2 -8
  8. package/dist/__tests__/constellation.test.js.map +1 -1
  9. package/dist/__tests__/fields.test.js +14 -14
  10. package/dist/__tests__/fields.test.js.map +1 -1
  11. package/dist/__tests__/handshake.test.js +9 -17
  12. package/dist/__tests__/handshake.test.js.map +1 -1
  13. package/dist/__tests__/init.test.d.ts +7 -0
  14. package/dist/__tests__/init.test.d.ts.map +1 -0
  15. package/dist/__tests__/init.test.js +146 -0
  16. package/dist/__tests__/init.test.js.map +1 -0
  17. package/dist/__tests__/login.test.js +28 -29
  18. package/dist/__tests__/login.test.js.map +1 -1
  19. package/dist/__tests__/onboarding.test.d.ts +6 -0
  20. package/dist/__tests__/onboarding.test.d.ts.map +1 -0
  21. package/dist/__tests__/onboarding.test.js +199 -0
  22. package/dist/__tests__/onboarding.test.js.map +1 -0
  23. package/dist/__tests__/promote.test.js +4 -16
  24. package/dist/__tests__/promote.test.js.map +1 -1
  25. package/dist/__tests__/prompts.test.d.ts +6 -0
  26. package/dist/__tests__/prompts.test.d.ts.map +1 -0
  27. package/dist/__tests__/prompts.test.js +146 -0
  28. package/dist/__tests__/prompts.test.js.map +1 -0
  29. package/dist/__tests__/proposals.test.js +6 -29
  30. package/dist/__tests__/proposals.test.js.map +1 -1
  31. package/dist/__tests__/relate.test.js +6 -23
  32. package/dist/__tests__/relate.test.js.map +1 -1
  33. package/dist/__tests__/runner.test.js +19 -15
  34. package/dist/__tests__/runner.test.js.map +1 -1
  35. package/dist/__tests__/session.test.js +2 -8
  36. package/dist/__tests__/session.test.js.map +1 -1
  37. package/dist/__tests__/setup.test.js +39 -25
  38. package/dist/__tests__/setup.test.js.map +1 -1
  39. package/dist/__tests__/spinner-labels.test.d.ts +2 -0
  40. package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
  41. package/dist/__tests__/spinner-labels.test.js +23 -0
  42. package/dist/__tests__/spinner-labels.test.js.map +1 -0
  43. package/dist/__tests__/update.test.js +27 -61
  44. package/dist/__tests__/update.test.js.map +1 -1
  45. package/dist/__tests__/workspace.test.d.ts +2 -0
  46. package/dist/__tests__/workspace.test.d.ts.map +1 -0
  47. package/dist/__tests__/workspace.test.js +308 -0
  48. package/dist/__tests__/workspace.test.js.map +1 -0
  49. package/dist/commands/accept.d.ts.map +1 -1
  50. package/dist/commands/accept.js +6 -2
  51. package/dist/commands/accept.js.map +1 -1
  52. package/dist/commands/brief.d.ts.map +1 -1
  53. package/dist/commands/brief.js +6 -1
  54. package/dist/commands/brief.js.map +1 -1
  55. package/dist/commands/capture.d.ts.map +1 -1
  56. package/dist/commands/capture.js +17 -10
  57. package/dist/commands/capture.js.map +1 -1
  58. package/dist/commands/chain-walk.d.ts.map +1 -1
  59. package/dist/commands/chain-walk.js +6 -1
  60. package/dist/commands/chain-walk.js.map +1 -1
  61. package/dist/commands/changes.d.ts.map +1 -1
  62. package/dist/commands/changes.js +6 -1
  63. package/dist/commands/changes.js.map +1 -1
  64. package/dist/commands/codex-prep.d.ts.map +1 -1
  65. package/dist/commands/codex-prep.js +6 -2
  66. package/dist/commands/codex-prep.js.map +1 -1
  67. package/dist/commands/collections.d.ts.map +1 -1
  68. package/dist/commands/collections.js +6 -2
  69. package/dist/commands/collections.js.map +1 -1
  70. package/dist/commands/constellation.d.ts.map +1 -1
  71. package/dist/commands/constellation.js +6 -1
  72. package/dist/commands/constellation.js.map +1 -1
  73. package/dist/commands/context.d.ts.map +1 -1
  74. package/dist/commands/context.js +6 -1
  75. package/dist/commands/context.js.map +1 -1
  76. package/dist/commands/doctor.d.ts.map +1 -1
  77. package/dist/commands/doctor.js +30 -20
  78. package/dist/commands/doctor.js.map +1 -1
  79. package/dist/commands/doctor.test.d.ts +1 -0
  80. package/dist/commands/doctor.test.d.ts.map +1 -1
  81. package/dist/commands/doctor.test.js +54 -21
  82. package/dist/commands/doctor.test.js.map +1 -1
  83. package/dist/commands/fields.d.ts.map +1 -1
  84. package/dist/commands/fields.js +6 -2
  85. package/dist/commands/fields.js.map +1 -1
  86. package/dist/commands/get.d.ts.map +1 -1
  87. package/dist/commands/get.js +11 -3
  88. package/dist/commands/get.js.map +1 -1
  89. package/dist/commands/handshake.d.ts.map +1 -1
  90. package/dist/commands/handshake.js +21 -22
  91. package/dist/commands/handshake.js.map +1 -1
  92. package/dist/commands/ingest.d.ts.map +1 -1
  93. package/dist/commands/ingest.js +11 -3
  94. package/dist/commands/ingest.js.map +1 -1
  95. package/dist/commands/init.d.ts +14 -0
  96. package/dist/commands/init.d.ts.map +1 -0
  97. package/dist/commands/init.js +117 -0
  98. package/dist/commands/init.js.map +1 -0
  99. package/dist/commands/login.d.ts.map +1 -1
  100. package/dist/commands/login.js +32 -20
  101. package/dist/commands/login.js.map +1 -1
  102. package/dist/commands/promote.d.ts.map +1 -1
  103. package/dist/commands/promote.js +21 -7
  104. package/dist/commands/promote.js.map +1 -1
  105. package/dist/commands/reject.d.ts.map +1 -1
  106. package/dist/commands/reject.js +11 -5
  107. package/dist/commands/reject.js.map +1 -1
  108. package/dist/commands/relate.d.ts.map +1 -1
  109. package/dist/commands/relate.js +21 -10
  110. package/dist/commands/relate.js.map +1 -1
  111. package/dist/commands/session.d.ts.map +1 -1
  112. package/dist/commands/session.js +16 -6
  113. package/dist/commands/session.js.map +1 -1
  114. package/dist/commands/setup.d.ts +1 -2
  115. package/dist/commands/setup.d.ts.map +1 -1
  116. package/dist/commands/setup.js +17 -38
  117. package/dist/commands/setup.js.map +1 -1
  118. package/dist/commands/update.d.ts.map +1 -1
  119. package/dist/commands/update.js +45 -27
  120. package/dist/commands/update.js.map +1 -1
  121. package/dist/commands/verify.d.ts.map +1 -1
  122. package/dist/commands/verify.js +11 -5
  123. package/dist/commands/verify.js.map +1 -1
  124. package/dist/commands/workspace.d.ts +41 -0
  125. package/dist/commands/workspace.d.ts.map +1 -0
  126. package/dist/commands/workspace.js +239 -0
  127. package/dist/commands/workspace.js.map +1 -0
  128. package/dist/index.js +109 -21
  129. package/dist/index.js.map +1 -1
  130. package/dist/lib/client.d.ts +2 -0
  131. package/dist/lib/client.d.ts.map +1 -1
  132. package/dist/lib/client.js +113 -57
  133. package/dist/lib/client.js.map +1 -1
  134. package/dist/lib/config.d.ts +57 -4
  135. package/dist/lib/config.d.ts.map +1 -1
  136. package/dist/lib/config.js +189 -32
  137. package/dist/lib/config.js.map +1 -1
  138. package/dist/lib/errors.d.ts +1 -0
  139. package/dist/lib/errors.d.ts.map +1 -1
  140. package/dist/lib/errors.js +2 -0
  141. package/dist/lib/errors.js.map +1 -1
  142. package/dist/lib/format.d.ts +10 -0
  143. package/dist/lib/format.d.ts.map +1 -0
  144. package/dist/lib/format.js +27 -0
  145. package/dist/lib/format.js.map +1 -0
  146. package/dist/lib/onboarding.d.ts +19 -0
  147. package/dist/lib/onboarding.d.ts.map +1 -0
  148. package/dist/lib/onboarding.js +373 -0
  149. package/dist/lib/onboarding.js.map +1 -0
  150. package/dist/lib/prompts.d.ts +38 -0
  151. package/dist/lib/prompts.d.ts.map +1 -0
  152. package/dist/lib/prompts.js +90 -0
  153. package/dist/lib/prompts.js.map +1 -0
  154. package/dist/lib/runner.d.ts.map +1 -1
  155. package/dist/lib/runner.js +4 -19
  156. package/dist/lib/runner.js.map +1 -1
  157. package/dist/lib/spinner.d.ts +27 -0
  158. package/dist/lib/spinner.d.ts.map +1 -0
  159. package/dist/lib/spinner.js +76 -0
  160. package/dist/lib/spinner.js.map +1 -0
  161. package/dist/lib/spinner.test.d.ts +2 -0
  162. package/dist/lib/spinner.test.d.ts.map +1 -0
  163. package/dist/lib/spinner.test.js +39 -0
  164. package/dist/lib/spinner.test.js.map +1 -0
  165. package/dist/lib/workspace-probe.d.ts +16 -0
  166. package/dist/lib/workspace-probe.d.ts.map +1 -0
  167. package/dist/lib/workspace-probe.js +33 -0
  168. package/dist/lib/workspace-probe.js.map +1 -0
  169. package/package.json +2 -1
@@ -9,21 +9,14 @@
9
9
  * 3. Guided first capture (starts a session, captures via MCP)
10
10
  * 4. Summary with next-step hint
11
11
  *
12
- * Uses readline for interactive prompts (same pattern as login.ts).
13
- * No new npm dependencies.
12
+ * WP-303 Slice 1: migrated from readline to @clack/prompts via lib/prompts.ts.
14
13
  */
15
- import { createInterface } from 'readline';
16
14
  import { getConfig } from '../lib/config.js';
17
15
  import { mcpCall, mcpCallWithSession } from '../lib/client.js';
18
16
  import { readSession, writeSession } from '../lib/session.js';
19
17
  import { trackEvent } from '../lib/telemetry.js';
20
18
  import { runLogin } from './login.js';
21
- /** Prompt helper same pattern as login.ts. */
22
- function question(rl, prompt) {
23
- return new Promise((resolve) => {
24
- rl.question(prompt, (answer) => resolve((answer ?? '').trim()));
25
- });
26
- }
19
+ import { confirm as promptConfirm, ask as promptAsk } from '../lib/prompts.js';
27
20
  /** Mask an API key for display: show prefix + last 4 chars. */
28
21
  function maskKey(key) {
29
22
  if (key.length <= 10)
@@ -31,15 +24,9 @@ function maskKey(key) {
31
24
  return key.slice(0, 6) + '...' + key.slice(-4);
32
25
  }
33
26
  export async function runSetup() {
34
- const rl = createInterface({ input: process.stdin, output: process.stdout });
35
- try {
36
- await runSetupFlow(rl);
37
- }
38
- finally {
39
- rl.close();
40
- }
27
+ await runSetupFlow();
41
28
  }
42
- async function runSetupFlow(rl) {
29
+ async function runSetupFlow() {
43
30
  trackEvent('setup_started');
44
31
  console.log('');
45
32
  console.log('Product Brain — Setup');
@@ -69,8 +56,8 @@ async function runSetupFlow(rl) {
69
56
  console.log('Run `pb login` to re-enter your API key.');
70
57
  }
71
58
  console.log('');
72
- const runCheck = await question(rl, 'Skip to first capture? (y/n): ');
73
- if (runCheck.toLowerCase() !== 'y' && runCheck.toLowerCase() !== 'yes') {
59
+ const skipToCapture = await promptConfirm({ message: 'Skip to first capture?', initialValue: true });
60
+ if (!skipToCapture) {
74
61
  console.log('');
75
62
  console.log('Setup complete. Try: pb orient -b');
76
63
  trackEvent('setup_completed');
@@ -84,33 +71,25 @@ async function runSetupFlow(rl) {
84
71
  if (!hasValidConfig) {
85
72
  console.log('To get started, you need a Product Brain account and API key.');
86
73
  console.log('');
87
- const hasAccount = await question(rl, 'Do you have a Product Brain account? (y/n): ');
88
- if (hasAccount.toLowerCase() !== 'y' && hasAccount.toLowerCase() !== 'yes') {
74
+ const hasAccount = await promptConfirm({ message: 'Do you have a Product Brain account?', initialValue: false });
75
+ if (!hasAccount) {
89
76
  console.log('');
90
77
  console.log('Create an account at: https://productbrain.io');
91
78
  console.log('Then come back and run: pb setup');
92
79
  console.log('');
93
80
  return;
94
81
  }
95
- // Run login flow — this handles key prompt, validation, and saving
82
+ // Run login flow — handles key prompt, validation, and saving
96
83
  console.log('');
97
- rl.close(); // Close our rl so login.ts can create its own
98
84
  await runLogin();
99
85
  trackEvent('key_validated');
100
- // Re-open rl for remaining prompts
101
- const newRl = createInterface({ input: process.stdin, output: process.stdout });
102
- try {
103
- await runSetupPostLogin(newRl);
104
- }
105
- finally {
106
- newRl.close();
107
- }
86
+ await runSetupPostLogin();
108
87
  return;
109
88
  }
110
89
  // If we already had config, go straight to first capture
111
- await runFirstCapture(rl);
90
+ await runFirstCapture();
112
91
  }
113
- async function runSetupPostLogin(rl) {
92
+ async function runSetupPostLogin() {
114
93
  // Step 3: Workspace binding — the API key already binds to a workspace
115
94
  console.log('');
116
95
  try {
@@ -128,13 +107,13 @@ async function runSetupPostLogin(rl) {
128
107
  console.log('You can still try commands. Run `pb orient -b` to test.');
129
108
  }
130
109
  // Step 4: First capture
131
- await runFirstCapture(rl);
110
+ await runFirstCapture();
132
111
  }
133
- async function runFirstCapture(rl) {
112
+ async function runFirstCapture() {
134
113
  console.log('');
135
- const wantCapture = await question(rl, 'Ready to capture your first piece of knowledge? (y/n): ');
114
+ const wantCapture = await promptConfirm({ message: 'Ready to capture your first piece of knowledge?', initialValue: true });
136
115
  trackEvent('first_capture_prompted');
137
- if (wantCapture.toLowerCase() !== 'y' && wantCapture.toLowerCase() !== 'yes') {
116
+ if (!wantCapture) {
138
117
  console.log('');
139
118
  console.log('Setup complete! Try: pb orient -b');
140
119
  trackEvent('setup_completed');
@@ -175,7 +154,7 @@ async function runFirstCapture(rl) {
175
154
  // Prompt for capture text
176
155
  console.log('');
177
156
  console.log('Type a short insight, decision, or tension:');
178
- const captureText = await question(rl, '> ');
157
+ const captureText = await promptAsk({ message: '>', placeholder: 'e.g. DEC: We chose Svelte because...' });
179
158
  if (!captureText) {
180
159
  console.log('No text entered. You can capture later: pb capture "your insight here"');
181
160
  console.log('');
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiCD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IrE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyCD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJrE"}
@@ -11,6 +11,7 @@ import { isJsonMode } from '../lib/runner.js';
11
11
  import { stripConvexInternals } from '../lib/strip.js';
12
12
  import { formatUpdateReceipt } from '../formatters/update.js';
13
13
  import { formatEntry } from '../formatters/entry.js';
14
+ import { CLIError, ErrorCode } from '../lib/errors.js';
14
15
  /**
15
16
  * Parse --field key=value pairs into a data object.
16
17
  * Splits on first `=` only to handle values containing `=`.
@@ -20,12 +21,20 @@ function parseFields(fields) {
20
21
  for (const f of fields) {
21
22
  const eqIndex = f.indexOf('=');
22
23
  if (eqIndex === -1) {
23
- throw new Error(`Invalid --field format: "${f}". Expected key=value.`);
24
+ throw new CLIError(`Invalid --field format: "${f}". Expected key=value.`, {
25
+ code: ErrorCode.VALIDATION_FAILED,
26
+ category: 'validation',
27
+ guidance: 'Use --field key=value (split on first "=").',
28
+ });
24
29
  }
25
30
  const key = f.slice(0, eqIndex).trim();
26
31
  const value = f.slice(eqIndex + 1).trim();
27
32
  if (!key) {
28
- throw new Error(`Invalid --field format: "${f}". Key cannot be empty.`);
33
+ throw new CLIError(`Invalid --field format: "${f}". Key cannot be empty.`, {
34
+ code: ErrorCode.VALIDATION_FAILED,
35
+ category: 'validation',
36
+ guidance: 'Provide a non-empty key before the "=" sign.',
37
+ });
29
38
  }
30
39
  data[key] = value;
31
40
  }
@@ -39,15 +48,20 @@ export async function runUpdate(options) {
39
48
  // Require active session (DEC-9, BR-8)
40
49
  const session = readSession();
41
50
  if (!session) {
42
- process.stderr.write('No active session. Run `pb session start` first.\n');
43
- process.stderr.write('Write access requires a tracked session (DEC-9).\n');
44
- process.exit(1);
51
+ throw new CLIError('No active session.', {
52
+ code: ErrorCode.SESSION_REQUIRED,
53
+ category: 'session',
54
+ guidance: 'Run `pb session start` first. Write access requires a tracked session (DEC-9).',
55
+ });
45
56
  }
46
57
  // Validate entryId
47
58
  const entryId = options.entryId.trim();
48
59
  if (!entryId) {
49
- process.stderr.write('Entry ID is required. Usage: pb update <entry-id> [options]\n');
50
- process.exit(1);
60
+ throw new CLIError('Entry ID is required.', {
61
+ code: ErrorCode.VALIDATION_FAILED,
62
+ category: 'validation',
63
+ guidance: 'Usage: pb update <entry-id> [options]',
64
+ });
51
65
  }
52
66
  // Build update args
53
67
  const args = { entryId };
@@ -69,8 +83,11 @@ export async function runUpdate(options) {
69
83
  }
70
84
  // Must have at least one thing to update
71
85
  if (!options.name && !options.status && !options.workflowStatus && (!options.field || options.field.length === 0)) {
72
- process.stderr.write('Nothing to update. Provide at least one of: --field, --name, --status, --workflow-status\n');
73
- process.exit(1);
86
+ throw new CLIError('Nothing to update.', {
87
+ code: ErrorCode.VALIDATION_FAILED,
88
+ category: 'validation',
89
+ guidance: 'Provide at least one of: --field, --name, --status, --workflow-status',
90
+ });
74
91
  }
75
92
  if (!json)
76
93
  process.stdout.write(`Updating ${entryId}...\n`);
@@ -86,22 +103,22 @@ export async function runUpdate(options) {
86
103
  // Render structured validation errors for select/multi-select fields.
87
104
  if (mcpErr.details && mcpErr.details.length > 0) {
88
105
  const selectErrors = mcpErr.details.filter((d) => d.errorType === 'invalid_option' && d.validOptions);
89
- if (selectErrors.length > 0 && !json) {
90
- process.stderr.write(`Error: validation failed\n`);
91
- for (const d of selectErrors) {
106
+ if (selectErrors.length > 0) {
107
+ const fieldMessages = selectErrors.map((d) => {
92
108
  const got = typeof d.invalidValue === 'string' ? d.invalidValue : JSON.stringify(d.invalidValue);
93
- process.stderr.write(` Field '${d.fieldLabel}' must be one of: ${d.validOptions.join(', ')}. Got: '${got}'\n`);
94
- }
95
- process.exit(1);
96
- }
97
- if (json) {
98
- process.stderr.write(JSON.stringify({ error: mcpErr.message, code: mcpErr.code, details: mcpErr.details }) + '\n');
99
- process.exit(1);
109
+ return `Field '${d.fieldLabel}' must be one of: ${d.validOptions.join(', ')}. Got: '${got}'`;
110
+ });
111
+ throw new CLIError(`Validation failed: ${fieldMessages.join('; ')}`, {
112
+ code: ErrorCode.VALIDATION_FAILED,
113
+ category: 'validation',
114
+ });
100
115
  }
101
116
  }
102
- // Fallback: plain error message
103
- process.stderr.write(`Error: ${mcpErr.message}\n`);
104
- process.exit(1);
117
+ // Fallback: plain MCP error
118
+ throw new CLIError(mcpErr.message, {
119
+ code: ErrorCode.VALIDATION_FAILED,
120
+ category: 'validation',
121
+ });
105
122
  }
106
123
  throw err;
107
124
  }
@@ -149,12 +166,13 @@ export async function runUpdate(options) {
149
166
  process.stdout.write(formatEntry(refreshedEntry) + '\n');
150
167
  }
151
168
  }
152
- // BET-271 S1: Exit 1 when fields were rejected — signals "not everything you asked for happened."
169
+ // BET-271 S1: Throw when fields were rejected — signals "not everything you asked for happened."
153
170
  if (hasRejected) {
154
- if (!json) {
155
- process.stderr.write(`\nFields rejected: ${rejectedFields.join(', ')}. Run \`pb fields${collectionHint}\` to see valid fields.\n`);
156
- }
157
- process.exit(1);
171
+ throw new CLIError(`Fields rejected: ${rejectedFields.join(', ')}.`, {
172
+ code: ErrorCode.VALIDATION_FAILED,
173
+ category: 'validation',
174
+ guidance: `Run \`pb fields${collectionHint}\` to see valid fields.`,
175
+ });
158
176
  }
159
177
  }
160
178
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCrE"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrE"}
@@ -10,6 +10,7 @@ import { mcpCallWithSession } from '../lib/client.js';
10
10
  import { readSession } from '../lib/session.js';
11
11
  import { runCliCommand } from '../lib/runner.js';
12
12
  import { formatVerifyReceipt } from '../formatters/verify.js';
13
+ import { CLIError, ErrorCode } from '../lib/errors.js';
13
14
  export async function runVerify(options) {
14
15
  const config = await getConfigOrGuide(() => runVerify(options));
15
16
  if (!config)
@@ -17,14 +18,19 @@ export async function runVerify(options) {
17
18
  // Require active session (DEC-9, BR-8)
18
19
  const session = readSession();
19
20
  if (!session) {
20
- process.stderr.write('No active session. Run `pb session start` first.\n');
21
- process.stderr.write('Write access requires a tracked session (DEC-9).\n');
22
- process.exit(1);
21
+ throw new CLIError('No active session.', {
22
+ code: ErrorCode.SESSION_REQUIRED,
23
+ category: 'session',
24
+ guidance: 'Run `pb session start` first. Write access requires a tracked session (DEC-9).',
25
+ });
23
26
  }
24
27
  const entryId = options.entryId.trim();
25
28
  if (!entryId) {
26
- process.stderr.write('Entry ID is required. Usage: pb verify <entry-id>\n');
27
- process.exit(1);
29
+ throw new CLIError('Entry ID is required.', {
30
+ code: ErrorCode.VALIDATION_FAILED,
31
+ category: 'validation',
32
+ guidance: 'Usage: pb verify <entry-id>',
33
+ });
28
34
  }
29
35
  await runCliCommand({
30
36
  fn: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAA0B,MAAM,yBAAyB,CAAC;AAMtF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,uCAAuC;IACvC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,CAAoB;QACrC,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAoB,mBAAmB,EAAE;gBAC9E,OAAO;aACR,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;gBAClC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;QACJ,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;KAClD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAA0B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,uCAAuC;IACvC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE;YACvC,IAAI,EAAE,SAAS,CAAC,gBAAgB;YAChC,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,gFAAgF;SAC3F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YAC1C,IAAI,EAAE,SAAS,CAAC,iBAAiB;YACjC,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,6BAA6B;SACxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,CAAoB;QACrC,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAoB,mBAAmB,EAAE;gBAC9E,OAAO;aACR,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;gBAClC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;QACJ,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;KAClD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * pb workspace — operator commands for workspace health and repair.
3
+ * pb definitions diff — compare local collection definitions against server.
4
+ *
5
+ * WP-305 Slice 4: CLI operator surface for workspace parity checks.
6
+ * Chain: WP-305, STD-101 (derive from system, never hardcode).
7
+ *
8
+ * Subcommands:
9
+ * pb workspace verify — health check for the active workspace
10
+ * pb workspace repair — backfill missing seeds for the active workspace
11
+ * pb definitions diff [file] — compare local dev-system-collections.json vs server
12
+ */
13
+ export interface WorkspaceHealthResult {
14
+ workspaceId: string;
15
+ workspaceName: string;
16
+ collectionsAligned: boolean;
17
+ glossarySeeded: boolean;
18
+ semanticTypesSeeded: boolean;
19
+ defaultCircleSeeded: boolean;
20
+ gaps: string[];
21
+ status: 'healthy' | 'incomplete' | 'missing-seeds';
22
+ }
23
+ export interface BackfillResult {
24
+ workspaceId: string;
25
+ workspaceName: string;
26
+ scheduled: string[];
27
+ skipped: string[];
28
+ alreadyHealthy: boolean;
29
+ }
30
+ export interface DefinitionsDiffResult {
31
+ onlyLocal: string[];
32
+ onlyServer: string[];
33
+ different: string[];
34
+ identical: string[];
35
+ }
36
+ export declare function runWorkspaceVerify(): Promise<void>;
37
+ export declare function runWorkspaceRepair(): Promise<void>;
38
+ export declare function runDefinitionsDiff(options: {
39
+ file?: string;
40
+ }): Promise<void>;
41
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAiDD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAyCD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AA+ED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ElF"}