@productbrain/cli 0.1.0-beta.6459 → 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.
- package/dist/__tests__/capture.test.js +127 -12
- package/dist/__tests__/capture.test.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +159 -188
- package/dist/commands/capture.js.map +1 -1
- package/dist/lib/captureGrounding.d.ts.map +1 -1
- package/dist/lib/captureGrounding.js +9 -8
- package/dist/lib/captureGrounding.js.map +1 -1
- package/dist/lib/captureGrounding.test.js +10 -7
- package/dist/lib/captureGrounding.test.js.map +1 -1
- package/dist/lib/captureLink.d.ts +26 -0
- package/dist/lib/captureLink.d.ts.map +1 -0
- package/dist/lib/captureLink.js +96 -0
- package/dist/lib/captureLink.js.map +1 -0
- package/dist/lib/captureVersion.d.ts +38 -0
- package/dist/lib/captureVersion.d.ts.map +1 -0
- package/dist/lib/captureVersion.js +73 -0
- package/dist/lib/captureVersion.js.map +1 -0
- package/dist/lib/versionWrite.d.ts +65 -0
- package/dist/lib/versionWrite.d.ts.map +1 -0
- package/dist/lib/versionWrite.js +32 -0
- package/dist/lib/versionWrite.js.map +1 -0
- package/package.json +1 -1
|
@@ -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"}
|