ctxr-cli 0.7.0 → 0.9.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 (131) hide show
  1. package/README.md +303 -22
  2. package/dist/adapters/types.d.ts +0 -5
  3. package/dist/adapters/types.d.ts.map +1 -1
  4. package/dist/commands/adapters-generate.d.ts.map +1 -1
  5. package/dist/commands/adapters-generate.js +2 -3
  6. package/dist/commands/adapters-generate.js.map +1 -1
  7. package/dist/commands/context-gather.d.ts +22 -0
  8. package/dist/commands/context-gather.d.ts.map +1 -0
  9. package/dist/commands/context-gather.js +36 -0
  10. package/dist/commands/context-gather.js.map +1 -0
  11. package/dist/commands/graph-query.d.ts.map +1 -1
  12. package/dist/commands/graph-query.js +6 -8
  13. package/dist/commands/graph-query.js.map +1 -1
  14. package/dist/commands/ingest.d.ts +22 -9
  15. package/dist/commands/ingest.d.ts.map +1 -1
  16. package/dist/commands/ingest.js +86 -24
  17. package/dist/commands/ingest.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +21 -5
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/source-check.d.ts.map +1 -1
  22. package/dist/commands/source-check.js +27 -9
  23. package/dist/commands/source-check.js.map +1 -1
  24. package/dist/commands/source-stamp.d.ts +6 -5
  25. package/dist/commands/source-stamp.d.ts.map +1 -1
  26. package/dist/commands/source-stamp.js +8 -7
  27. package/dist/commands/source-stamp.js.map +1 -1
  28. package/dist/config/defaults.d.ts +103 -4
  29. package/dist/config/defaults.d.ts.map +1 -1
  30. package/dist/config/defaults.js +76 -4
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/config/render.d.ts +11 -0
  33. package/dist/config/render.d.ts.map +1 -1
  34. package/dist/config/render.js +85 -3
  35. package/dist/config/render.js.map +1 -1
  36. package/dist/config/schema.d.ts +50 -30
  37. package/dist/config/schema.d.ts.map +1 -1
  38. package/dist/config/schema.js +151 -62
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/core/agents-doc.d.ts.map +1 -1
  41. package/dist/core/agents-doc.js +4 -1
  42. package/dist/core/agents-doc.js.map +1 -1
  43. package/dist/core/checks/harness-portability-checks.d.ts +1 -1
  44. package/dist/core/checks/harness-portability-checks.d.ts.map +1 -1
  45. package/dist/core/checks/harness-portability-checks.js +2 -3
  46. package/dist/core/checks/harness-portability-checks.js.map +1 -1
  47. package/dist/core/checks/manifest.d.ts.map +1 -1
  48. package/dist/core/checks/manifest.js +2 -0
  49. package/dist/core/checks/manifest.js.map +1 -1
  50. package/dist/core/checks/organize-checks.d.ts +11 -1
  51. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  52. package/dist/core/checks/organize-checks.js +42 -12
  53. package/dist/core/checks/organize-checks.js.map +1 -1
  54. package/dist/core/checks/retrieval-checks.d.ts +9 -0
  55. package/dist/core/checks/retrieval-checks.d.ts.map +1 -0
  56. package/dist/core/checks/retrieval-checks.js +30 -0
  57. package/dist/core/checks/retrieval-checks.js.map +1 -0
  58. package/dist/core/content/canonicalize.d.ts +10 -0
  59. package/dist/core/content/canonicalize.d.ts.map +1 -1
  60. package/dist/core/content/canonicalize.js +12 -0
  61. package/dist/core/content/canonicalize.js.map +1 -1
  62. package/dist/core/errors.d.ts +19 -0
  63. package/dist/core/errors.d.ts.map +1 -1
  64. package/dist/core/errors.js +53 -1
  65. package/dist/core/errors.js.map +1 -1
  66. package/dist/core/fs/prefix.d.ts +13 -0
  67. package/dist/core/fs/prefix.d.ts.map +1 -0
  68. package/dist/core/fs/prefix.js +22 -0
  69. package/dist/core/fs/prefix.js.map +1 -0
  70. package/dist/core/graph/persist.d.ts +13 -0
  71. package/dist/core/graph/persist.d.ts.map +1 -1
  72. package/dist/core/graph/persist.js +24 -0
  73. package/dist/core/graph/persist.js.map +1 -1
  74. package/dist/core/hooks.d.ts +3 -12
  75. package/dist/core/hooks.d.ts.map +1 -1
  76. package/dist/core/hooks.js +24 -20
  77. package/dist/core/hooks.js.map +1 -1
  78. package/dist/core/ingest/capture-hash.d.ts +16 -0
  79. package/dist/core/ingest/capture-hash.d.ts.map +1 -0
  80. package/dist/core/ingest/capture-hash.js +34 -0
  81. package/dist/core/ingest/capture-hash.js.map +1 -0
  82. package/dist/core/ingest/identity.d.ts +7 -1
  83. package/dist/core/ingest/identity.d.ts.map +1 -1
  84. package/dist/core/ingest/identity.js +16 -1
  85. package/dist/core/ingest/identity.js.map +1 -1
  86. package/dist/core/ingest/model.d.ts +17 -2
  87. package/dist/core/ingest/model.d.ts.map +1 -1
  88. package/dist/core/ingest/model.js +5 -0
  89. package/dist/core/ingest/model.js.map +1 -1
  90. package/dist/core/migrations/config-defaults-as-the-convention.d.ts +21 -0
  91. package/dist/core/migrations/config-defaults-as-the-convention.d.ts.map +1 -0
  92. package/dist/core/migrations/config-defaults-as-the-convention.js +54 -0
  93. package/dist/core/migrations/config-defaults-as-the-convention.js.map +1 -0
  94. package/dist/core/migrations/registry.d.ts.map +1 -1
  95. package/dist/core/migrations/registry.js +4 -0
  96. package/dist/core/migrations/registry.js.map +1 -1
  97. package/dist/core/migrations/retain-captures-as-provenance.d.ts +22 -0
  98. package/dist/core/migrations/retain-captures-as-provenance.d.ts.map +1 -0
  99. package/dist/core/migrations/retain-captures-as-provenance.js +133 -0
  100. package/dist/core/migrations/retain-captures-as-provenance.js.map +1 -0
  101. package/dist/core/notes/list.d.ts +20 -0
  102. package/dist/core/notes/list.d.ts.map +1 -1
  103. package/dist/core/notes/list.js +27 -6
  104. package/dist/core/notes/list.js.map +1 -1
  105. package/dist/core/records.d.ts +7 -0
  106. package/dist/core/records.d.ts.map +1 -1
  107. package/dist/core/records.js +12 -2
  108. package/dist/core/records.js.map +1 -1
  109. package/dist/core/retrieval/pass.d.ts +66 -0
  110. package/dist/core/retrieval/pass.d.ts.map +1 -0
  111. package/dist/core/retrieval/pass.js +171 -0
  112. package/dist/core/retrieval/pass.js.map +1 -0
  113. package/dist/core/write-lifecycle/path-gate.d.ts +2 -2
  114. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
  115. package/dist/core/write-lifecycle/path-gate.js +9 -10
  116. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  117. package/dist/run.d.ts +0 -5
  118. package/dist/run.d.ts.map +1 -1
  119. package/dist/run.js +38 -3
  120. package/dist/run.js.map +1 -1
  121. package/dist/version.d.ts +1 -1
  122. package/dist/version.js +1 -1
  123. package/package.json +13 -5
  124. package/templates/agents/capture-and-ingest.md +27 -8
  125. package/templates/agents/retrieval-leg-routing.md +34 -8
  126. package/templates/hooks/_resolve-ctxr.sh +37 -0
  127. package/templates/hooks/claude-code-write-gate.sh +34 -6
  128. package/templates/hooks/pre-commit.sh +15 -8
  129. package/templates/skills/ctxr-connection-finding.md +7 -5
  130. package/templates/skills/ctxr-ingest-orchestration.md +15 -9
  131. package/templates/skills/ctxr-publish.md +7 -8
@@ -55,8 +55,24 @@ export const DEFAULT_MISSION_FILE_NAME = 'mission.md';
55
55
  export const DEFAULT_MISSION_PATH = `${DEFAULT_GUIDANCE_PATH}${DEFAULT_MISSION_FILE_NAME}`;
56
56
  /** store-integrity spec: AGENTS.md's inlined "Store conventions" section's size ceiling when `harness.convention_max_bytes` is unset. */
57
57
  export const DEFAULT_CONVENTION_MAX_BYTES = 32 * 1024;
58
- /** Paths excluded from every retrieval leg by default. */
59
- export const DEFAULT_EXCLUDE_PATHS = ['.contexture/'];
58
+ /**
59
+ * context-ingest spec: the capture tier's root. Everything beneath it is
60
+ * material that arrived rather than knowledge someone wrote, so it is
61
+ * excluded from retrieval and never becomes a note — but it IS tracked in
62
+ * git, because a retained capture is provenance, not regenerable output.
63
+ */
64
+ export const DEFAULT_CAPTURE_ROOT = 'raw/';
65
+ /** Paths excluded from every retrieval leg by default — contexture's own directory, and the capture tier. */
66
+ export const DEFAULT_EXCLUDE_PATHS = ['.contexture/', DEFAULT_CAPTURE_ROOT];
67
+ /**
68
+ * compose-the-retrieval-pass spec (D10/D11): path prefixes that stay fully
69
+ * retrievable but sort after everything else. Empty here because the shipped
70
+ * value is not a literal — `init` seeds it from the taxonomy's own resolved
71
+ * archive destination, so a custom taxonomy demotes its archive, not PARA's.
72
+ */
73
+ export const DEFAULT_DEMOTE_PATHS = [];
74
+ /** compose-the-retrieval-pass spec: how many notes `ctxr context gather` returns before it reports truncation. */
75
+ export const DEFAULT_GATHER_MAX_NOTES = 50;
60
76
  /** graph-context-document spec: no relation vocabulary by default — no typed edges until a store declares names. */
61
77
  export const DEFAULT_RELATIONS = [];
62
78
  /** graph-context-document spec: positional clusters two directory segments deep; document sections capped for readability. */
@@ -78,8 +94,13 @@ export const DEFAULT_CATALOG_PATH = '.contexture/catalog/';
78
94
  export const DEFAULT_CATALOG_SECTION_MAX_BYTES = 32 * 1024;
79
95
  /** publish spec: where published pages live — tracked, authored-but-tool-owned, excluded from retrieval like the catalog and skill pack. */
80
96
  export const DEFAULT_PUBLISH_PATH = '.contexture/publish/';
81
- /** context-ingest spec: capture's landing zone — a normal, retrievable directory, not an exclusion. */
82
- export const DEFAULT_INBOX_PATH = 'inbox/';
97
+ /**
98
+ * context-ingest spec: capture's landing zone — the not-yet-ingested state
99
+ * inside the capture tier. Nesting it under the capture root is what lets a
100
+ * single prefix serve both the retrieval exclusion and the write-path gate;
101
+ * the schema enforces the nesting.
102
+ */
103
+ export const DEFAULT_INBOX_PATH = 'raw/inbox/';
83
104
  /** store-primitives-from-migration-audit spec (D2): the shipped tracking-parameter list source check strips before comparing URL identities. */
84
105
  export const DEFAULT_TRACKING_PARAMS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid'];
85
106
  /**
@@ -99,4 +120,55 @@ export const DEFAULT_ROLLUP_STALE_DAYS = 7;
99
120
  * it was addable.
100
121
  */
101
122
  export const DEFAULT_ADAPTERS = [{ id: 'claude-code', kind: 'harness-generation' }];
123
+ /**
124
+ * Every configuration value contexture ships an opinion about, in one place,
125
+ * shaped like the config itself. `StoreConfigSchema` takes its `.default(...)`
126
+ * values from here and `renderStoreConfig` reads it to decide what a written
127
+ * config may omit — the two have to agree, and the only way to guarantee that
128
+ * is for them to read the same object.
129
+ *
130
+ * What is deliberately ABSENT from this object is as load-bearing as what is
131
+ * in it. A key appears here only when its correct value depends on nothing:
132
+ *
133
+ * - `schema_version`, `taxonomy` and `git.default_branch` are facts about the
134
+ * individual store. `git.default_branch` records whatever branch `git init`
135
+ * actually created and is never hardcoded (see `GitSchema`).
136
+ * - `organize.archive_destination` is derived: a shipped profile supplies it
137
+ * from the taxonomy at init, so a constant here would give every PARA store
138
+ * `archive/` while its own taxonomy declares `archives/` — the defect
139
+ * `archive-destination-from-taxonomy` was written to fix.
140
+ * - `organize.mission_path` is an opt-in whose absence is meaningful: call
141
+ * sites branch on the key's presence to decide whether the store has a
142
+ * mission mechanism at all. `DEFAULT_MISSION_PATH` is what `init` seeds,
143
+ * not what an omission resolves to.
144
+ * - `harness.procedures_path` and `harness.conventions_path` are pre-rename
145
+ * spellings, read only as fallbacks by `HarnessSchema`'s transform.
146
+ */
147
+ export const SHIPPED_DEFAULTS = {
148
+ derived: { paths: DEFAULT_DERIVED_PATHS },
149
+ retrieval: {
150
+ exclude_paths: DEFAULT_EXCLUDE_PATHS,
151
+ demote_paths: DEFAULT_DEMOTE_PATHS,
152
+ gather_max_notes: DEFAULT_GATHER_MAX_NOTES,
153
+ relations: DEFAULT_RELATIONS,
154
+ graph: DEFAULT_GRAPH_SETTINGS,
155
+ },
156
+ session: { branch_prefix: DEFAULT_SESSION_BRANCH_PREFIX, worktrees_path: DEFAULT_WORKTREES_PATH },
157
+ write_lifecycle: { diff_size_ceiling_lines: DEFAULT_DIFF_SIZE_CEILING_LINES, writable_paths: [] },
158
+ catalog: { path: DEFAULT_CATALOG_PATH, section_max_bytes: DEFAULT_CATALOG_SECTION_MAX_BYTES },
159
+ publish: { path: DEFAULT_PUBLISH_PATH },
160
+ skills: { vendored: DEFAULT_VENDORED_SKILLS },
161
+ ingest: {
162
+ inbox_path: DEFAULT_INBOX_PATH,
163
+ capture_root: DEFAULT_CAPTURE_ROOT,
164
+ tracking_params: DEFAULT_TRACKING_PARAMS,
165
+ },
166
+ organize: { rollup_stale_days: DEFAULT_ROLLUP_STALE_DAYS },
167
+ harness: {
168
+ skills_path: DEFAULT_SKILLS_PATH,
169
+ guidance_path: DEFAULT_GUIDANCE_PATH,
170
+ convention_max_bytes: DEFAULT_CONVENTION_MAX_BYTES,
171
+ },
172
+ adapters: DEFAULT_ADAPTERS,
173
+ };
102
174
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,oBAAoB,CAAU,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAU,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D,4HAA4H;AAC5H,MAAM,CAAC,MAAM,sCAAsC,GAAG,yBAAyB,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,sBAAsB,CAAC;AAE1E,mHAAmH;AACnH,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAEtD,+IAA+I;AAC/I,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AAE3F,yIAAyI;AACzI,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,cAAc,CAAU,CAAC;AAE/D,oHAAoH;AACpH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,EAAE,CAAC;AAEvD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,EAAE;IACd,sBAAsB,EAAE,EAAc;CACvC,CAAC;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAEpD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC;AAGxD,oFAAoF;AACpF,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,2HAA2H;AAC3H,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,6GAA6G;AAC7G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3D,4IAA4I;AAC5I,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,gJAAgJ;AAChJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAElI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AAEtD,iHAAiH;AACjH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,17 @@ import { type StoreConfig } from './schema.js';
4
4
  * schema before returning — a render that doesn't round-trip is a bug caught
5
5
  * here, before any byte reaches disk, rather than discovered later as a
6
6
  * corrupted store.
7
+ *
8
+ * The round-trip also proves the omission was lossless: what the pruned text
9
+ * parses back to must equal what was passed in, so a default that drifted out
10
+ * of step with the schema fails here rather than silently changing a store's
11
+ * behavior.
7
12
  */
8
13
  export declare function renderStoreConfig(config: StoreConfig): string;
14
+ /**
15
+ * The dotted paths `renderStoreConfig` would drop from this config — what a
16
+ * migration reports it is about to remove, derived from the same walk that
17
+ * does the removing so the report and the write cannot disagree.
18
+ */
19
+ export declare function redundantKeyPaths(config: StoreConfig): string[];
9
20
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/config/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAIlE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAI7D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/config/render.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAkDlE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAgB/D"}
@@ -1,15 +1,97 @@
1
+ import { isDeepStrictEqual } from 'node:util';
1
2
  import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
3
+ import { SHIPPED_DEFAULTS } from './defaults.js';
2
4
  import { StoreConfigSchema } from './schema.js';
3
- const HEADER = '# contexture store configuration\n\n';
5
+ const HEADER = [
6
+ '# contexture store configuration',
7
+ '#',
8
+ '# Only what this store chose. Any key not here takes contexture\'s shipped',
9
+ '# default, and follows it when a later release improves it.',
10
+ '',
11
+ '',
12
+ ].join('\n');
13
+ function isPlainObject(value) {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ }
16
+ /**
17
+ * config-defaults-as-the-convention (D3, D4): drops every value equal to its
18
+ * shipped default, so what reaches disk is the set of decisions the store has
19
+ * made. Applied here rather than at `init` because this is the single writer —
20
+ * every migration's write-back passes through it too, and one that did not
21
+ * would re-materialize the full resolved shape and undo the omission.
22
+ *
23
+ * Equality is deep and order-sensitive: a list holding the same entries in a
24
+ * different order is written as the store wrote it. Treating that as equal
25
+ * would silently reorder an operator's file to save one line.
26
+ *
27
+ * A key absent from `SHIPPED_DEFAULTS` is always kept — contexture has no
28
+ * opinion about it, or (as with `organize.mission_path`) its absence is
29
+ * itself the meaningful state.
30
+ */
31
+ function withoutShippedDefaults(value, defaults) {
32
+ const kept = {};
33
+ for (const [key, declared] of Object.entries(value)) {
34
+ const shipped = defaults[key];
35
+ if (shipped === undefined) {
36
+ kept[key] = declared;
37
+ continue;
38
+ }
39
+ if (isPlainObject(declared) && isPlainObject(shipped)) {
40
+ const nested = withoutShippedDefaults(declared, shipped);
41
+ // A block whose every key matched is dropped whole, not left as `{}`.
42
+ if (Object.keys(nested).length > 0)
43
+ kept[key] = nested;
44
+ continue;
45
+ }
46
+ if (isDeepStrictEqual(declared, shipped))
47
+ continue;
48
+ kept[key] = declared;
49
+ }
50
+ return kept;
51
+ }
4
52
  /**
5
53
  * Renders a StoreConfig to YAML text and round-trips it back through the
6
54
  * schema before returning — a render that doesn't round-trip is a bug caught
7
55
  * here, before any byte reaches disk, rather than discovered later as a
8
56
  * corrupted store.
57
+ *
58
+ * The round-trip also proves the omission was lossless: what the pruned text
59
+ * parses back to must equal what was passed in, so a default that drifted out
60
+ * of step with the schema fails here rather than silently changing a store's
61
+ * behavior.
9
62
  */
10
63
  export function renderStoreConfig(config) {
11
- const text = HEADER + stringifyYaml(config, { indent: 2 });
12
- StoreConfigSchema.parse(parseYaml(text)); // throws on mismatch; that IS the check
64
+ const declared = withoutShippedDefaults(config, SHIPPED_DEFAULTS);
65
+ const text = HEADER + stringifyYaml(declared, { indent: 2 });
66
+ const reparsed = StoreConfigSchema.parse(parseYaml(text)); // throws on mismatch; that IS the check
67
+ if (!isDeepStrictEqual(reparsed, config)) {
68
+ throw new Error('contexture.yaml render dropped a key whose shipped default does not match what the schema resolves. ' +
69
+ 'SHIPPED_DEFAULTS and StoreConfigSchema disagree.');
70
+ }
13
71
  return text;
14
72
  }
73
+ /**
74
+ * The dotted paths `renderStoreConfig` would drop from this config — what a
75
+ * migration reports it is about to remove, derived from the same walk that
76
+ * does the removing so the report and the write cannot disagree.
77
+ */
78
+ export function redundantKeyPaths(config) {
79
+ const found = [];
80
+ const walk = (value, defaults, prefix) => {
81
+ for (const [key, declared] of Object.entries(value)) {
82
+ const shipped = defaults[key];
83
+ if (shipped === undefined)
84
+ continue;
85
+ const dotted = prefix === '' ? key : `${prefix}.${key}`;
86
+ if (isPlainObject(declared) && isPlainObject(shipped)) {
87
+ walk(declared, shipped, dotted);
88
+ continue;
89
+ }
90
+ if (isDeepStrictEqual(declared, shipped))
91
+ found.push(dotted);
92
+ }
93
+ };
94
+ walk(config, SHIPPED_DEFAULTS, '');
95
+ return found;
96
+ }
15
97
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/config/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AAElE,MAAM,MAAM,GAAG,sCAAsC,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wCAAwC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/config/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AAElE,MAAM,MAAM,GAAG;IACb,kCAAkC;IAClC,GAAG;IACH,4EAA4E;IAC5E,6DAA6D;IAC7D,EAAE;IACF,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,sBAAsB,CAAC,KAA8B,EAAE,QAAiC;IAC/F,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,sEAAsE;YACtE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACvD,SAAS;QACX,CAAC;QACD,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;YAAE,SAAS;QACnD,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAA4C,EAAE,gBAAsD,CAAC,CAAC;IAC9I,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wCAAwC;IACnG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,sGAAsG;YACpG,kDAAkD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,KAA8B,EAAE,QAAiC,EAAE,MAAc,EAAQ,EAAE;QACvG,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YACpC,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;YACxD,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,MAA4C,EAAE,gBAAsD,EAAE,EAAE,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -35,7 +35,24 @@ import { z } from 'zod';
35
35
  * keys until `ctxr migrate` drops them, exactly as `identity` did when
36
36
  * remove-agent-identity retired it.
37
37
  */
38
- export declare const SUPPORTED_SCHEMA_VERSION = 8;
38
+ /**
39
+ * Bumped to 9 by the capture-tier change (retain-captures-as-provenance,
40
+ * retain-captures-as-provenance): `ingest.capture_root` is added and
41
+ * `ingest.inbox_path`'s shipped default moves inside it. IngestSchema accepts
42
+ * a config with no `capture_root` so an unmigrated store still loads —
43
+ * `ctxr migrate` has to be able to read the file it is about to rewrite —
44
+ * and skips the nesting rule for exactly that case.
45
+ */
46
+ export declare const SUPPORTED_SCHEMA_VERSION = 10;
47
+ /** The version at which the capture tier became part of the store's shape, and its nesting rule enforceable. */
48
+ export declare const CAPTURE_TIER_SCHEMA_VERSION = 9;
49
+ /**
50
+ * Bumped to 10 by config-defaults-as-the-convention: every convention key now
51
+ * carries its shipped default here, and a written config omits what it agrees
52
+ * with. Nothing about the shape got stricter — the bump exists so the pruning
53
+ * migration has a `schema_version <` predicate to decide it still has work,
54
+ * the same way every migration in this repo does.
55
+ */
39
56
  export declare const TaxonomyLayerSchema: z.ZodObject<{
40
57
  name: z.ZodString;
41
58
  path: z.ZodString;
@@ -72,11 +89,13 @@ export declare const StoreConfigSchema: z.ZodObject<{
72
89
  description: z.ZodString;
73
90
  }, z.core.$strip>>;
74
91
  }, z.core.$strip>;
75
- derived: z.ZodObject<{
76
- paths: z.ZodArray<z.ZodString>;
77
- }, z.core.$strip>;
78
- retrieval: z.ZodObject<{
79
- exclude_paths: z.ZodArray<z.ZodString>;
92
+ derived: z.ZodPrefault<z.ZodObject<{
93
+ paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
94
+ }, z.core.$strip>>;
95
+ retrieval: z.ZodPrefault<z.ZodObject<{
96
+ exclude_paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
97
+ demote_paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
98
+ gather_max_notes: z.ZodDefault<z.ZodNumber>;
80
99
  relations: z.ZodDefault<z.ZodArray<z.ZodString>>;
81
100
  graph: z.ZodDefault<z.ZodObject<{
82
101
  cluster_depth: z.ZodDefault<z.ZodNumber>;
@@ -84,32 +103,33 @@ export declare const StoreConfigSchema: z.ZodObject<{
84
103
  bridge_top: z.ZodDefault<z.ZodNumber>;
85
104
  orphan_exempt_clusters: z.ZodDefault<z.ZodArray<z.ZodString>>;
86
105
  }, z.core.$strip>>;
87
- }, z.core.$strip>;
106
+ }, z.core.$strip>>;
88
107
  git: z.ZodObject<{
89
108
  default_branch: z.ZodString;
90
109
  }, z.core.$strip>;
91
- session: z.ZodObject<{
92
- branch_prefix: z.ZodString;
93
- worktrees_path: z.ZodString;
94
- }, z.core.$strip>;
95
- write_lifecycle: z.ZodObject<{
96
- diff_size_ceiling_lines: z.ZodNumber;
110
+ session: z.ZodPrefault<z.ZodObject<{
111
+ branch_prefix: z.ZodDefault<z.ZodString>;
112
+ worktrees_path: z.ZodDefault<z.ZodString>;
113
+ }, z.core.$strip>>;
114
+ write_lifecycle: z.ZodPrefault<z.ZodObject<{
115
+ diff_size_ceiling_lines: z.ZodDefault<z.ZodNumber>;
97
116
  writable_paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
98
- }, z.core.$strip>;
99
- catalog: z.ZodObject<{
100
- path: z.ZodString;
101
- section_max_bytes: z.ZodNumber;
102
- }, z.core.$strip>;
103
- publish: z.ZodDefault<z.ZodObject<{
117
+ }, z.core.$strip>>;
118
+ catalog: z.ZodPrefault<z.ZodObject<{
104
119
  path: z.ZodDefault<z.ZodString>;
120
+ section_max_bytes: z.ZodDefault<z.ZodNumber>;
105
121
  }, z.core.$strip>>;
106
- skills: z.ZodDefault<z.ZodObject<{
122
+ publish: z.ZodPrefault<z.ZodObject<{
123
+ path: z.ZodDefault<z.ZodString>;
124
+ }, z.core.$strip>>;
125
+ skills: z.ZodPrefault<z.ZodObject<{
107
126
  vendored: z.ZodDefault<z.ZodArray<z.ZodString>>;
108
127
  }, z.core.$strip>>;
109
- ingest: z.ZodObject<{
110
- inbox_path: z.ZodString;
128
+ ingest: z.ZodPrefault<z.ZodObject<{
129
+ inbox_path: z.ZodDefault<z.ZodString>;
130
+ capture_root: z.ZodDefault<z.ZodString>;
111
131
  tracking_params: z.ZodDefault<z.ZodArray<z.ZodString>>;
112
- }, z.core.$strip>;
132
+ }, z.core.$strip>>;
113
133
  organize: z.ZodPipe<z.ZodObject<{
114
134
  archive_destination: z.ZodOptional<z.ZodString>;
115
135
  archive_path: z.ZodOptional<z.ZodString>;
@@ -125,24 +145,24 @@ export declare const StoreConfigSchema: z.ZodObject<{
125
145
  rollup_stale_days: number;
126
146
  mission_path?: string | undefined;
127
147
  }>>;
128
- harness: z.ZodPipe<z.ZodObject<{
148
+ harness: z.ZodPrefault<z.ZodPipe<z.ZodObject<{
129
149
  skills_path: z.ZodOptional<z.ZodString>;
130
150
  procedures_path: z.ZodOptional<z.ZodString>;
131
151
  guidance_path: z.ZodOptional<z.ZodString>;
132
152
  conventions_path: z.ZodOptional<z.ZodString>;
133
- convention_max_bytes: z.ZodOptional<z.ZodNumber>;
153
+ convention_max_bytes: z.ZodDefault<z.ZodNumber>;
134
154
  }, z.core.$strip>, z.ZodTransform<{
135
155
  skills_path: string;
136
156
  guidance_path: string;
137
- convention_max_bytes?: number | undefined;
157
+ convention_max_bytes: number;
138
158
  }, {
139
159
  skills_path?: string | undefined;
140
160
  procedures_path?: string | undefined;
141
161
  guidance_path?: string | undefined;
142
162
  conventions_path?: string | undefined;
143
- convention_max_bytes?: number | undefined;
144
- }>>;
145
- adapters: z.ZodPipe<z.ZodPipe<z.ZodArray<z.ZodObject<{
163
+ convention_max_bytes: number;
164
+ }>>>;
165
+ adapters: z.ZodDefault<z.ZodPipe<z.ZodPipe<z.ZodArray<z.ZodObject<{
146
166
  id: z.ZodString;
147
167
  kind: z.ZodString;
148
168
  module: z.ZodOptional<z.ZodString>;
@@ -161,7 +181,7 @@ export declare const StoreConfigSchema: z.ZodObject<{
161
181
  }>;
162
182
  module: z.ZodOptional<z.ZodString>;
163
183
  skills_dir: z.ZodOptional<z.ZodString>;
164
- }, z.core.$strip>>>;
184
+ }, z.core.$strip>>>>;
165
185
  }, z.core.$loose>;
166
186
  export type StoreConfig = z.infer<typeof StoreConfigSchema>;
167
187
  export type TaxonomyLayerConfig = z.infer<typeof TaxonomyLayerSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAYH;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;;;;;iBAKvB,CAAC;AAkLH,QAAA,MAAM,wBAAwB;;;;;;;iBAM5B,CAAC;AAiBH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBd,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AACH;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;;;GAaG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,gHAAgH;AAChH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;;GAMG;AAEH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAYH;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB;;;;;iBAKvB,CAAC;AAmOH,QAAA,MAAM,wBAAwB;;;;;;;iBAM5B,CAAC;AAiBH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuC1B,CAAC;AAEL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}