@productbrain/cli 0.1.0-beta.6442 → 0.1.0-beta.6461

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.
@@ -21,7 +21,8 @@ import { parseFields } from '../lib/parseFields.js';
21
21
  import { emitEffectiveTenantNotice } from '../lib/workspaceNotice.js';
22
22
  import { isPreviewCreateEntryResult } from '../lib/createEntryResult.js';
23
23
  import { extractPrefixHint, printGroundingBanner, printGroundingPreview, promptYN, highestVerdictScore } from '../lib/captureGrounding.js';
24
- import { resolveCreatableRelationTypes } from '../lib/legalRelationTypes.js';
24
+ import { runVersionCapture } from '../lib/captureVersion.js';
25
+ import { applyCaptureLink } from '../lib/captureLink.js';
25
26
  export async function runCapture(options) {
26
27
  const config = await getConfigOrGuide(() => runCapture(options));
27
28
  if (!config)
@@ -120,12 +121,8 @@ export async function runCapture(options) {
120
121
  if (!json && groundingResult) {
121
122
  printGroundingBanner(groundingResult);
122
123
  }
123
- // WP-319 S3 / WP-755 C1a fix round 1 (item 2): --strict prompts on "ask" AND "version" — a
124
- // 0.9-overlap match returns "version" (silent-confidence band), and until C2 actually performs
125
- // the version write, a silent "version" verdict here still falls through to plain create; a
126
- // 0.9 duplicate must not create without a prompt just because its band name is "version" not
127
- // "ask". Non-TTY skips prompt and auto-proceeds (fail-open on non-interactive).
128
- if (options.strict && !json && (groundingResult?.kind === 'ask' || groundingResult?.kind === 'version')) {
124
+ // WP-319 S3 (narrowed C2/TASK-216): --strict now prompts only on "ask" — genuine ambiguity. "version" is silent, no --strict gate (DEC-1717). Non-TTY skips.
125
+ if (options.strict && !json && groundingResult?.kind === 'ask') {
129
126
  const isTTY = process.stdin.isTTY;
130
127
  if (isTTY) {
131
128
  const answer = await promptYN(' Possible match found. Proceed with capture? [y/N] ');
@@ -137,96 +134,145 @@ export async function runCapture(options) {
137
134
  }
138
135
  // WP-1: name the target workspace before the write so a wrong-Chain capture is never silent. After the --suggest-only/--strict abort paths; the TEN-2311 WHY check below can still throw without writing, so the user sees the target line then the validation error. stderr-only (WP-721).
139
136
  await emitEffectiveTenantNotice();
140
- // Phase 2: Create entry as draft
141
- if (!json)
142
- progress(`Capturing to ${collectionSlug}...`);
143
- const data = { description: entryDescription };
144
- // Only set date when we can infer a source date from the capture itself.
145
- const datedCollections = await getDatedCollections();
146
- const inferredSourceDate = inferSourceDate(entryName, entryDescription, options.sourceRef, options.sourceExcerpt);
147
- if (datedCollections.has(collectionSlug) && inferredSourceDate) {
148
- data.date = inferredSourceDate;
149
- }
150
- if (options.field?.length) {
151
- Object.assign(data, parseFields(options.field));
152
- }
153
- // TEN-2311: live, fail-open WHY guidance — the server remains the arbiter, this only prevents a doomed governed capture when the required field is absent. The contract fetch is the ONLY fail-open surface (network or server 4xx/5xx, an McpError/CLIError, is swallowed so chain.createEntry's server gate arbitrates); the deliberate guidance throw lives OUTSIDE the try so it is never misclassified as a swallowed transport failure.
154
- let contract = null;
155
- try {
156
- contract = await kernelCallWithSession('chain.getCollectionFields', { slug: collectionSlug });
157
- }
158
- catch {
159
- contract = null; // fail open — let the server gate arbitrate
137
+ // WP-755 C2 (TASK-216, DEC-1717): the version branch sits WHERE the create call sits — same
138
+ // option parsing, same --link/--source-ref/--field the create would have sent — and replaces
139
+ // createEntry with updateEntry via captureVersion.ts. Narrowed once so every branch below
140
+ // (link handling, output) shares one entryId/entryStatus/... set regardless of path.
141
+ const versionVerdict = groundingResult?.kind === 'version' ? groundingResult : null;
142
+ let entryId;
143
+ let receiptName = entryName;
144
+ let entryStatus;
145
+ let warnings = [];
146
+ let normalization;
147
+ let qualityHints = [];
148
+ let spineFloor;
149
+ let relationSuggestions;
150
+ let coaching;
151
+ if (versionVerdict) {
152
+ if (!json)
153
+ progress(`Saving as a new version of ${versionVerdict.entryId}...`);
154
+ const versionResult = await runVersionCapture({
155
+ groundingResult: versionVerdict,
156
+ // Only an EXPLICIT --name is a real title (kernel/capture/versionWrite.ts's own contract:
157
+ // a placeholder must never rename the target). entryName's cleanText fallback is the
158
+ // capture's prose body, never a title — forwarding it here renamed the target on every
159
+ // version write with no --name given.
160
+ name: options.name,
161
+ prose: entryDescription,
162
+ fields: options.field?.length ? parseFields(options.field) : undefined,
163
+ sourceRef: options.sourceRef,
164
+ sourceExcerpt: options.sourceExcerpt,
165
+ sessionId: session.sessionId,
166
+ skipGrounding,
167
+ groundingStart,
168
+ groundingElapsed,
169
+ });
170
+ entryId = versionResult.entryId;
171
+ receiptName = versionResult.name;
172
+ warnings = versionResult.warnings;
173
+ normalization = versionResult.normalization;
174
+ // No entryStatus: chain.updateEntry's return carries no status field, and the target's real
175
+ // status (which a version write never changes) can be draft or accepted — never guess.
160
176
  }
161
- if (contract?.governed && contract.whyField) {
162
- const isNonEmpty = (v) => typeof v === 'string' && v.trim().length > 0;
163
- // TEN-1258: the server remaps data.description → the collection's primary field before the
164
- // WHY gate (createEntryPreparation.remapDescriptionField), so a bare `pb capture "DEC: …"`
165
- // satisfies the WHY when that primary field IS the why field (e.g. decisions→rationale).
166
- // Mirror that here so the pre-flight does not false-block captures the server would accept.
167
- const remapSatisfiesWhy = contract.descriptionFieldKey === contract.whyField && isNonEmpty(data.description);
168
- const present = isNonEmpty(data[contract.whyField]) || remapSatisfiesWhy;
169
- if (!present) {
170
- throw new CLIError(`"${collectionSlug}" is a governed collection and needs a WHY in "${contract.whyField}".`, {
171
- code: ErrorCode.VALIDATION_FAILED,
172
- category: 'validation',
173
- guidance: `Add it: --field ${contract.whyField}="<at least ${contract.minChars} characters of why>"`,
174
- });
177
+ else {
178
+ // Phase 2: Create entry as draft
179
+ if (!json)
180
+ progress(`Capturing to ${collectionSlug}...`);
181
+ const data = { description: entryDescription };
182
+ // Only set date when we can infer a source date from the capture itself.
183
+ const datedCollections = await getDatedCollections();
184
+ const inferredSourceDate = inferSourceDate(entryName, entryDescription, options.sourceRef, options.sourceExcerpt);
185
+ if (datedCollections.has(collectionSlug) && inferredSourceDate) {
186
+ data.date = inferredSourceDate;
175
187
  }
188
+ if (options.field?.length) {
189
+ Object.assign(data, parseFields(options.field));
190
+ }
191
+ // TEN-2311: live, fail-open WHY guidance — the server remains the arbiter, this only prevents a doomed governed capture when the required field is absent. The contract fetch is the ONLY fail-open surface (network or server 4xx/5xx, an McpError/CLIError, is swallowed so chain.createEntry's server gate arbitrates); the deliberate guidance throw lives OUTSIDE the try so it is never misclassified as a swallowed transport failure.
192
+ let contract = null;
193
+ try {
194
+ contract = await kernelCallWithSession('chain.getCollectionFields', { slug: collectionSlug });
195
+ }
196
+ catch {
197
+ contract = null; // fail open — let the server gate arbitrate
198
+ }
199
+ if (contract?.governed && contract.whyField) {
200
+ const isNonEmpty = (v) => typeof v === 'string' && v.trim().length > 0;
201
+ // TEN-1258: the server remaps data.description → the collection's primary field before the
202
+ // WHY gate (createEntryPreparation.remapDescriptionField), so a bare `pb capture "DEC: …"`
203
+ // satisfies the WHY when that primary field IS the why field (e.g. decisions→rationale).
204
+ // Mirror that here so the pre-flight does not false-block captures the server would accept.
205
+ const remapSatisfiesWhy = contract.descriptionFieldKey === contract.whyField && isNonEmpty(data.description);
206
+ const present = isNonEmpty(data[contract.whyField]) || remapSatisfiesWhy;
207
+ if (!present) {
208
+ throw new CLIError(`"${collectionSlug}" is a governed collection and needs a WHY in "${contract.whyField}".`, {
209
+ code: ErrorCode.VALIDATION_FAILED,
210
+ category: 'validation',
211
+ guidance: `Add it: --field ${contract.whyField}="<at least ${contract.minChars} characters of why>"`,
212
+ });
213
+ }
214
+ }
215
+ // WP-475 E1 (deterministic --link fix): when this capture will create a relation, the post-relation re-eval below owns the single LLM run — defer the LLM schedule at create time (relation-blind, race-prone otherwise); plain captures omit the flag. WP-688 S4: requires BOTH --link AND --link-type — a --link with no --link-type is refused (element 11) and never reaches the re-eval branch, so deferring there would strand llmStatus:'skipped' forever.
216
+ const willRelate = Boolean(options.link?.trim() && options.linkType);
217
+ const rawResult = await kernelCallWithSession('chain.createEntry', {
218
+ collectionSlug,
219
+ name: entryName,
220
+ // DEC-896 / BR-76: omit status — server resolves from governanceMode (Open→active, else draft).
221
+ // WP-456 E1 / TEN-2226: `--draft` opt-in forces 'draft' regardless of governanceMode.
222
+ // Omit entirely when absent so the default-path wire payload is byte-identical to today.
223
+ ...(options.draft ? { forceDraft: true } : {}),
224
+ data,
225
+ sessionId: session.sessionId,
226
+ createdBy: `agent:${session.sessionId}`,
227
+ // BET-240 E2: source provenance — pass through when provided
228
+ ...(options.sourceRef ? { sourceRef: options.sourceRef } : {}),
229
+ ...(options.sourceExcerpt ? { sourceExcerpt: options.sourceExcerpt } : {}),
230
+ ...(willRelate ? { deferLLMSchedule: true } : {}),
231
+ ...(options.ownerRole ? { ownerRoleEntryId: options.ownerRole } : {}), // WP-513 rung-2 override; WP-753 O1b: team derives server-side.
232
+ ...(options.entryType ? { canonicalKey: options.entryType } : {}), // WP-684 TASK-77 (E1.3): one-step typed create.
233
+ });
234
+ // WP-577 / TEN-2918 fallout: `pb capture` never sends `preview: true` above, so this
235
+ // never fires at runtime — but the declared return type is now honestly a union, so
236
+ // fail loudly rather than silently reading undefined preview-shaped fields below.
237
+ if (isPreviewCreateEntryResult(rawResult)) {
238
+ throw new CLIError('Unexpected preview response from chain.createEntry — pb capture never requests preview mode.', { code: ErrorCode.INTERNAL, category: 'internal' });
239
+ }
240
+ const result = rawResult;
241
+ entryId = result.entryId;
242
+ entryStatus = result.status;
243
+ warnings = result.warnings;
244
+ normalization = result.normalization;
245
+ qualityHints = result.qualityHints ?? [];
246
+ spineFloor = result.spineFloor;
247
+ relationSuggestions = result.relationSuggestions;
248
+ coaching = result.coaching;
176
249
  }
177
- // WP-475 E1 (deterministic --link fix): when this capture will create a relation, the post-relation re-eval below owns the single LLM run — defer the LLM schedule at create time (relation-blind, race-prone otherwise); plain captures omit the flag. WP-688 S4: requires BOTH --link AND --link-type — a --link with no --link-type is refused (element 11) and never reaches the re-eval branch, so deferring there would strand llmStatus:'skipped' forever.
178
- const willRelate = Boolean(options.link?.trim() && options.linkType);
179
- const rawResult = await kernelCallWithSession('chain.createEntry', {
180
- collectionSlug,
181
- name: entryName,
182
- // DEC-896 / BR-76: omit status — server resolves from governanceMode (Open→active, else draft).
183
- // WP-456 E1 / TEN-2226: `--draft` opt-in forces 'draft' regardless of governanceMode.
184
- // Omit entirely when absent so the default-path wire payload is byte-identical to today.
185
- ...(options.draft ? { forceDraft: true } : {}),
186
- data,
187
- sessionId: session.sessionId,
188
- createdBy: `agent:${session.sessionId}`,
189
- // BET-240 E2: source provenance — pass through when provided
190
- ...(options.sourceRef ? { sourceRef: options.sourceRef } : {}),
191
- ...(options.sourceExcerpt ? { sourceExcerpt: options.sourceExcerpt } : {}),
192
- ...(willRelate ? { deferLLMSchedule: true } : {}),
193
- ...(options.ownerRole ? { ownerRoleEntryId: options.ownerRole } : {}), // WP-513 rung-2 override; WP-753 O1b: team derives server-side.
194
- ...(options.entryType ? { canonicalKey: options.entryType } : {}), // WP-684 TASK-77 (E1.3): one-step typed create.
195
- });
196
- // WP-577 / TEN-2918 fallout: `pb capture` never sends `preview: true` above, so this
197
- // never fires at runtime — but the declared return type is now honestly a union, so
198
- // fail loudly rather than silently reading undefined preview-shaped fields below.
199
- if (isPreviewCreateEntryResult(rawResult)) {
200
- throw new CLIError('Unexpected preview response from chain.createEntry — pb capture never requests preview mode.', { code: ErrorCode.INTERNAL, category: 'internal' });
201
- }
202
- const result = rawResult;
203
- // Track in session state
204
- addCapturedEntry(result.entryId);
250
+ // Track in session state — a version write is still a capture this session touched.
251
+ addCapturedEntry(entryId);
205
252
  // WP-319 S3 / WP-755 C1a: Record grounding outcome for observability (STD-155, done-when 5).
206
253
  // Fire-and-forget — never block capture (TEN-2924: no retry, its timer would hold the loop).
207
254
  // hadGovernance is always false post-C1a: the old suggestLinksForCapture route's per-candidate
208
255
  // governed-collection severity (block/warn/inform) has no equivalent in the new door — a cited
209
- // narrowing (see captureGrounding.ts's header), not a silent drop.
210
- if (!skipGrounding && groundingStart > 0) {
256
+ // narrowing (see captureGrounding.ts's header), not a silent drop. Version already fired its
257
+ // own call (inside runVersionCapture) — never double-record.
258
+ if (!versionVerdict && !skipGrounding && groundingStart > 0) {
211
259
  void kernelCallWithSession('chain.recordGroundingOutcome', {
212
260
  surface: 'cli',
213
- // Fix round 3: mirrors --strict's own gate (ask || version, since fix round 2 item 2) —
214
- // MCP reports the same pair (smart-capture.ts) so the grounding-health read model isn't
215
- // fed two different definitions of "a prompt-worthy match" from its two connectors.
216
- promptShown: groundingResult?.kind === 'ask' || groundingResult?.kind === 'version',
261
+ promptShown: groundingResult?.kind === 'ask',
217
262
  highestRatio: highestVerdictScore(groundingResult),
218
263
  hadGovernance: false,
219
264
  grounding_ms: groundingElapsed,
220
265
  }, { retryOnRateLimit: false }).catch(() => undefined);
221
266
  }
222
- // WP-301 S4: Activation ceremony — show contextual retrieval after first capture
223
- if (!json) {
267
+ // WP-301 S4: Activation ceremony — show contextual retrieval after first capture. Create only:
268
+ // a version write edits an already-accepted entry, never a "first capture".
269
+ if (!json && !versionVerdict) {
224
270
  try {
225
- const activation = await checkActivation(result.entryId);
271
+ const activation = await checkActivation(entryId);
226
272
  if (activation?.isFirst && activation.relatedEntries.length > 0) {
227
273
  process.stdout.write('\n Your first capture is on the Chain. Here\'s how it connects:\n');
228
274
  for (const rel of activation.relatedEntries.slice(0, 3)) {
229
- process.stdout.write(` \u2192 ${rel.entryId}: ${rel.name} (${rel.relation})\n`);
275
+ process.stdout.write(` → ${rel.entryId}: ${rel.name} (${rel.relation})\n`);
230
276
  }
231
277
  process.stdout.write('\n');
232
278
  }
@@ -238,114 +284,24 @@ export async function runCapture(options) {
238
284
  // Activation is additive — never blocks capture
239
285
  }
240
286
  }
241
- // BET-272 S3: Advisory quality hints — from createEntryWithClassification result (BR-144)
242
- const qualityHints = result.qualityHints ?? [];
243
- // WP-745 TASK-160 (DEC-1683): server's OWN verdict — cast, not a widened server type, to stay inside this slice's file cap.
244
- const spineFloor = result.spineFloor;
245
- // Phase 3: Link to existing entry if --link provided (TEN-705). WP-475 E1 fix: the
246
- // create-response verdict predates this relation, so relation-dependent rubric criteria
247
- // read falsely-failed; re-run AFTER the relation lands and render THAT verdict.
248
- // Fail-open (BR-144): a re-eval failure keeps the create-response verdict.
249
- let coaching = result.coaching;
250
- // WP-688 S4 (TASK-105, element 11): what was ACTUALLY written — never guessed, never
251
- // defaulted. Both stay undefined unless the relation call below genuinely succeeds.
252
- let actualLinkedTo;
253
- let actualRelationType;
254
- // Deferred, not thrown here: the capture itself already succeeded above — only the LINK
255
- // is refused, so the normal receipt/JSON output below must still render first.
256
- let linkTypeRefusal = null;
257
- if (options.link !== undefined) { // bcRpJQ: not `if (options.link)` — "" is falsy, would skip this block
258
- const linkTarget = options.link.trim();
259
- if (!linkTarget) {
260
- // bcRUML/bcRpJQ: an empty or whitespace-only --link must not silently no-op.
261
- linkTypeRefusal = new CLIError('--link requires a non-empty entry ID.', { code: ErrorCode.VALIDATION_FAILED, category: 'validation', guidance: `${result.entryId} was captured — only the link was refused. Re-run with a valid --link <entry-id>.` });
262
- }
263
- else if (!options.linkType) {
264
- // No default, ever (element 11). Legal verbs = the workspace type row's declared valid_relation_types
265
- // (matched like loadTypeMap: data.canonical_key, never a guessed entryId), filtered to what `pb relate` can create (bdB5K, cQFZ_).
266
- let declaredTypes;
267
- let targetMissing = false;
268
- try {
269
- const [created, target] = await Promise.all([
270
- kernelCallWithSession('chain.getEntry', { entryId: result.entryId }),
271
- kernelCallWithSession('chain.getEntry', { entryId: linkTarget }),
272
- ]);
273
- targetMissing = target === null; // bcRUMR: never recommend `pb relate ... <missing-id>`
274
- const canonicalKey = created?.canonicalKey;
275
- if (canonicalKey) {
276
- const typeRows = await kernelCallWithSession('chain.listEntries', { collectionSlug: 'semantic-types' });
277
- declaredTypes = resolveCreatableRelationTypes(typeRows, canonicalKey, target?.canonicalKey === 'domain');
278
- }
279
- }
280
- catch {
281
- // Advisory read only — a failure here still refuses the link, just without the list.
282
- }
283
- const verbHint = declaredTypes && declaredTypes.length > 0 ? `Legal relation types for this entry: ${declaredTypes.join(', ')}.` : `No relation types are declared valid for this entry's type.`;
284
- linkTypeRefusal = new CLIError(`--link requires --link-type — no default is written. ${verbHint}`, {
285
- code: ErrorCode.VALIDATION_FAILED,
286
- category: 'validation',
287
- guidance: targetMissing
288
- ? `${result.entryId} was captured — the link was refused, and target "${linkTarget}" was not found. Verify the target entry ID.`
289
- : `${result.entryId} was captured — only the link was refused. Re-run: pb relate ${result.entryId} <verb> ${linkTarget}`,
290
- });
291
- }
292
- else {
293
- const relationType = options.linkType;
294
- let relationWritten = false;
295
- let relateErr;
296
- try {
297
- const relateResult = await kernelCallWithSession('chain.createEntryRelation', {
298
- fromEntryId: result.entryId, toEntryId: linkTarget, type: relationType,
299
- });
300
- // relationId is the ONLY "a row was inserted" marker (relations.ts:94-291) — a proposal diversion or the DEC-1399 auto-link gate return WITHOUT one.
301
- relationWritten = Boolean(relateResult?.relationId);
302
- if (relationWritten) {
303
- actualLinkedTo = linkTarget;
304
- actualRelationType = relationType;
305
- }
306
- }
307
- catch (err) { // WP-745 review: a relate-door refusal must not escape uncaught — result.entryId above was ALREADY persisted.
308
- relateErr = err;
309
- }
310
- // WP-745 round 3 (PRRT_kwDORS4ils6hz0vD): re-eval runs regardless of relate outcome — un-defers deferLLMSchedule; a refused link must not leave llmStatus:'skipped' forever. Diverted/refused verdicts are still discarded below.
311
- try {
312
- const reEval = await kernelCallWithSession('quality.evaluateHeuristicAndSchedule', { entryId: result.entryId, context: 'capture' });
313
- if (relationWritten && reEval?.verdict)
314
- coaching = reEval;
315
- }
316
- catch {
317
- // Advisory — keep the pre-relation verdict rather than fail the capture.
318
- }
319
- if (relateErr instanceof CLIError && relateErr.code === ErrorCode.NETWORK_TIMEOUT) {
320
- // WP-745 round 3 (PRRT_...h0VPP): NETWORK_TIMEOUT is outcome-UNKNOWN, not a refusal (the relate call may have landed server-side) — never buried under a contradictory blind-retry claim.
321
- linkTypeRefusal = new CLIError(relateErr.message, { code: relateErr.code, category: relateErr.category, guidance: `${result.entryId} was captured. The link's outcome is UNKNOWN (not refused) — check before retrying: pb get ${result.entryId}. ${relateErr.guidance ?? ''}` });
322
- }
323
- else if (relateErr instanceof CLIError && relateErr.code !== ErrorCode.VALIDATION_FAILED) {
324
- // WP-745 round 3 (PRRT_...h0CCc): preserve a real CLIError/McpError's own code/category (auth, rate limit) — only REL-LEGAL-2 VALIDATION (or a non-CLIError) gets the generic "was refused, re-run" guidance below.
325
- const guidance = `${result.entryId} was captured — only the link was refused. Re-run: pb relate ${result.entryId} <verb> ${linkTarget}`;
326
- linkTypeRefusal = new CLIError(relateErr.message, { code: relateErr.code, category: relateErr.category, guidance: relateErr.guidance ? `${guidance} (${relateErr.guidance})` : guidance });
327
- }
328
- else if (relateErr !== undefined) {
329
- linkTypeRefusal = new CLIError(relateErr instanceof Error ? relateErr.message : String(relateErr), { code: ErrorCode.VALIDATION_FAILED, category: 'validation', guidance: `${result.entryId} was captured — only the link was refused. Re-run: pb relate ${result.entryId} <verb> ${linkTarget}` });
330
- }
331
- }
332
- }
287
+ // Phase 3: Link to existing entry if --link provided (TEN-705) — applies to a version write
288
+ // the same as a create; entryId names whichever entry this run actually wrote (the created
289
+ // draft, or the version's target). Extracted to captureLink.ts (500-LOC budget, STD-2/DEC-1504).
290
+ const linkResult = await applyCaptureLink({ entryId, link: options.link, linkType: options.linkType, coaching });
291
+ const actualLinkedTo = linkResult.actualLinkedTo;
292
+ const actualRelationType = linkResult.actualRelationType;
293
+ const linkTypeRefusal = linkResult.linkTypeRefusal;
294
+ coaching = linkResult.coaching;
333
295
  // BET-271 S1: Determine if any fields were rejected by normalization.
334
- // `chain.createEntry`'s server return declares `normalization: Record<string, unknown> |
335
- // null` (looser than this file's consumption shape — same documented residual as
336
- // packages/mcp-server/src/tools/smart-capture.ts, PR #397/#398, Lane C S3b/S3c).
337
- const normalization = result.normalization;
338
296
  const rejectedFields = normalization?.rejected ?? [];
339
297
  const hasRejected = rejectedFields.length > 0;
340
298
  // Output
341
299
  if (json) {
342
- // Machine-readable output (TEN-709, DEC-299)
343
- const output = {
344
- id: result.entryId,
345
- collection: collectionSlug,
346
- status: result.status,
347
- confidence: classification?.tier ?? 'explicit',
348
- };
300
+ // Machine-readable output (TEN-709, DEC-299). Version's shape is intentionally smaller
301
+ // (no classification/confidence — the target's collection was never classified this run).
302
+ const output = versionVerdict
303
+ ? { id: entryId, collection: versionVerdict.collectionSlug, kind: 'version' }
304
+ : { id: entryId, collection: collectionSlug, status: entryStatus, confidence: classification?.tier ?? 'explicit' };
349
305
  if (hasRejected) {
350
306
  output.fieldsRejected = true;
351
307
  }
@@ -363,20 +319,32 @@ export async function runCapture(options) {
363
319
  output.spineFloor = spineFloor;
364
320
  process.stdout.write(JSON.stringify(output) + '\n');
365
321
  }
322
+ else if (versionVerdict) {
323
+ // WP-755 C2: a distinct, concise receipt — entry id + name from the verdict, never the
324
+ // create-shaped formatCaptureReceipt (classification/confidence don't apply to an edit of
325
+ // an already-accepted entry). stdout carries the raw entry id (scripting contract, mirrors
326
+ // `pb capture ... | xargs pb get`).
327
+ process.stderr.write(` Saved as a new version of ${entryId} "${receiptName}".\n`);
328
+ if (warnings.length > 0)
329
+ process.stderr.write(` Warnings: ${warnings.join('; ')}\n`);
330
+ if (actualLinkedTo)
331
+ process.stderr.write(` Linked to ${actualLinkedTo} (${actualRelationType}).\n`);
332
+ process.stdout.write(`${entryId}\n`);
333
+ }
366
334
  else {
367
335
  process.stdout.write('\n');
368
336
  process.stdout.write(formatCaptureReceipt({
369
- entryId: result.entryId,
337
+ entryId,
370
338
  name: entryName,
371
339
  collection: collectionSlug,
372
- status: result.status,
340
+ status: entryStatus, // always set in the create branch above (result.status) — only the version branch leaves it undefined, and that branch never reaches here.
373
341
  classification,
374
- warnings: result.warnings,
342
+ warnings,
375
343
  normalization: normalization ?? undefined,
376
344
  linkedTo: actualLinkedTo,
377
345
  relationType: actualRelationType,
378
346
  qualityHints,
379
- relationSuggestions: result.relationSuggestions,
347
+ relationSuggestions,
380
348
  coaching,
381
349
  spineFloor,
382
350
  }) + '\n');
@@ -386,18 +354,21 @@ export async function runCapture(options) {
386
354
  // NETWORK_TIMEOUT/rate-limit/auth failure preserved earlier in this file) rather than always
387
355
  // relabeling the combined error VALIDATION_FAILED, which discarded that signal exactly when
388
356
  // both partial failures land together.
357
+ // A version write's fields were validated against the TARGET's own collection, never the
358
+ // capture's classified one (they can differ — decide() matches across every collection).
359
+ const fieldsGuidanceCollection = versionVerdict ? versionVerdict.collectionSlug : collectionSlug;
389
360
  if (hasRejected && linkTypeRefusal) {
390
361
  throw new CLIError(`Fields rejected: ${rejectedFields.join(', ')}. ${linkTypeRefusal.message}`, {
391
362
  code: linkTypeRefusal.code,
392
363
  category: linkTypeRefusal.category,
393
- guidance: `Run \`pb fields ${collectionSlug}\` to see valid fields. ${linkTypeRefusal.guidance ?? ''}`,
364
+ guidance: `Run \`pb fields ${fieldsGuidanceCollection}\` to see valid fields. ${linkTypeRefusal.guidance ?? ''}`,
394
365
  });
395
366
  }
396
367
  if (hasRejected) {
397
368
  throw new CLIError(`Fields rejected: ${rejectedFields.join(', ')}.`, {
398
369
  code: ErrorCode.VALIDATION_FAILED,
399
370
  category: 'validation',
400
- guidance: `Run \`pb fields ${collectionSlug}\` to see valid fields.`,
371
+ guidance: `Run \`pb fields ${fieldsGuidanceCollection}\` to see valid fields.`,
401
372
  });
402
373
  }
403
374
  // WP-688 S4 (element 11): --link without --link-type — refuses non-zero identically in
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"captureGrounding.d.ts","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;AAMvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAO3I;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,CAO1E;AAID,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAkClE;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,IAAI,CA+BN;AAED,mFAAmF;AACnF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhE"}
1
+ {"version":3,"file":"captureGrounding.d.ts","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;AAMvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAO3I;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,CAO1E;AAID,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA8BlE;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,IAAI,CAiCN;AAED,mFAAmF;AACnF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhE"}
@@ -32,14 +32,13 @@ export function highestVerdictScore(verdict) {
32
32
  /** Print advisory verdict banner; suppress only complete checks with no matches. */
33
33
  export function printGroundingBanner(verdict) {
34
34
  const coverageNote = groundingCoverageNote(verdict);
35
- if (verdict.kind === 'version') {
36
- // The WRITE still names the id only (C2, TASK-216) — but name/collectionSlug are
37
- // descriptive data the door already has (fix round 2), so the banner renders them the
38
- // same way the ask/create_and_link paths already do, not a bare id (fix round 3, item 3).
39
- const note = coverageNote ? `\n ${coverageNote}` : '';
40
- process.stderr.write(`\n ⚠ This looks like an edit of ${verdict.entryId} "${verdict.name}" (${Math.round(verdict.score * 100)}% match). Versioning lands in C2 — creating a new entry for now.${note}\n\n`);
35
+ // WP-755 C2 (TASK-216, DEC-1717): "an edit versions without a question" — no banner for
36
+ // version any more (capture.ts's own version branch prints its own "Saving as a new
37
+ // version of…" progress line and receipt instead). This function's caller (capture.ts)
38
+ // still calls it unconditionally before branching on kind, so the no-op stays here rather
39
+ // than moving the guard to every call site.
40
+ if (verdict.kind === 'version')
41
41
  return;
42
- }
43
42
  if (verdict.kind === 'ask') {
44
43
  const items = verdict.candidates.slice(0, 3).map((c) => `${c.entryId} "${c.name}"`).join(', ');
45
44
  const note = coverageNote ? `\n ${coverageNote}` : '';
@@ -72,8 +71,10 @@ export function printGroundingPreview(verdict, entryName, collectionSlug) {
72
71
  if (coverageNote)
73
72
  process.stdout.write(` ${coverageNote}\n\n`);
74
73
  if (verdict.kind === 'version') {
74
+ // WP-755 C2 (TASK-216, DEC-1717): accurate now — running without --suggest-only versions
75
+ // silently (no question), it does not create a new entry.
75
76
  process.stdout.write(` Looks like an edit of ${verdict.entryId} "${verdict.name}" (${Math.round(verdict.score * 100)}% match).\n`);
76
- process.stdout.write(' Versioning lands in C2 — this preview would create a new entry for now.\n\n');
77
+ process.stdout.write(' Run without --suggest-only to save this as a new version — no new entry is created.\n\n');
77
78
  return;
78
79
  }
79
80
  if (verdict.kind === 'ask' || verdict.kind === 'create_and_link') {
@@ -1 +1 @@
1
- {"version":3,"file":"captureGrounding.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captureGrounding.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.ts"],"names":[],"mappings":"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"}
@@ -48,21 +48,24 @@ describe('capture grounding completeness (WP-755 C1a)', () => {
48
48
  });
49
49
  });
50
50
  describe('capture verdict rendering (WP-755 C1a four verdicts)', () => {
51
- it('version names only the id for the WRITE (deferred to C2), but the banner renders entryId + name (fix round 4, item B)', () => {
51
+ // WP-755 C2 (TASK-216, DEC-1717): "an edit versions without a question" — the real (non
52
+ // --suggest-only) path prints no banner at all for a version verdict any more; capture.ts's
53
+ // own version branch (captureVersion.ts's runVersionCapture) prints its own progress/receipt
54
+ // lines instead. This is a live-walk-found fix (PR #982 round 2): the banner still said
55
+ // "Versioning lands in C2 — creating a new entry for now" after C2 landed.
56
+ it('version prints NO banner — the write is silent, capture.ts owns its own progress line', () => {
52
57
  const output = vi.spyOn(process.stderr, 'write').mockReturnValue(true);
53
58
  printGroundingBanner({ kind: 'version', entryId: 'DEC-42', score: 0.95, name: 'An existing decision', collectionSlug: 'decisions', docId: 'doc-42', scanTruncated: false });
54
- const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
55
- expect(text).toContain('DEC-42');
56
- expect(text).toContain('An existing decision');
57
- expect(text).toContain('Versioning lands in C2');
59
+ expect(output).not.toHaveBeenCalled();
58
60
  });
59
- it('version --suggest-only preview also renders entryId + name, not a bare id (fix round 4, item B)', () => {
61
+ it('version --suggest-only preview renders entryId + name and accurately describes the real run as a silent version write, not a create', () => {
60
62
  const output = vi.spyOn(process.stdout, 'write').mockReturnValue(true);
61
63
  printGroundingPreview({ kind: 'version', entryId: 'DEC-42', score: 0.95, name: 'An existing decision', collectionSlug: 'decisions', docId: 'doc-42', scanTruncated: false }, 'A near-duplicate capture', 'decisions');
62
64
  const text = output.mock.calls.map(([chunk]) => String(chunk)).join('');
63
65
  expect(text).toContain('DEC-42');
64
66
  expect(text).toContain('An existing decision');
65
- expect(text).toContain('Versioning lands in C2');
67
+ expect(text).toContain('save this as a new version');
68
+ expect(text).not.toContain('creating a new entry');
66
69
  });
67
70
  it('ask surfaces candidates for confirmation before creating', () => {
68
71
  const output = vi.spyOn(process.stderr, 'write').mockReturnValue(true);