@principles/core 1.189.0 → 1.191.0
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/runtime-v2/__tests__/pain-signal-observability.test.js +1 -1
- package/dist/runtime-v2/__tests__/pi-artifact-store.test.js +11 -0
- package/dist/runtime-v2/__tests__/pi-artifact-store.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +15 -1
- package/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts +2 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts.map +1 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js +62 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js.map +1 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +12 -2
- package/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts +2 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts.map +1 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js +56 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js.map +1 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +8 -0
- package/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +20 -0
- package/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -1
- package/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
- package/dist/runtime-v2/activation/sqlite-activation-state-store.js +6 -0
- package/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
- package/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
- package/dist/runtime-v2/activation/sqlite-approval-store.js +86 -32
- package/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +2 -2
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +1 -1
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js +3 -1
- package/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js.map +1 -1
- package/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts +2 -0
- package/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts.map +1 -0
- package/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js +121 -0
- package/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js.map +1 -0
- package/dist/runtime-v2/intent/index.d.ts +1 -0
- package/dist/runtime-v2/intent/index.d.ts.map +1 -1
- package/dist/runtime-v2/intent/index.js +1 -0
- package/dist/runtime-v2/intent/index.js.map +1 -1
- package/dist/runtime-v2/intent/intent-decision-record.d.ts +20 -0
- package/dist/runtime-v2/intent/intent-decision-record.d.ts.map +1 -1
- package/dist/runtime-v2/intent/intent-patch-proposal.d.ts +42 -0
- package/dist/runtime-v2/intent/intent-patch-proposal.d.ts.map +1 -0
- package/dist/runtime-v2/intent/intent-patch-proposal.js +81 -0
- package/dist/runtime-v2/intent/intent-patch-proposal.js.map +1 -0
- package/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-observability.js +3 -2
- package/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts +2 -0
- package/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js +55 -0
- package/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js.map +1 -0
- package/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js +6 -0
- package/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js.map +1 -1
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js +65 -0
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js.map +1 -1
- package/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts +16 -1
- package/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js +47 -0
- package/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js.map +1 -1
- package/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts +2 -0
- package/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/sqlite-connection-schema-version.test.js +72 -0
- package/dist/runtime-v2/store/sqlite-connection-schema-version.test.js.map +1 -0
- package/dist/runtime-v2/store/sqlite-connection.d.ts +11 -0
- package/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/dist/runtime-v2/store/sqlite-connection.js +41 -11
- package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/package.json +1 -1
|
@@ -146,7 +146,7 @@ describe('IntentDecisionSummary type contract', () => {
|
|
|
146
146
|
});
|
|
147
147
|
});
|
|
148
148
|
describe('IntentDecisionStore interface contract', () => {
|
|
149
|
-
it('exposes the
|
|
149
|
+
it('exposes the six SPEC §21.7 methods (record + 4 reads + updateFollowUp)', () => {
|
|
150
150
|
const store = {
|
|
151
151
|
record: async () => ({ record: {}, created: true }),
|
|
152
152
|
getById: async () => null,
|
|
@@ -159,12 +159,14 @@ describe('IntentDecisionStore interface contract', () => {
|
|
|
159
159
|
},
|
|
160
160
|
lastDecisionAt: null,
|
|
161
161
|
}),
|
|
162
|
+
updateFollowUp: async () => null,
|
|
162
163
|
};
|
|
163
164
|
expect(typeof store.record).toBe('function');
|
|
164
165
|
expect(typeof store.getById).toBe('function');
|
|
165
166
|
expect(typeof store.listByPainId).toBe('function');
|
|
166
167
|
expect(typeof store.listByTaskId).toBe('function');
|
|
167
168
|
expect(typeof store.getSummary).toBe('function');
|
|
169
|
+
expect(typeof store.updateFollowUp).toBe('function');
|
|
168
170
|
});
|
|
169
171
|
it('record returns IntentDecisionRecordResult', () => {
|
|
170
172
|
expectTypeOf().returns.toEqualTypeOf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-decision-record.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/intent/__tests__/intent-decision-record.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"intent-decision-record.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/intent/__tests__/intent-decision-record.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-patch-proposal.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/intent/__tests__/intent-patch-proposal.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntentPatchProposal tests (PRI-471, SPEC §10).
|
|
3
|
+
*
|
|
4
|
+
* Verifies the read-only patch proposal generator:
|
|
5
|
+
* - Deterministic id derived from decisionId
|
|
6
|
+
* - SPEC §10 markdown format (Reason, Related INTENT Fields, Evidence, Proposed Diff, Risk)
|
|
7
|
+
* - "Display only" warning present (cannot be auto-applied)
|
|
8
|
+
* - Evidence truncated to max 3 items
|
|
9
|
+
* - Handles empty fields gracefully
|
|
10
|
+
*
|
|
11
|
+
* ERR checklist:
|
|
12
|
+
* - EP-01: pure function over already-validated IntentDecisionRecord — no untrusted input
|
|
13
|
+
* - EP-09: pure function, independently testable
|
|
14
|
+
*/
|
|
15
|
+
import { describe, it, expect } from 'vitest';
|
|
16
|
+
import { generateIntentPatchProposal } from '../intent-patch-proposal.js';
|
|
17
|
+
function makeRecord(overrides = {}) {
|
|
18
|
+
return {
|
|
19
|
+
id: 'rec-test-1',
|
|
20
|
+
source: 'action_drift',
|
|
21
|
+
evidenceStrength: 'moderate',
|
|
22
|
+
relatedIntentFields: ['why', 'desired_outcome'],
|
|
23
|
+
ownerAction: 'revise_intent',
|
|
24
|
+
evidenceRefs: ['ev-1', 'ev-2'],
|
|
25
|
+
createdAt: '2026-06-25T00:00:00.000Z',
|
|
26
|
+
...overrides,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
describe('generateIntentPatchProposal', () => {
|
|
30
|
+
it('returns a proposal with a deterministic id derived from decisionId', () => {
|
|
31
|
+
const decision = makeRecord({ id: 'rec-abc' });
|
|
32
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
33
|
+
expect(proposal.id).toBe('patch-rec-abc');
|
|
34
|
+
expect(proposal.decisionId).toBe('rec-abc');
|
|
35
|
+
});
|
|
36
|
+
it('markdown contains the SPEC §10 section headers', () => {
|
|
37
|
+
const proposal = generateIntentPatchProposal(makeRecord());
|
|
38
|
+
expect(proposal.markdown).toContain('## Intent Patch Proposal');
|
|
39
|
+
expect(proposal.markdown).toContain('### Reason');
|
|
40
|
+
expect(proposal.markdown).toContain('### Related INTENT Fields');
|
|
41
|
+
expect(proposal.markdown).toContain('### Evidence');
|
|
42
|
+
expect(proposal.markdown).toContain('### Proposed Diff');
|
|
43
|
+
expect(proposal.markdown).toContain('### Risk');
|
|
44
|
+
});
|
|
45
|
+
it('markdown contains the "Display only" warning (SPEC §22.1.4)', () => {
|
|
46
|
+
const proposal = generateIntentPatchProposal(makeRecord());
|
|
47
|
+
expect(proposal.markdown).toContain('Display only');
|
|
48
|
+
expect(proposal.markdown).toContain('cannot be auto-applied');
|
|
49
|
+
expect(proposal.markdown).toContain('.principles/INTENT.md');
|
|
50
|
+
});
|
|
51
|
+
it('reason summarizes ownerAction, source, and evidenceStrength', () => {
|
|
52
|
+
const decision = makeRecord({
|
|
53
|
+
ownerAction: 'revise_intent',
|
|
54
|
+
source: 'intent_suspect',
|
|
55
|
+
evidenceStrength: 'strong',
|
|
56
|
+
});
|
|
57
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
58
|
+
expect(proposal.markdown).toContain('Owner decision: revise_intent');
|
|
59
|
+
expect(proposal.markdown).toContain('Source: intent_suspect');
|
|
60
|
+
expect(proposal.markdown).toContain('Evidence strength: strong');
|
|
61
|
+
});
|
|
62
|
+
it('lists human-readable labels for related INTENT fields', () => {
|
|
63
|
+
const decision = makeRecord({
|
|
64
|
+
relatedIntentFields: ['why', 'desired_outcome', 'current_strategic_focus'],
|
|
65
|
+
});
|
|
66
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
67
|
+
expect(proposal.markdown).toContain('Why');
|
|
68
|
+
expect(proposal.markdown).toContain('Desired Outcome');
|
|
69
|
+
expect(proposal.markdown).toContain('Current Strategic Focus');
|
|
70
|
+
});
|
|
71
|
+
it('falls back to the raw field name for unknown IntentRelatedField values', () => {
|
|
72
|
+
// Defensive: if a new IntentRelatedField is added to the enum but not to
|
|
73
|
+
// FIELD_LABELS, the raw value should appear (not undefined or [object Object]).
|
|
74
|
+
const decision = makeRecord({
|
|
75
|
+
relatedIntentFields: ['why', 'unknown_field'],
|
|
76
|
+
});
|
|
77
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
78
|
+
expect(proposal.markdown).toContain('Why');
|
|
79
|
+
expect(proposal.markdown).toContain('unknown_field');
|
|
80
|
+
});
|
|
81
|
+
it('truncates evidence to 3 items', () => {
|
|
82
|
+
const decision = makeRecord({
|
|
83
|
+
evidenceRefs: ['ev-1', 'ev-2', 'ev-3', 'ev-4', 'ev-5'],
|
|
84
|
+
});
|
|
85
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
86
|
+
expect(proposal.markdown).toContain('Evidence 1: ev-1');
|
|
87
|
+
expect(proposal.markdown).toContain('Evidence 2: ev-2');
|
|
88
|
+
expect(proposal.markdown).toContain('Evidence 3: ev-3');
|
|
89
|
+
expect(proposal.markdown).not.toContain('ev-4');
|
|
90
|
+
expect(proposal.markdown).not.toContain('ev-5');
|
|
91
|
+
});
|
|
92
|
+
it('shows "No evidence recorded" when evidenceRefs is empty', () => {
|
|
93
|
+
const decision = makeRecord({ evidenceRefs: [] });
|
|
94
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
95
|
+
expect(proposal.markdown).toContain('No evidence recorded.');
|
|
96
|
+
});
|
|
97
|
+
it('shows "No specific fields identified" when relatedIntentFields is empty', () => {
|
|
98
|
+
const decision = makeRecord({ relatedIntentFields: [] });
|
|
99
|
+
const proposal = generateIntentPatchProposal(decision);
|
|
100
|
+
expect(proposal.markdown).toContain('No specific fields identified.');
|
|
101
|
+
});
|
|
102
|
+
it('proposed diff is a placeholder — PD does not auto-generate diff content', () => {
|
|
103
|
+
const proposal = generateIntentPatchProposal(makeRecord());
|
|
104
|
+
expect(proposal.markdown).toContain('```diff');
|
|
105
|
+
expect(proposal.markdown).toContain('placeholder');
|
|
106
|
+
expect(proposal.markdown).toContain('PD does not auto-generate diff content');
|
|
107
|
+
});
|
|
108
|
+
it('risk section explains both "if modified" and "if not modified" outcomes', () => {
|
|
109
|
+
const proposal = generateIntentPatchProposal(makeRecord());
|
|
110
|
+
expect(proposal.markdown).toContain('If modified:');
|
|
111
|
+
expect(proposal.markdown).toContain('If not modified:');
|
|
112
|
+
});
|
|
113
|
+
it('is a pure function — same input yields identical output', () => {
|
|
114
|
+
const decision = makeRecord();
|
|
115
|
+
const a = generateIntentPatchProposal(decision);
|
|
116
|
+
const b = generateIntentPatchProposal(decision);
|
|
117
|
+
expect(a.id).toBe(b.id);
|
|
118
|
+
expect(a.markdown).toBe(b.markdown);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=intent-patch-proposal.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-patch-proposal.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/intent/__tests__/intent-patch-proposal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/intent/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/intent/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/intent/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/intent/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
|
|
@@ -82,6 +82,20 @@ export interface IntentDecisionSummary {
|
|
|
82
82
|
counts: Record<SuggestedOwnerAction, number>;
|
|
83
83
|
lastDecisionAt: string | null;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Patch for updating follow-up action fields on an existing IntentDecisionRecord.
|
|
87
|
+
* Used by PRI-471 to record which follow-up action was dispatched after the
|
|
88
|
+
* Owner decision was persisted (SPEC §22.1.4).
|
|
89
|
+
*
|
|
90
|
+
* Only one field should be set per call — each follow-up type is independent.
|
|
91
|
+
* Setting a field to `undefined` leaves it unchanged; the store only updates
|
|
92
|
+
* fields that are explicitly provided.
|
|
93
|
+
*/
|
|
94
|
+
export interface FollowUpPatch {
|
|
95
|
+
resultingCandidateId?: string;
|
|
96
|
+
resultingRuleCandidateId?: string;
|
|
97
|
+
patchProposalId?: string;
|
|
98
|
+
}
|
|
85
99
|
/**
|
|
86
100
|
* Durable store contract for IntentDecisionRecord (SPEC §21.7 persistence).
|
|
87
101
|
*
|
|
@@ -101,5 +115,11 @@ export interface IntentDecisionStore {
|
|
|
101
115
|
listByPainId(painId: string): Promise<IntentDecisionRecord[]>;
|
|
102
116
|
listByTaskId(taskId: string): Promise<IntentDecisionRecord[]>;
|
|
103
117
|
getSummary(): Promise<IntentDecisionSummary>;
|
|
118
|
+
/**
|
|
119
|
+
* Update follow-up action fields on an existing record (PRI-471, SPEC §22.1.4).
|
|
120
|
+
* Returns the updated record, or null if the record does not exist.
|
|
121
|
+
* Only fields present in `patch` are updated; others remain unchanged.
|
|
122
|
+
*/
|
|
123
|
+
updateFollowUp(id: string, patch: FollowUpPatch): Promise<IntentDecisionRecord | null>;
|
|
104
124
|
}
|
|
105
125
|
//# sourceMappingURL=intent-decision-record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-decision-record.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/intent/intent-decision-record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,2CAA2C,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC7C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9D,UAAU,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"intent-decision-record.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/intent/intent-decision-record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,2CAA2C,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC7C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9D,UAAU,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7C;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACxF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntentPatchProposal — read-only patch proposal generator (PRI-471, SPEC §10).
|
|
3
|
+
*
|
|
4
|
+
* When an Owner chooses `revise_intent`, the system generates a read-only
|
|
5
|
+
* patch proposal that the Owner can review and manually apply. The proposal
|
|
6
|
+
* is NEVER auto-applied to `.principles/INTENT.md`.
|
|
7
|
+
*
|
|
8
|
+
* SPEC §10 format:
|
|
9
|
+
* ```md
|
|
10
|
+
* ## Intent Patch Proposal
|
|
11
|
+
* ### Reason
|
|
12
|
+
* ### Evidence (max 3)
|
|
13
|
+
* ### Proposed Diff
|
|
14
|
+
* ### Risk
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* ERR checklist:
|
|
18
|
+
* - EP-01: no untrusted input — operates on already-validated IntentDecisionRecord
|
|
19
|
+
* - EP-09: pure function, independently testable
|
|
20
|
+
*/
|
|
21
|
+
import type { IntentDecisionRecord } from './intent-decision-record.js';
|
|
22
|
+
/**
|
|
23
|
+
* A read-only Intent Patch Proposal generated from an Owner decision.
|
|
24
|
+
* `id` is deterministic: `patch-<decisionId>` so it can be referenced without
|
|
25
|
+
* a separate storage table. `markdown` is the SPEC §10 formatted text.
|
|
26
|
+
*/
|
|
27
|
+
export interface IntentPatchProposal {
|
|
28
|
+
id: string;
|
|
29
|
+
decisionId: string;
|
|
30
|
+
markdown: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate a read-only Intent Patch Proposal from an Owner decision.
|
|
34
|
+
*
|
|
35
|
+
* The proposal summarizes why INTENT may need revision, lists the evidence
|
|
36
|
+
* (max 3 items from the decision's evidenceRefs), identifies the related
|
|
37
|
+
* INTENT fields, and includes a placeholder diff for the Owner to fill in.
|
|
38
|
+
*
|
|
39
|
+
* The proposal is marked "Display only, cannot be auto-applied" per SPEC §22.1.4.
|
|
40
|
+
*/
|
|
41
|
+
export declare function generateIntentPatchProposal(decision: IntentDecisionRecord): IntentPatchProposal;
|
|
42
|
+
//# sourceMappingURL=intent-patch-proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-patch-proposal.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/intent/intent-patch-proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGxE;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,mBAAmB,CA+C/F"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntentPatchProposal — read-only patch proposal generator (PRI-471, SPEC §10).
|
|
3
|
+
*
|
|
4
|
+
* When an Owner chooses `revise_intent`, the system generates a read-only
|
|
5
|
+
* patch proposal that the Owner can review and manually apply. The proposal
|
|
6
|
+
* is NEVER auto-applied to `.principles/INTENT.md`.
|
|
7
|
+
*
|
|
8
|
+
* SPEC §10 format:
|
|
9
|
+
* ```md
|
|
10
|
+
* ## Intent Patch Proposal
|
|
11
|
+
* ### Reason
|
|
12
|
+
* ### Evidence (max 3)
|
|
13
|
+
* ### Proposed Diff
|
|
14
|
+
* ### Risk
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* ERR checklist:
|
|
18
|
+
* - EP-01: no untrusted input — operates on already-validated IntentDecisionRecord
|
|
19
|
+
* - EP-09: pure function, independently testable
|
|
20
|
+
*/
|
|
21
|
+
const FIELD_LABELS = {
|
|
22
|
+
why: 'Why',
|
|
23
|
+
desired_outcome: 'Desired Outcome',
|
|
24
|
+
non_negotiables: 'Non-negotiables',
|
|
25
|
+
stop_escalation: 'Stop / Escalation',
|
|
26
|
+
current_strategic_focus: 'Current Strategic Focus',
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Generate a read-only Intent Patch Proposal from an Owner decision.
|
|
30
|
+
*
|
|
31
|
+
* The proposal summarizes why INTENT may need revision, lists the evidence
|
|
32
|
+
* (max 3 items from the decision's evidenceRefs), identifies the related
|
|
33
|
+
* INTENT fields, and includes a placeholder diff for the Owner to fill in.
|
|
34
|
+
*
|
|
35
|
+
* The proposal is marked "Display only, cannot be auto-applied" per SPEC §22.1.4.
|
|
36
|
+
*/
|
|
37
|
+
export function generateIntentPatchProposal(decision) {
|
|
38
|
+
const fieldNames = decision.relatedIntentFields
|
|
39
|
+
.map((f) => FIELD_LABELS[f] ?? f)
|
|
40
|
+
.join(', ');
|
|
41
|
+
const evidenceList = decision.evidenceRefs
|
|
42
|
+
.slice(0, 3)
|
|
43
|
+
.map((ref, i) => `- Evidence ${i + 1}: ${ref}`)
|
|
44
|
+
.join('\n');
|
|
45
|
+
const reason = `Owner decision: ${decision.ownerAction}. Source: ${decision.source}, Evidence strength: ${decision.evidenceStrength}.`;
|
|
46
|
+
const markdown = `## Intent Patch Proposal
|
|
47
|
+
|
|
48
|
+
> **Display only — cannot be auto-applied.**
|
|
49
|
+
> The Owner must manually edit \`.principles/INTENT.md\` if they accept this proposal.
|
|
50
|
+
|
|
51
|
+
### Reason
|
|
52
|
+
|
|
53
|
+
${reason}
|
|
54
|
+
|
|
55
|
+
### Related INTENT Fields
|
|
56
|
+
|
|
57
|
+
${fieldNames || 'No specific fields identified.'}
|
|
58
|
+
|
|
59
|
+
### Evidence
|
|
60
|
+
|
|
61
|
+
${evidenceList || 'No evidence recorded.'}
|
|
62
|
+
|
|
63
|
+
### Proposed Diff
|
|
64
|
+
|
|
65
|
+
\`\`\`diff
|
|
66
|
+
# Owner: fill in the desired INTENT.md changes here.
|
|
67
|
+
# This is a placeholder — PD does not auto-generate diff content.
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
### Risk
|
|
71
|
+
|
|
72
|
+
- **If modified:** INTENT changes may affect future intentTension diagnosis. Review carefully.
|
|
73
|
+
- **If not modified:** The identified tension may recur in similar scenarios.
|
|
74
|
+
`;
|
|
75
|
+
return {
|
|
76
|
+
id: `patch-${decision.id}`,
|
|
77
|
+
decisionId: decision.id,
|
|
78
|
+
markdown,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=intent-patch-proposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-patch-proposal.js","sourceRoot":"","sources":["../../../src/runtime-v2/intent/intent-patch-proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgBH,MAAM,YAAY,GAAuC;IACvD,GAAG,EAAE,KAAK;IACV,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,mBAAmB;IACpC,uBAAuB,EAAE,yBAAyB;CACnD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAA8B;IACxE,MAAM,UAAU,GAAG,QAAQ,CAAC,mBAAmB;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;SACvC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,mBAAmB,QAAQ,CAAC,WAAW,aAAa,QAAQ,CAAC,MAAM,wBAAwB,QAAQ,CAAC,gBAAgB,GAAG,CAAC;IAEvI,MAAM,QAAQ,GAAG;;;;;;;EAOjB,MAAM;;;;EAIN,UAAU,IAAI,gCAAgC;;;;EAI9C,YAAY,IAAI,uBAAuB;;;;;;;;;;;;;CAaxC,CAAC;IAEA,OAAO;QACL,EAAE,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE;QAC1B,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-observability.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"pain-signal-observability.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmLD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,oCAAoC,GACzC,6BAA6B,CAiE/B"}
|
|
@@ -49,7 +49,7 @@ function ensurePainEventsSchema(db) {
|
|
|
49
49
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
50
50
|
session_id TEXT NOT NULL,
|
|
51
51
|
source TEXT NOT NULL,
|
|
52
|
-
score
|
|
52
|
+
score REAL NOT NULL,
|
|
53
53
|
reason TEXT,
|
|
54
54
|
severity TEXT,
|
|
55
55
|
origin TEXT,
|
|
@@ -72,7 +72,8 @@ function ensurePainEventsSchema(db) {
|
|
|
72
72
|
);
|
|
73
73
|
`);
|
|
74
74
|
}
|
|
75
|
-
//
|
|
75
|
+
// Schema MUST stay in sync with packages/openclaw-plugin/src/core/schema/schema-definitions.ts pain_events.
|
|
76
|
+
// core cannot import plugin schema (dependency direction), so DDL is duplicated intentionally.
|
|
76
77
|
db.exec('COMMIT');
|
|
77
78
|
}
|
|
78
79
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAmBzD,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,KAAc;IACtD,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAwB,CAAC;IACnF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAqB;IACnD,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;KAeP,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAC/B,uEAAuE,CACxE,CAAC,GAAG,EAAwB,CAAC;QAE9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CAAC;;;;;;;OAOP,CAAC,CAAC;QACL,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-pi-artifact-store-fk.test.d.ts","sourceRoot":"","sources":["../../../../../src/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { mkdtempSync, rmSync } from 'fs';
|
|
2
|
+
import { tmpdir } from 'os';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { describe, expect, it, afterEach } from 'vitest';
|
|
5
|
+
import { SqliteConnection } from '../../sqlite-connection.js';
|
|
6
|
+
import { SqlitePIArtifactStore } from '../sqlite-pi-artifact-store.js';
|
|
7
|
+
const tempDirs = [];
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
for (const dir of tempDirs.splice(0)) {
|
|
10
|
+
try {
|
|
11
|
+
rmSync(dir, { recursive: true, force: true });
|
|
12
|
+
}
|
|
13
|
+
catch { /* best-effort */ }
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
function makeConnection() {
|
|
17
|
+
const dir = mkdtempSync(join(tmpdir(), 'pd-pi-artifact-fk-'));
|
|
18
|
+
tempDirs.push(dir);
|
|
19
|
+
return new SqliteConnection(dir);
|
|
20
|
+
}
|
|
21
|
+
function insertTask(db, taskId) {
|
|
22
|
+
db.prepare("INSERT INTO tasks (task_id, task_kind, status, created_at, updated_at) VALUES (?, 'diagnosis', 'pending', ?, ?)").run(taskId, '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z');
|
|
23
|
+
}
|
|
24
|
+
function makeArtifactRecord(sourceTaskId) {
|
|
25
|
+
return {
|
|
26
|
+
artifactId: 'art_test_001',
|
|
27
|
+
artifactKind: 'principle',
|
|
28
|
+
sourceTaskId,
|
|
29
|
+
lineageArtifactIds: [],
|
|
30
|
+
validationStatus: 'pending',
|
|
31
|
+
contentJson: '{}',
|
|
32
|
+
createdAt: '2026-01-01T00:00:00Z',
|
|
33
|
+
updatedAt: '2026-01-01T00:00:00Z',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
describe('SqlitePIArtifactStore FK validation (P1-3)', () => {
|
|
37
|
+
it('throws when createArtifact references non-existent task', async () => {
|
|
38
|
+
const conn = makeConnection();
|
|
39
|
+
conn.getDb(); // trigger initSchema
|
|
40
|
+
const store = new SqlitePIArtifactStore(conn);
|
|
41
|
+
const record = makeArtifactRecord('non_existent_task');
|
|
42
|
+
await expect(store.createArtifact(record)).rejects.toThrow(/pi_artifacts\.source_task_id references non-existent task/);
|
|
43
|
+
});
|
|
44
|
+
it('succeeds when parent task exists', async () => {
|
|
45
|
+
const conn = makeConnection();
|
|
46
|
+
const db = conn.getDb();
|
|
47
|
+
insertTask(db, 'task_001');
|
|
48
|
+
const store = new SqlitePIArtifactStore(conn);
|
|
49
|
+
const record = makeArtifactRecord('task_001');
|
|
50
|
+
const result = await store.createArtifact(record);
|
|
51
|
+
expect(result.artifactId).toBe('art_test_001');
|
|
52
|
+
expect(result.sourceTaskId).toBe('task_001');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=sqlite-pi-artifact-store-fk.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-pi-artifact-store-fk.test.js","sourceRoot":"","sources":["../../../../../src/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-pi-artifact-store.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/store/artifact/sqlite-pi-artifact-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA8B9F,qBAAa,qBAAsB,YAAW,eAAe;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEnD,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-pi-artifact-store.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/store/artifact/sqlite-pi-artifact-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA8B9F,qBAAa,qBAAsB,YAAW,eAAe;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEnD,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCnE,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BnE,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUrE,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUrE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe5D,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAS3H"}
|
|
@@ -19,6 +19,12 @@ export class SqlitePIArtifactStore {
|
|
|
19
19
|
}
|
|
20
20
|
async createArtifact(record) {
|
|
21
21
|
const db = this.connection.getDb();
|
|
22
|
+
// P1-3: Application-layer FK check (DB-layer FK deferred to post-MVP table rebuild).
|
|
23
|
+
// Fail loud if source_task_id references non-existent task (ERR-009/ERR-010/ERR-002).
|
|
24
|
+
const taskExists = db.prepare('SELECT 1 FROM tasks WHERE task_id = ?').get(record.sourceTaskId);
|
|
25
|
+
if (!taskExists) {
|
|
26
|
+
throw new Error(`pi_artifacts.source_task_id references non-existent task: ${record.sourceTaskId}`);
|
|
27
|
+
}
|
|
22
28
|
const lineageJson = JSON.stringify(record.lineageArtifactIds);
|
|
23
29
|
try {
|
|
24
30
|
db.prepare(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-pi-artifact-store.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/artifact/sqlite-pi-artifact-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite-pi-artifact-store.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/artifact/sqlite-pi-artifact-store.ts"],"names":[],"mappings":"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"}
|