ctxr-cli 0.20.1 → 0.22.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/README.md +55 -8
- package/dist/adapters/builtin/index.d.ts.map +1 -1
- package/dist/adapters/builtin/index.js +8 -1
- package/dist/adapters/builtin/index.js.map +1 -1
- package/dist/adapters/harness/antigravity.d.ts +18 -0
- package/dist/adapters/harness/antigravity.d.ts.map +1 -0
- package/dist/adapters/harness/antigravity.js +24 -0
- package/dist/adapters/harness/antigravity.js.map +1 -0
- package/dist/adapters/harness/codex.d.ts +22 -0
- package/dist/adapters/harness/codex.d.ts.map +1 -0
- package/dist/adapters/harness/codex.js +28 -0
- package/dist/adapters/harness/codex.js.map +1 -0
- package/dist/adapters/types.d.ts +9 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/commands/archive.d.ts +4 -3
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +28 -23
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +22 -1
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/publish-urls.d.ts +32 -0
- package/dist/commands/publish-urls.d.ts.map +1 -0
- package/dist/commands/publish-urls.js +125 -0
- package/dist/commands/publish-urls.js.map +1 -0
- package/dist/config/defaults.d.ts +26 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +25 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +19 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +31 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts +26 -0
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +94 -40
- package/dist/core/agents-doc.js.map +1 -1
- package/dist/core/checks/harness-portability-checks.d.ts +32 -0
- package/dist/core/checks/harness-portability-checks.d.ts.map +1 -1
- package/dist/core/checks/harness-portability-checks.js +177 -2
- package/dist/core/checks/harness-portability-checks.js.map +1 -1
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +34 -14
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/checks/organize-checks.d.ts +5 -0
- package/dist/core/checks/organize-checks.d.ts.map +1 -1
- package/dist/core/checks/organize-checks.js +57 -4
- package/dist/core/checks/organize-checks.js.map +1 -1
- package/dist/core/convention-doc.d.ts.map +1 -1
- package/dist/core/convention-doc.js +5 -2
- package/dist/core/convention-doc.js.map +1 -1
- package/dist/core/conventions.d.ts +7 -0
- package/dist/core/conventions.d.ts.map +1 -1
- package/dist/core/conventions.js +3 -0
- package/dist/core/conventions.js.map +1 -1
- package/dist/core/errors.d.ts +22 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +52 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/ingest/required-sections.d.ts +3 -3
- package/dist/core/ingest/required-sections.d.ts.map +1 -1
- package/dist/core/ingest/required-sections.js +79 -16
- package/dist/core/ingest/required-sections.js.map +1 -1
- package/dist/core/notes/list.d.ts.map +1 -1
- package/dist/core/notes/list.js +3 -0
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/reconcile.d.ts.map +1 -1
- package/dist/core/reconcile.js +2 -1
- package/dist/core/reconcile.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +28 -4
- package/dist/core/skills.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +15 -2
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/templates/agents/canonical.md +3 -8
- package/templates/agents/capture-and-ingest.md +1 -36
- package/templates/agents/conventions.md +3 -1
- package/templates/agents/guidance-index.md +5 -0
- package/templates/agents/mission.md +2 -0
- package/templates/agents/retrieval-leg-routing.md +7 -42
- package/templates/conventions/baseline-conventions.md +20 -9
- package/templates/conventions/house-conventions-seed.md +10 -0
- package/templates/skills/ctxr-capture.md +35 -4
- package/templates/skills/ctxr-derived-artifacts.md +6 -0
- package/templates/skills/ctxr-ingest-orchestration.md +5 -1
- package/templates/skills/ctxr-mission.md +40 -31
- package/templates/skills/ctxr-organize-audit.md +30 -6
- package/templates/skills/ctxr-placement.md +5 -0
- package/templates/skills/ctxr-publish.md +2 -1
- package/templates/skills/ctxr-research.md +108 -0
- package/templates/skills/ctxr-second-opinion.md +5 -0
- package/templates/skills/ctxr-submit.md +28 -4
package/dist/core/agents-doc.js
CHANGED
|
@@ -2,6 +2,8 @@ import { readFile } from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { GRAPH_DOCUMENT_RELATIVE_PATH } from './graph/persist.js';
|
|
4
4
|
import { CONFIG_FILE_NAME } from './root.js';
|
|
5
|
+
import { parseNoteText } from './notes/parse.js';
|
|
6
|
+
import { ROLLED_UP_FIELD } from './rollup.js';
|
|
5
7
|
import { excludedPrefixesFor } from './notes/list.js';
|
|
6
8
|
import { extractDocMetadata, inlineDocBody, scanConventions } from './conventions.js';
|
|
7
9
|
import { renderBaselineConventions } from './convention-doc.js';
|
|
@@ -62,9 +64,11 @@ function collapseNestedPrefixes(prefixes) {
|
|
|
62
64
|
}
|
|
63
65
|
export function renderLegRoutingSection(config) {
|
|
64
66
|
const exclusions = collapseNestedPrefixes(excludedPrefixesFor(config));
|
|
65
|
-
return
|
|
67
|
+
return agentsTemplate('retrieval-leg-routing')
|
|
66
68
|
.replaceAll('__GRAPH_DOCUMENT_PATH__', GRAPH_DOCUMENT_RELATIVE_PATH)
|
|
67
|
-
.replaceAll('__CAPTURE_ROOT__', config.ingest.capture_root)
|
|
69
|
+
.replaceAll('__CAPTURE_ROOT__', config.ingest.capture_root)
|
|
70
|
+
.replaceAll('__EXCLUSION_PATHS__', exclusions.map((prefix) => `\`${prefix}\``).join(', '))
|
|
71
|
+
.split('\n');
|
|
68
72
|
}
|
|
69
73
|
/** Idempotently reconciles AGENTS.md's leg-routing section from current config — called at init and on re-init. */
|
|
70
74
|
export async function buildAgentsLegRoutingSection(root, config) {
|
|
@@ -122,32 +126,15 @@ export async function buildAgentsPlacementSection(root, config) {
|
|
|
122
126
|
* path at the configured skills path.
|
|
123
127
|
*/
|
|
124
128
|
export const AGENTS_MD_CANONICAL_FENCE = htmlCommentFence('canonical');
|
|
125
|
-
/**
|
|
126
|
-
* context-organize spec, kept through inline-conventions-and-mission's
|
|
127
|
-
* design decision "the identity/mission pointer coexists with the inlined
|
|
128
|
-
* Mission section": when `organize.mission_path` is configured, the
|
|
129
|
-
* canonical section still names it as a document to load at session start,
|
|
130
|
-
* immediately followed (as its own fenced section — see
|
|
131
|
-
* `renderMissionSection` below) by that document's full inlined body.
|
|
132
|
-
* Nothing is rendered when unset: the `__MISSION_POINTER__` template line
|
|
133
|
-
* disappears entirely (via `substituteBlock`'s empty-list case), not a
|
|
134
|
-
* placeholder.
|
|
135
|
-
*/
|
|
136
|
-
function renderMissionPointer(config) {
|
|
137
|
-
const { mission_path: missionPath } = config.organize;
|
|
138
|
-
if (!missionPath)
|
|
139
|
-
return [];
|
|
140
|
-
return [
|
|
141
|
-
'',
|
|
142
|
-
`Load \`${missionPath}\` at the start of every session — this store's standing current-state document, ` +
|
|
143
|
-
'kept current by the mission skill and written through `ctxr rollup write`; its full content follows in the "Mission" section below.',
|
|
144
|
-
];
|
|
145
|
-
}
|
|
146
129
|
export function renderCanonicalSection(config) {
|
|
147
|
-
|
|
130
|
+
// a-dated-mission-core: no mission pointer here — the Mission section
|
|
131
|
+
// already carries the content and names its source, and the pointer
|
|
132
|
+
// caused ritual re-reads of a document every agent already had.
|
|
133
|
+
return agentsTemplate('canonical')
|
|
148
134
|
.replaceAll('__CONFIG_FILE_NAME__', CONFIG_FILE_NAME)
|
|
149
135
|
.replaceAll('__SKILLS_PATH__', config.harness.skills_path)
|
|
150
|
-
.replaceAll('__TEMPLATES_PATH__', config.templates.path)
|
|
136
|
+
.replaceAll('__TEMPLATES_PATH__', config.templates.path)
|
|
137
|
+
.split('\n');
|
|
151
138
|
}
|
|
152
139
|
export async function buildAgentsCanonicalSection(root, config) {
|
|
153
140
|
return upsertFencedRegionInFile(agentsMdPath(root), AGENTS_MD_CANONICAL_FENCE, renderCanonicalSection(config));
|
|
@@ -161,12 +148,33 @@ export async function buildAgentsCanonicalSection(root, config) {
|
|
|
161
148
|
* or the note doesn't exist, either of which renders nothing at all.
|
|
162
149
|
*/
|
|
163
150
|
export const AGENTS_MD_MISSION_FENCE = htmlCommentFence('mission');
|
|
151
|
+
/**
|
|
152
|
+
* a-dated-mission-core D2: the date the operator last confirmed the mission,
|
|
153
|
+
* from its recorded rollup timestamp — rendered rather than judged, so the
|
|
154
|
+
* generated text stays deterministic and the agent compares it to today.
|
|
155
|
+
*/
|
|
156
|
+
export function missionConfirmedLine(missionRaw, missionPath) {
|
|
157
|
+
let rolledUp;
|
|
158
|
+
try {
|
|
159
|
+
rolledUp = parseNoteText(missionRaw, missionPath).frontmatter?.[ROLLED_UP_FIELD];
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
rolledUp = undefined;
|
|
163
|
+
}
|
|
164
|
+
const raw = rolledUp instanceof Date ? rolledUp.toISOString() : typeof rolledUp === 'string' ? rolledUp : '';
|
|
165
|
+
const date = /^\d{4}-\d{2}-\d{2}/.exec(raw)?.[0];
|
|
166
|
+
return date
|
|
167
|
+
? `_Last confirmed ${date}. Check what has moved since before relying on a priority below._`
|
|
168
|
+
: '_Never confirmed: these priorities have not been reviewed since the document was seeded._';
|
|
169
|
+
}
|
|
164
170
|
export function renderMissionSection(config, missionRaw) {
|
|
165
171
|
const { mission_path: missionPath } = config.organize;
|
|
166
172
|
if (!missionPath || missionRaw === null)
|
|
167
173
|
return [];
|
|
168
174
|
const doc = extractDocMetadata(missionRaw, missionPath);
|
|
169
|
-
return substituteBlock(agentsTemplate('mission')
|
|
175
|
+
return substituteBlock(agentsTemplate('mission')
|
|
176
|
+
.replaceAll('__MISSION_PATH__', missionPath)
|
|
177
|
+
.replaceAll('__MISSION_CONFIRMED__', missionConfirmedLine(missionRaw, missionPath)), '__MISSION_BODY__', inlineDocBody(doc, 1)).split('\n');
|
|
170
178
|
}
|
|
171
179
|
export async function buildAgentsMissionSection(root, config) {
|
|
172
180
|
const { mission_path: missionPath } = config.organize;
|
|
@@ -223,25 +231,51 @@ export function renderBaselineBlock(config) {
|
|
|
223
231
|
const doc = extractDocMetadata(renderBaselineConventions(config), BASELINE_SOURCE_LABEL);
|
|
224
232
|
return [`### ${doc.title}`, '', ...inlineDocBody(doc, 2), '', `_Source: ${BASELINE_SOURCE_LABEL}_`];
|
|
225
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* lean-composed-entry-document: a guidance document that declares `read_when`
|
|
236
|
+
* loads on demand — it is listed in the guidance index, never inlined here.
|
|
237
|
+
*/
|
|
238
|
+
export function inlinedConventions(conventions) {
|
|
239
|
+
return conventions.filter((doc) => doc.readWhen === null);
|
|
240
|
+
}
|
|
241
|
+
export function onDemandGuidance(conventions) {
|
|
242
|
+
return conventions.filter((doc) => doc.readWhen !== null);
|
|
243
|
+
}
|
|
226
244
|
function conventionsBody(config, conventions) {
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
"contexture's shipped baseline, inlined in full. This store has added none of its own yet —",
|
|
230
|
-
'operator-authored conventions (content style, field semantics, house rules) belong as markdown',
|
|
231
|
-
`files under \`${config.harness.guidance_path}\`, each inlined here alongside the baseline.`,
|
|
232
|
-
]
|
|
233
|
-
: ["contexture's shipped baseline and this store's own conventions, inlined in full:"];
|
|
234
|
-
const blocks = [renderBaselineBlock(config), ...conventions.map(renderConventionBlock)];
|
|
235
|
-
const bodies = blocks.flatMap((block, i) => (i === blocks.length - 1 ? block : [...block, '']));
|
|
236
|
-
return [...intro, '', ...bodies];
|
|
245
|
+
const blocks = [renderBaselineBlock(config), ...inlinedConventions(conventions).map(renderConventionBlock)];
|
|
246
|
+
return blocks.flatMap((block, i) => (i === blocks.length - 1 ? block : [...block, '']));
|
|
237
247
|
}
|
|
248
|
+
/** `conventions` is every scanned guidance document; the on-demand ones are filtered out here, not by the caller. */
|
|
238
249
|
export function renderConventionsSection(config, conventions) {
|
|
239
|
-
return substituteBlock(agentsTemplate('conventions'), '__CONVENTION_BODY__', conventionsBody(config, conventions)).split('\n');
|
|
250
|
+
return substituteBlock(agentsTemplate('conventions').replaceAll('__GUIDANCE_PATH__', config.harness.guidance_path), '__CONVENTION_BODY__', conventionsBody(config, conventions)).split('\n');
|
|
240
251
|
}
|
|
241
252
|
export async function buildAgentsConventionsSection(root, config) {
|
|
242
253
|
const conventions = await scanConventions(root, config);
|
|
243
254
|
return upsertFencedRegionInFile(agentsMdPath(root), AGENTS_MD_CONVENTIONS_FENCE, renderConventionsSection(config, conventions));
|
|
244
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* lean-composed-entry-document: the router. One row per on-demand guidance
|
|
258
|
+
* document — its trigger, its title, its path — so an agent learns that the
|
|
259
|
+
* document exists and when it matters without paying for its body on every
|
|
260
|
+
* turn. Absent entirely when no document is on demand (the mission
|
|
261
|
+
* section's pattern), never an empty fence pair.
|
|
262
|
+
*/
|
|
263
|
+
export const AGENTS_MD_GUIDANCE_INDEX_FENCE = htmlCommentFence('guidance-index');
|
|
264
|
+
export function renderGuidanceIndexRow(doc) {
|
|
265
|
+
return `- ${doc.readWhen} → [${doc.title}](${doc.path})`;
|
|
266
|
+
}
|
|
267
|
+
export function renderGuidanceIndexSection(conventions) {
|
|
268
|
+
const rows = onDemandGuidance(conventions).map(renderGuidanceIndexRow);
|
|
269
|
+
if (rows.length === 0)
|
|
270
|
+
return [];
|
|
271
|
+
return substituteBlock(agentsTemplate('guidance-index'), '__GUIDANCE_ROWS__', rows).split('\n');
|
|
272
|
+
}
|
|
273
|
+
export async function buildAgentsGuidanceIndexSection(root, config) {
|
|
274
|
+
const body = renderGuidanceIndexSection(await scanConventions(root, config));
|
|
275
|
+
if (body.length === 0)
|
|
276
|
+
return removeFencedRegionFromFile(agentsMdPath(root), AGENTS_MD_GUIDANCE_INDEX_FENCE);
|
|
277
|
+
return upsertFencedRegionInFile(agentsMdPath(root), AGENTS_MD_GUIDANCE_INDEX_FENCE, body);
|
|
278
|
+
}
|
|
245
279
|
/**
|
|
246
280
|
* harness-portability spec: "Generated sections render in a fixed order" —
|
|
247
281
|
* hard rules and current state first, operating mechanics next, the long
|
|
@@ -257,6 +291,7 @@ export const AGENTS_MD_SECTION_ORDER = [
|
|
|
257
291
|
AGENTS_MD_CAPTURE_FENCE,
|
|
258
292
|
AGENTS_MD_PLACEMENT_FENCE,
|
|
259
293
|
AGENTS_MD_CONVENTIONS_FENCE,
|
|
294
|
+
AGENTS_MD_GUIDANCE_INDEX_FENCE,
|
|
260
295
|
];
|
|
261
296
|
/**
|
|
262
297
|
* harness-portability spec: "The entry document's inlined content matches
|
|
@@ -279,21 +314,40 @@ export async function checkAgentsMdDrift(root, config) {
|
|
|
279
314
|
if (!conventionsRegion.includes(renderBaselineBlock(config).join('\n'))) {
|
|
280
315
|
driftedConventions.push(BASELINE_SOURCE_LABEL);
|
|
281
316
|
}
|
|
282
|
-
if (conventions.length === 0) {
|
|
317
|
+
if (inlinedConventions(conventions).length === 0) {
|
|
283
318
|
if (driftedConventions.length === 0)
|
|
284
319
|
driftedConventions.push(config.harness.guidance_path);
|
|
285
320
|
}
|
|
286
321
|
else {
|
|
287
|
-
for (const doc of conventions) {
|
|
322
|
+
for (const doc of inlinedConventions(conventions)) {
|
|
288
323
|
if (!conventionsRegion.includes(renderConventionBlock(doc).join('\n')))
|
|
289
324
|
driftedConventions.push(doc.path);
|
|
290
325
|
}
|
|
326
|
+
// A document switched to on demand whose body is still inlined.
|
|
327
|
+
for (const doc of onDemandGuidance(conventions)) {
|
|
328
|
+
if (conventionsRegion.includes(renderConventionBlock(doc).join('\n')))
|
|
329
|
+
driftedConventions.push(doc.path);
|
|
330
|
+
}
|
|
291
331
|
// Every individual block present, yet the whole section still differs
|
|
292
332
|
// (a reordering, an added/removed file, a template change): still real
|
|
293
333
|
// drift, just not attributable to one file — report the whole set.
|
|
294
334
|
if (driftedConventions.length === 0)
|
|
295
|
-
driftedConventions.push(...conventions.map((doc) => doc.path));
|
|
335
|
+
driftedConventions.push(...inlinedConventions(conventions).map((doc) => doc.path));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// lean-composed-entry-document: an on-demand document drifts when its row
|
|
339
|
+
// (trigger, title, path) no longer matches — or it moved in or out of the
|
|
340
|
+
// index — even though none of its body was ever in AGENTS.md.
|
|
341
|
+
const indexRegion = (await readFencedRegionFromFile(filePath, AGENTS_MD_GUIDANCE_INDEX_FENCE)).join('\n');
|
|
342
|
+
const freshIndex = renderGuidanceIndexSection(conventions).join('\n');
|
|
343
|
+
if (freshIndex !== indexRegion) {
|
|
344
|
+
const before = driftedConventions.length;
|
|
345
|
+
for (const doc of onDemandGuidance(conventions)) {
|
|
346
|
+
if (!indexRegion.includes(renderGuidanceIndexRow(doc)) && !driftedConventions.includes(doc.path))
|
|
347
|
+
driftedConventions.push(doc.path);
|
|
296
348
|
}
|
|
349
|
+
if (driftedConventions.length === before)
|
|
350
|
+
driftedConventions.push(config.harness.guidance_path);
|
|
297
351
|
}
|
|
298
352
|
let driftedMission = null;
|
|
299
353
|
const missionPath = config.organize.mission_path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/core/agents-doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HarnessGenerationAdapter } from '../../adapters/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* compose-store-guidance-documents design.md D6: inlining every convention
|
|
3
4
|
* file's full body into AGENTS.md's "Store conventions" section
|
|
@@ -29,5 +30,36 @@ export declare const conventionsSectionSizeCheck: import("./types.js").CheckDefi
|
|
|
29
30
|
* relocation and no migration. The store is told, not blocked.
|
|
30
31
|
*/
|
|
31
32
|
export declare const skillsPathIsHarnessBrandedCheck: import("./types.js").CheckDefinition;
|
|
33
|
+
/**
|
|
34
|
+
* lean-composed-entry-document:
|
|
35
|
+
* the generated section a byte offset falls inside — the last
|
|
36
|
+
* `contexture:<region>` fence opened at or before it — so a finding says
|
|
37
|
+
* what a harness stops reading, not just how much. `null` when the offset
|
|
38
|
+
* precedes every fence (hand-written preamble).
|
|
39
|
+
*/
|
|
40
|
+
export declare function sectionAtByte(content: string, offset: number): string | null;
|
|
41
|
+
/** Every built-in harness adapter that declares a read limit — declared by the store or not. */
|
|
42
|
+
export declare function limitedBuiltinHarnesses(): HarnessGenerationAdapter[];
|
|
43
|
+
/**
|
|
44
|
+
* lean-composed-entry-document: "The entry document fits every supported
|
|
45
|
+
* harness." One store-wide limit, defaulting to the smallest built-in read
|
|
46
|
+
* limit, applied whichever harnesses the store declares (design.md D3). An
|
|
47
|
+
* invariant, because past a harness's limit content is silently never seen.
|
|
48
|
+
* Each finding names a built-in harness whose own limit is exceeded. Store
|
|
49
|
+
* scope only, so an over-limit store can still commit the edits that bring
|
|
50
|
+
* it back under.
|
|
51
|
+
*/
|
|
52
|
+
export declare const entryDocumentReadLimitCheck: import("./types.js").CheckDefinition;
|
|
53
|
+
/**
|
|
54
|
+
* lean-composed-entry-document D3: the target is a judgment about per-turn
|
|
55
|
+
* cost and adherence, not a fact about any harness — an observation, never a
|
|
56
|
+
* failure.
|
|
57
|
+
*/
|
|
58
|
+
export declare const entryDocumentTargetSizeCheck: import("./types.js").CheckDefinition;
|
|
59
|
+
/**
|
|
60
|
+
* a-dated-mission-core D3: the mission core loads on every turn, so its size
|
|
61
|
+
* is budgeted like the conventions section — measured on the inlined body.
|
|
62
|
+
*/
|
|
63
|
+
export declare const missionSizeCheck: import("./types.js").CheckDefinition;
|
|
32
64
|
export declare const HARNESS_PORTABILITY_CHECKS: import("./types.js").CheckDefinition[];
|
|
33
65
|
//# sourceMappingURL=harness-portability-checks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-portability-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harness-portability-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAcxE;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,sCAuBtC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,+BAA+B,sCAyB1C,CAAC;AAWH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU5E;AAED,gGAAgG;AAChG,wBAAgB,uBAAuB,IAAI,wBAAwB,EAAE,CAIpE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,sCAyCtC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,sCA4BvC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sCAiC3B,CAAC;AAEH,eAAO,MAAM,0BAA0B,wCAMtC,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { configuredAdapters } from '../../adapters/registry.js';
|
|
2
|
-
import {
|
|
4
|
+
import { BUILTIN_ADAPTERS } from '../../adapters/builtin/index.js';
|
|
5
|
+
import { DEFAULT_ENTRY_DOCUMENT_MAX_BYTES, DEFAULT_ENTRY_DOCUMENT_TARGET_BYTES, DEFAULT_MISSION_MAX_BYTES, DEFAULT_SKILLS_PATH, } from '../../config/defaults.js';
|
|
6
|
+
import { extractDocMetadata, inlineDocBody } from '../conventions.js';
|
|
7
|
+
import { GENERIC_START_RE } from '../fs/fenced-region.js';
|
|
3
8
|
import { AGENTS_MD_CONVENTIONS_FENCE, agentsMdPath } from '../agents-doc.js';
|
|
4
9
|
import { readFencedRegionFromFile } from '../fs/fenced-region.js';
|
|
5
10
|
import { defineCheck } from './types.js';
|
|
@@ -68,6 +73,11 @@ export const skillsPathIsHarnessBrandedCheck = defineCheck({
|
|
|
68
73
|
for (const adapter of configuredAdapters(ctx.config, 'harness-generation')) {
|
|
69
74
|
if (adapter.skillsDir !== canonical)
|
|
70
75
|
continue;
|
|
76
|
+
// support-codex-and-antigravity-harnesses: an adapter that declares the
|
|
77
|
+
// cross-harness location itself (codex, antigravity) reads the directory
|
|
78
|
+
// every other harness is bridged to — that is not a branded path.
|
|
79
|
+
if (adapter.skillsDir === DEFAULT_SKILLS_PATH)
|
|
80
|
+
continue;
|
|
71
81
|
findings.push({
|
|
72
82
|
code: 'harness_portability.skills_path_is_harness_branded',
|
|
73
83
|
severity: 'info',
|
|
@@ -79,5 +89,170 @@ export const skillsPathIsHarnessBrandedCheck = defineCheck({
|
|
|
79
89
|
return { status: findings.length > 0 ? 'fail' : 'pass', findings };
|
|
80
90
|
},
|
|
81
91
|
});
|
|
82
|
-
|
|
92
|
+
async function readAgentsMd(storeRoot) {
|
|
93
|
+
try {
|
|
94
|
+
return await readFile(agentsMdPath(storeRoot), 'utf8');
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err.code === 'ENOENT')
|
|
98
|
+
return null;
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* lean-composed-entry-document:
|
|
104
|
+
* the generated section a byte offset falls inside — the last
|
|
105
|
+
* `contexture:<region>` fence opened at or before it — so a finding says
|
|
106
|
+
* what a harness stops reading, not just how much. `null` when the offset
|
|
107
|
+
* precedes every fence (hand-written preamble).
|
|
108
|
+
*/
|
|
109
|
+
export function sectionAtByte(content, offset) {
|
|
110
|
+
let consumed = 0;
|
|
111
|
+
let current = null;
|
|
112
|
+
for (const line of content.split('\n')) {
|
|
113
|
+
if (consumed > offset)
|
|
114
|
+
break;
|
|
115
|
+
const start = GENERIC_START_RE.exec(line);
|
|
116
|
+
if (start)
|
|
117
|
+
current = start[1];
|
|
118
|
+
consumed += Buffer.byteLength(line, 'utf8') + 1;
|
|
119
|
+
}
|
|
120
|
+
return current;
|
|
121
|
+
}
|
|
122
|
+
/** Every built-in harness adapter that declares a read limit — declared by the store or not. */
|
|
123
|
+
export function limitedBuiltinHarnesses() {
|
|
124
|
+
return BUILTIN_ADAPTERS.filter((a) => a.kind === 'harness-generation' && a.entryDocumentMaxBytes !== undefined);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* lean-composed-entry-document: "The entry document fits every supported
|
|
128
|
+
* harness." One store-wide limit, defaulting to the smallest built-in read
|
|
129
|
+
* limit, applied whichever harnesses the store declares (design.md D3). An
|
|
130
|
+
* invariant, because past a harness's limit content is silently never seen.
|
|
131
|
+
* Each finding names a built-in harness whose own limit is exceeded. Store
|
|
132
|
+
* scope only, so an over-limit store can still commit the edits that bring
|
|
133
|
+
* it back under.
|
|
134
|
+
*/
|
|
135
|
+
export const entryDocumentReadLimitCheck = defineCheck({
|
|
136
|
+
id: 'harness_portability.entry_document_read_limit',
|
|
137
|
+
title: 'AGENTS.md fits within its size limit, which by default every supported harness reads in full',
|
|
138
|
+
severity: 'invariant',
|
|
139
|
+
capability: 'harness-portability',
|
|
140
|
+
scopes: ['store'],
|
|
141
|
+
async run(ctx) {
|
|
142
|
+
const content = await readAgentsMd(ctx.storeRoot);
|
|
143
|
+
if (content === null) {
|
|
144
|
+
return { status: 'skip', skipReason: 'AGENTS.md has not been generated yet — run `ctxr update`', findings: [] };
|
|
145
|
+
}
|
|
146
|
+
const size = Buffer.byteLength(content, 'utf8');
|
|
147
|
+
const limit = ctx.config.harness.entry_document_max_bytes ?? DEFAULT_ENTRY_DOCUMENT_MAX_BYTES;
|
|
148
|
+
if (size <= limit)
|
|
149
|
+
return { status: 'pass', findings: [] };
|
|
150
|
+
const findings = limitedBuiltinHarnesses()
|
|
151
|
+
.filter((adapter) => size > adapter.entryDocumentMaxBytes)
|
|
152
|
+
.map((adapter) => {
|
|
153
|
+
const harnessLimit = adapter.entryDocumentMaxBytes;
|
|
154
|
+
const section = sectionAtByte(content, harnessLimit);
|
|
155
|
+
return {
|
|
156
|
+
code: 'harness_portability.entry_document_read_limit_exceeded',
|
|
157
|
+
severity: 'error',
|
|
158
|
+
message: `AGENTS.md is ${size} bytes, over this store's ${limit}-byte limit; ${adapter.id} stops reading at ${harnessLimit}, ` +
|
|
159
|
+
`${section ? `inside the "${section}" section` : 'before the first generated section'}. ` +
|
|
160
|
+
'Move guidance that is not needed on every turn into a file declaring `read_when`, or trim the mission.',
|
|
161
|
+
subject: adapter.id,
|
|
162
|
+
details: { size, limit, harness_limit: harnessLimit, section },
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
// A store that set its own limit below every harness's still fails, with no harness to name.
|
|
166
|
+
if (findings.length === 0) {
|
|
167
|
+
findings.push({
|
|
168
|
+
code: 'harness_portability.entry_document_read_limit_exceeded',
|
|
169
|
+
severity: 'error',
|
|
170
|
+
message: `AGENTS.md is ${size} bytes, over this store's ${limit}-byte limit (\`harness.entry_document_max_bytes\`).`,
|
|
171
|
+
details: { size, limit },
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return { status: 'fail', findings };
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
/**
|
|
178
|
+
* lean-composed-entry-document D3: the target is a judgment about per-turn
|
|
179
|
+
* cost and adherence, not a fact about any harness — an observation, never a
|
|
180
|
+
* failure.
|
|
181
|
+
*/
|
|
182
|
+
export const entryDocumentTargetSizeCheck = defineCheck({
|
|
183
|
+
id: 'harness_portability.entry_document_target_size',
|
|
184
|
+
title: 'AGENTS.md stays within its target size',
|
|
185
|
+
severity: 'observation',
|
|
186
|
+
capability: 'harness-portability',
|
|
187
|
+
scopes: ['store'],
|
|
188
|
+
async run(ctx) {
|
|
189
|
+
const content = await readAgentsMd(ctx.storeRoot);
|
|
190
|
+
if (content === null) {
|
|
191
|
+
return { status: 'skip', skipReason: 'AGENTS.md has not been generated yet — run `ctxr update`', findings: [] };
|
|
192
|
+
}
|
|
193
|
+
const size = Buffer.byteLength(content, 'utf8');
|
|
194
|
+
const target = ctx.config.harness.entry_document_target_bytes ?? DEFAULT_ENTRY_DOCUMENT_TARGET_BYTES;
|
|
195
|
+
if (size <= target)
|
|
196
|
+
return { status: 'pass', findings: [] };
|
|
197
|
+
return {
|
|
198
|
+
status: 'fail',
|
|
199
|
+
findings: [
|
|
200
|
+
{
|
|
201
|
+
code: 'harness_portability.entry_document_over_target',
|
|
202
|
+
severity: 'info',
|
|
203
|
+
message: `AGENTS.md is ${size} bytes, over its ${target}-byte target. Every byte loads on every turn: ` +
|
|
204
|
+
'move guidance that matters only for one task into a file declaring `read_when`.',
|
|
205
|
+
details: { size, target },
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
/**
|
|
212
|
+
* a-dated-mission-core D3: the mission core loads on every turn, so its size
|
|
213
|
+
* is budgeted like the conventions section — measured on the inlined body.
|
|
214
|
+
*/
|
|
215
|
+
export const missionSizeCheck = defineCheck({
|
|
216
|
+
id: 'harness_portability.mission_size',
|
|
217
|
+
title: 'The inlined mission core stays within its size budget',
|
|
218
|
+
severity: 'invariant',
|
|
219
|
+
capability: 'harness-portability',
|
|
220
|
+
scopes: ['store'],
|
|
221
|
+
async run(ctx) {
|
|
222
|
+
const missionPath = ctx.config.organize.mission_path;
|
|
223
|
+
if (!missionPath)
|
|
224
|
+
return { status: 'skip', skipReason: 'no organize.mission_path configured', findings: [] };
|
|
225
|
+
let raw;
|
|
226
|
+
try {
|
|
227
|
+
raw = await readFile(path.join(ctx.storeRoot, missionPath), 'utf8');
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return { status: 'skip', skipReason: `no mission document at ${missionPath}`, findings: [] };
|
|
231
|
+
}
|
|
232
|
+
const size = Buffer.byteLength(inlineDocBody(extractDocMetadata(raw, missionPath), 1).join('\n'), 'utf8');
|
|
233
|
+
const budget = ctx.config.organize.mission_max_bytes ?? DEFAULT_MISSION_MAX_BYTES;
|
|
234
|
+
if (size <= budget)
|
|
235
|
+
return { status: 'pass', findings: [] };
|
|
236
|
+
return {
|
|
237
|
+
status: 'fail',
|
|
238
|
+
findings: [
|
|
239
|
+
{
|
|
240
|
+
code: 'harness_portability.mission_size_exceeded',
|
|
241
|
+
severity: 'error',
|
|
242
|
+
message: `The mission's inlined core is ${size} bytes, over its ${budget}-byte budget. Keep the primary mission, the ranked ` +
|
|
243
|
+
'priorities, and what is not now; move the back burner, sunset candidates, and open debt to the register note (`ctxr-mission`).',
|
|
244
|
+
subject: missionPath,
|
|
245
|
+
details: { size, budget },
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
};
|
|
249
|
+
},
|
|
250
|
+
});
|
|
251
|
+
export const HARNESS_PORTABILITY_CHECKS = [
|
|
252
|
+
conventionsSectionSizeCheck,
|
|
253
|
+
skillsPathIsHarnessBrandedCheck,
|
|
254
|
+
entryDocumentReadLimitCheck,
|
|
255
|
+
entryDocumentTargetSizeCheck,
|
|
256
|
+
missionSizeCheck,
|
|
257
|
+
];
|
|
83
258
|
//# sourceMappingURL=harness-portability-checks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-portability-checks.js","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-portability-checks.js","sourceRoot":"","sources":["../../../src/core/checks/harness-portability-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EACL,gCAAgC,EAChC,mCAAmC,EACnC,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;IACrD,EAAE,EAAE,8CAA8C;IAClD,KAAK,EAAE,2FAA2F;IAClG,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACxG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACvD,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAE5D,MAAM,OAAO,GAAY;YACvB,IAAI,EAAE,uDAAuD;YAC7D,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,8CAA8C,IAAI,8CAA8C,MAAM,+EAA+E;YAC9L,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC1B,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,WAAW,CAAC;IACzD,EAAE,EAAE,oDAAoD;IACxD,KAAK,EAAE,+EAA+E;IACtF,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC3E,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAAE,SAAS;YAC9C,wEAAwE;YACxE,yEAAyE;YACzE,kEAAkE;YAClE,IAAI,OAAO,CAAC,SAAS,KAAK,mBAAmB;gBAAE,SAAS;YACxD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oDAAoD;gBAC1D,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,2BAA2B,SAAS,eAAe,OAAO,CAAC,EAAE,iKAAiK,mBAAmB,IAAI;gBAC9P,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACrE,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,MAAc;IAC3D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,MAAM;YAAE,MAAM;QAC7B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK;YAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC/B,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,uBAAuB;IACrC,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,IAAK,CAA8B,CAAC,qBAAqB,KAAK,SAAS,CAC/G,CAAC;AAClC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;IACrD,EAAE,EAAE,+CAA+C;IACnD,KAAK,EAAE,8FAA8F;IACrG,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,IAAI,gCAAgC,CAAC;QAC9F,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAc,uBAAuB,EAAE;aAClD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,qBAAsB,CAAC;aAC1D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAsB,CAAC;YACpD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrD,OAAO;gBACL,IAAI,EAAE,wDAAwD;gBAC9D,QAAQ,EAAE,OAAgB;gBAC1B,OAAO,EACL,gBAAgB,IAAI,6BAA6B,KAAK,gBAAgB,OAAO,CAAC,EAAE,qBAAqB,YAAY,IAAI;oBACrH,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,WAAW,CAAC,CAAC,CAAC,oCAAoC,IAAI;oBACzF,wGAAwG;gBAC1G,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE;aAC/D,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,6FAA6F;QAC7F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,wDAAwD;gBAC9D,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,gBAAgB,IAAI,6BAA6B,KAAK,qDAAqD;gBACpH,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;IACtD,EAAE,EAAE,gDAAgD;IACpD,KAAK,EAAE,wCAAwC;IAC/C,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,IAAI,mCAAmC,CAAC;QACrG,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC5D,OAAO;YACL,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,gDAAgD;oBACtD,QAAQ,EAAE,MAAM;oBAChB,OAAO,EACL,gBAAgB,IAAI,oBAAoB,MAAM,gDAAgD;wBAC9F,iFAAiF;oBACnF,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC1B;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,kCAAkC;IACtC,KAAK,EAAE,uDAAuD;IAC9D,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qCAAqC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7G,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC/F,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1G,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,IAAI,yBAAyB,CAAC;QAClF,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC5D,OAAO;YACL,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,2CAA2C;oBACjD,QAAQ,EAAE,OAAO;oBACjB,OAAO,EACL,iCAAiC,IAAI,oBAAoB,MAAM,qDAAqD;wBACpH,gIAAgI;oBAClI,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC1B;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,2BAA2B;IAC3B,+BAA+B;IAC/B,2BAA2B;IAC3B,4BAA4B;IAC5B,gBAAgB;CACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrity-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/integrity-checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrity-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/integrity-checks.ts"],"names":[],"mappings":"AAuDA;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,sCAkCxC,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB,sCAsBnC,CAAC;AAEH,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,sCAuBpC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,sCAwBnC,CAAC;AAYH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0CAA0C,sCAiDrD,CAAC;AAEH,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,sCAoCxC,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,kCAAkC,sCA4B7C,CAAC;AAqBH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wCAAwC,sCAkFnD,CAAC;AAEH,eAAO,MAAM,gBAAgB,wCAS5B,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { configuredAdapters, resolveAdapter } from '../../adapters/registry.js';
|
|
|
4
4
|
import { parse as parseYaml } from 'yaml';
|
|
5
5
|
import { CONFIG_FILE_NAME } from '../root.js';
|
|
6
6
|
import { StoreConfigSchema } from '../../config/schema.js';
|
|
7
|
-
import { AGENTS_MD_CONVENTIONS_FENCE, AGENTS_MD_MISSION_FENCE, agentsMdPath, checkAgentsMdDrift, renderConventionsSection, renderMissionSection, } from '../agents-doc.js';
|
|
7
|
+
import { AGENTS_MD_CONVENTIONS_FENCE, AGENTS_MD_GUIDANCE_INDEX_FENCE, AGENTS_MD_MISSION_FENCE, agentsMdPath, checkAgentsMdDrift, renderConventionsSection, renderGuidanceIndexSection, renderMissionSection, } from '../agents-doc.js';
|
|
8
8
|
import { checkCatalogStale } from '../catalog/build.js';
|
|
9
9
|
import { extractDocMetadata, scanConventions } from '../conventions.js';
|
|
10
10
|
import { readFencedRegion, removeFencedRegion } from '../fs/fenced-region.js';
|
|
@@ -371,27 +371,44 @@ export const stagedAgentsMdInlinedContentCurrentCheck = defineCheck({
|
|
|
371
371
|
const relevantSourceStaged = staged.some((f) => f.path.startsWith(conventionsPrefix) || f.path === missionPath);
|
|
372
372
|
if (!relevantSourceStaged)
|
|
373
373
|
return { status: 'pass', findings: [] };
|
|
374
|
+
// lean-composed-entry-document: AGENTS.md need not be staged at all when
|
|
375
|
+
// the change leaves it untouched — an edit to an on-demand document's
|
|
376
|
+
// body is never in AGENTS.md. Compare against the version this commit
|
|
377
|
+
// would carry: the staged one if staged, else the index's (= HEAD's).
|
|
374
378
|
const agentsMdStaged = staged.find((f) => f.path === 'AGENTS.md');
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
};
|
|
379
|
+
const notStaged = {
|
|
380
|
+
code: 'staged.agents_md_inlined_content_current.not_staged',
|
|
381
|
+
severity: 'error',
|
|
382
|
+
message: 'This commit stages a change to an operator convention file or the mission document, but not AGENTS.md — run `ctxr update` and stage the result.',
|
|
383
|
+
};
|
|
384
|
+
let committedAgentsMd = agentsMdStaged?.content;
|
|
385
|
+
if (!agentsMdStaged) {
|
|
386
|
+
const shown = await ctx.git.run(['show', ':AGENTS.md'], { cwd: ctx.storeRoot, allowFailure: true });
|
|
387
|
+
if (shown.exitCode === 0)
|
|
388
|
+
committedAgentsMd = shown.stdout;
|
|
386
389
|
}
|
|
390
|
+
if (committedAgentsMd === undefined)
|
|
391
|
+
return { status: 'fail', findings: [notStaged] };
|
|
387
392
|
const conventions = await scanConventions(ctx.storeRoot, ctx.config);
|
|
388
393
|
const effectiveConventions = await Promise.all(conventions.map(async (doc) => {
|
|
389
394
|
const raw = await stagedOrDiskContent(ctx.storeRoot, staged, doc.path);
|
|
390
395
|
return raw === null ? doc : extractDocMetadata(raw, doc.path);
|
|
391
396
|
}));
|
|
392
397
|
const freshConventions = renderConventionsSection(ctx.config, effectiveConventions).join('\n');
|
|
393
|
-
const stagedConventionsRegion = readFencedRegion(
|
|
398
|
+
const stagedConventionsRegion = readFencedRegion(committedAgentsMd, AGENTS_MD_CONVENTIONS_FENCE).join('\n');
|
|
394
399
|
const findings = [];
|
|
400
|
+
// lean-composed-entry-document: an on-demand document's row is derived
|
|
401
|
+
// content too — staging a changed trigger or title without the matching
|
|
402
|
+
// AGENTS.md regeneration leaves the router stale.
|
|
403
|
+
const freshIndex = renderGuidanceIndexSection(effectiveConventions).join('\n');
|
|
404
|
+
const stagedIndexRegion = readFencedRegion(committedAgentsMd, AGENTS_MD_GUIDANCE_INDEX_FENCE).join('\n');
|
|
405
|
+
if (freshIndex !== stagedIndexRegion) {
|
|
406
|
+
findings.push({
|
|
407
|
+
code: 'staged.agents_md_inlined_content_current.guidance_index_mismatch',
|
|
408
|
+
severity: 'error',
|
|
409
|
+
message: "The staged AGENTS.md's guidance index does not reflect the staged guidance documents — run `ctxr update` and re-stage AGENTS.md.",
|
|
410
|
+
});
|
|
411
|
+
}
|
|
395
412
|
if (freshConventions !== stagedConventionsRegion) {
|
|
396
413
|
findings.push({
|
|
397
414
|
code: 'staged.agents_md_inlined_content_current.conventions_mismatch',
|
|
@@ -402,7 +419,7 @@ export const stagedAgentsMdInlinedContentCurrentCheck = defineCheck({
|
|
|
402
419
|
if (missionPath) {
|
|
403
420
|
const missionRaw = await stagedOrDiskContent(ctx.storeRoot, staged, missionPath);
|
|
404
421
|
const freshMission = renderMissionSection(ctx.config, missionRaw).join('\n');
|
|
405
|
-
const stagedMissionRegion = readFencedRegion(
|
|
422
|
+
const stagedMissionRegion = readFencedRegion(committedAgentsMd, AGENTS_MD_MISSION_FENCE).join('\n');
|
|
406
423
|
if (freshMission !== stagedMissionRegion) {
|
|
407
424
|
findings.push({
|
|
408
425
|
code: 'staged.agents_md_inlined_content_current.mission_mismatch',
|
|
@@ -411,6 +428,9 @@ export const stagedAgentsMdInlinedContentCurrentCheck = defineCheck({
|
|
|
411
428
|
});
|
|
412
429
|
}
|
|
413
430
|
}
|
|
431
|
+
// Unstaged and stale: the actionable fix is to regenerate and stage it.
|
|
432
|
+
if (!agentsMdStaged && findings.length > 0)
|
|
433
|
+
return { status: 'fail', findings: [notStaged] };
|
|
414
434
|
return { status: findings.length > 0 ? 'fail' : 'pass', findings };
|
|
415
435
|
},
|
|
416
436
|
});
|