@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.
- package/dist/runtime-v2/__tests__/architecture-regression.test.js +8 -1
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +93 -0
- package/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +11 -0
- package/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.js +22 -0
- package/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +5 -3
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +3 -2
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts +2 -0
- package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts.map +1 -0
- package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js +88 -0
- package/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js.map +1 -0
- package/dist/runtime-v2/intent/__tests__/intent-doc.test.js +27 -1
- package/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -1
- 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-doc-version.d.ts +28 -0
- package/dist/runtime-v2/intent/intent-doc-version.d.ts.map +1 -0
- package/dist/runtime-v2/intent/intent-doc-version.js +21 -0
- package/dist/runtime-v2/intent/intent-doc-version.js.map +1 -0
- package/dist/runtime-v2/intent/intent-doc.d.ts +5 -0
- package/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -1
- package/dist/runtime-v2/intent/intent-doc.js +68 -0
- package/dist/runtime-v2/intent/intent-doc.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +41 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +130 -2
- package/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js +228 -0
- package/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js.map +1 -0
- package/dist/runtime-v2/internalization/artificer-output.d.ts +8 -0
- package/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-output.js +45 -0
- package/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +2 -2
- package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js +7 -2
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/behavior-example-pack.d.ts +66 -0
- package/dist/runtime-v2/internalization/behavior-example-pack.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/behavior-example-pack.js +183 -0
- package/dist/runtime-v2/internalization/behavior-example-pack.js.map +1 -0
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts +2 -0
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js +83 -0
- package/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js.map +1 -0
- package/dist/runtime-v2/store/intent/index.d.ts +2 -1
- package/dist/runtime-v2/store/intent/index.d.ts.map +1 -1
- package/dist/runtime-v2/store/intent/index.js +2 -1
- package/dist/runtime-v2/store/intent/index.js.map +1 -1
- package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts +28 -0
- package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts.map +1 -0
- package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js +88 -0
- package/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js.map +1 -0
- package/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/dist/runtime-v2/store/sqlite-connection.js +14 -0
- package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +40 -1
- package/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -1
- package/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -1
- package/dist/runtime-v2/tools/artificer-l2-tool-contract.js +28 -1
- package/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -1
- package/dist/runtime-v2/tools/artificer-output-typebox.d.ts +1 -0
- package/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -1
- package/dist/runtime-v2/tools/artificer-output-typebox.js +2 -0
- package/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -1
- 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 @@
|
|
|
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
|
|
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
|
|
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;
|
|
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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"}
|