ctxr-cli 0.4.1 → 0.5.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/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +55 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rollup-write.d.ts.map +1 -1
- package/dist/commands/rollup-write.js +8 -0
- package/dist/commands/rollup-write.js.map +1 -1
- package/dist/commands/verify.d.ts +9 -2
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +46 -23
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/defaults.d.ts +18 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +18 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +14 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +45 -9
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts +63 -12
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +191 -41
- package/dist/core/agents-doc.js.map +1 -1
- package/dist/core/checks/harness-portability-checks.d.ts +12 -0
- package/dist/core/checks/harness-portability-checks.d.ts.map +1 -0
- package/dist/core/checks/harness-portability-checks.js +39 -0
- package/dist/core/checks/harness-portability-checks.js.map +1 -0
- package/dist/core/checks/integrity-checks.d.ts +25 -1
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +136 -3
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/checks/manifest.d.ts.map +1 -1
- package/dist/core/checks/manifest.js +2 -0
- package/dist/core/checks/manifest.js.map +1 -1
- package/dist/core/checks/organize-checks.d.ts +12 -0
- package/dist/core/checks/organize-checks.d.ts.map +1 -1
- package/dist/core/checks/organize-checks.js +51 -1
- package/dist/core/checks/organize-checks.js.map +1 -1
- package/dist/core/convention-doc.d.ts +33 -0
- package/dist/core/convention-doc.d.ts.map +1 -0
- package/dist/core/convention-doc.js +110 -0
- package/dist/core/convention-doc.js.map +1 -0
- package/dist/core/conventions.d.ts +25 -5
- package/dist/core/conventions.d.ts.map +1 -1
- package/dist/core/conventions.js +65 -3
- package/dist/core/conventions.js.map +1 -1
- package/dist/core/fs/fenced-region.d.ts +38 -0
- package/dist/core/fs/fenced-region.d.ts.map +1 -1
- package/dist/core/fs/fenced-region.js +88 -2
- package/dist/core/fs/fenced-region.js.map +1 -1
- package/dist/core/migrations/registry.d.ts.map +1 -1
- package/dist/core/migrations/registry.js +6 -1
- package/dist/core/migrations/registry.js.map +1 -1
- package/dist/core/migrations/rename-conventions-path.d.ts +26 -0
- package/dist/core/migrations/rename-conventions-path.d.ts.map +1 -0
- package/dist/core/migrations/rename-conventions-path.js +86 -0
- package/dist/core/migrations/rename-conventions-path.js.map +1 -0
- package/dist/core/notes/list.js +2 -2
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/reconcile.d.ts.map +1 -1
- package/dist/core/reconcile.js +31 -4
- package/dist/core/reconcile.js.map +1 -1
- package/dist/core/rollup.d.ts +2 -2
- package/dist/core/rollup.d.ts.map +1 -1
- package/dist/core/rollup.js +24 -3
- package/dist/core/rollup.js.map +1 -1
- package/dist/core/write-lifecycle/path-gate.js +1 -1
- package/dist/core/write-lifecycle/path-gate.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/templates/agents/canonical.md +1 -7
- package/templates/agents/{store-conventions.md → conventions.md} +2 -4
- package/templates/agents/mission.md +5 -0
- package/templates/conventions/baseline-convention.md +60 -0
- package/templates/conventions/custom-convention-seed.md +21 -0
- package/templates/agents/store-conventions-empty.md +0 -7
package/dist/core/conventions.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readdir, readFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { GENERIC_END_RE, GENERIC_START_RE } from './fs/fenced-region.js';
|
|
3
4
|
import { parseNoteText } from './notes/parse.js';
|
|
4
5
|
const HEADING_RE = /^#\s+(.+)$/m;
|
|
5
6
|
/** The skill-layout filename: `<slug>/SKILL.md` — what harnesses with skill auto-discovery read. */
|
|
@@ -27,8 +28,48 @@ export function extractDocMetadata(raw, relativePath) {
|
|
|
27
28
|
(heading && heading.length > 0 ? heading : undefined) ??
|
|
28
29
|
fallback,
|
|
29
30
|
description: typeof fmDescription === 'string' && fmDescription.length > 0 ? fmDescription : null,
|
|
31
|
+
body,
|
|
30
32
|
};
|
|
31
33
|
}
|
|
34
|
+
const ATX_HEADING_RE = /^(#{1,6})(\s+.*)$/;
|
|
35
|
+
/**
|
|
36
|
+
* inline-conventions-and-mission: renders a scanned doc's body for inlining
|
|
37
|
+
* into a generated `AGENTS.md` section — a leading `# <title>` heading
|
|
38
|
+
* dropped when it duplicates the section heading the caller already
|
|
39
|
+
* provides, every remaining ATX heading demoted by `headingOffset` levels
|
|
40
|
+
* (capped at H6), and any nested `contexture:<region>` fence marker line
|
|
41
|
+
* stripped (its body kept, only the marker comment removed) so a fence
|
|
42
|
+
* copied out of a source file — e.g. mission.md's own rollup fence — never
|
|
43
|
+
* leaves an orphaned marker inside AGENTS.md's fence.
|
|
44
|
+
*/
|
|
45
|
+
export function inlineDocBody(doc, headingOffset) {
|
|
46
|
+
const lines = doc.body.split('\n');
|
|
47
|
+
let start = 0;
|
|
48
|
+
while (start < lines.length && lines[start].trim() === '')
|
|
49
|
+
start += 1;
|
|
50
|
+
const firstHeading = start < lines.length ? ATX_HEADING_RE.exec(lines[start]) : null;
|
|
51
|
+
if (firstHeading && firstHeading[1].length === 1 && firstHeading[2].trim().toLowerCase() === doc.title.trim().toLowerCase()) {
|
|
52
|
+
start += 1;
|
|
53
|
+
while (start < lines.length && lines[start].trim() === '')
|
|
54
|
+
start += 1;
|
|
55
|
+
}
|
|
56
|
+
const out = [];
|
|
57
|
+
for (const line of lines.slice(start)) {
|
|
58
|
+
if (GENERIC_START_RE.test(line) || GENERIC_END_RE.test(line))
|
|
59
|
+
continue;
|
|
60
|
+
const heading = ATX_HEADING_RE.exec(line);
|
|
61
|
+
if (heading) {
|
|
62
|
+
const level = Math.min(heading[1].length + headingOffset, 6);
|
|
63
|
+
out.push(`${'#'.repeat(level)}${heading[2]}`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
out.push(line);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
while (out.length > 0 && out[out.length - 1].trim() === '')
|
|
70
|
+
out.pop();
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
32
73
|
export async function scanDocsDir(root, dirRelativePath) {
|
|
33
74
|
const dir = path.join(root, dirRelativePath);
|
|
34
75
|
let entries;
|
|
@@ -66,8 +107,29 @@ export async function scanDocsDir(root, dirRelativePath) {
|
|
|
66
107
|
}
|
|
67
108
|
return docs;
|
|
68
109
|
}
|
|
69
|
-
/**
|
|
70
|
-
|
|
71
|
-
|
|
110
|
+
/**
|
|
111
|
+
* compose-store-guidance-documents: the mission document, when configured,
|
|
112
|
+
* commonly lives in the same guidance directory as convention files (its
|
|
113
|
+
* shipped default is `<guidance_path>/mission.md`) but is never itself a
|
|
114
|
+
* convention — it already gets its own "Mission" section
|
|
115
|
+
* (inline-conventions-and-mission's `renderMissionSection`). Excluded by
|
|
116
|
+
* basename so inlining conventions never double-renders it.
|
|
117
|
+
*/
|
|
118
|
+
function reservedGuidanceFileNames(config) {
|
|
119
|
+
const names = new Set();
|
|
120
|
+
if (config.organize.mission_path)
|
|
121
|
+
names.add(path.basename(config.organize.mission_path));
|
|
122
|
+
return names;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Every convention doc currently at the configured guidance path —
|
|
126
|
+
* contexture's own shipped baseline (see `templates/conventions/baseline-convention.md`,
|
|
127
|
+
* synced by `syncBaselineConvention` in `convention-doc.ts`) alongside
|
|
128
|
+
* whatever the operator has added — minus the mission document.
|
|
129
|
+
*/
|
|
130
|
+
export async function scanConventions(root, config) {
|
|
131
|
+
const docs = await scanDocsDir(root, config.harness.guidance_path);
|
|
132
|
+
const reserved = reservedGuidanceFileNames(config);
|
|
133
|
+
return docs.filter((doc) => !reserved.has(path.basename(doc.path)));
|
|
72
134
|
}
|
|
73
135
|
//# sourceMappingURL=conventions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/core/conventions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/core/conventions.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,44 @@ export declare function removeFencedRegion(text: string, fence: Fence): UpsertFe
|
|
|
63
63
|
export declare function removeFencedRegionFromFile(filePath: string, fence: Fence): Promise<{
|
|
64
64
|
changed: boolean;
|
|
65
65
|
}>;
|
|
66
|
+
export interface FenceSpan {
|
|
67
|
+
fence: Fence;
|
|
68
|
+
startIdx: number;
|
|
69
|
+
endIdx: number;
|
|
70
|
+
}
|
|
71
|
+
export interface ReorderFencedRegionsResult {
|
|
72
|
+
text: string;
|
|
73
|
+
changed: boolean;
|
|
74
|
+
/** True when the fences present are not all separated by blank lines only — no change was made. */
|
|
75
|
+
blocked: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* inline-conventions-and-mission (design.md "Reordering is opt-in-safe"):
|
|
79
|
+
* moves every fence from `orderedFences` that is present in `text` to match
|
|
80
|
+
* that order, but ONLY when every present fence is separated from its
|
|
81
|
+
* neighbor (in the file's current order) by nothing but blank lines — the
|
|
82
|
+
* conservative reading of "never silently relocate hand-written content
|
|
83
|
+
* relative to sections it was written to sit near." Each fence's own body is
|
|
84
|
+
* moved byte-for-byte; content before the first present fence and after the
|
|
85
|
+
* last is untouched. A fence from `orderedFences` absent from `text` is
|
|
86
|
+
* skipped, not an error. Fewer than two fences present is a no-op (nothing
|
|
87
|
+
* to reorder), and matching order already is `changed: false`.
|
|
88
|
+
*/
|
|
89
|
+
export declare function reorderFencedRegions(text: string, orderedFences: readonly Fence[]): ReorderFencedRegionsResult;
|
|
90
|
+
/** File-backed counterpart to `reorderFencedRegions` — a missing file has nothing to reorder. */
|
|
91
|
+
export declare function reorderFencedRegionsInFile(filePath: string, orderedFences: readonly Fence[]): Promise<{
|
|
92
|
+
changed: boolean;
|
|
93
|
+
blocked: boolean;
|
|
94
|
+
}>;
|
|
95
|
+
/**
|
|
96
|
+
* Comment-syntax-agnostic fence-marker detection, shared with `inlineDocBody`
|
|
97
|
+
* (`conventions.ts`) so a nested `contexture:<region>` fence copied out of a
|
|
98
|
+
* source file (e.g. a rollup fence inside a mission document) is stripped by
|
|
99
|
+
* the exact same rule `validateFenceIntegrity` uses to find one, rather than
|
|
100
|
+
* a second regex that could quietly drift from it.
|
|
101
|
+
*/
|
|
102
|
+
export declare const GENERIC_START_RE: RegExp;
|
|
103
|
+
export declare const GENERIC_END_RE: RegExp;
|
|
66
104
|
/**
|
|
67
105
|
* Pure validation, comment-syntax-agnostic (matches the `contexture:<region>`
|
|
68
106
|
* token regardless of whether it's wrapped in `#`, `<!-- -->`, or anything
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fenced-region.d.ts","sourceRoot":"","sources":["../../../src/core/fs/fenced-region.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI3C;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,wBAAwB,CA6B1B;AAeD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAerE;AAED,wGAAwG;AACxG,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAehG;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAsB/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAsBvF;AAED,kFAAkF;AAClF,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuB9G;
|
|
1
|
+
{"version":3,"file":"fenced-region.d.ts","sourceRoot":"","sources":["../../../src/core/fs/fenced-region.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI3C;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,wBAAwB,CA6B1B;AAeD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAerE;AAED,wGAAwG;AACxG,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAehG;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAsB/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAsBvF;AAED,kFAAkF;AAClF,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuB9G;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,GAAG,0BAA0B,CA0C9G;AAED,iGAAiG;AACjG,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAcnJ;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,QAA2B,CAAC;AACzD,eAAO,MAAM,cAAc,QAA2B,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B7D"}
|
|
@@ -184,8 +184,94 @@ export async function removeFencedRegionFromFile(filePath, fence) {
|
|
|
184
184
|
}
|
|
185
185
|
return { changed: result.changed };
|
|
186
186
|
}
|
|
187
|
-
|
|
188
|
-
const
|
|
187
|
+
function locateFence(lines, fence) {
|
|
188
|
+
const startIndices = indicesOf(lines, fence.start);
|
|
189
|
+
const endIndices = indicesOf(lines, fence.end);
|
|
190
|
+
if (startIndices.length === 0 && endIndices.length === 0)
|
|
191
|
+
return null;
|
|
192
|
+
if (startIndices.length === 1 && endIndices.length === 1 && startIndices[0] < endIndices[0]) {
|
|
193
|
+
return { fence, startIdx: startIndices[0], endIdx: endIndices[0] };
|
|
194
|
+
}
|
|
195
|
+
throw new FenceMismatch(`found ${startIndices.length} start marker(s) and ${endIndices.length} end marker(s) while reordering`);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* inline-conventions-and-mission (design.md "Reordering is opt-in-safe"):
|
|
199
|
+
* moves every fence from `orderedFences` that is present in `text` to match
|
|
200
|
+
* that order, but ONLY when every present fence is separated from its
|
|
201
|
+
* neighbor (in the file's current order) by nothing but blank lines — the
|
|
202
|
+
* conservative reading of "never silently relocate hand-written content
|
|
203
|
+
* relative to sections it was written to sit near." Each fence's own body is
|
|
204
|
+
* moved byte-for-byte; content before the first present fence and after the
|
|
205
|
+
* last is untouched. A fence from `orderedFences` absent from `text` is
|
|
206
|
+
* skipped, not an error. Fewer than two fences present is a no-op (nothing
|
|
207
|
+
* to reorder), and matching order already is `changed: false`.
|
|
208
|
+
*/
|
|
209
|
+
export function reorderFencedRegions(text, orderedFences) {
|
|
210
|
+
const trailingNewline = text.endsWith('\n');
|
|
211
|
+
const lines = text.length === 0 ? [] : text.split('\n');
|
|
212
|
+
if (trailingNewline)
|
|
213
|
+
lines.pop();
|
|
214
|
+
const desiredOrder = [];
|
|
215
|
+
for (const fence of orderedFences) {
|
|
216
|
+
const span = locateFence(lines, fence);
|
|
217
|
+
if (span)
|
|
218
|
+
desiredOrder.push(span);
|
|
219
|
+
}
|
|
220
|
+
if (desiredOrder.length < 2) {
|
|
221
|
+
return { text, changed: false, blocked: false };
|
|
222
|
+
}
|
|
223
|
+
const byFileOrder = [...desiredOrder].sort((a, b) => a.startIdx - b.startIdx);
|
|
224
|
+
for (let i = 0; i < byFileOrder.length - 1; i += 1) {
|
|
225
|
+
const gapStart = byFileOrder[i].endIdx + 1;
|
|
226
|
+
const gapEnd = byFileOrder[i + 1].startIdx;
|
|
227
|
+
for (let j = gapStart; j < gapEnd; j += 1) {
|
|
228
|
+
if (lines[j] !== '') {
|
|
229
|
+
return { text, changed: false, blocked: true };
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const alreadyInOrder = byFileOrder.every((span, i) => span.fence === desiredOrder[i].fence);
|
|
234
|
+
if (alreadyInOrder) {
|
|
235
|
+
return { text, changed: false, blocked: false };
|
|
236
|
+
}
|
|
237
|
+
const before = lines.slice(0, byFileOrder[0].startIdx);
|
|
238
|
+
const after = lines.slice(byFileOrder[byFileOrder.length - 1].endIdx + 1);
|
|
239
|
+
const rebuilt = [...before];
|
|
240
|
+
for (const [i, span] of desiredOrder.entries()) {
|
|
241
|
+
if (i > 0)
|
|
242
|
+
rebuilt.push('');
|
|
243
|
+
rebuilt.push(...lines.slice(span.startIdx, span.endIdx + 1));
|
|
244
|
+
}
|
|
245
|
+
rebuilt.push(...after);
|
|
246
|
+
const result = finish(rebuilt, text);
|
|
247
|
+
return { ...result, blocked: false };
|
|
248
|
+
}
|
|
249
|
+
/** File-backed counterpart to `reorderFencedRegions` — a missing file has nothing to reorder. */
|
|
250
|
+
export async function reorderFencedRegionsInFile(filePath, orderedFences) {
|
|
251
|
+
let existing = '';
|
|
252
|
+
try {
|
|
253
|
+
existing = await readFile(filePath, 'utf8');
|
|
254
|
+
}
|
|
255
|
+
catch (err) {
|
|
256
|
+
if (err.code !== 'ENOENT')
|
|
257
|
+
throw err;
|
|
258
|
+
return { changed: false, blocked: false };
|
|
259
|
+
}
|
|
260
|
+
const result = reorderFencedRegions(existing, orderedFences);
|
|
261
|
+
if (result.changed) {
|
|
262
|
+
await writeFileAtomic(filePath, result.text);
|
|
263
|
+
}
|
|
264
|
+
return { changed: result.changed, blocked: result.blocked };
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Comment-syntax-agnostic fence-marker detection, shared with `inlineDocBody`
|
|
268
|
+
* (`conventions.ts`) so a nested `contexture:<region>` fence copied out of a
|
|
269
|
+
* source file (e.g. a rollup fence inside a mission document) is stripped by
|
|
270
|
+
* the exact same rule `validateFenceIntegrity` uses to find one, rather than
|
|
271
|
+
* a second regex that could quietly drift from it.
|
|
272
|
+
*/
|
|
273
|
+
export const GENERIC_START_RE = />>>\s*contexture:(\S+)/;
|
|
274
|
+
export const GENERIC_END_RE = /<<<\s*contexture:(\S+)/;
|
|
189
275
|
/**
|
|
190
276
|
* Pure validation, comment-syntax-agnostic (matches the `contexture:<region>`
|
|
191
277
|
* token regardless of whether it's wrapped in `#`, `<!-- -->`, or anything
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fenced-region.js","sourceRoot":"","sources":["../../../src/core/fs/fenced-region.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fenced-region.js","sourceRoot":"","sources":["../../../src/core/fs/fenced-region.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,gHAAgH;AAChH,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAI1C,CAAC;AAEF,qHAAqH;AACrH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAElE"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { renameConventionsPathMigration } from './rename-conventions-path.js';
|
|
1
2
|
import { renameProceduresPathMigration } from './rename-procedures-path.js';
|
|
2
3
|
import { renameVisibilityFieldMigration } from './rename-visibility-field.js';
|
|
3
4
|
/** Every migration contexture ships, in ascending fromVersion order. Later phases append here, nothing else. */
|
|
4
|
-
export const MIGRATIONS = [
|
|
5
|
+
export const MIGRATIONS = [
|
|
6
|
+
renameVisibilityFieldMigration,
|
|
7
|
+
renameProceduresPathMigration,
|
|
8
|
+
renameConventionsPathMigration,
|
|
9
|
+
];
|
|
5
10
|
/** Every migration a store currently at `fromVersion` still needs to reach the CLI's supported version, in order. */
|
|
6
11
|
export function pendingMigrations(fromVersion) {
|
|
7
12
|
return MIGRATIONS.filter((m) => m.fromVersion >= fromVersion).slice().sort((a, b) => a.fromVersion - b.fromVersion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAG9E,gHAAgH;AAChH,MAAM,CAAC,MAAM,UAAU,GAAyB,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAG9E,gHAAgH;AAChH,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C,8BAA8B;IAC9B,6BAA6B;IAC7B,8BAA8B;CAC/B,CAAC;AAEF,qHAAqH;AACrH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;AACtH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Migration } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* rename-conventions-path-to-guidance-path (compose-store-guidance-documents
|
|
4
|
+
* design.md D1/D7): unlike 0003's pure key rename, the key's *default value*
|
|
5
|
+
* also changes (`.contexture/conventions/` -> `.contexture/guidance/`), so a
|
|
6
|
+
* store that never customized the path needs its directory moved on disk,
|
|
7
|
+
* not merely its config key renamed. An operator-customized path is left
|
|
8
|
+
* exactly where it is — only the key spelling changes for them.
|
|
9
|
+
*
|
|
10
|
+
* Migrations only see `Store` (`root` + `config`, no `GitRunner` — see
|
|
11
|
+
* core/store.ts), so the directory move is a plain filesystem rename, not
|
|
12
|
+
* `git mv`. History is still preserved: whatever commits this migration's
|
|
13
|
+
* output (the normal session-submit flow) stages a coherent delete-old,
|
|
14
|
+
* add-new diff, which `git log --follow`'s content-similarity rename
|
|
15
|
+
* detection recognizes identically to an explicit `git mv` — git never
|
|
16
|
+
* records "this was a rename" as a distinct fact in its object model
|
|
17
|
+
* either way.
|
|
18
|
+
*
|
|
19
|
+
* Pending-ness is `store.config.schema_version < 4`, the same
|
|
20
|
+
* schema-version-not-key-presence rule 0003 established, for the same
|
|
21
|
+
* reason: `HarnessSchema`'s fallback transform already populates
|
|
22
|
+
* `guidance_path` on an unmigrated store, so its presence can't distinguish
|
|
23
|
+
* migrated from not.
|
|
24
|
+
*/
|
|
25
|
+
export declare const renameConventionsPathMigration: Migration;
|
|
26
|
+
//# sourceMappingURL=rename-conventions-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename-conventions-path.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/rename-conventions-path.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAiB5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,8BAA8B,EAAE,SA+C5C,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { rename } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { readConfig } from '../../config/load.js';
|
|
5
|
+
import { renderStoreConfig } from '../../config/render.js';
|
|
6
|
+
import { writeFileAtomic } from '../fs/atomic.js';
|
|
7
|
+
const OLD_DEFAULT_GUIDANCE_PATH = '.contexture/conventions/';
|
|
8
|
+
const NEW_DEFAULT_GUIDANCE_PATH = '.contexture/guidance/';
|
|
9
|
+
const CONFIG_DELTA = {
|
|
10
|
+
path: 'contexture.yaml',
|
|
11
|
+
description: 'rename harness.conventions_path to harness.guidance_path and set schema_version to 4',
|
|
12
|
+
};
|
|
13
|
+
function directoryDelta() {
|
|
14
|
+
return {
|
|
15
|
+
path: NEW_DEFAULT_GUIDANCE_PATH,
|
|
16
|
+
description: `move the default-valued guidance directory from ${OLD_DEFAULT_GUIDANCE_PATH} to ${NEW_DEFAULT_GUIDANCE_PATH}`,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* rename-conventions-path-to-guidance-path (compose-store-guidance-documents
|
|
21
|
+
* design.md D1/D7): unlike 0003's pure key rename, the key's *default value*
|
|
22
|
+
* also changes (`.contexture/conventions/` -> `.contexture/guidance/`), so a
|
|
23
|
+
* store that never customized the path needs its directory moved on disk,
|
|
24
|
+
* not merely its config key renamed. An operator-customized path is left
|
|
25
|
+
* exactly where it is — only the key spelling changes for them.
|
|
26
|
+
*
|
|
27
|
+
* Migrations only see `Store` (`root` + `config`, no `GitRunner` — see
|
|
28
|
+
* core/store.ts), so the directory move is a plain filesystem rename, not
|
|
29
|
+
* `git mv`. History is still preserved: whatever commits this migration's
|
|
30
|
+
* output (the normal session-submit flow) stages a coherent delete-old,
|
|
31
|
+
* add-new diff, which `git log --follow`'s content-similarity rename
|
|
32
|
+
* detection recognizes identically to an explicit `git mv` — git never
|
|
33
|
+
* records "this was a rename" as a distinct fact in its object model
|
|
34
|
+
* either way.
|
|
35
|
+
*
|
|
36
|
+
* Pending-ness is `store.config.schema_version < 4`, the same
|
|
37
|
+
* schema-version-not-key-presence rule 0003 established, for the same
|
|
38
|
+
* reason: `HarnessSchema`'s fallback transform already populates
|
|
39
|
+
* `guidance_path` on an unmigrated store, so its presence can't distinguish
|
|
40
|
+
* migrated from not.
|
|
41
|
+
*/
|
|
42
|
+
export const renameConventionsPathMigration = {
|
|
43
|
+
id: '0004-rename-conventions-path-to-guidance-path',
|
|
44
|
+
fromVersion: 3,
|
|
45
|
+
toVersion: 4,
|
|
46
|
+
description: 'Rename the harness.conventions_path config key to harness.guidance_path, move the guidance directory when it sat at the old default, and bump schema_version to 4.',
|
|
47
|
+
async plan(store) {
|
|
48
|
+
if (store.config.schema_version >= 4)
|
|
49
|
+
return [];
|
|
50
|
+
const deltas = [CONFIG_DELTA];
|
|
51
|
+
if (store.config.harness.guidance_path === OLD_DEFAULT_GUIDANCE_PATH)
|
|
52
|
+
deltas.push(directoryDelta());
|
|
53
|
+
return deltas;
|
|
54
|
+
},
|
|
55
|
+
async apply(store) {
|
|
56
|
+
if (store.config.schema_version >= 4)
|
|
57
|
+
return [];
|
|
58
|
+
const configPath = path.join(store.root, 'contexture.yaml');
|
|
59
|
+
// readConfig() already resolves harness.guidance_path via HarnessSchema's
|
|
60
|
+
// fallback (from conventions_path if that's all the file has), so
|
|
61
|
+
// currentConfig.harness carries no conventions_path key at all —
|
|
62
|
+
// rendering it below writes only guidance_path to disk.
|
|
63
|
+
const currentConfig = await readConfig(store.root);
|
|
64
|
+
const appliedDeltas = [CONFIG_DELTA];
|
|
65
|
+
let guidancePath = currentConfig.harness.guidance_path;
|
|
66
|
+
if (guidancePath === OLD_DEFAULT_GUIDANCE_PATH) {
|
|
67
|
+
const oldDir = path.join(store.root, OLD_DEFAULT_GUIDANCE_PATH);
|
|
68
|
+
const newDir = path.join(store.root, NEW_DEFAULT_GUIDANCE_PATH);
|
|
69
|
+
// Absent when the store never carried any convention files — nothing
|
|
70
|
+
// to move on disk, only the config value changes.
|
|
71
|
+
if (existsSync(oldDir)) {
|
|
72
|
+
await rename(oldDir, newDir);
|
|
73
|
+
}
|
|
74
|
+
guidancePath = NEW_DEFAULT_GUIDANCE_PATH;
|
|
75
|
+
appliedDeltas.push(directoryDelta());
|
|
76
|
+
}
|
|
77
|
+
const nextConfig = {
|
|
78
|
+
...currentConfig,
|
|
79
|
+
schema_version: 4,
|
|
80
|
+
harness: { ...currentConfig.harness, guidance_path: guidancePath },
|
|
81
|
+
};
|
|
82
|
+
await writeFileAtomic(configPath, renderStoreConfig(nextConfig));
|
|
83
|
+
return appliedDeltas;
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=rename-conventions-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename-conventions-path.js","sourceRoot":"","sources":["../../../src/core/migrations/rename-conventions-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAC7D,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAE1D,MAAM,YAAY,GAAmB;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,sFAAsF;CACpG,CAAC;AAEF,SAAS,cAAc;IACrB,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,mDAAmD,yBAAyB,OAAO,yBAAyB,EAAE;KAC5H,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAc;IACvD,EAAE,EAAE,+CAA+C;IACnD,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EACT,oKAAoK;IAEtK,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChD,MAAM,MAAM,GAAqB,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,yBAAyB;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,0EAA0E;QAC1E,kEAAkE;QAClE,iEAAiE;QACjE,wDAAwD;QACxD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,aAAa,GAAqB,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC;QACvD,IAAI,YAAY,KAAK,yBAAyB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAChE,qEAAqE;YACrE,kDAAkD;YAClD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,YAAY,GAAG,yBAAyB,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,GAAG,aAAa;YAChB,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE;SACnE,CAAC;QACF,MAAM,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
|
package/dist/core/notes/list.js
CHANGED
|
@@ -41,9 +41,9 @@ export function excludedPrefixesFor(config) {
|
|
|
41
41
|
...config.derived.paths,
|
|
42
42
|
config.session.worktrees_path,
|
|
43
43
|
config.catalog.path,
|
|
44
|
-
// Tool-owned instruction docs (skills,
|
|
44
|
+
// Tool-owned instruction docs (skills, guidance) are never notes, wherever they live.
|
|
45
45
|
config.harness.skills_path,
|
|
46
|
-
config.harness.
|
|
46
|
+
config.harness.guidance_path,
|
|
47
47
|
];
|
|
48
48
|
}
|
|
49
49
|
async function walk(dir, root, excludePrefixes, skipRootFiles, results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/core/notes/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyBvC,wGAAwG;AACxG,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE;;;;;;;;;GASG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAmB;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAoB,EAAE,QAA2B;IACzE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,OAAO,YAAY,KAAK,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,OAAO;QACL,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa;QACjC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;QACvB,MAAM,CAAC,OAAO,CAAC,cAAc;QAC7B,MAAM,CAAC,OAAO,CAAC,IAAI;QACnB,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/core/notes/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/core/reconcile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/core/reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAiBvC,eAAO,MAAM,yBAAyB,8BAA4B,CAAC;AAwBnE,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAoD7G"}
|
package/dist/core/reconcile.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { DEFAULT_BASELINE_CONVENTION_FILE_NAME } from '../config/defaults.js';
|
|
3
|
+
import { agentsMdPath, AGENTS_MD_SECTION_ORDER, buildAgentsCanonicalSection, buildAgentsCaptureSection, buildAgentsConventionsSection, buildAgentsLegRoutingSection, buildAgentsMissionSection, buildAgentsPlacementSection, } from './agents-doc.js';
|
|
4
|
+
import { syncBaselineConvention } from './convention-doc.js';
|
|
5
|
+
import { removeFencedRegionFromFile, reorderFencedRegionsInFile, upsertFencedRegionInFile } from './fs/fenced-region.js';
|
|
4
6
|
import { configureHooksPath, installHooks } from './hooks.js';
|
|
5
7
|
import { commentFence, DERIVED_GITIGNORE_FENCE, htmlCommentFence } from './markers.js';
|
|
6
8
|
import { syncShippedSkills } from './skills.js';
|
|
@@ -15,6 +17,16 @@ export const WORKTREES_GITIGNORE_FENCE = commentFence('worktrees');
|
|
|
15
17
|
* contexture issue #14 tracks.
|
|
16
18
|
*/
|
|
17
19
|
const RETIRED_AGENTS_MD_IDENTITY_FENCE = htmlCommentFence('agent-identity');
|
|
20
|
+
/**
|
|
21
|
+
* compose-store-guidance-documents: the conventions fence was renamed from
|
|
22
|
+
* `store-conventions` to `conventions` (dropping the redundant "store-"
|
|
23
|
+
* prefix — every sibling fence/template already omits it, e.g. `canonical`,
|
|
24
|
+
* `placement`, `mission`). Same one-time cleanup shape as the identity
|
|
25
|
+
* retirement above: `buildAgentsConventionsSection` already writes the new
|
|
26
|
+
* `contexture:conventions` fence via the loop below, so this only needs to
|
|
27
|
+
* remove the orphaned old one.
|
|
28
|
+
*/
|
|
29
|
+
const RETIRED_AGENTS_MD_STORE_CONVENTIONS_FENCE = htmlCommentFence('store-conventions');
|
|
18
30
|
/**
|
|
19
31
|
* Brings every contexture-OWNED file in a store to the installed package's
|
|
20
32
|
* version: the managed .gitignore blocks, every generated AGENTS.md
|
|
@@ -32,15 +44,22 @@ export async function reconcileStore(env, root, config) {
|
|
|
32
44
|
const gitignorePath = path.join(root, '.gitignore');
|
|
33
45
|
note('.gitignore', (await upsertFencedRegionInFile(gitignorePath, DERIVED_GITIGNORE_FENCE, config.derived.paths)).changed);
|
|
34
46
|
note('.gitignore', (await upsertFencedRegionInFile(gitignorePath, WORKTREES_GITIGNORE_FENCE, [config.session.worktrees_path])).changed);
|
|
35
|
-
//
|
|
36
|
-
//
|
|
47
|
+
// The owned skill copies are refreshed unconditionally here — not because
|
|
48
|
+
// any AGENTS.md section reads them anymore (inline-conventions-and-mission
|
|
49
|
+
// removed the skill index), but because init/update must still deliver
|
|
50
|
+
// the skill files to disk regardless of what AGENTS.md renders.
|
|
37
51
|
changed.push(...(await syncShippedSkills(root, config)));
|
|
52
|
+
// Same reason, same ordering constraint as skills: the shipped baseline
|
|
53
|
+
// convention file must be current on disk BEFORE buildAgentsConventionsSection
|
|
54
|
+
// scans the guidance directory and inlines it (compose-store-guidance-documents).
|
|
55
|
+
note(path.join(config.harness.guidance_path, DEFAULT_BASELINE_CONVENTION_FILE_NAME).split(path.sep).join('/'), (await syncBaselineConvention(root, config)).changed);
|
|
38
56
|
let agentsChanged = false;
|
|
39
57
|
for (const build of [
|
|
40
58
|
buildAgentsLegRoutingSection,
|
|
41
59
|
buildAgentsCaptureSection,
|
|
42
60
|
buildAgentsPlacementSection,
|
|
43
61
|
buildAgentsCanonicalSection,
|
|
62
|
+
buildAgentsMissionSection,
|
|
44
63
|
buildAgentsConventionsSection,
|
|
45
64
|
]) {
|
|
46
65
|
if ((await build(root, config)).changed)
|
|
@@ -48,6 +67,14 @@ export async function reconcileStore(env, root, config) {
|
|
|
48
67
|
}
|
|
49
68
|
if ((await removeFencedRegionFromFile(agentsMdPath(root), RETIRED_AGENTS_MD_IDENTITY_FENCE)).changed)
|
|
50
69
|
agentsChanged = true;
|
|
70
|
+
if ((await removeFencedRegionFromFile(agentsMdPath(root), RETIRED_AGENTS_MD_STORE_CONVENTIONS_FENCE)).changed)
|
|
71
|
+
agentsChanged = true;
|
|
72
|
+
// harness-portability spec "Generated sections render in a fixed order":
|
|
73
|
+
// reorders once every section fence above has been written/refreshed, so
|
|
74
|
+
// a first-time init and a subsequent update converge on the same layout.
|
|
75
|
+
// A no-op when the fences aren't all contiguous — see `reorderFencedRegions`.
|
|
76
|
+
if ((await reorderFencedRegionsInFile(agentsMdPath(root), AGENTS_MD_SECTION_ORDER)).changed)
|
|
77
|
+
agentsChanged = true;
|
|
51
78
|
note('AGENTS.md', agentsChanged);
|
|
52
79
|
const { changed: hookFiles } = await installHooks(root, config.git.default_branch);
|
|
53
80
|
changed.push(...hookFiles);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/core/reconcile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/core/reconcile.ts"],"names":[],"mappings":"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"}
|
package/dist/core/rollup.d.ts
CHANGED
|
@@ -35,8 +35,8 @@ export declare function checkRollupStaleness(git: GitRunner, root: string, entit
|
|
|
35
35
|
export declare function checkMissionStaleness(note: Note, staleDays: number, now: Date): StaleRollupEntry | null;
|
|
36
36
|
/**
|
|
37
37
|
* Every entity with a rollup section (optionally narrowed to one), reported
|
|
38
|
-
* stale per `checkRollupStaleness`, plus — when `missionPath` names a
|
|
39
|
-
* that exists
|
|
38
|
+
* stale per `checkRollupStaleness`, plus — when `missionPath` names a
|
|
39
|
+
* document that exists on disk — that one path via `checkMissionStaleness`
|
|
40
40
|
* instead of the backlink-based entity scan, even when it carries no
|
|
41
41
|
* `ROLLUP_FENCE` yet (an unwritten mission document must surface as
|
|
42
42
|
* needing its first write, not be silently excluded by `hasRollupSection`).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/core/rollup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/core/rollup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C,iHAAiH;AACjH,eAAO,MAAM,YAAY,8BAA6B,CAAC;AACvD,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEpD;AAaD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,SAAS,IAAI,EAAE,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsBlC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAYvG;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,EACvD,SAAS,SAAI,EACb,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsB7B"}
|