@principles/core 1.204.0 → 1.206.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.
Files changed (75) hide show
  1. package/dist/runtime-v2/__tests__/architecture-regression.test.js +8 -1
  2. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  3. package/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +93 -0
  4. package/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
  5. package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +11 -0
  6. package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
  7. package/dist/runtime-v2/activation/writers/rule-host-writer.js +22 -0
  8. package/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
  9. package/dist/runtime-v2/index.d.ts +5 -3
  10. package/dist/runtime-v2/index.d.ts.map +1 -1
  11. package/dist/runtime-v2/index.js +3 -2
  12. package/dist/runtime-v2/index.js.map +1 -1
  13. package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts +2 -0
  14. package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts.map +1 -0
  15. package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js +88 -0
  16. package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js.map +1 -0
  17. package/dist/runtime-v2/intent/__tests__/intent-doc.test.js +27 -1
  18. package/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -1
  19. package/dist/runtime-v2/intent/index.d.ts +1 -0
  20. package/dist/runtime-v2/intent/index.d.ts.map +1 -1
  21. package/dist/runtime-v2/intent/index.js +1 -0
  22. package/dist/runtime-v2/intent/index.js.map +1 -1
  23. package/dist/runtime-v2/intent/intent-doc-version.d.ts +28 -0
  24. package/dist/runtime-v2/intent/intent-doc-version.d.ts.map +1 -0
  25. package/dist/runtime-v2/intent/intent-doc-version.js +21 -0
  26. package/dist/runtime-v2/intent/intent-doc-version.js.map +1 -0
  27. package/dist/runtime-v2/intent/intent-doc.d.ts +5 -0
  28. package/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -1
  29. package/dist/runtime-v2/intent/intent-doc.js +68 -0
  30. package/dist/runtime-v2/intent/intent-doc.js.map +1 -1
  31. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +41 -1
  32. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
  33. package/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +130 -2
  34. package/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -1
  35. package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts +2 -0
  36. package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts.map +1 -0
  37. package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js +228 -0
  38. package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js.map +1 -0
  39. package/dist/runtime-v2/internalization/artificer-output.d.ts +8 -0
  40. package/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
  41. package/dist/runtime-v2/internalization/artificer-output.js +45 -0
  42. package/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
  43. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +2 -2
  44. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
  45. package/dist/runtime-v2/internalization/artificer-prompt-builder.js +7 -2
  46. package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
  47. package/dist/runtime-v2/internalization/behavior-example-pack.d.ts +66 -0
  48. package/dist/runtime-v2/internalization/behavior-example-pack.d.ts.map +1 -0
  49. package/dist/runtime-v2/internalization/behavior-example-pack.js +183 -0
  50. package/dist/runtime-v2/internalization/behavior-example-pack.js.map +1 -0
  51. package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts +2 -0
  52. package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts.map +1 -0
  53. package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js +83 -0
  54. package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js.map +1 -0
  55. package/dist/runtime-v2/store/intent/index.d.ts +2 -1
  56. package/dist/runtime-v2/store/intent/index.d.ts.map +1 -1
  57. package/dist/runtime-v2/store/intent/index.js +2 -1
  58. package/dist/runtime-v2/store/intent/index.js.map +1 -1
  59. package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts +28 -0
  60. package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts.map +1 -0
  61. package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js +88 -0
  62. package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js.map +1 -0
  63. package/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  64. package/dist/runtime-v2/store/sqlite-connection.js +14 -0
  65. package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  66. package/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +40 -1
  67. package/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -1
  68. package/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -1
  69. package/dist/runtime-v2/tools/artificer-l2-tool-contract.js +28 -1
  70. package/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -1
  71. package/dist/runtime-v2/tools/artificer-output-typebox.d.ts +1 -0
  72. package/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -1
  73. package/dist/runtime-v2/tools/artificer-output-typebox.js +2 -0
  74. package/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ /**
2
+ * PRI-484 — Phase 5 BehaviorExamplePack (behavior-example-pack.ts)
3
+ *
4
+ * Pure logic: type + validator for the Artificer BehaviorExamplePack.
5
+ * Zero I/O — this module MUST NOT import node:fs / node:path / better-sqlite3 /
6
+ * any network module. The runtime-v2 architecture-regression test enforces the
7
+ * file boundary.
8
+ *
9
+ * Err-prevention:
10
+ * - ERR-001 (validate-as-unknown): validator takes `unknown` and validates
11
+ * structurally. No `as` bypass on parsed input.
12
+ * - ERR-069 (Artificer shared schema): fail loud on invalid pack, no silent
13
+ * fallback to empty pack.
14
+ * - ERR-076 (prototype-pollution / host-realm independence): structural checks
15
+ * use Object.keys + a PROTO_KEYS set. We never touch the host realm's
16
+ * prototype chain (no `instanceof`, no `in`).
17
+ * - rc-2: no `as` casts on parsed input.
18
+ * - rc-5: Object.hasOwn / Object.keys over the `in` operator.
19
+ *
20
+ * Spec: docs/superpowers/specs/2026-06-27-rulecode-context-vision-design.md §7.2
21
+ */
22
+ import type { GoldenTraceCaseInput } from './artificer-output.js';
23
+ /**
24
+ * BehaviorExamplePack — bounded, validated evidence pack for Artificer.
25
+ *
26
+ * Contains only evidence from the current pain lineage; no general memory
27
+ * or arbitrary codebase search.
28
+ *
29
+ * First-version limits (spec §7.2):
30
+ * - 1 source negative case
31
+ * - ≤3 positive counterexamples
32
+ * - ≤5 evidenceRefs
33
+ * - each string follows existing evidence sanitizer boundaries
34
+ */
35
+ export interface BehaviorExamplePack {
36
+ readonly sourceNegativeCase: GoldenTraceCaseInput;
37
+ readonly ownerDesiredOutcome: string;
38
+ readonly positiveCounterexamples: readonly GoldenTraceCaseInput[];
39
+ readonly evidenceRefs: readonly string[];
40
+ readonly redactionNotes: readonly string[];
41
+ }
42
+ export interface BehaviorExamplePackValidationResult {
43
+ readonly valid: boolean;
44
+ readonly errors: readonly string[];
45
+ }
46
+ /**
47
+ * Validate an untrusted BehaviorExamplePack.
48
+ *
49
+ * Accepts `unknown` and validates structurally (ERR-001). Rejects hostile
50
+ * primitives (null, arrays, wrong types) and prototype-pollution keys
51
+ * (__proto__, constructor, prototype).
52
+ *
53
+ * First-version limits enforced:
54
+ * - positiveCounterexamples: 1..3 items, each kind='positive'
55
+ * - evidenceRefs: 1..5 non-empty strings
56
+ * - ownerDesiredOutcome: non-empty string
57
+ * - sourceNegativeCase: kind='negative'
58
+ * - redactionNotes: string array (may be empty)
59
+ *
60
+ * Returns `{ valid: true, errors: [] }` on success, or
61
+ * `{ valid: false, errors: [...] }` on failure — never throws (ERR-069 fail
62
+ * loud is the caller's responsibility: an invalid pack must not silently
63
+ * produce an empty pack).
64
+ */
65
+ export declare function validateBehaviorExamplePack(value: unknown): BehaviorExamplePackValidationResult;
66
+ //# sourceMappingURL=behavior-example-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior-example-pack.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/behavior-example-pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIlE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAClD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClE,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAgHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,mCAAmC,CA6D/F"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * PRI-484 — Phase 5 BehaviorExamplePack (behavior-example-pack.ts)
3
+ *
4
+ * Pure logic: type + validator for the Artificer BehaviorExamplePack.
5
+ * Zero I/O — this module MUST NOT import node:fs / node:path / better-sqlite3 /
6
+ * any network module. The runtime-v2 architecture-regression test enforces the
7
+ * file boundary.
8
+ *
9
+ * Err-prevention:
10
+ * - ERR-001 (validate-as-unknown): validator takes `unknown` and validates
11
+ * structurally. No `as` bypass on parsed input.
12
+ * - ERR-069 (Artificer shared schema): fail loud on invalid pack, no silent
13
+ * fallback to empty pack.
14
+ * - ERR-076 (prototype-pollution / host-realm independence): structural checks
15
+ * use Object.keys + a PROTO_KEYS set. We never touch the host realm's
16
+ * prototype chain (no `instanceof`, no `in`).
17
+ * - rc-2: no `as` casts on parsed input.
18
+ * - rc-5: Object.hasOwn / Object.keys over the `in` operator.
19
+ *
20
+ * Spec: docs/superpowers/specs/2026-06-27-rulecode-context-vision-design.md §7.2
21
+ */
22
+ // ── internal constants ─────────────────────────────────────────────────────
23
+ const PROTO_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
24
+ const MAX_POSITIVES = 3;
25
+ const MAX_EVIDENCE_REFS = 5;
26
+ const GOLDEN_TRACE_DECISIONS = new Set(['allow', 'block', 'propose_correction']);
27
+ const OK_RESULT = { valid: true, errors: [] };
28
+ // ── internal helpers ───────────────────────────────────────────────────────
29
+ function isPlainObjectLike(value) {
30
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
31
+ }
32
+ function hasNoProtoKeys(value) {
33
+ for (const key of Object.keys(value)) {
34
+ if (PROTO_KEYS.has(key))
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+ function fail(errors) {
40
+ return errors.length === 0 ? OK_RESULT : { valid: false, errors };
41
+ }
42
+ function isNonEmptyString(value) {
43
+ return typeof value === 'string' && value.trim().length > 0;
44
+ }
45
+ /**
46
+ * Validate a single GoldenTraceCaseInput structurally.
47
+ * Mirrors the structural invariants of `validateGoldenTraceCase` in
48
+ * golden-trace.ts and `validateGoldenTraceCasesInput` in artificer-output.ts,
49
+ * but operates on a single case (not an array) and enforces `expectedKind`.
50
+ */
51
+ function validateSingleCase(value, fieldName, expectedKind) {
52
+ const errors = [];
53
+ if (!isPlainObjectLike(value)) {
54
+ errors.push(`${fieldName} must be a plain object`);
55
+ return errors;
56
+ }
57
+ if (!hasNoProtoKeys(value)) {
58
+ errors.push(`${fieldName} must not carry prototype-pollution keys`);
59
+ return errors;
60
+ }
61
+ if (!Object.hasOwn(value, 'caseId') || !isNonEmptyString(value.caseId)) {
62
+ errors.push(`${fieldName}.caseId must be a non-empty string`);
63
+ }
64
+ if (!Object.hasOwn(value, 'kind') || value.kind !== expectedKind) {
65
+ errors.push(`${fieldName}.kind must be '${expectedKind}'`);
66
+ }
67
+ if (!Object.hasOwn(value, 'toolName') || !isNonEmptyString(value.toolName)) {
68
+ errors.push(`${fieldName}.toolName must be a non-empty string`);
69
+ }
70
+ if (!Object.hasOwn(value, 'params') || !isPlainObjectLike(value.params)) {
71
+ errors.push(`${fieldName}.params must be a plain object`);
72
+ }
73
+ if (!Object.hasOwn(value, 'expectedDecision')
74
+ || typeof value.expectedDecision !== 'string'
75
+ || !GOLDEN_TRACE_DECISIONS.has(value.expectedDecision)) {
76
+ errors.push(`${fieldName}.expectedDecision must be one of allow|block|propose_correction`);
77
+ }
78
+ else if (expectedKind === 'positive' && value.expectedDecision !== 'allow') {
79
+ errors.push(`${fieldName}: positive cases must expect allow`);
80
+ }
81
+ return errors;
82
+ }
83
+ function validateStringArray(value, opts) {
84
+ const { fieldName, maxLength, requireNonEmpty } = opts;
85
+ const errors = [];
86
+ if (!Array.isArray(value)) {
87
+ errors.push(`${fieldName} must be an array`);
88
+ return errors;
89
+ }
90
+ if (requireNonEmpty && value.length === 0) {
91
+ errors.push(`${fieldName} must contain at least 1 item`);
92
+ }
93
+ if (maxLength !== undefined && value.length > maxLength) {
94
+ errors.push(`${fieldName} must contain at most ${maxLength} items, got ${value.length}`);
95
+ }
96
+ for (let i = 0; i < value.length; i++) {
97
+ if (typeof value[i] !== 'string') {
98
+ errors.push(`${fieldName}[${i}] must be a string`);
99
+ }
100
+ }
101
+ return errors;
102
+ }
103
+ // ── public validator ───────────────────────────────────────────────────────
104
+ /**
105
+ * Validate an untrusted BehaviorExamplePack.
106
+ *
107
+ * Accepts `unknown` and validates structurally (ERR-001). Rejects hostile
108
+ * primitives (null, arrays, wrong types) and prototype-pollution keys
109
+ * (__proto__, constructor, prototype).
110
+ *
111
+ * First-version limits enforced:
112
+ * - positiveCounterexamples: 1..3 items, each kind='positive'
113
+ * - evidenceRefs: 1..5 non-empty strings
114
+ * - ownerDesiredOutcome: non-empty string
115
+ * - sourceNegativeCase: kind='negative'
116
+ * - redactionNotes: string array (may be empty)
117
+ *
118
+ * Returns `{ valid: true, errors: [] }` on success, or
119
+ * `{ valid: false, errors: [...] }` on failure — never throws (ERR-069 fail
120
+ * loud is the caller's responsibility: an invalid pack must not silently
121
+ * produce an empty pack).
122
+ */
123
+ export function validateBehaviorExamplePack(value) {
124
+ if (!isPlainObjectLike(value)) {
125
+ return { valid: false, errors: ['BehaviorExamplePack must be a plain object'] };
126
+ }
127
+ if (!hasNoProtoKeys(value)) {
128
+ return { valid: false, errors: ['BehaviorExamplePack must not carry prototype-pollution keys'] };
129
+ }
130
+ const errors = [];
131
+ // ── sourceNegativeCase (1 negative case, MANDATORY) ──
132
+ if (!Object.hasOwn(value, 'sourceNegativeCase')) {
133
+ errors.push('sourceNegativeCase is required');
134
+ }
135
+ else {
136
+ errors.push(...validateSingleCase(value.sourceNegativeCase, 'sourceNegativeCase', 'negative'));
137
+ }
138
+ // ── ownerDesiredOutcome (non-empty string, MANDATORY) ──
139
+ if (!Object.hasOwn(value, 'ownerDesiredOutcome') || !isNonEmptyString(value.ownerDesiredOutcome)) {
140
+ errors.push('ownerDesiredOutcome must be a non-empty string');
141
+ }
142
+ // ── positiveCounterexamples (1..3 positive cases, MANDATORY) ──
143
+ if (!Object.hasOwn(value, 'positiveCounterexamples')) {
144
+ errors.push('positiveCounterexamples is required');
145
+ }
146
+ else if (!Array.isArray(value.positiveCounterexamples)) {
147
+ errors.push('positiveCounterexamples must be an array');
148
+ }
149
+ else {
150
+ const arr = value.positiveCounterexamples;
151
+ if (arr.length === 0) {
152
+ errors.push('positiveCounterexamples must contain at least 1 item');
153
+ }
154
+ if (arr.length > MAX_POSITIVES) {
155
+ errors.push(`positiveCounterexamples must contain at most ${MAX_POSITIVES} items, got ${arr.length}`);
156
+ }
157
+ for (let i = 0; i < arr.length; i++) {
158
+ errors.push(...validateSingleCase(arr[i], `positiveCounterexamples[${i}]`, 'positive'));
159
+ }
160
+ }
161
+ // ── evidenceRefs (1..5 non-empty strings, MANDATORY) ──
162
+ if (!Object.hasOwn(value, 'evidenceRefs')) {
163
+ errors.push('evidenceRefs is required');
164
+ }
165
+ else {
166
+ errors.push(...validateStringArray(value.evidenceRefs, {
167
+ fieldName: 'evidenceRefs',
168
+ maxLength: MAX_EVIDENCE_REFS,
169
+ requireNonEmpty: true,
170
+ }));
171
+ }
172
+ // ── redactionNotes (string array, may be empty, MANDATORY) ──
173
+ if (!Object.hasOwn(value, 'redactionNotes')) {
174
+ errors.push('redactionNotes is required');
175
+ }
176
+ else {
177
+ errors.push(...validateStringArray(value.redactionNotes, {
178
+ fieldName: 'redactionNotes',
179
+ }));
180
+ }
181
+ return fail(errors);
182
+ }
183
+ //# sourceMappingURL=behavior-example-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior-example-pack.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/behavior-example-pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sqlite-intent-doc-version-store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-intent-doc-version-store.test.d.ts","sourceRoot":"","sources":["../../../../../src/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * SqliteIntentDocVersionStore tests (SPEC bilingual+lifecycle).
3
+ *
4
+ * Verifies saveVersion, listVersions (DESC order, lang isolation),
5
+ * getVersion (null for unknown), getLatest, and rc-2 type-guard mapRow.
6
+ *
7
+ * ERR checklist:
8
+ * - EP-01 / ERR-001, ERR-005: DB rows treated as unknown, mapped via guards
9
+ * - EP-03 / ERR-002: write failures throw (fail loud)
10
+ * - rc-2: no `as` bypass — all row fields validated element-wise
11
+ */
12
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
13
+ import * as path from 'node:path';
14
+ import * as os from 'node:os';
15
+ import * as fs from 'node:fs';
16
+ import { SqliteConnection } from '../../sqlite-connection.js';
17
+ import { SqliteIntentDocVersionStore } from '../sqlite-intent-doc-version-store.js';
18
+ import { computeIntentContentHash } from '../../../intent/intent-doc.js';
19
+ function createTestConnection() {
20
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-test-intent-doc-version-'));
21
+ return new SqliteConnection(tmpDir);
22
+ }
23
+ describe('SqliteIntentDocVersionStore', () => {
24
+ let connection = null;
25
+ let store = null;
26
+ beforeEach(() => {
27
+ connection = createTestConnection();
28
+ connection.getDb();
29
+ store = new SqliteIntentDocVersionStore(connection);
30
+ });
31
+ afterEach(() => {
32
+ connection?.close();
33
+ });
34
+ it('saveVersion inserts a record and returns it', async () => {
35
+ const content = '## 1. Why\ntest';
36
+ const version = await store.saveVersion({ lang: 'zh-CN', content });
37
+ expect(version.id).toBeTruthy();
38
+ expect(version.contentHash).toBe(computeIntentContentHash(content));
39
+ expect(version.contentSnapshot).toBe(content);
40
+ expect(version.lang).toBe('zh-CN');
41
+ });
42
+ it('saveVersion stores optional reason', async () => {
43
+ const version = await store.saveVersion({ lang: 'en', content: 'x', reason: 'first edit' });
44
+ expect(version.reason).toBe('first edit');
45
+ });
46
+ it('saveVersion stores null reason when not provided', async () => {
47
+ const version = await store.saveVersion({ lang: 'en', content: 'x' });
48
+ expect(version.reason).toBeNull();
49
+ });
50
+ it('listVersions returns versions in DESC order by createdAt', async () => {
51
+ await store.saveVersion({ lang: 'zh-CN', content: 'v1', reason: 'first' });
52
+ await store.saveVersion({ lang: 'zh-CN', content: 'v2', reason: 'second' });
53
+ const versions = await store.listVersions('zh-CN');
54
+ expect(versions).toHaveLength(2);
55
+ expect(versions[0]?.reason).toBe('second');
56
+ expect(versions[1]?.reason).toBe('first');
57
+ });
58
+ it('listVersions isolates by lang', async () => {
59
+ await store.saveVersion({ lang: 'zh-CN', content: 'zh' });
60
+ await store.saveVersion({ lang: 'en', content: 'en' });
61
+ expect(await store.listVersions('zh-CN')).toHaveLength(1);
62
+ expect(await store.listVersions('en')).toHaveLength(1);
63
+ });
64
+ it('getVersion returns null for unknown id', async () => {
65
+ expect(await store.getVersion('nonexistent')).toBeNull();
66
+ });
67
+ it('getLatest returns null on empty', async () => {
68
+ expect(await store.getLatest('zh-CN')).toBeNull();
69
+ });
70
+ it('getLatest returns most recent version', async () => {
71
+ await store.saveVersion({ lang: 'zh-CN', content: 'old' });
72
+ await store.saveVersion({ lang: 'zh-CN', content: 'new' });
73
+ const latest = await store.getLatest('zh-CN');
74
+ expect(latest?.contentSnapshot).toBe('new');
75
+ });
76
+ it('mapRow returns null for malformed row (rc-2 compliance)', async () => {
77
+ const db = connection.getDb();
78
+ db.exec(`INSERT INTO intent_doc_versions (id, lang, content_hash, content_snapshot, created_at) VALUES ('bad', 'not-a-lang', 'hash', 'snap', '2026-01-01')`);
79
+ const result = await store.getVersion('bad');
80
+ expect(result).toBeNull();
81
+ });
82
+ });
83
+ //# sourceMappingURL=sqlite-intent-doc-version-store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-intent-doc-version-store.test.js","sourceRoot":"","sources":["../../../../../src/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Barrel for the IntentDecisionRecord SQLite store (PRI-470).
2
+ * Barrel for the IntentDecisionRecord and IntentDocVersion SQLite stores.
3
3
  */
4
4
  export { SqliteIntentDecisionStore } from './sqlite-intent-decision-store.js';
5
5
  export type { IntentDecisionStore } from '../../intent/intent-decision-record.js';
6
+ export { SqliteIntentDocVersionStore } from './sqlite-intent-doc-version-store.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Barrel for the IntentDecisionRecord SQLite store (PRI-470).
2
+ * Barrel for the IntentDecisionRecord and IntentDocVersion SQLite stores.
3
3
  */
4
4
  export { SqliteIntentDecisionStore } from './sqlite-intent-decision-store.js';
5
+ export { SqliteIntentDocVersionStore } from './sqlite-intent-doc-version-store.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * SqliteIntentDocVersionStore — SQLite implementation of IntentDocVersionStore.
3
+ *
4
+ * SPEC bilingual+lifecycle: stores immutable snapshots of INTENT.md content
5
+ * each time it changes, enabling version history and rollback. Mirrors the
6
+ * intent_decisions audit pattern (immutable snapshots, hash linkage).
7
+ *
8
+ * ERR checklist:
9
+ * - EP-01 / ERR-001, ERR-005: DB rows treated as unknown, mapped via guards
10
+ * - EP-03 / ERR-002: write failures throw (fail loud)
11
+ * - rc-2: no `as` bypass — all row fields validated element-wise via isIntentDocVersionRow
12
+ */
13
+ import type { SqliteConnection } from '../sqlite-connection.js';
14
+ import { type IntentLang } from '../../intent/intent-doc.js';
15
+ import type { IntentDocVersion, IntentDocVersionStore } from '../../intent/intent-doc-version.js';
16
+ export declare class SqliteIntentDocVersionStore implements IntentDocVersionStore {
17
+ private readonly connection;
18
+ constructor(connection: SqliteConnection);
19
+ saveVersion(input: {
20
+ lang: IntentLang;
21
+ content: string;
22
+ reason?: string;
23
+ }): Promise<IntentDocVersion>;
24
+ listVersions(lang: IntentLang, limit?: number): Promise<IntentDocVersion[]>;
25
+ getVersion(id: string): Promise<IntentDocVersion | null>;
26
+ getLatest(lang: IntentLang): Promise<IntentDocVersion | null>;
27
+ }
28
+ //# sourceMappingURL=sqlite-intent-doc-version-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-intent-doc-version-store.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/sqlite-intent-doc-version-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAyClG,qBAAa,2BAA4B,YAAW,qBAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEnD,WAAW,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBrG,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUvE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAOxD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAQpE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * SqliteIntentDocVersionStore — SQLite implementation of IntentDocVersionStore.
3
+ *
4
+ * SPEC bilingual+lifecycle: stores immutable snapshots of INTENT.md content
5
+ * each time it changes, enabling version history and rollback. Mirrors the
6
+ * intent_decisions audit pattern (immutable snapshots, hash linkage).
7
+ *
8
+ * ERR checklist:
9
+ * - EP-01 / ERR-001, ERR-005: DB rows treated as unknown, mapped via guards
10
+ * - EP-03 / ERR-002: write failures throw (fail loud)
11
+ * - rc-2: no `as` bypass — all row fields validated element-wise via isIntentDocVersionRow
12
+ */
13
+ import { randomUUID } from 'node:crypto';
14
+ import { computeIntentContentHash } from '../../intent/intent-doc.js';
15
+ function isIntentLang(value) {
16
+ return value === 'zh-CN' || value === 'en';
17
+ }
18
+ function isRecord(v) {
19
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
20
+ }
21
+ function isIntentDocVersionRow(v) {
22
+ if (!isRecord(v))
23
+ return false;
24
+ if (typeof v.id !== 'string')
25
+ return false;
26
+ if (!isIntentLang(v.lang))
27
+ return false;
28
+ if (typeof v.content_hash !== 'string')
29
+ return false;
30
+ if (typeof v.content_snapshot !== 'string')
31
+ return false;
32
+ if (v.reason !== null && typeof v.reason !== 'string')
33
+ return false;
34
+ if (typeof v.created_at !== 'string')
35
+ return false;
36
+ return true;
37
+ }
38
+ function mapRow(r) {
39
+ return {
40
+ id: r.id,
41
+ lang: r.lang,
42
+ contentHash: r.content_hash,
43
+ contentSnapshot: r.content_snapshot,
44
+ reason: r.reason,
45
+ createdAt: r.created_at,
46
+ };
47
+ }
48
+ export class SqliteIntentDocVersionStore {
49
+ connection;
50
+ constructor(connection) {
51
+ this.connection = connection;
52
+ }
53
+ async saveVersion(input) {
54
+ const db = this.connection.getDb();
55
+ const id = randomUUID();
56
+ const contentHash = computeIntentContentHash(input.content);
57
+ const createdAt = new Date().toISOString();
58
+ const reason = input.reason ?? null;
59
+ db.prepare(`INSERT INTO intent_doc_versions (id, lang, content_hash, content_snapshot, reason, created_at) VALUES (?, ?, ?, ?, ?, ?)`).run(id, input.lang, contentHash, input.content, reason, createdAt);
60
+ const row = db.prepare(`SELECT * FROM intent_doc_versions WHERE id = ?`).get(id);
61
+ if (!isIntentDocVersionRow(row)) {
62
+ throw new Error(`saveVersion: failed to read back inserted record ${id}`);
63
+ }
64
+ return mapRow(row);
65
+ }
66
+ async listVersions(lang, limit = 50) {
67
+ const db = this.connection.getDb();
68
+ const rows = db.prepare(`SELECT * FROM intent_doc_versions WHERE lang = ? ORDER BY created_at DESC, rowid DESC LIMIT ?`).all(lang, limit);
69
+ return rows
70
+ .filter(isIntentDocVersionRow)
71
+ .map(mapRow);
72
+ }
73
+ async getVersion(id) {
74
+ const db = this.connection.getDb();
75
+ const row = db.prepare(`SELECT * FROM intent_doc_versions WHERE id = ?`).get(id);
76
+ if (!isIntentDocVersionRow(row))
77
+ return null;
78
+ return mapRow(row);
79
+ }
80
+ async getLatest(lang) {
81
+ const db = this.connection.getDb();
82
+ const row = db.prepare(`SELECT * FROM intent_doc_versions WHERE lang = ? ORDER BY created_at DESC, rowid DESC LIMIT 1`).get(lang);
83
+ if (!isIntentDocVersionRow(row))
84
+ return null;
85
+ return mapRow(row);
86
+ }
87
+ }
88
+ //# sourceMappingURL=sqlite-intent-doc-version-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-intent-doc-version-store.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/intent/sqlite-intent-doc-version-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-connection.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/store/sqlite-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;gBAEvC,kBAAkB,EAAE,MAAM,GAAG,uBAAuB;IAYhE;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC,KAAK,IAAI,QAAQ,CAAC,QAAQ;IAsF1B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAK9B,eAAe,IAAI,kBAAkB;IA6BrC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAO1B;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,UAAU;IAiSlB,OAAO,CAAC,aAAa;IA+BrB,iDAAiD;IACjD,KAAK,IAAI,IAAI;CAWd"}
1
+ {"version":3,"file":"sqlite-connection.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/store/sqlite-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;gBAEvC,kBAAkB,EAAE,MAAM,GAAG,uBAAuB;IAYhE;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC,KAAK,IAAI,QAAQ,CAAC,QAAQ;IAsF1B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAK9B,eAAe,IAAI,kBAAkB;IA6BrC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAO1B;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,UAAU;IAgTlB,OAAO,CAAC,aAAa;IA+BrB,iDAAiD;IACjD,KAAK,IAAI,IAAI;CAWd"}
@@ -436,6 +436,20 @@ export class SqliteConnection {
436
436
  CREATE UNIQUE INDEX IF NOT EXISTS idx_intent_decisions_pain_hash_action
437
437
  ON intent_decisions(pain_id, intent_doc_hash, owner_action)
438
438
  WHERE pain_id IS NOT NULL;
439
+ `);
440
+ // INTENT.md doc version snapshots (SPEC bilingual+lifecycle).
441
+ // Mirrors the intent_decisions audit pattern: immutable snapshots, hash linkage.
442
+ db.exec(`
443
+ CREATE TABLE IF NOT EXISTS intent_doc_versions (
444
+ id TEXT PRIMARY KEY,
445
+ lang TEXT NOT NULL,
446
+ content_hash TEXT NOT NULL,
447
+ content_snapshot TEXT NOT NULL,
448
+ reason TEXT,
449
+ created_at TEXT NOT NULL
450
+ );
451
+ CREATE INDEX IF NOT EXISTS idx_intent_doc_versions_lang
452
+ ON intent_doc_versions(lang, created_at DESC);
439
453
  `);
440
454
  // P2-10: Minimal schema_version table for state.db migration tracking.
441
455
  // core cannot import plugin's MigrationRunner (dependency direction),
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-connection.js","sourceRoot":"","sources":["../../../src/runtime-v2/store/sqlite-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-connection.js","sourceRoot":"","sources":["../../../src/runtime-v2/store/sqlite-connection.ts"],"names":[],"mappings":"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"}