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.
Files changed (76) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +55 -7
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/commands/rollup-write.d.ts.map +1 -1
  5. package/dist/commands/rollup-write.js +8 -0
  6. package/dist/commands/rollup-write.js.map +1 -1
  7. package/dist/commands/verify.d.ts +9 -2
  8. package/dist/commands/verify.d.ts.map +1 -1
  9. package/dist/commands/verify.js +46 -23
  10. package/dist/commands/verify.js.map +1 -1
  11. package/dist/config/defaults.d.ts +18 -2
  12. package/dist/config/defaults.d.ts.map +1 -1
  13. package/dist/config/defaults.js +18 -2
  14. package/dist/config/defaults.js.map +1 -1
  15. package/dist/config/schema.d.ts +14 -4
  16. package/dist/config/schema.d.ts.map +1 -1
  17. package/dist/config/schema.js +45 -9
  18. package/dist/config/schema.js.map +1 -1
  19. package/dist/core/agents-doc.d.ts +63 -12
  20. package/dist/core/agents-doc.d.ts.map +1 -1
  21. package/dist/core/agents-doc.js +191 -41
  22. package/dist/core/agents-doc.js.map +1 -1
  23. package/dist/core/checks/harness-portability-checks.d.ts +12 -0
  24. package/dist/core/checks/harness-portability-checks.d.ts.map +1 -0
  25. package/dist/core/checks/harness-portability-checks.js +39 -0
  26. package/dist/core/checks/harness-portability-checks.js.map +1 -0
  27. package/dist/core/checks/integrity-checks.d.ts +25 -1
  28. package/dist/core/checks/integrity-checks.d.ts.map +1 -1
  29. package/dist/core/checks/integrity-checks.js +136 -3
  30. package/dist/core/checks/integrity-checks.js.map +1 -1
  31. package/dist/core/checks/manifest.d.ts.map +1 -1
  32. package/dist/core/checks/manifest.js +2 -0
  33. package/dist/core/checks/manifest.js.map +1 -1
  34. package/dist/core/checks/organize-checks.d.ts +12 -0
  35. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  36. package/dist/core/checks/organize-checks.js +51 -1
  37. package/dist/core/checks/organize-checks.js.map +1 -1
  38. package/dist/core/convention-doc.d.ts +33 -0
  39. package/dist/core/convention-doc.d.ts.map +1 -0
  40. package/dist/core/convention-doc.js +110 -0
  41. package/dist/core/convention-doc.js.map +1 -0
  42. package/dist/core/conventions.d.ts +25 -5
  43. package/dist/core/conventions.d.ts.map +1 -1
  44. package/dist/core/conventions.js +65 -3
  45. package/dist/core/conventions.js.map +1 -1
  46. package/dist/core/fs/fenced-region.d.ts +38 -0
  47. package/dist/core/fs/fenced-region.d.ts.map +1 -1
  48. package/dist/core/fs/fenced-region.js +88 -2
  49. package/dist/core/fs/fenced-region.js.map +1 -1
  50. package/dist/core/migrations/registry.d.ts.map +1 -1
  51. package/dist/core/migrations/registry.js +6 -1
  52. package/dist/core/migrations/registry.js.map +1 -1
  53. package/dist/core/migrations/rename-conventions-path.d.ts +26 -0
  54. package/dist/core/migrations/rename-conventions-path.d.ts.map +1 -0
  55. package/dist/core/migrations/rename-conventions-path.js +86 -0
  56. package/dist/core/migrations/rename-conventions-path.js.map +1 -0
  57. package/dist/core/notes/list.js +2 -2
  58. package/dist/core/notes/list.js.map +1 -1
  59. package/dist/core/reconcile.d.ts.map +1 -1
  60. package/dist/core/reconcile.js +31 -4
  61. package/dist/core/reconcile.js.map +1 -1
  62. package/dist/core/rollup.d.ts +2 -2
  63. package/dist/core/rollup.d.ts.map +1 -1
  64. package/dist/core/rollup.js +24 -3
  65. package/dist/core/rollup.js.map +1 -1
  66. package/dist/core/write-lifecycle/path-gate.js +1 -1
  67. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  68. package/dist/version.d.ts +1 -1
  69. package/dist/version.js +1 -1
  70. package/package.json +1 -1
  71. package/templates/agents/canonical.md +1 -7
  72. package/templates/agents/{store-conventions.md → conventions.md} +2 -4
  73. package/templates/agents/mission.md +5 -0
  74. package/templates/conventions/baseline-convention.md +60 -0
  75. package/templates/conventions/custom-convention-seed.md +21 -0
  76. package/templates/agents/store-conventions-empty.md +0 -7
@@ -2,9 +2,10 @@ import { readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { configuredAdapters, resolveAdapter } from '../../adapters/registry.js';
4
4
  import { StoreConfigSchema, SUPPORTED_SCHEMA_VERSION } from '../../config/schema.js';
5
- import { agentsMdPath } from '../agents-doc.js';
5
+ import { AGENTS_MD_CONVENTIONS_FENCE, AGENTS_MD_MISSION_FENCE, agentsMdPath, checkAgentsMdDrift, renderConventionsSection, renderMissionSection, } from '../agents-doc.js';
6
6
  import { checkCatalogStale } from '../catalog/build.js';
7
- import { removeFencedRegion } from '../fs/fenced-region.js';
7
+ import { extractDocMetadata, scanConventions } from '../conventions.js';
8
+ import { readFencedRegion, removeFencedRegion } from '../fs/fenced-region.js';
8
9
  import { buildGraphFromNotes, graphBuildOptions } from '../graph/model.js';
9
10
  import { harnessEntryFence } from '../markers.js';
10
11
  import { defineCheck } from './types.js';
@@ -157,7 +158,7 @@ function headingsOf(text) {
157
158
  * copy-pasted into the entry file outside its managed fence — the way an
158
159
  * operator reaching for "where do I put a Claude-only note" might otherwise
159
160
  * duplicate a whole AGENTS.md section into CLAUDE.md instead of writing a
160
- * harness-specific extra beneath the import (see the `store-conventions`
161
+ * harness-specific extra beneath the import (see the `conventions`
161
162
  * fence's own guidance in `agents-doc.ts`).
162
163
  */
163
164
  export const harnessEntryNoDuplicateConventionTextCheck = defineCheck({
@@ -227,6 +228,136 @@ export const noUnrecognizedConfigKeysCheck = defineCheck({
227
228
  return { status: findings.length > 0 ? 'fail' : 'pass', findings };
228
229
  },
229
230
  });
231
+ /**
232
+ * harness-portability spec (inline-conventions-and-mission): "The entry
233
+ * document's inlined content matches its sources" — `AGENTS.md`'s inlined
234
+ * conventions/mission sections are derived content (rendered from
235
+ * `.contexture/conventions/*.md` and the configured mission path), so
236
+ * editing a source directly without regenerating `AGENTS.md` (e.g. bypassing
237
+ * `ctxr update`) leaves it silently stale. Reuses `checkAgentsMdDrift`, the
238
+ * same re-render-and-diff `ctxr verify --portable` uses, so the two commands
239
+ * can never disagree about whether a store is in sync.
240
+ */
241
+ export const agentsMdInlinedContentCurrentCheck = defineCheck({
242
+ id: 'harness_portability.agents_md_inlined_content_current',
243
+ title: "AGENTS.md's inlined conventions and mission content match their source files",
244
+ severity: 'invariant',
245
+ capability: 'harness-portability',
246
+ scopes: ['store'],
247
+ async run(ctx) {
248
+ const drift = await checkAgentsMdDrift(ctx.storeRoot, ctx.config);
249
+ const findings = [
250
+ ...drift.driftedConventions.map((conventionPath) => ({
251
+ code: 'harness_portability.agents_md_convention_drifted',
252
+ severity: 'error',
253
+ message: `AGENTS.md's "Store conventions" section no longer matches "${conventionPath}" — run \`ctxr update\`.`,
254
+ subject: conventionPath,
255
+ })),
256
+ ...(drift.driftedMission
257
+ ? [
258
+ {
259
+ code: 'harness_portability.agents_md_mission_drifted',
260
+ severity: 'error',
261
+ message: `AGENTS.md's "Mission" section no longer matches "${drift.driftedMission}" — run \`ctxr update\`.`,
262
+ subject: drift.driftedMission,
263
+ },
264
+ ]
265
+ : []),
266
+ ];
267
+ return { status: findings.length > 0 ? 'fail' : 'pass', findings };
268
+ },
269
+ });
270
+ /**
271
+ * A path's staged (index) content when it's part of this commit, else its
272
+ * current on-disk content — the pre-commit-hook analogue of
273
+ * `checkAgentsMdDrift`'s working-tree reads, so a staged-but-not-yet-merged
274
+ * edit to a source file is seen even though nothing has been committed yet.
275
+ * `null` means the path doesn't exist in either the staged set or on disk
276
+ * (deleted, or staged as a deletion).
277
+ */
278
+ async function stagedOrDiskContent(storeRoot, staged, relativePath) {
279
+ const stagedFile = staged.find((f) => f.path === relativePath);
280
+ if (stagedFile)
281
+ return stagedFile.status === 'D' ? null : (stagedFile.content ?? null);
282
+ try {
283
+ return await readFile(path.join(storeRoot, relativePath), 'utf8');
284
+ }
285
+ catch (err) {
286
+ if (err.code === 'ENOENT')
287
+ return null;
288
+ throw err;
289
+ }
290
+ }
291
+ /**
292
+ * write-lifecycle spec / harness-portability spec (inline-conventions-and-mission):
293
+ * "A commit that would leave the entry document stale is refused." The
294
+ * store-scope drift check above reads the working tree, which is the wrong
295
+ * source of truth for a pre-commit hook — an operator can edit a convention
296
+ * file, forget to run `ctxr update`, and `git add` only the convention file;
297
+ * the working tree would then have a regenerated AGENTS.md sitting right
298
+ * next to it only if they happened to run `ctxr update` first, which is
299
+ * exactly the step this check exists to enforce. So this reads STAGED
300
+ * content for any file this commit touches (falling back to disk for files
301
+ * the commit doesn't touch) and re-renders against that view instead.
302
+ */
303
+ export const stagedAgentsMdInlinedContentCurrentCheck = defineCheck({
304
+ id: 'staged.agents_md_inlined_content_current',
305
+ title: 'A staged convention or mission change also stages a matching AGENTS.md regeneration',
306
+ severity: 'invariant',
307
+ capability: 'harness-portability',
308
+ scopes: ['staged'],
309
+ async run(ctx) {
310
+ const staged = ctx.staged ?? [];
311
+ const conventionsPrefix = ctx.config.harness.guidance_path.endsWith('/')
312
+ ? ctx.config.harness.guidance_path
313
+ : `${ctx.config.harness.guidance_path}/`;
314
+ const missionPath = ctx.config.organize.mission_path;
315
+ const relevantSourceStaged = staged.some((f) => f.path.startsWith(conventionsPrefix) || f.path === missionPath);
316
+ if (!relevantSourceStaged)
317
+ return { status: 'pass', findings: [] };
318
+ const agentsMdStaged = staged.find((f) => f.path === 'AGENTS.md');
319
+ if (!agentsMdStaged || agentsMdStaged.content === undefined) {
320
+ return {
321
+ status: 'fail',
322
+ findings: [
323
+ {
324
+ code: 'staged.agents_md_inlined_content_current.not_staged',
325
+ severity: 'error',
326
+ 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.',
327
+ },
328
+ ],
329
+ };
330
+ }
331
+ const conventions = await scanConventions(ctx.storeRoot, ctx.config);
332
+ const effectiveConventions = await Promise.all(conventions.map(async (doc) => {
333
+ const raw = await stagedOrDiskContent(ctx.storeRoot, staged, doc.path);
334
+ return raw === null ? doc : extractDocMetadata(raw, doc.path);
335
+ }));
336
+ const freshConventions = renderConventionsSection(ctx.config, effectiveConventions).join('\n');
337
+ const stagedConventionsRegion = readFencedRegion(agentsMdStaged.content, AGENTS_MD_CONVENTIONS_FENCE).join('\n');
338
+ const findings = [];
339
+ if (freshConventions !== stagedConventionsRegion) {
340
+ findings.push({
341
+ code: 'staged.agents_md_inlined_content_current.conventions_mismatch',
342
+ severity: 'error',
343
+ message: 'The staged AGENTS.md does not reflect the staged convention file content — run `ctxr update` and re-stage AGENTS.md.',
344
+ });
345
+ }
346
+ if (missionPath) {
347
+ const missionRaw = await stagedOrDiskContent(ctx.storeRoot, staged, missionPath);
348
+ const freshMission = renderMissionSection(ctx.config, missionRaw).join('\n');
349
+ const stagedMissionRegion = readFencedRegion(agentsMdStaged.content, AGENTS_MD_MISSION_FENCE).join('\n');
350
+ if (freshMission !== stagedMissionRegion) {
351
+ findings.push({
352
+ code: 'staged.agents_md_inlined_content_current.mission_mismatch',
353
+ severity: 'error',
354
+ message: 'The staged AGENTS.md does not reflect the staged mission document content — run `ctxr update` and re-stage AGENTS.md.',
355
+ });
356
+ }
357
+ }
358
+ return { status: findings.length > 0 ? 'fail' : 'pass', findings };
359
+ },
360
+ });
230
361
  export const INTEGRITY_CHECKS = [
231
362
  derivedArtifactStalenessCheck,
232
363
  graphDanglingLinksCheck,
@@ -234,5 +365,7 @@ export const INTEGRITY_CHECKS = [
234
365
  adapterCompatibilityCheck,
235
366
  harnessEntryNoDuplicateConventionTextCheck,
236
367
  noUnrecognizedConfigKeysCheck,
368
+ agentsMdInlinedContentCurrentCheck,
369
+ stagedAgentsMdInlinedContentCurrentCheck,
237
370
  ];
238
371
  //# sourceMappingURL=integrity-checks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrity-checks.js","sourceRoot":"","sources":["../../../src/core/checks/integrity-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrity-checks.js","sourceRoot":"","sources":["../../../src/core/checks/integrity-checks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,eAAe,EAQ5C,CAAC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,eAAe,EAS5C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { CATALOG_CHECKS } from './catalog-checks.js';
2
2
  import { DISCLOSURE_CHECKS } from './disclosure-checks.js';
3
+ import { HARNESS_PORTABILITY_CHECKS } from './harness-portability-checks.js';
3
4
  import { INTEGRITY_CHECKS } from './integrity-checks.js';
4
5
  import { failClosedVisibilityCheck, failClosedVisibilityInvariantCheck } from '../notes/checks.js';
5
6
  import { ORGANIZE_CHECKS } from './organize-checks.js';
@@ -16,5 +17,6 @@ export const CHECKS = [
16
17
  ...ORGANIZE_CHECKS,
17
18
  ...DISCLOSURE_CHECKS,
18
19
  ...INTEGRITY_CHECKS,
20
+ ...HARNESS_PORTABILITY_CHECKS,
19
21
  ];
20
22
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B;IAChD,yBAAyB;IACzB,kCAAkC;IAClC,GAAG,sBAAsB;IACzB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;CACpB,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/checks/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B;IAChD,yBAAyB;IACzB,kCAAkC;IAClC,GAAG,sBAAsB;IACzB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;IACnB,GAAG,0BAA0B;CAC9B,CAAC"}
@@ -16,5 +16,17 @@ export declare const uningestedInboxCheck: import("./types.js").CheckDefinition;
16
16
  export declare const catalogGapsLintCheck: import("./types.js").CheckDefinition;
17
17
  /** context-organize spec (store-primitives-from-migration-audit D4): a rollup with no timestamp, or one whose backlinks have moved past it, reported not failed. */
18
18
  export declare const rollupStaleCheck: import("./types.js").CheckDefinition;
19
+ /**
20
+ * harness-portability spec (inline-conventions-and-mission): "Generated
21
+ * sections render in a fixed order" — hand-written content interrupting the
22
+ * managed fences' contiguity blocks `ctxr update` from reordering them to
23
+ * the fixed layout (`reorderFencedRegions`' own conservative rule: never
24
+ * relocate content it can't be sure sits outside every managed section).
25
+ * Reported here as an observation, not by `doctor`: `doctor` runs only
26
+ * `severity: 'invariant'` checks (`src/commands/doctor.ts`), and a store
27
+ * whose sections are merely out of the preferred order still functions —
28
+ * this is exactly the report-don't-block condition lint exists for.
29
+ */
30
+ export declare const agentsMdSectionOrderBlockedCheck: import("./types.js").CheckDefinition;
19
31
  export declare const ORGANIZE_CHECKS: import("./types.js").CheckDefinition[];
20
32
  //# sourceMappingURL=organize-checks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"organize-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"AASA,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,sCAiB3B,CAAC;AAEH,oVAAoV;AACpV,eAAO,MAAM,gBAAgB,sCAkB3B,CAAC;AAEH,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,sCAqB/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,sCAgB/B,CAAC;AAEH,oKAAoK;AACpK,eAAO,MAAM,gBAAgB,sCAqB3B,CAAC;AAEH,eAAO,MAAM,eAAe,wCAAqG,CAAC"}
1
+ {"version":3,"file":"organize-checks.d.ts","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"AAYA,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,sCAiB3B,CAAC;AAEH,oVAAoV;AACpV,eAAO,MAAM,gBAAgB,sCAkB3B,CAAC;AAEH,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,sCAqB/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,sCAgB/B,CAAC;AAEH,oKAAoK;AACpK,eAAO,MAAM,gBAAgB,sCAqB3B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gCAAgC,sCA2B3C,CAAC;AAEH,eAAO,MAAM,eAAe,wCAO3B,CAAC"}
@@ -1,4 +1,7 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { AGENTS_MD_SECTION_ORDER, agentsMdPath } from '../agents-doc.js';
1
3
  import { checkCatalogCoverage } from '../catalog/build.js';
4
+ import { reorderFencedRegions } from '../fs/fenced-region.js';
2
5
  import { orphans } from '../graph/query.js';
3
6
  import { hasSourceIdentity } from '../ingest/identity.js';
4
7
  import { findStaleRollups } from '../rollup.js';
@@ -116,5 +119,52 @@ export const rollupStaleCheck = defineCheck({
116
119
  return { status: findings.length > 0 ? 'fail' : 'pass', findings };
117
120
  },
118
121
  });
119
- export const ORGANIZE_CHECKS = [orphanNotesCheck, brokenLinksCheck, uningestedInboxCheck, catalogGapsLintCheck, rollupStaleCheck];
122
+ /**
123
+ * harness-portability spec (inline-conventions-and-mission): "Generated
124
+ * sections render in a fixed order" — hand-written content interrupting the
125
+ * managed fences' contiguity blocks `ctxr update` from reordering them to
126
+ * the fixed layout (`reorderFencedRegions`' own conservative rule: never
127
+ * relocate content it can't be sure sits outside every managed section).
128
+ * Reported here as an observation, not by `doctor`: `doctor` runs only
129
+ * `severity: 'invariant'` checks (`src/commands/doctor.ts`), and a store
130
+ * whose sections are merely out of the preferred order still functions —
131
+ * this is exactly the report-don't-block condition lint exists for.
132
+ */
133
+ export const agentsMdSectionOrderBlockedCheck = defineCheck({
134
+ id: 'harness_portability.agents_md_section_order_blocked',
135
+ title: "AGENTS.md's managed sections can be reordered to the standard layout",
136
+ severity: 'observation',
137
+ capability: 'harness-portability',
138
+ scopes: ['store'],
139
+ async run(ctx) {
140
+ let content;
141
+ try {
142
+ content = await readFile(agentsMdPath(ctx.storeRoot), 'utf8');
143
+ }
144
+ catch (err) {
145
+ if (err.code !== 'ENOENT')
146
+ throw err;
147
+ return { status: 'skip', skipReason: 'AGENTS.md has not been generated yet — run `ctxr update`', findings: [] };
148
+ }
149
+ const { blocked } = reorderFencedRegions(content, AGENTS_MD_SECTION_ORDER);
150
+ const findings = blocked
151
+ ? [
152
+ {
153
+ code: 'harness_portability.agents_md_section_order_blocked',
154
+ severity: 'info',
155
+ message: 'AGENTS.md has hand-written content between two managed sections, so `ctxr update` cannot reorder them to the standard layout. Move the hand-written content outside every managed section, then re-run `ctxr update`.',
156
+ },
157
+ ]
158
+ : [];
159
+ return { status: findings.length > 0 ? 'fail' : 'pass', findings };
160
+ },
161
+ });
162
+ export const ORGANIZE_CHECKS = [
163
+ orphanNotesCheck,
164
+ brokenLinksCheck,
165
+ uningestedInboxCheck,
166
+ catalogGapsLintCheck,
167
+ rollupStaleCheck,
168
+ agentsMdSectionOrderBlockedCheck,
169
+ ];
120
170
  //# sourceMappingURL=organize-checks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"organize-checks.js","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"organize-checks.js","sourceRoot":"","sources":["../../../src/core/checks/organize-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,iBAAiB,GAAG,uDAAuD,CAAC;AAElF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,+BAA+B;IACtC,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnF,MAAM,QAAQ,GAAc,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,EAAE,2BAA2B;YAC1C,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC,CAAC;QACJ,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,oVAAoV;AACpV,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,+BAA+B;IACtC,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnF,MAAM,QAAQ,GAAc,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG;YAChH,OAAO,EAAE,CAAC,CAAC,IAAI;YACf,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SAChD,CAAC,CAAC,CAAC;QACJ,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,mGAAmG;AACnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;IAC9C,EAAE,EAAE,oCAAoC;IACxC,KAAK,EAAE,iCAAiC;IACxC,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACvD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;YAC9B,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC;QACvC,MAAM,QAAQ,GAAc,KAAK;aAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC1E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,IAAI,EAAE,oCAAoC;YAC1C,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,8CAA8C;YACpE,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC,CAAC,CAAC;QACN,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;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;IAC9C,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,6BAA6B;IACpC,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAc,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,QAAQ,4CAA4C;YACjE,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC,CAAC;QACJ,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,oKAAoK;AACpK,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,mEAAmE;IAC1E,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAc,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,MAAM;YAChB,OAAO,EACL,KAAK,CAAC,QAAQ,KAAK,IAAI;gBACrB,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,0DAA0D;gBAC5E,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,0BAA0B,KAAK,CAAC,cAAe,CAAC,IAAI,uCAAuC;YACjH,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;SAC5E,CAAC,CAAC,CAAC;QACJ,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;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAW,CAAC;IAC1D,EAAE,EAAE,qDAAqD;IACzD,KAAK,EAAE,sEAAsE;IAC7E,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;YAChE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClH,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAc,OAAO;YACjC,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,qDAAqD;oBAC3D,QAAQ,EAAE,MAAM;oBAChB,OAAO,EACL,uNAAuN;iBAC1N;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,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,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,gBAAgB;IAChB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,gCAAgC;CACjC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { StoreConfig } from '../config/schema.js';
2
+ /**
3
+ * compose-store-guidance-documents: the shipped baseline convention,
4
+ * rendered from this store's own configuration — never a shipped profile's
5
+ * or one deployment's names. This is what `syncBaselineConvention` writes;
6
+ * it is never composed with anything else. `AGENTS.md`'s "Store
7
+ * conventions" section (inline-conventions-and-mission's
8
+ * `scanConventions`/`renderConventionsSection`) inlines it as one of
9
+ * however many convention files the guidance directory holds, exactly like
10
+ * any operator-authored one.
11
+ */
12
+ export declare function renderBaselineConvention(config: StoreConfig): string;
13
+ /**
14
+ * compose-store-guidance-documents: contexture-owned, the same way a
15
+ * shipped skill copy is (`syncShippedSkills` in skills.ts) — written by
16
+ * `ctxr init`, rewritten wholesale by `ctxr update` on drift, never
17
+ * hand-edited. A single file, so this is simpler than the skills sync (no
18
+ * directory scan, no orphan cleanup): read-compare-write, reporting whether
19
+ * it changed.
20
+ */
21
+ export declare function syncBaselineConvention(root: string, config: StoreConfig): Promise<{
22
+ changed: boolean;
23
+ }>;
24
+ /**
25
+ * The operator's own convention source, seeded once with heading prompts
26
+ * only — no content contexture would be guessing at — and never touched
27
+ * again once it exists (unlike the baseline file, this one is
28
+ * operator-owned).
29
+ */
30
+ export declare function seedCustomConventionFile(root: string, config: StoreConfig): Promise<{
31
+ created: boolean;
32
+ }>;
33
+ //# sourceMappingURL=convention-doc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convention-doc.d.ts","sourceRoot":"","sources":["../../src/core/convention-doc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA4CvD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAYpE;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAa7G;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW/G"}
@@ -0,0 +1,110 @@
1
+ import { mkdir, readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { DEFAULT_BASELINE_CONVENTION_FILE_NAME, DEFAULT_CUSTOM_CONVENTION_FILE_NAME } from '../config/defaults.js';
4
+ import { writeFileAtomic } from './fs/atomic.js';
5
+ import { packagedTemplate, substituteBlock } from './templates.js';
6
+ function conventionTemplate(name) {
7
+ return packagedTemplate('conventions', name);
8
+ }
9
+ function directoryDefaultsList(config) {
10
+ const entries = Object.entries(config.visibility.directory_defaults);
11
+ if (entries.length === 0) {
12
+ return ['- (none configured — every note without an explicit value resolves to the store default context)'];
13
+ }
14
+ return entries.map(([prefix, value]) => `- \`${prefix}\` → \`${value}\``);
15
+ }
16
+ function hardWallsList(config) {
17
+ const { hard_walls: hardWalls } = config.disclosure;
18
+ if (hardWalls.length === 0)
19
+ return ['- (none configured)'];
20
+ return hardWalls.map((wall) => {
21
+ const scope = wall.note_path_prefix ? `under \`${wall.note_path_prefix}\`` : '(every path)';
22
+ const audience = wall.audience === '*' ? 'every audience' : `\`${wall.audience}\``;
23
+ const except = wall.except && wall.except.length > 0 ? `, except ${wall.except.map((a) => `\`${a}\``).join(', ')}` : '';
24
+ return `- ${audience} ${scope} → **${wall.verdict.toUpperCase()}**${except}`;
25
+ });
26
+ }
27
+ function internalAudiencesList(config) {
28
+ const { internal_audiences: internalAudiences } = config.disclosure;
29
+ if (internalAudiences.length === 0)
30
+ return ['- (none configured — every audience is external)'];
31
+ return internalAudiences.map((name) => `- \`${name}\``);
32
+ }
33
+ function relationVocabularyLines(config) {
34
+ const { relations } = config.retrieval;
35
+ if (relations.length === 0) {
36
+ return ['This store declares no relation vocabulary (`retrieval.relations`) — every link is untyped.'];
37
+ }
38
+ const named = relations.map((name) => `**${name}**`).join(', ');
39
+ return [
40
+ `This store's configured relation vocabulary, in link-section order: ${named}. A link under one of these section headings in a note's body is typed accordingly; a link under any other heading is untyped.`,
41
+ ];
42
+ }
43
+ /**
44
+ * compose-store-guidance-documents: the shipped baseline convention,
45
+ * rendered from this store's own configuration — never a shipped profile's
46
+ * or one deployment's names. This is what `syncBaselineConvention` writes;
47
+ * it is never composed with anything else. `AGENTS.md`'s "Store
48
+ * conventions" section (inline-conventions-and-mission's
49
+ * `scanConventions`/`renderConventionsSection`) inlines it as one of
50
+ * however many convention files the guidance directory holds, exactly like
51
+ * any operator-authored one.
52
+ */
53
+ export function renderBaselineConvention(config) {
54
+ let text = conventionTemplate('baseline-convention')
55
+ .replaceAll('__VISIBILITY_FIELD__', config.fields.visibility)
56
+ .replaceAll('__DEFAULT_CONTEXT__', config.visibility.default_context)
57
+ .replaceAll('__ARCHIVE_PATH__', config.organize.archive_path)
58
+ .replaceAll('__DEFAULT_BRANCH__', config.git.default_branch)
59
+ .replaceAll('__WORKTREES_PATH__', config.session.worktrees_path);
60
+ text = substituteBlock(text, '__DIRECTORY_DEFAULTS_TABLE__', directoryDefaultsList(config));
61
+ text = substituteBlock(text, '__HARD_WALLS_LIST__', hardWallsList(config));
62
+ text = substituteBlock(text, '__INTERNAL_AUDIENCES_LIST__', internalAudiencesList(config));
63
+ text = substituteBlock(text, '__RELATION_VOCABULARY__', relationVocabularyLines(config));
64
+ return `${text}\n`;
65
+ }
66
+ /**
67
+ * compose-store-guidance-documents: contexture-owned, the same way a
68
+ * shipped skill copy is (`syncShippedSkills` in skills.ts) — written by
69
+ * `ctxr init`, rewritten wholesale by `ctxr update` on drift, never
70
+ * hand-edited. A single file, so this is simpler than the skills sync (no
71
+ * directory scan, no orphan cleanup): read-compare-write, reporting whether
72
+ * it changed.
73
+ */
74
+ export async function syncBaselineConvention(root, config) {
75
+ const target = path.join(root, config.harness.guidance_path, DEFAULT_BASELINE_CONVENTION_FILE_NAME);
76
+ const content = renderBaselineConvention(config);
77
+ let existing;
78
+ try {
79
+ existing = await readFile(target, 'utf8');
80
+ }
81
+ catch {
82
+ existing = undefined;
83
+ }
84
+ if (existing === content)
85
+ return { changed: false };
86
+ await mkdir(path.dirname(target), { recursive: true });
87
+ await writeFileAtomic(target, content);
88
+ return { changed: true };
89
+ }
90
+ /**
91
+ * The operator's own convention source, seeded once with heading prompts
92
+ * only — no content contexture would be guessing at — and never touched
93
+ * again once it exists (unlike the baseline file, this one is
94
+ * operator-owned).
95
+ */
96
+ export async function seedCustomConventionFile(root, config) {
97
+ const target = path.join(root, config.harness.guidance_path, DEFAULT_CUSTOM_CONVENTION_FILE_NAME);
98
+ try {
99
+ await readFile(target, 'utf8');
100
+ return { created: false };
101
+ }
102
+ catch (err) {
103
+ if (err.code !== 'ENOENT')
104
+ throw err;
105
+ }
106
+ await mkdir(path.dirname(target), { recursive: true });
107
+ await writeFileAtomic(target, `${conventionTemplate('custom-convention-seed')}\n`);
108
+ return { created: true };
109
+ }
110
+ //# sourceMappingURL=convention-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convention-doc.js","sourceRoot":"","sources":["../../src/core/convention-doc.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,41 @@
1
1
  import type { StoreConfig } from '../config/schema.js';
2
2
  /**
3
- * harness-portability spec (entry-doc-generation): operator-authored
4
- * convention documents and (via scanSkills in skills.ts) skill
5
- * files are indexed from what is actually on disk — adding a file is the
6
- * entire integration. Metadata extraction order: frontmatter title →
3
+ * harness-portability spec (entry-doc-generation, inline-conventions-and-mission):
4
+ * operator-authored convention documents and (via scanSkills in skills.ts)
5
+ * skill files are scanned from what is actually on disk — adding a file is
6
+ * the entire integration. Metadata extraction order: frontmatter title →
7
7
  * first `# ` heading → filename stem; description only from frontmatter.
8
+ * `body` is the frontmatter-stripped content, kept alongside the metadata so
9
+ * `inlineDocBody` never has to re-read or re-parse the source file.
8
10
  */
9
11
  export interface ScannedDoc {
10
12
  /** Path relative to the store root, forward-slash separated. */
11
13
  path: string;
12
14
  title: string;
13
15
  description: string | null;
16
+ /** Frontmatter stripped, otherwise verbatim. */
17
+ body: string;
14
18
  }
15
19
  /** The skill-layout filename: `<slug>/SKILL.md` — what harnesses with skill auto-discovery read. */
16
20
  export declare const SKILL_FILE_NAME = "SKILL.md";
17
21
  export declare function extractDocMetadata(raw: string, relativePath: string): ScannedDoc;
22
+ /**
23
+ * inline-conventions-and-mission: renders a scanned doc's body for inlining
24
+ * into a generated `AGENTS.md` section — a leading `# <title>` heading
25
+ * dropped when it duplicates the section heading the caller already
26
+ * provides, every remaining ATX heading demoted by `headingOffset` levels
27
+ * (capped at H6), and any nested `contexture:<region>` fence marker line
28
+ * stripped (its body kept, only the marker comment removed) so a fence
29
+ * copied out of a source file — e.g. mission.md's own rollup fence — never
30
+ * leaves an orphaned marker inside AGENTS.md's fence.
31
+ */
32
+ export declare function inlineDocBody(doc: ScannedDoc, headingOffset: number): string[];
18
33
  export declare function scanDocsDir(root: string, dirRelativePath: string): Promise<ScannedDoc[]>;
19
- /** Every operator convention doc currently at the configured path. */
34
+ /**
35
+ * Every convention doc currently at the configured guidance path —
36
+ * contexture's own shipped baseline (see `templates/conventions/baseline-convention.md`,
37
+ * synced by `syncBaselineConvention` in `convention-doc.ts`) alongside
38
+ * whatever the operator has added — minus the mission document.
39
+ */
20
40
  export declare function scanConventions(root: string, config: StoreConfig): Promise<ScannedDoc[]>;
21
41
  //# sourceMappingURL=conventions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/core/conventions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,oGAAoG;AACpG,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CA2BhF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgC9F;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAExF"}
1
+ {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/core/conventions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAID,oGAAoG;AACpG,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CA4BhF;AAID;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB9E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgC9F;AAgBD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAI9F"}