@productbrain/cli 0.1.0-beta.6459 → 0.1.0-beta.6464

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.
@@ -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);
@@ -1 +1 @@
1
- {"version":3,"file":"captureGrounding.test.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captureGrounding.test.js","sourceRoot":"","sources":["../../src/lib/captureGrounding.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CoachingResult } from '../formatters/coaching.js';
2
+ import { CLIError } from './errors.js';
3
+ export interface CaptureLinkParams {
4
+ entryId: string;
5
+ link: string | undefined;
6
+ linkType: string | undefined;
7
+ /** The pre-relation coaching verdict — the post-relation re-eval below overwrites it only
8
+ * on a genuinely written relation (fail-open on a re-eval failure keeps this one). */
9
+ coaching: CoachingResult | null | undefined;
10
+ }
11
+ export interface CaptureLinkResult {
12
+ actualLinkedTo: string | undefined;
13
+ actualRelationType: string | undefined;
14
+ linkTypeRefusal: CLIError | null;
15
+ coaching: CoachingResult | null | undefined;
16
+ }
17
+ /**
18
+ * WP-475 E1 fix: the pre-relation verdict predates this relation, so relation-dependent rubric
19
+ * criteria read falsely-failed; re-run AFTER the relation lands and render THAT verdict.
20
+ * Fail-open (BR-144): a re-eval failure keeps the pre-relation verdict. WP-688 S4 (TASK-105,
21
+ * element 11): what was ACTUALLY written — never guessed, never defaulted; `--link` without
22
+ * `--link-type` is refused with no default, ever, and the refusal is DEFERRED (returned, not
23
+ * thrown) so the caller can still render the successful capture/version receipt first.
24
+ */
25
+ export declare function applyCaptureLink(params: CaptureLinkParams): Promise<CaptureLinkResult>;
26
+ //# sourceMappingURL=captureLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureLink.d.ts","sourceRoot":"","sources":["../../src/lib/captureLink.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;2FACuF;IACvF,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmF5F"}
@@ -0,0 +1,96 @@
1
+ import { kernelCallWithSession } from './client.js';
2
+ import { CLIError, ErrorCode } from './errors.js';
3
+ import { resolveCreatableRelationTypes } from './legalRelationTypes.js';
4
+ /**
5
+ * WP-475 E1 fix: the pre-relation verdict predates this relation, so relation-dependent rubric
6
+ * criteria read falsely-failed; re-run AFTER the relation lands and render THAT verdict.
7
+ * Fail-open (BR-144): a re-eval failure keeps the pre-relation verdict. WP-688 S4 (TASK-105,
8
+ * element 11): what was ACTUALLY written — never guessed, never defaulted; `--link` without
9
+ * `--link-type` is refused with no default, ever, and the refusal is DEFERRED (returned, not
10
+ * thrown) so the caller can still render the successful capture/version receipt first.
11
+ */
12
+ export async function applyCaptureLink(params) {
13
+ const { entryId, link, linkType } = params;
14
+ let actualLinkedTo;
15
+ let actualRelationType;
16
+ let linkTypeRefusal = null;
17
+ let coaching = params.coaching;
18
+ if (link === undefined)
19
+ return { actualLinkedTo, actualRelationType, linkTypeRefusal, coaching };
20
+ const linkTarget = link.trim();
21
+ if (!linkTarget) {
22
+ // bcRUML/bcRpJQ: an empty or whitespace-only --link must not silently no-op.
23
+ linkTypeRefusal = new CLIError('--link requires a non-empty entry ID.', { code: ErrorCode.VALIDATION_FAILED, category: 'validation', guidance: `${entryId} was captured — only the link was refused. Re-run with a valid --link <entry-id>.` });
24
+ }
25
+ else if (!linkType) {
26
+ // No default, ever (element 11). Legal verbs = the workspace type row's declared valid_relation_types
27
+ // (matched like loadTypeMap: data.canonical_key, never a guessed entryId), filtered to what `pb relate` can create (bdB5K, cQFZ_).
28
+ let declaredTypes;
29
+ let targetMissing = false;
30
+ try {
31
+ const [created, target] = await Promise.all([
32
+ kernelCallWithSession('chain.getEntry', { entryId }),
33
+ kernelCallWithSession('chain.getEntry', { entryId: linkTarget }),
34
+ ]);
35
+ targetMissing = target === null; // bcRUMR: never recommend `pb relate ... <missing-id>`
36
+ const canonicalKey = created?.canonicalKey;
37
+ if (canonicalKey) {
38
+ const typeRows = await kernelCallWithSession('chain.listEntries', { collectionSlug: 'semantic-types' });
39
+ declaredTypes = resolveCreatableRelationTypes(typeRows, canonicalKey, target?.canonicalKey === 'domain');
40
+ }
41
+ }
42
+ catch {
43
+ // Advisory read only — a failure here still refuses the link, just without the list.
44
+ }
45
+ 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.`;
46
+ linkTypeRefusal = new CLIError(`--link requires --link-type — no default is written. ${verbHint}`, {
47
+ code: ErrorCode.VALIDATION_FAILED,
48
+ category: 'validation',
49
+ guidance: targetMissing
50
+ ? `${entryId} was captured — the link was refused, and target "${linkTarget}" was not found. Verify the target entry ID.`
51
+ : `${entryId} was captured — only the link was refused. Re-run: pb relate ${entryId} <verb> ${linkTarget}`,
52
+ });
53
+ }
54
+ else {
55
+ const relationType = linkType;
56
+ let relationWritten = false;
57
+ let relateErr;
58
+ try {
59
+ const relateResult = await kernelCallWithSession('chain.createEntryRelation', {
60
+ fromEntryId: entryId, toEntryId: linkTarget, type: relationType,
61
+ });
62
+ // 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.
63
+ relationWritten = Boolean(relateResult?.relationId);
64
+ if (relationWritten) {
65
+ actualLinkedTo = linkTarget;
66
+ actualRelationType = relationType;
67
+ }
68
+ }
69
+ catch (err) { // WP-745 review: a relate-door refusal must not escape uncaught — entryId above was ALREADY written.
70
+ relateErr = err;
71
+ }
72
+ // 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.
73
+ try {
74
+ const reEval = await kernelCallWithSession('quality.evaluateHeuristicAndSchedule', { entryId, context: 'capture' });
75
+ if (relationWritten && reEval?.verdict)
76
+ coaching = reEval;
77
+ }
78
+ catch {
79
+ // Advisory — keep the pre-relation verdict rather than fail the capture.
80
+ }
81
+ if (relateErr instanceof CLIError && relateErr.code === ErrorCode.NETWORK_TIMEOUT) {
82
+ // 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.
83
+ linkTypeRefusal = new CLIError(relateErr.message, { code: relateErr.code, category: relateErr.category, guidance: `${entryId} was captured. The link's outcome is UNKNOWN (not refused) — check before retrying: pb get ${entryId}. ${relateErr.guidance ?? ''}` });
84
+ }
85
+ else if (relateErr instanceof CLIError && relateErr.code !== ErrorCode.VALIDATION_FAILED) {
86
+ // 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.
87
+ const guidance = `${entryId} was captured — only the link was refused. Re-run: pb relate ${entryId} <verb> ${linkTarget}`;
88
+ linkTypeRefusal = new CLIError(relateErr.message, { code: relateErr.code, category: relateErr.category, guidance: relateErr.guidance ? `${guidance} (${relateErr.guidance})` : guidance });
89
+ }
90
+ else if (relateErr !== undefined) {
91
+ linkTypeRefusal = new CLIError(relateErr instanceof Error ? relateErr.message : String(relateErr), { code: ErrorCode.VALIDATION_FAILED, category: 'validation', guidance: `${entryId} was captured — only the link was refused. Re-run: pb relate ${entryId} <verb> ${linkTarget}` });
92
+ }
93
+ }
94
+ return { actualLinkedTo, actualRelationType, linkTypeRefusal, coaching };
95
+ }
96
+ //# sourceMappingURL=captureLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureLink.js","sourceRoot":"","sources":["../../src/lib/captureLink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type CaptureVerdict } from './captureGrounding.js';
2
+ export interface VersionCaptureParams {
3
+ groundingResult: Extract<CaptureVerdict, {
4
+ kind: 'version';
5
+ }>;
6
+ /** A REAL title only — omit when the capture has none. Never a placeholder (kernel/capture/
7
+ * versionWrite.ts's own contract: passing one would rename the target to it). */
8
+ name?: string;
9
+ prose: string;
10
+ /** --field key=value, already parsed. */
11
+ fields?: Record<string, unknown>;
12
+ sourceRef?: string;
13
+ sourceExcerpt?: string;
14
+ sessionId: string;
15
+ skipGrounding: boolean;
16
+ groundingStart: number;
17
+ groundingElapsed: number;
18
+ }
19
+ export interface VersionCaptureResult {
20
+ entryId: string;
21
+ name: string;
22
+ warnings: string[];
23
+ normalization: {
24
+ remapped: Record<string, string>;
25
+ rejected: string[];
26
+ accepted: string[];
27
+ } | null | undefined;
28
+ }
29
+ /**
30
+ * Runs the version-verdict write. Throws a CLIError on refusal (delegation / organisational-
31
+ * authority — returned, not thrown, by the door itself; requirePermission's ownership gate
32
+ * throws directly) or NOT_FOUND (an unresolvable target, e.g. deleted/cross-workspace — fails
33
+ * closed, no fallback create; a re-run re-decides against the current candidate pool). No
34
+ * proposal is created on refusal — TEN-3687 already records updateEntry's missing
35
+ * propose_change branch; C2 does not add a second decision site.
36
+ */
37
+ export declare function runVersionCapture(params: VersionCaptureParams): Promise<VersionCaptureResult>;
38
+ //# sourceMappingURL=captureVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureVersion.d.ts","sourceRoot":"","sources":["../../src/lib/captureVersion.ts"],"names":[],"mappings":"AAcA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC9D;sFACkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CAChH;AAwBD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyCnG"}
@@ -0,0 +1,73 @@
1
+ import { kernelCallWithSession } from './client.js';
2
+ import { CLIError, ErrorCode } from './errors.js';
3
+ import { buildVersionPatch, readVersionWriteOutcome } from './versionWrite.js';
4
+ import { highestVerdictScore } from './captureGrounding.js';
5
+ /** The TARGET entry's collection prose key — never the CAPTURE's chosen collection (decide()
6
+ * matches across every collection, so the target can be in a different one). chain.updateEntry
7
+ * merges `data` verbatim; it does not remap a write onto the target's real field the way
8
+ * createEntry's own TEN-1258 remap does for a brand-new entry — this resolution is the only
9
+ * thing standing between a captured prose body and the wrong field. Fail-open to 'description'
10
+ * only when the fetch itself fails, same posture as capture.ts's own WHY-contract fetch. */
11
+ async function resolveTargetProseKey(collectionSlug) {
12
+ try {
13
+ const contract = await kernelCallWithSession('chain.getCollectionFields', { slug: collectionSlug });
14
+ return contract?.descriptionFieldKey ?? 'description';
15
+ }
16
+ catch {
17
+ return 'description';
18
+ }
19
+ }
20
+ function refusalGuidance(refusal) {
21
+ return refusal.requiredAction ?? 'Route this change to the accountable role, or run `pb get <id>` to see the entry\'s current state.';
22
+ }
23
+ /**
24
+ * Runs the version-verdict write. Throws a CLIError on refusal (delegation / organisational-
25
+ * authority — returned, not thrown, by the door itself; requirePermission's ownership gate
26
+ * throws directly) or NOT_FOUND (an unresolvable target, e.g. deleted/cross-workspace — fails
27
+ * closed, no fallback create; a re-run re-decides against the current candidate pool). No
28
+ * proposal is created on refusal — TEN-3687 already records updateEntry's missing
29
+ * propose_change branch; C2 does not add a second decision site.
30
+ */
31
+ export async function runVersionCapture(params) {
32
+ const { groundingResult, name, prose, fields, sourceRef, sourceExcerpt, sessionId, skipGrounding, groundingStart, groundingElapsed } = params;
33
+ const targetProseKey = await resolveTargetProseKey(groundingResult.collectionSlug);
34
+ const patch = buildVersionPatch({ capture: { name, prose, fields }, targetProseKey });
35
+ const rawResult = await kernelCallWithSession('chain.updateEntry', {
36
+ entryId: groundingResult.entryId,
37
+ ...patch,
38
+ autoPublish: true,
39
+ changeNote: 'Captured as a new version via CLI',
40
+ changedBy: `agent:${sessionId}`,
41
+ ...(sourceRef ? { sourceRef } : {}),
42
+ ...(sourceExcerpt ? { sourceExcerpt } : {}),
43
+ });
44
+ // WP-319 S3 / STD-155: same observability this verdict would have fed via the create path's
45
+ // own recordGroundingOutcome call — fires regardless of write outcome, matching that call's
46
+ // own best-effort, never-blocks posture.
47
+ if (!skipGrounding && groundingStart > 0) {
48
+ void kernelCallWithSession('chain.recordGroundingOutcome', {
49
+ surface: 'cli',
50
+ promptShown: false,
51
+ highestRatio: highestVerdictScore(groundingResult),
52
+ hadGovernance: false,
53
+ grounding_ms: groundingElapsed,
54
+ }, { retryOnRateLimit: false }).catch(() => undefined);
55
+ }
56
+ const outcome = readVersionWriteOutcome(rawResult);
57
+ if (!outcome.ok) {
58
+ const authorityRefusal = outcome.refusal.category === 'auth';
59
+ throw new CLIError(outcome.refusal.reason ?? `Version write on ${groundingResult.entryId} was refused.`, {
60
+ code: authorityRefusal ? ErrorCode.AUTH_DENIED : ErrorCode.VALIDATION_FAILED,
61
+ category: authorityRefusal ? 'auth' : 'validation',
62
+ guidance: refusalGuidance(outcome.refusal),
63
+ });
64
+ }
65
+ const typed = rawResult;
66
+ return {
67
+ entryId: groundingResult.entryId,
68
+ name: groundingResult.name,
69
+ warnings: typed.warnings ?? [],
70
+ normalization: typed.normalization,
71
+ };
72
+ }
73
+ //# sourceMappingURL=captureVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureVersion.js","sourceRoot":"","sources":["../../src/lib/captureVersion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * WP-755 C2 (TASK-216, DEC-1717) — the version-write mapping, shared across all three
3
+ * connectors via the existing embedded-copy generator (kernel/quality/spineVerdictRead.ts's
4
+ * own precedent — connectors never import kernel/ at runtime; generated copies do. Run
5
+ * `npm run mcp:embedded-copies` after editing this file). Pure: no Convex, no DB, no
6
+ * inference. The caller resolves the TARGET entry's prose field key (decisions→'rationale',
7
+ * glossary→'canonical', assumptions→'belief', else 'description'/'body' —
8
+ * convex/lib/proseField.ts's resolveProseFieldKey, or each connector's already-fetched
9
+ * collection profile) and supplies exactly the fields it would have sent to create. Nothing
10
+ * here infers a schema default, a date, or a full-collection replacement — a version write
11
+ * only ever touches what the capture explicitly named (contrast the reuse-draft/commit-retry
12
+ * UPDATE path, which legitimately does a full replacement because it owns the whole draft;
13
+ * a version write edits someone else's already-accepted entry and must not wipe the rest).
14
+ */
15
+ export interface VersionWriteCapture {
16
+ /** The capture's own explicit title, when the caller has a REAL one — omit (undefined)
17
+ * otherwise. Never pass a placeholder ('Untitled', ''): a version write must not rename
18
+ * the target to a placeholder just because the capture UI had no title yet. */
19
+ name?: string;
20
+ /** The capture's prose body, written to the TARGET's own prose field. */
21
+ prose: string;
22
+ /** Explicit structured fields the caller parsed (CLI's --field key=value / MCP's `data`
23
+ * passthrough) — never schema defaults, never inferred dates. */
24
+ fields?: Record<string, unknown>;
25
+ }
26
+ export interface VersionWritePatch {
27
+ name?: string;
28
+ data: Record<string, unknown>;
29
+ }
30
+ /** Build the `{name?, data}` patch chain.updateEntry / entries.update expects. An empty (or
31
+ * whitespace-only) prose body is never written — a capture with no real body text must not
32
+ * blank out the target's existing prose field. */
33
+ export declare function buildVersionPatch(params: {
34
+ capture: VersionWriteCapture;
35
+ targetProseKey: string;
36
+ }): VersionWritePatch;
37
+ /** The update door's structured refusal shape — the union of every branch that can produce
38
+ * one (delegation, organisational-authority, coherency). Fields are all optional because no
39
+ * single branch sets every one; render only what is present, never assume a shape. */
40
+ export interface VersionWriteRefusal {
41
+ code?: string;
42
+ reason?: string;
43
+ category?: string;
44
+ requiredAction?: string;
45
+ disposition?: string;
46
+ overridable?: boolean;
47
+ mode?: string;
48
+ routes?: Record<string, unknown>;
49
+ }
50
+ export type VersionWriteOutcome = {
51
+ ok: true;
52
+ id: string;
53
+ } | {
54
+ ok: false;
55
+ refusal: VersionWriteRefusal;
56
+ };
57
+ /**
58
+ * Read chain.updateEntry's (or api.entries.update's) return. A refusal is signalled by
59
+ * RETURN VALUE (`{outcome:'refused', refusal}`) for delegation and organisational-authority
60
+ * denials — NOT always a throw (only the ownership/stratum gate, requirePermission, throws).
61
+ * A caller that reads `.id` without checking `outcome` first silently renders
62
+ * "Saved as a new version of undefined" on a refused write that returned 200.
63
+ */
64
+ export declare function readVersionWriteOutcome(result: unknown): VersionWriteOutcome;
65
+ //# sourceMappingURL=versionWrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionWrite.d.ts","sourceRoot":"","sources":["../../src/lib/versionWrite.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,mBAAmB;IACnC;;oFAEgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd;sEACkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;mDAEmD;AACnD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACvB,GAAG,iBAAiB,CAKpB;AAED;;uFAEuF;AACvF,MAAM,WAAW,mBAAmB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,mBAAmB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,CAW5E"}
@@ -0,0 +1,32 @@
1
+ // GENERATED by scripts/generate-mcp-embedded-copies.mjs from kernel/capture/versionWrite.ts.
2
+ // DO NOT EDIT. Run `npm run mcp:embedded-copies` to regenerate.
3
+ // Local runtime copy for the isolated connector build.
4
+ /** Build the `{name?, data}` patch chain.updateEntry / entries.update expects. An empty (or
5
+ * whitespace-only) prose body is never written — a capture with no real body text must not
6
+ * blank out the target's existing prose field. */
7
+ export function buildVersionPatch(params) {
8
+ const { capture, targetProseKey } = params;
9
+ const data = { ...(capture.fields ?? {}) };
10
+ if (capture.prose.trim())
11
+ data[targetProseKey] = capture.prose;
12
+ return capture.name ? { name: capture.name, data } : { data };
13
+ }
14
+ /**
15
+ * Read chain.updateEntry's (or api.entries.update's) return. A refusal is signalled by
16
+ * RETURN VALUE (`{outcome:'refused', refusal}`) for delegation and organisational-authority
17
+ * denials — NOT always a throw (only the ownership/stratum gate, requirePermission, throws).
18
+ * A caller that reads `.id` without checking `outcome` first silently renders
19
+ * "Saved as a new version of undefined" on a refused write that returned 200.
20
+ */
21
+ export function readVersionWriteOutcome(result) {
22
+ if (result && typeof result === 'object' && result.outcome === 'refused') {
23
+ const rawRefusal = result.refusal;
24
+ const refusal = rawRefusal && typeof rawRefusal === 'object' ? rawRefusal : { reason: 'The workspace refused this update.' };
25
+ return { ok: false, refusal };
26
+ }
27
+ if (result && typeof result === 'object' && typeof result.id === 'string') {
28
+ return { ok: true, id: result.id };
29
+ }
30
+ return { ok: false, refusal: { reason: 'The workspace refused this update.' } };
31
+ }
32
+ //# sourceMappingURL=versionWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionWrite.js","sourceRoot":"","sources":["../../src/lib/versionWrite.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,gEAAgE;AAChE,uDAAuD;AAkCvD;;mDAEmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,MAGjC;IACA,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,IAAI,GAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IACpE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAC/D,CAAC;AAoBD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAe;IACtD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAgC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACrG,MAAM,UAAU,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC7D,MAAM,OAAO,GACZ,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAE,UAAkC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;QACvI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAQ,MAA2B,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAG,MAAyB,CAAC,EAAE,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,oCAAoC,EAAE,EAAE,CAAC;AACjF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@productbrain/cli",
3
- "version": "0.1.0-beta.6459",
3
+ "version": "0.1.0-beta.6464",
4
4
  "description": "Product Brain — Chain knowledge and write-back CLI",
5
5
  "type": "module",
6
6
  "bin": {