ctxr-cli 0.1.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 (390) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +25 -0
  3. package/dist/adapter.d.ts +18 -0
  4. package/dist/adapter.d.ts.map +1 -0
  5. package/dist/adapter.js +4 -0
  6. package/dist/adapter.js.map +1 -0
  7. package/dist/adapters/builtin/index.d.ts +10 -0
  8. package/dist/adapters/builtin/index.d.ts.map +1 -0
  9. package/dist/adapters/builtin/index.js +11 -0
  10. package/dist/adapters/builtin/index.js.map +1 -0
  11. package/dist/adapters/forge/github.d.ts +9 -0
  12. package/dist/adapters/forge/github.d.ts.map +1 -0
  13. package/dist/adapters/forge/github.js +36 -0
  14. package/dist/adapters/forge/github.js.map +1 -0
  15. package/dist/adapters/forge/types.d.ts +23 -0
  16. package/dist/adapters/forge/types.d.ts.map +1 -0
  17. package/dist/adapters/forge/types.js +2 -0
  18. package/dist/adapters/forge/types.js.map +1 -0
  19. package/dist/adapters/harness/claude-code.d.ts +9 -0
  20. package/dist/adapters/harness/claude-code.d.ts.map +1 -0
  21. package/dist/adapters/harness/claude-code.js +42 -0
  22. package/dist/adapters/harness/claude-code.js.map +1 -0
  23. package/dist/adapters/identity/claude-code.d.ts +11 -0
  24. package/dist/adapters/identity/claude-code.d.ts.map +1 -0
  25. package/dist/adapters/identity/claude-code.js +18 -0
  26. package/dist/adapters/identity/claude-code.js.map +1 -0
  27. package/dist/adapters/registry.d.ts +16 -0
  28. package/dist/adapters/registry.d.ts.map +1 -0
  29. package/dist/adapters/registry.js +29 -0
  30. package/dist/adapters/registry.js.map +1 -0
  31. package/dist/adapters/types.d.ts +65 -0
  32. package/dist/adapters/types.d.ts.map +1 -0
  33. package/dist/adapters/types.js +12 -0
  34. package/dist/adapters/types.js.map +1 -0
  35. package/dist/bin.d.ts +3 -0
  36. package/dist/bin.d.ts.map +1 -0
  37. package/dist/bin.js +6 -0
  38. package/dist/bin.js.map +1 -0
  39. package/dist/commands/adapters-generate.d.ts +23 -0
  40. package/dist/commands/adapters-generate.d.ts.map +1 -0
  41. package/dist/commands/adapters-generate.js +59 -0
  42. package/dist/commands/adapters-generate.js.map +1 -0
  43. package/dist/commands/archive.d.ts +28 -0
  44. package/dist/commands/archive.d.ts.map +1 -0
  45. package/dist/commands/archive.js +66 -0
  46. package/dist/commands/archive.js.map +1 -0
  47. package/dist/commands/catalog-build.d.ts +7 -0
  48. package/dist/commands/catalog-build.d.ts.map +1 -0
  49. package/dist/commands/catalog-build.js +15 -0
  50. package/dist/commands/catalog-build.js.map +1 -0
  51. package/dist/commands/catalog-check.d.ts +22 -0
  52. package/dist/commands/catalog-check.d.ts.map +1 -0
  53. package/dist/commands/catalog-check.js +49 -0
  54. package/dist/commands/catalog-check.js.map +1 -0
  55. package/dist/commands/catalog-show.d.ts +13 -0
  56. package/dist/commands/catalog-show.d.ts.map +1 -0
  57. package/dist/commands/catalog-show.js +19 -0
  58. package/dist/commands/catalog-show.js.map +1 -0
  59. package/dist/commands/check.d.ts +22 -0
  60. package/dist/commands/check.d.ts.map +1 -0
  61. package/dist/commands/check.js +43 -0
  62. package/dist/commands/check.js.map +1 -0
  63. package/dist/commands/doctor.d.ts +27 -0
  64. package/dist/commands/doctor.d.ts.map +1 -0
  65. package/dist/commands/doctor.js +53 -0
  66. package/dist/commands/doctor.js.map +1 -0
  67. package/dist/commands/graph-build.d.ts +24 -0
  68. package/dist/commands/graph-build.d.ts.map +1 -0
  69. package/dist/commands/graph-build.js +36 -0
  70. package/dist/commands/graph-build.js.map +1 -0
  71. package/dist/commands/graph-query.d.ts +41 -0
  72. package/dist/commands/graph-query.d.ts.map +1 -0
  73. package/dist/commands/graph-query.js +63 -0
  74. package/dist/commands/graph-query.js.map +1 -0
  75. package/dist/commands/ingest.d.ts +28 -0
  76. package/dist/commands/ingest.d.ts.map +1 -0
  77. package/dist/commands/ingest.js +60 -0
  78. package/dist/commands/ingest.js.map +1 -0
  79. package/dist/commands/init.d.ts +28 -0
  80. package/dist/commands/init.d.ts.map +1 -0
  81. package/dist/commands/init.js +203 -0
  82. package/dist/commands/init.js.map +1 -0
  83. package/dist/commands/lint.d.ts +30 -0
  84. package/dist/commands/lint.d.ts.map +1 -0
  85. package/dist/commands/lint.js +48 -0
  86. package/dist/commands/lint.js.map +1 -0
  87. package/dist/commands/migrate.d.ts +30 -0
  88. package/dist/commands/migrate.d.ts.map +1 -0
  89. package/dist/commands/migrate.js +56 -0
  90. package/dist/commands/migrate.js.map +1 -0
  91. package/dist/commands/note-resolve.d.ts +14 -0
  92. package/dist/commands/note-resolve.d.ts.map +1 -0
  93. package/dist/commands/note-resolve.js +24 -0
  94. package/dist/commands/note-resolve.js.map +1 -0
  95. package/dist/commands/rollup-gather.d.ts +21 -0
  96. package/dist/commands/rollup-gather.d.ts.map +1 -0
  97. package/dist/commands/rollup-gather.js +40 -0
  98. package/dist/commands/rollup-gather.js.map +1 -0
  99. package/dist/commands/rollup-write.d.ts +25 -0
  100. package/dist/commands/rollup-write.d.ts.map +1 -0
  101. package/dist/commands/rollup-write.js +43 -0
  102. package/dist/commands/rollup-write.js.map +1 -0
  103. package/dist/commands/session-abandon.d.ts +13 -0
  104. package/dist/commands/session-abandon.d.ts.map +1 -0
  105. package/dist/commands/session-abandon.js +22 -0
  106. package/dist/commands/session-abandon.js.map +1 -0
  107. package/dist/commands/session-list.d.ts +14 -0
  108. package/dist/commands/session-list.d.ts.map +1 -0
  109. package/dist/commands/session-list.js +19 -0
  110. package/dist/commands/session-list.js.map +1 -0
  111. package/dist/commands/session-reap.d.ts +22 -0
  112. package/dist/commands/session-reap.d.ts.map +1 -0
  113. package/dist/commands/session-reap.js +47 -0
  114. package/dist/commands/session-reap.js.map +1 -0
  115. package/dist/commands/session-start.d.ts +18 -0
  116. package/dist/commands/session-start.d.ts.map +1 -0
  117. package/dist/commands/session-start.js +36 -0
  118. package/dist/commands/session-start.js.map +1 -0
  119. package/dist/commands/session-submit.d.ts +27 -0
  120. package/dist/commands/session-submit.d.ts.map +1 -0
  121. package/dist/commands/session-submit.js +68 -0
  122. package/dist/commands/session-submit.js.map +1 -0
  123. package/dist/commands/source-check.d.ts +21 -0
  124. package/dist/commands/source-check.d.ts.map +1 -0
  125. package/dist/commands/source-check.js +54 -0
  126. package/dist/commands/source-check.js.map +1 -0
  127. package/dist/commands/source-hash.d.ts +14 -0
  128. package/dist/commands/source-hash.d.ts.map +1 -0
  129. package/dist/commands/source-hash.js +34 -0
  130. package/dist/commands/source-hash.js.map +1 -0
  131. package/dist/commands/update.d.ts +17 -0
  132. package/dist/commands/update.d.ts.map +1 -0
  133. package/dist/commands/update.js +25 -0
  134. package/dist/commands/update.js.map +1 -0
  135. package/dist/commands/verify.d.ts +23 -0
  136. package/dist/commands/verify.d.ts.map +1 -0
  137. package/dist/commands/verify.js +126 -0
  138. package/dist/commands/verify.js.map +1 -0
  139. package/dist/config/defaults.d.ts +69 -0
  140. package/dist/config/defaults.d.ts.map +1 -0
  141. package/dist/config/defaults.js +71 -0
  142. package/dist/config/defaults.js.map +1 -0
  143. package/dist/config/load.d.ts +11 -0
  144. package/dist/config/load.d.ts.map +1 -0
  145. package/dist/config/load.js +49 -0
  146. package/dist/config/load.js.map +1 -0
  147. package/dist/config/render.d.ts +9 -0
  148. package/dist/config/render.d.ts.map +1 -0
  149. package/dist/config/render.js +15 -0
  150. package/dist/config/render.js.map +1 -0
  151. package/dist/config/schema.d.ts +124 -0
  152. package/dist/config/schema.d.ts.map +1 -0
  153. package/dist/config/schema.js +142 -0
  154. package/dist/config/schema.js.map +1 -0
  155. package/dist/core/agents-doc.d.ts +80 -0
  156. package/dist/core/agents-doc.d.ts.map +1 -0
  157. package/dist/core/agents-doc.js +207 -0
  158. package/dist/core/agents-doc.js.map +1 -0
  159. package/dist/core/catalog/build.d.ts +49 -0
  160. package/dist/core/catalog/build.d.ts.map +1 -0
  161. package/dist/core/catalog/build.js +113 -0
  162. package/dist/core/catalog/build.js.map +1 -0
  163. package/dist/core/catalog/model.d.ts +33 -0
  164. package/dist/core/catalog/model.d.ts.map +1 -0
  165. package/dist/core/catalog/model.js +58 -0
  166. package/dist/core/catalog/model.js.map +1 -0
  167. package/dist/core/checks/catalog-checks.d.ts +4 -0
  168. package/dist/core/checks/catalog-checks.d.ts.map +1 -0
  169. package/dist/core/checks/catalog-checks.js +65 -0
  170. package/dist/core/checks/catalog-checks.js.map +1 -0
  171. package/dist/core/checks/identity-checks.d.ts +11 -0
  172. package/dist/core/checks/identity-checks.d.ts.map +1 -0
  173. package/dist/core/checks/identity-checks.js +39 -0
  174. package/dist/core/checks/identity-checks.js.map +1 -0
  175. package/dist/core/checks/integrity-checks.d.ts +23 -0
  176. package/dist/core/checks/integrity-checks.d.ts.map +1 -0
  177. package/dist/core/checks/integrity-checks.js +132 -0
  178. package/dist/core/checks/integrity-checks.js.map +1 -0
  179. package/dist/core/checks/manifest.d.ts +7 -0
  180. package/dist/core/checks/manifest.d.ts.map +1 -0
  181. package/dist/core/checks/manifest.js +20 -0
  182. package/dist/core/checks/manifest.js.map +1 -0
  183. package/dist/core/checks/organize-checks.d.ts +18 -0
  184. package/dist/core/checks/organize-checks.d.ts.map +1 -0
  185. package/dist/core/checks/organize-checks.js +97 -0
  186. package/dist/core/checks/organize-checks.js.map +1 -0
  187. package/dist/core/checks/registry.d.ts +24 -0
  188. package/dist/core/checks/registry.d.ts.map +1 -0
  189. package/dist/core/checks/registry.js +33 -0
  190. package/dist/core/checks/registry.js.map +1 -0
  191. package/dist/core/checks/types.d.ts +72 -0
  192. package/dist/core/checks/types.d.ts.map +1 -0
  193. package/dist/core/checks/types.js +4 -0
  194. package/dist/core/checks/types.js.map +1 -0
  195. package/dist/core/checks/write-lifecycle-checks.d.ts +24 -0
  196. package/dist/core/checks/write-lifecycle-checks.d.ts.map +1 -0
  197. package/dist/core/checks/write-lifecycle-checks.js +205 -0
  198. package/dist/core/checks/write-lifecycle-checks.js.map +1 -0
  199. package/dist/core/command.d.ts +23 -0
  200. package/dist/core/command.d.ts.map +1 -0
  201. package/dist/core/command.js +2 -0
  202. package/dist/core/command.js.map +1 -0
  203. package/dist/core/content/canonicalize.d.ts +14 -0
  204. package/dist/core/content/canonicalize.d.ts.map +1 -0
  205. package/dist/core/content/canonicalize.js +34 -0
  206. package/dist/core/content/canonicalize.js.map +1 -0
  207. package/dist/core/conventions.d.ts +21 -0
  208. package/dist/core/conventions.d.ts.map +1 -0
  209. package/dist/core/conventions.js +73 -0
  210. package/dist/core/conventions.js.map +1 -0
  211. package/dist/core/disclosure/model.d.ts +18 -0
  212. package/dist/core/disclosure/model.d.ts.map +1 -0
  213. package/dist/core/disclosure/model.js +45 -0
  214. package/dist/core/disclosure/model.js.map +1 -0
  215. package/dist/core/env.d.ts +40 -0
  216. package/dist/core/env.d.ts.map +1 -0
  217. package/dist/core/env.js +24 -0
  218. package/dist/core/env.js.map +1 -0
  219. package/dist/core/envelope.d.ts +46 -0
  220. package/dist/core/envelope.d.ts.map +1 -0
  221. package/dist/core/envelope.js +21 -0
  222. package/dist/core/envelope.js.map +1 -0
  223. package/dist/core/errors.d.ts +96 -0
  224. package/dist/core/errors.d.ts.map +1 -0
  225. package/dist/core/errors.js +267 -0
  226. package/dist/core/errors.js.map +1 -0
  227. package/dist/core/exit-codes.d.ts +32 -0
  228. package/dist/core/exit-codes.d.ts.map +1 -0
  229. package/dist/core/exit-codes.js +31 -0
  230. package/dist/core/exit-codes.js.map +1 -0
  231. package/dist/core/fs/atomic.d.ts +10 -0
  232. package/dist/core/fs/atomic.d.ts.map +1 -0
  233. package/dist/core/fs/atomic.js +31 -0
  234. package/dist/core/fs/atomic.js.map +1 -0
  235. package/dist/core/fs/fenced-region.d.ts +47 -0
  236. package/dist/core/fs/fenced-region.d.ts.map +1 -0
  237. package/dist/core/fs/fenced-region.js +122 -0
  238. package/dist/core/fs/fenced-region.js.map +1 -0
  239. package/dist/core/git/exec.d.ts +28 -0
  240. package/dist/core/git/exec.d.ts.map +1 -0
  241. package/dist/core/git/exec.js +21 -0
  242. package/dist/core/git/exec.js.map +1 -0
  243. package/dist/core/git/repo.d.ts +63 -0
  244. package/dist/core/git/repo.d.ts.map +1 -0
  245. package/dist/core/git/repo.js +91 -0
  246. package/dist/core/git/repo.js.map +1 -0
  247. package/dist/core/git/staged.d.ts +10 -0
  248. package/dist/core/git/staged.d.ts.map +1 -0
  249. package/dist/core/git/staged.js +49 -0
  250. package/dist/core/git/staged.js.map +1 -0
  251. package/dist/core/git/worktree.d.ts +29 -0
  252. package/dist/core/git/worktree.d.ts.map +1 -0
  253. package/dist/core/git/worktree.js +61 -0
  254. package/dist/core/git/worktree.js.map +1 -0
  255. package/dist/core/graph/model.d.ts +43 -0
  256. package/dist/core/graph/model.d.ts.map +1 -0
  257. package/dist/core/graph/model.js +60 -0
  258. package/dist/core/graph/model.js.map +1 -0
  259. package/dist/core/graph/persist.d.ts +7 -0
  260. package/dist/core/graph/persist.d.ts.map +1 -0
  261. package/dist/core/graph/persist.js +23 -0
  262. package/dist/core/graph/persist.js.map +1 -0
  263. package/dist/core/graph/query.d.ts +16 -0
  264. package/dist/core/graph/query.d.ts.map +1 -0
  265. package/dist/core/graph/query.js +91 -0
  266. package/dist/core/graph/query.js.map +1 -0
  267. package/dist/core/graph/visibility-filter.d.ts +13 -0
  268. package/dist/core/graph/visibility-filter.d.ts.map +1 -0
  269. package/dist/core/graph/visibility-filter.js +26 -0
  270. package/dist/core/graph/visibility-filter.js.map +1 -0
  271. package/dist/core/hooks.d.ts +34 -0
  272. package/dist/core/hooks.d.ts.map +1 -0
  273. package/dist/core/hooks.js +89 -0
  274. package/dist/core/hooks.js.map +1 -0
  275. package/dist/core/identity.d.ts +14 -0
  276. package/dist/core/identity.d.ts.map +1 -0
  277. package/dist/core/identity.js +36 -0
  278. package/dist/core/identity.js.map +1 -0
  279. package/dist/core/ingest/identity.d.ts +15 -0
  280. package/dist/core/ingest/identity.d.ts.map +1 -0
  281. package/dist/core/ingest/identity.js +17 -0
  282. package/dist/core/ingest/identity.js.map +1 -0
  283. package/dist/core/ingest/model.d.ts +17 -0
  284. package/dist/core/ingest/model.d.ts.map +1 -0
  285. package/dist/core/ingest/model.js +24 -0
  286. package/dist/core/ingest/model.js.map +1 -0
  287. package/dist/core/json-config-merge.d.ts +13 -0
  288. package/dist/core/json-config-merge.d.ts.map +1 -0
  289. package/dist/core/json-config-merge.js +43 -0
  290. package/dist/core/json-config-merge.js.map +1 -0
  291. package/dist/core/markers.d.ts +17 -0
  292. package/dist/core/markers.d.ts.map +1 -0
  293. package/dist/core/markers.js +16 -0
  294. package/dist/core/markers.js.map +1 -0
  295. package/dist/core/migrations/registry.d.ts +6 -0
  296. package/dist/core/migrations/registry.d.ts.map +1 -0
  297. package/dist/core/migrations/registry.js +8 -0
  298. package/dist/core/migrations/registry.js.map +1 -0
  299. package/dist/core/migrations/rename-visibility-field.d.ts +3 -0
  300. package/dist/core/migrations/rename-visibility-field.d.ts.map +1 -0
  301. package/dist/core/migrations/rename-visibility-field.js +62 -0
  302. package/dist/core/migrations/rename-visibility-field.js.map +1 -0
  303. package/dist/core/migrations/types.d.ts +27 -0
  304. package/dist/core/migrations/types.d.ts.map +1 -0
  305. package/dist/core/migrations/types.js +2 -0
  306. package/dist/core/migrations/types.js.map +1 -0
  307. package/dist/core/notes/checks.d.ts +20 -0
  308. package/dist/core/notes/checks.d.ts.map +1 -0
  309. package/dist/core/notes/checks.js +58 -0
  310. package/dist/core/notes/checks.js.map +1 -0
  311. package/dist/core/notes/list.d.ts +26 -0
  312. package/dist/core/notes/list.d.ts.map +1 -0
  313. package/dist/core/notes/list.js +84 -0
  314. package/dist/core/notes/list.js.map +1 -0
  315. package/dist/core/notes/parse.d.ts +12 -0
  316. package/dist/core/notes/parse.d.ts.map +1 -0
  317. package/dist/core/notes/parse.js +36 -0
  318. package/dist/core/notes/parse.js.map +1 -0
  319. package/dist/core/notes/render.d.ts +7 -0
  320. package/dist/core/notes/render.d.ts.map +1 -0
  321. package/dist/core/notes/render.js +13 -0
  322. package/dist/core/notes/render.js.map +1 -0
  323. package/dist/core/notes/visibility.d.ts +26 -0
  324. package/dist/core/notes/visibility.d.ts.map +1 -0
  325. package/dist/core/notes/visibility.js +41 -0
  326. package/dist/core/notes/visibility.js.map +1 -0
  327. package/dist/core/procedures.d.ts +44 -0
  328. package/dist/core/procedures.d.ts.map +1 -0
  329. package/dist/core/procedures.js +154 -0
  330. package/dist/core/procedures.js.map +1 -0
  331. package/dist/core/queue.d.ts +16 -0
  332. package/dist/core/queue.d.ts.map +1 -0
  333. package/dist/core/queue.js +75 -0
  334. package/dist/core/queue.js.map +1 -0
  335. package/dist/core/reconcile.d.ts +18 -0
  336. package/dist/core/reconcile.d.ts.map +1 -0
  337. package/dist/core/reconcile.js +49 -0
  338. package/dist/core/reconcile.js.map +1 -0
  339. package/dist/core/records.d.ts +16 -0
  340. package/dist/core/records.d.ts.map +1 -0
  341. package/dist/core/records.js +36 -0
  342. package/dist/core/records.js.map +1 -0
  343. package/dist/core/reporter.d.ts +20 -0
  344. package/dist/core/reporter.d.ts.map +1 -0
  345. package/dist/core/reporter.js +25 -0
  346. package/dist/core/reporter.js.map +1 -0
  347. package/dist/core/root.d.ts +24 -0
  348. package/dist/core/root.d.ts.map +1 -0
  349. package/dist/core/root.js +51 -0
  350. package/dist/core/root.js.map +1 -0
  351. package/dist/core/security/secrets.d.ts +17 -0
  352. package/dist/core/security/secrets.d.ts.map +1 -0
  353. package/dist/core/security/secrets.js +21 -0
  354. package/dist/core/security/secrets.js.map +1 -0
  355. package/dist/core/session.d.ts +15 -0
  356. package/dist/core/session.d.ts.map +1 -0
  357. package/dist/core/session.js +27 -0
  358. package/dist/core/session.js.map +1 -0
  359. package/dist/core/store.d.ts +15 -0
  360. package/dist/core/store.d.ts.map +1 -0
  361. package/dist/core/store.js +19 -0
  362. package/dist/core/store.js.map +1 -0
  363. package/dist/index.d.ts +13 -0
  364. package/dist/index.d.ts.map +1 -0
  365. package/dist/index.js +7 -0
  366. package/dist/index.js.map +1 -0
  367. package/dist/prompt/inquirer-prompter.d.ts +14 -0
  368. package/dist/prompt/inquirer-prompter.d.ts.map +1 -0
  369. package/dist/prompt/inquirer-prompter.js +27 -0
  370. package/dist/prompt/inquirer-prompter.js.map +1 -0
  371. package/dist/prompt/prompter.d.ts +24 -0
  372. package/dist/prompt/prompter.d.ts.map +1 -0
  373. package/dist/prompt/prompter.js +2 -0
  374. package/dist/prompt/prompter.js.map +1 -0
  375. package/dist/run.d.ts +16 -0
  376. package/dist/run.d.ts.map +1 -0
  377. package/dist/run.js +464 -0
  378. package/dist/run.js.map +1 -0
  379. package/dist/taxonomy/profiles.d.ts +31 -0
  380. package/dist/taxonomy/profiles.d.ts.map +1 -0
  381. package/dist/taxonomy/profiles.js +45 -0
  382. package/dist/taxonomy/profiles.js.map +1 -0
  383. package/dist/version.d.ts +3 -0
  384. package/dist/version.d.ts.map +1 -0
  385. package/dist/version.js +3 -0
  386. package/dist/version.js.map +1 -0
  387. package/package.json +56 -0
  388. package/templates/.gitkeep +0 -0
  389. package/templates/hooks/pre-commit.sh +21 -0
  390. package/templates/hooks/pre-push.sh +24 -0
@@ -0,0 +1,21 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { RunEnv } from '../core/env.js';
3
+ import { type SourceCheckResult } from '../core/ingest/model.js';
4
+ import type { Store } from '../core/store.js';
5
+ export declare const requires: CommandRequires;
6
+ export interface SourceCheckFlags {
7
+ path: string;
8
+ sourceId: string;
9
+ }
10
+ export type SourceCheckData = SourceCheckResult & {
11
+ path: string;
12
+ };
13
+ /**
14
+ * context-ingest spec: evaluate, in order, source-id match then content-
15
+ * hash match, never proceeding past a stage with more than one match. Only
16
+ * `multiple_matches` is a failure (CheckFailed) — `already_ingested`,
17
+ * `alternate_source_match`, and `new` are all legitimate, non-error
18
+ * verdicts the caller decides what to do with.
19
+ */
20
+ export declare function execute(env: RunEnv, store: Store, flags: SourceCheckFlags): Promise<CommandOutcome<SourceCheckData>>;
21
+ //# sourceMappingURL=source-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-check.d.ts","sourceRoot":"","sources":["../../src/commands/source-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAOnE;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAoC1C"}
@@ -0,0 +1,54 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { contentHash } from '../core/content/canonicalize.js';
4
+ import { NoteNotFoundError } from '../core/errors.js';
5
+ import { ExitCode } from '../core/exit-codes.js';
6
+ import { evaluateSourceCheck } from '../core/ingest/model.js';
7
+ import { listNotes } from '../core/notes/list.js';
8
+ export const requires = { store: 'required' };
9
+ function toStoreRelativePath(env, store, givenPath) {
10
+ const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
11
+ return path.relative(store.root, absolute).split(path.sep).join('/');
12
+ }
13
+ /**
14
+ * context-ingest spec: evaluate, in order, source-id match then content-
15
+ * hash match, never proceeding past a stage with more than one match. Only
16
+ * `multiple_matches` is a failure (CheckFailed) — `already_ingested`,
17
+ * `alternate_source_match`, and `new` are all legitimate, non-error
18
+ * verdicts the caller decides what to do with.
19
+ */
20
+ export async function execute(env, store, flags) {
21
+ const relativePath = toStoreRelativePath(env, store, flags.path);
22
+ const absolutePath = path.join(store.root, relativePath);
23
+ let raw;
24
+ try {
25
+ raw = await readFile(absolutePath, 'utf8');
26
+ }
27
+ catch (err) {
28
+ if (err.code === 'ENOENT')
29
+ throw new NoteNotFoundError(relativePath);
30
+ throw err;
31
+ }
32
+ const hash = contentHash(raw, relativePath);
33
+ const notes = await listNotes(store.root, store.config);
34
+ const result = evaluateSourceCheck(notes, hash, flags.sourceId);
35
+ const findings = result.verdict === 'multiple_matches'
36
+ ? [
37
+ {
38
+ code: 'ingest.source_check.multiple_matches',
39
+ severity: 'error',
40
+ message: `More than one existing note matches at the ${result.stage} stage: ${result.matches.join(', ')}.`,
41
+ details: { stage: result.stage, matches: result.matches },
42
+ },
43
+ ]
44
+ : [];
45
+ return {
46
+ exitCode: result.verdict === 'multiple_matches' ? ExitCode.CheckFailed : ExitCode.Ok,
47
+ data: { path: relativePath, ...result },
48
+ findings,
49
+ humanSummary: `${relativePath}: ${result.verdict}${result.matches.length > 0 ? ` (${result.matches.join(', ')})` : ''}`,
50
+ storeRoot: store.root,
51
+ schemaVersion: store.config.schema_version,
52
+ };
53
+ }
54
+ //# sourceMappingURL=source-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-check.js","sourceRoot":"","sources":["../../src/commands/source-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { RunEnv } from '../core/env.js';
3
+ import type { Store } from '../core/store.js';
4
+ export declare const requires: CommandRequires;
5
+ export interface SourceHashFlags {
6
+ path: string;
7
+ }
8
+ export interface SourceHashData {
9
+ path: string;
10
+ hash: string;
11
+ }
12
+ /** context-ingest spec: the canonicalized-content hash, via the one shared primitive — never reimplemented per caller. */
13
+ export declare function execute(env: RunEnv, store: Store, flags: SourceHashFlags): Promise<CommandOutcome<SourceHashData>>;
14
+ //# sourceMappingURL=source-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-hash.d.ts","sourceRoot":"","sources":["../../src/commands/source-hash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,0HAA0H;AAC1H,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAqBxH"}
@@ -0,0 +1,34 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { contentHash } from '../core/content/canonicalize.js';
4
+ import { NoteNotFoundError } from '../core/errors.js';
5
+ import { ExitCode } from '../core/exit-codes.js';
6
+ export const requires = { store: 'required' };
7
+ function toStoreRelativePath(env, store, givenPath) {
8
+ const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
9
+ return path.relative(store.root, absolute).split(path.sep).join('/');
10
+ }
11
+ /** context-ingest spec: the canonicalized-content hash, via the one shared primitive — never reimplemented per caller. */
12
+ export async function execute(env, store, flags) {
13
+ const relativePath = toStoreRelativePath(env, store, flags.path);
14
+ const absolutePath = path.join(store.root, relativePath);
15
+ let raw;
16
+ try {
17
+ raw = await readFile(absolutePath, 'utf8');
18
+ }
19
+ catch (err) {
20
+ if (err.code === 'ENOENT')
21
+ throw new NoteNotFoundError(relativePath);
22
+ throw err;
23
+ }
24
+ const hash = contentHash(raw, relativePath);
25
+ return {
26
+ exitCode: ExitCode.Ok,
27
+ data: { path: relativePath, hash },
28
+ findings: [],
29
+ humanSummary: `${relativePath}: ${hash}`,
30
+ storeRoot: store.root,
31
+ schemaVersion: store.config.schema_version,
32
+ };
33
+ }
34
+ //# sourceMappingURL=source-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-hash.js","sourceRoot":"","sources":["../../src/commands/source-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAW/D,SAAS,mBAAmB,CAAC,GAAW,EAAE,KAAY,EAAE,SAAiB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,0HAA0H;AAC1H,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY,EAAE,KAAsB;IAC7E,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEzD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAChG,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;QAClC,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,GAAG,YAAY,KAAK,IAAI,EAAE;QACxC,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { RunEnv } from '../core/env.js';
3
+ import type { Store } from '../core/store.js';
4
+ export declare const requires: CommandRequires;
5
+ export interface UpdateData {
6
+ /** Every store-relative path this run rewrote to the installed version; empty when already current. */
7
+ changed: string[];
8
+ }
9
+ /**
10
+ * entry-doc-generation spec (D5): after upgrading contexture, bring every
11
+ * contexture-owned file in the store to the installed version — generated
12
+ * AGENTS.md sections, .gitignore blocks, hooks, the contexture-owned skill
13
+ * copies, and each configured adapter's outputs. Operator content is never
14
+ * touched. Idempotent: a current store reports nothing changed.
15
+ */
16
+ export declare function execute(env: RunEnv, store: Store): Promise<CommandOutcome<UpdateData>>;
17
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAa5F"}
@@ -0,0 +1,25 @@
1
+ import { ExitCode } from '../core/exit-codes.js';
2
+ import { reconcileStore } from '../core/reconcile.js';
3
+ import { generateAdapterOutputs } from './adapters-generate.js';
4
+ export const requires = { store: 'required' };
5
+ /**
6
+ * entry-doc-generation spec (D5): after upgrading contexture, bring every
7
+ * contexture-owned file in the store to the installed version — generated
8
+ * AGENTS.md sections, .gitignore blocks, hooks, the contexture-owned skill
9
+ * copies, and each configured adapter's outputs. Operator content is never
10
+ * touched. Idempotent: a current store reports nothing changed.
11
+ */
12
+ export async function execute(env, store) {
13
+ const { changed } = await reconcileStore(env, store.root, store.config);
14
+ const adapterFiles = await generateAdapterOutputs(store);
15
+ const all = [...new Set([...changed, ...adapterFiles.filter((f) => f.changed).map((f) => f.path)])];
16
+ return {
17
+ exitCode: ExitCode.Ok,
18
+ data: { changed: all },
19
+ findings: [],
20
+ humanSummary: all.length === 0 ? 'Store is already up to date.' : `Updated ${all.length} contexture-owned file(s).`,
21
+ storeRoot: store.root,
22
+ schemaVersion: store.config.schema_version,
23
+ };
24
+ }
25
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAO/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpG,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;QACtB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAM,4BAA4B;QACnH,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { Store } from '../core/store.js';
3
+ export declare const requires: CommandRequires;
4
+ export interface VerifyFlags {
5
+ portable?: boolean;
6
+ }
7
+ export interface VerifyStepResult {
8
+ operation: string;
9
+ status: 'pass' | 'fail';
10
+ detail?: string;
11
+ }
12
+ export interface VerifyData {
13
+ steps: VerifyStepResult[];
14
+ }
15
+ /**
16
+ * harness-portability spec: exercises core store operations "from an
17
+ * environment with no harness-specific state present" — nothing here reads
18
+ * any harness-specific file or env var, so the property under test holds
19
+ * by construction; this command just runs the three named operations in
20
+ * order and stops at the first failure, naming it (never running the rest).
21
+ */
22
+ export declare function execute(store: Store, _flags?: VerifyFlags): Promise<CommandOutcome<VerifyData>>;
23
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAU1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAMD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkFzG"}
@@ -0,0 +1,126 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { agentsMdPath } from '../core/agents-doc.js';
4
+ import { readCatalogSection } from '../core/catalog/build.js';
5
+ import { catalogSectionsFor } from '../core/catalog/model.js';
6
+ import { ExitCode } from '../core/exit-codes.js';
7
+ import { buildGraphFromNotes } from '../core/graph/model.js';
8
+ import { writeGraph } from '../core/graph/persist.js';
9
+ import { listNotes } from '../core/notes/list.js';
10
+ import { scanProcedures } from '../core/procedures.js';
11
+ export const requires = { store: 'required' };
12
+ function procedureIndexEntry(name, relativePath) {
13
+ return `[${name}](${relativePath})`;
14
+ }
15
+ /**
16
+ * harness-portability spec: exercises core store operations "from an
17
+ * environment with no harness-specific state present" — nothing here reads
18
+ * any harness-specific file or env var, so the property under test holds
19
+ * by construction; this command just runs the three named operations in
20
+ * order and stops at the first failure, naming it (never running the rest).
21
+ */
22
+ export async function execute(store, _flags = {}) {
23
+ const steps = [];
24
+ // 1. A retrieval query — reading a catalog section works even before any
25
+ // build has ever run (an empty, valid section), so this genuinely proves
26
+ // the retrieval leg is reachable from nothing.
27
+ try {
28
+ const [firstSection] = catalogSectionsFor(store.config);
29
+ await readCatalogSection(store, firstSection.id);
30
+ steps.push({ operation: 'retrieval query (catalog show)', status: 'pass' });
31
+ }
32
+ catch (err) {
33
+ steps.push({
34
+ operation: 'retrieval query (catalog show)',
35
+ status: 'fail',
36
+ detail: err instanceof Error ? err.message : String(err),
37
+ });
38
+ return finish(store, steps);
39
+ }
40
+ // 2. A derived-artifact build.
41
+ try {
42
+ const notes = await listNotes(store.root, store.config);
43
+ await writeGraph(store, buildGraphFromNotes(notes));
44
+ steps.push({ operation: 'derived-artifact build (graph build)', status: 'pass' });
45
+ }
46
+ catch (err) {
47
+ steps.push({
48
+ operation: 'derived-artifact build (graph build)',
49
+ status: 'fail',
50
+ detail: err instanceof Error ? err.message : String(err),
51
+ });
52
+ return finish(store, steps);
53
+ }
54
+ // 3. Follow one procedure via the AGENTS.md index: every canonical
55
+ // procedure must have an index entry, and at least one must be readable.
56
+ let agentsMdContent;
57
+ try {
58
+ agentsMdContent = await readFile(agentsMdPath(store.root), 'utf8');
59
+ }
60
+ catch (err) {
61
+ steps.push({
62
+ operation: 'procedure index (AGENTS.md)',
63
+ status: 'fail',
64
+ detail: err instanceof Error ? err.message : String(err),
65
+ });
66
+ return finish(store, steps);
67
+ }
68
+ // entry-doc-generation spec: the index must cover every procedure actually
69
+ // on disk — shipped seeds and operator-added files alike.
70
+ const procedures = await scanProcedures(store.root, store.config);
71
+ for (const procedure of procedures) {
72
+ if (!agentsMdContent.includes(procedureIndexEntry(procedure.title, procedure.path))) {
73
+ steps.push({
74
+ operation: `procedure index entry for "${procedure.title}"`,
75
+ status: 'fail',
76
+ detail: `AGENTS.md's procedure index has no entry for "${procedure.title}".`,
77
+ });
78
+ return finish(store, steps);
79
+ }
80
+ }
81
+ const first = procedures[0];
82
+ if (!first) {
83
+ steps.push({
84
+ operation: 'follow a procedure',
85
+ status: 'fail',
86
+ detail: `No procedure files exist at "${store.config.harness.procedures_path}".`,
87
+ });
88
+ return finish(store, steps);
89
+ }
90
+ try {
91
+ await readFile(path.join(store.root, first.path), 'utf8');
92
+ steps.push({ operation: `follow procedure "${first.title}"`, status: 'pass' });
93
+ }
94
+ catch (err) {
95
+ steps.push({
96
+ operation: `follow procedure "${first.title}"`,
97
+ status: 'fail',
98
+ detail: err instanceof Error ? err.message : String(err),
99
+ });
100
+ }
101
+ return finish(store, steps);
102
+ }
103
+ function finish(store, steps) {
104
+ const failed = steps.find((s) => s.status === 'fail');
105
+ const findings = failed
106
+ ? [
107
+ {
108
+ code: 'verify.portable.failed',
109
+ severity: 'error',
110
+ message: `"${failed.operation}" failed: ${failed.detail ?? '(no detail)'}`,
111
+ subject: failed.operation,
112
+ },
113
+ ]
114
+ : [];
115
+ return {
116
+ exitCode: failed ? ExitCode.CheckFailed : ExitCode.Ok,
117
+ data: { steps },
118
+ findings,
119
+ humanSummary: failed
120
+ ? `verify --portable failed at: ${failed.operation}`
121
+ : `verify --portable: all ${steps.length} operation(s) succeeded.`,
122
+ storeRoot: store.root,
123
+ schemaVersion: store.config.schema_version,
124
+ };
125
+ }
126
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { AdapterDeclaration, HardWallConfig } from './schema.js';
2
+ /**
3
+ * context-store spec: "The visibility field's frontmatter key is configurable
4
+ * with a shipped default... No specification other than this one SHALL
5
+ * assert the literal key name." This module is that one place, in code —
6
+ * enforced by test/unit/single-source-literals.test.ts. Every other module
7
+ * reads the key via StoreConfig.fields.visibility, never this constant
8
+ * directly, and never the literal "scope" string.
9
+ *
10
+ * "scope" is provisional (design.md D7 / openspec/config.yaml): renaming it
11
+ * is meant to be a config-default change plus a migration, never a spec or
12
+ * code rewrite. Do not let this constant's value leak into any other file.
13
+ */
14
+ export declare const DEFAULT_VISIBILITY_FIELD_KEY = "lens";
15
+ /**
16
+ * The visibility field key every store created before schema_version 2
17
+ * used. Named here, once, purely as history for the rename migration
18
+ * (core/migrations/rename-visibility-field.ts) to read from — this is the
19
+ * one sanctioned place a superseded key value is allowed to live once it's
20
+ * no longer the shipped default.
21
+ */
22
+ export declare const SCHEMA_V1_VISIBILITY_FIELD_KEY = "scope";
23
+ /** context-visibility spec rung 3: what a note's visibility fails closed to. */
24
+ export declare const DEFAULT_VISIBILITY_CONTEXT = "private";
25
+ /**
26
+ * context-store spec (contexture-home-layout): `.contexture/` is the tool's
27
+ * home directory. Only its cache subpath is derived/gitignored — the
28
+ * catalog, identity, and procedure subdirectories are authored-but-tool-
29
+ * owned and stay tracked.
30
+ */
31
+ export declare const DEFAULT_DERIVED_PATHS: readonly ['.contexture/cache/'];
32
+ /** agent-identity spec: canonical identity files live here, excluded from every retrieval leg. */
33
+ export declare const DEFAULT_IDENTITY_PATH = ".contexture/identity/";
34
+ /**
35
+ * harness-portability spec (entry-doc-generation D5): contexture-owned
36
+ * skills are copied here (`<slug>/SKILL.md`), defaulting to the directory
37
+ * harnesses with skill auto-discovery read — one file, one hop. A store
38
+ * driven by another harness points this at that harness's skills directory.
39
+ */
40
+ export declare const DEFAULT_PROCEDURES_PATH = ".claude/skills/";
41
+ /** harness-portability spec (entry-doc-generation): operator-authored convention docs, indexed by AGENTS.md. */
42
+ export declare const DEFAULT_CONVENTIONS_PATH = ".contexture/conventions/";
43
+ /** Paths excluded from every retrieval leg by default. */
44
+ export declare const DEFAULT_EXCLUDE_PATHS: readonly ['.contexture/'];
45
+ /** write-lifecycle spec: session worktrees live under a configured, gitignored path. */
46
+ export declare const DEFAULT_WORKTREES_PATH = ".worktrees/";
47
+ /** Branch names for session worktrees are prefixed so they're recognizable and sweep-safe. */
48
+ export declare const DEFAULT_SESSION_BRANCH_PREFIX = "session/";
49
+ /** write-lifecycle spec: pre-commit's diff-size ceiling, in total changed lines. */
50
+ export declare const DEFAULT_DIFF_SIZE_CEILING_LINES = 2000;
51
+ /** context-catalog spec: where per-section catalog files live — tracked (never gitignored), since glosses are authored. */
52
+ export declare const DEFAULT_CATALOG_PATH = ".contexture/catalog/";
53
+ /** context-catalog spec: a section exceeding this triggers a failing doctor check, not a silent slowdown. */
54
+ export declare const DEFAULT_CATALOG_SECTION_MAX_BYTES: number;
55
+ /** disclosure-policy spec: v1 ships with no audiences pre-declared internal, and no hard walls — an explicit, empty starting point the operator opts into. */
56
+ export declare const DEFAULT_INTERNAL_AUDIENCES: readonly string[];
57
+ export declare const DEFAULT_HARD_WALLS: readonly HardWallConfig[];
58
+ /** context-ingest spec: capture's landing zone — a normal, retrievable directory, not an exclusion. */
59
+ export declare const DEFAULT_INBOX_PATH = "inbox/";
60
+ /** context-organize spec: archive's destination, decoupled from any taxonomy layer name. */
61
+ export declare const DEFAULT_ARCHIVE_PATH = "archive/";
62
+ /**
63
+ * adapters spec: init registers both shipped builtins by default, so
64
+ * out-of-the-box UX (a PR opened on session submit, a generated CLAUDE.md)
65
+ * keeps working without the operator hand-writing config — each is just as
66
+ * removable from this list as it was addable.
67
+ */
68
+ export declare const DEFAULT_ADAPTERS: readonly AdapterDeclaration[];
69
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YAAI,oBAAoB,CAAU,CAAC;AAErE,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD,gHAAgH;AAChH,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,YAAI,cAAc,CAAU,CAAC;AAE/D,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD,8FAA8F;AAC9F,eAAO,MAAM,6BAA6B,aAAa,CAAC;AAExD,oFAAoF;AACpF,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,2HAA2H;AAC3H,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,6GAA6G;AAC7G,eAAO,MAAM,iCAAiC,QAAY,CAAC;AAE3D,8JAA8J;AAC9J,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAO,CAAC;AAChE,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EAAO,CAAC;AAEhE,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,kBAAkB,EAGzD,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * context-store spec: "The visibility field's frontmatter key is configurable
3
+ * with a shipped default... No specification other than this one SHALL
4
+ * assert the literal key name." This module is that one place, in code —
5
+ * enforced by test/unit/single-source-literals.test.ts. Every other module
6
+ * reads the key via StoreConfig.fields.visibility, never this constant
7
+ * directly, and never the literal "scope" string.
8
+ *
9
+ * "scope" is provisional (design.md D7 / openspec/config.yaml): renaming it
10
+ * is meant to be a config-default change plus a migration, never a spec or
11
+ * code rewrite. Do not let this constant's value leak into any other file.
12
+ */
13
+ export const DEFAULT_VISIBILITY_FIELD_KEY = 'lens';
14
+ /**
15
+ * The visibility field key every store created before schema_version 2
16
+ * used. Named here, once, purely as history for the rename migration
17
+ * (core/migrations/rename-visibility-field.ts) to read from — this is the
18
+ * one sanctioned place a superseded key value is allowed to live once it's
19
+ * no longer the shipped default.
20
+ */
21
+ export const SCHEMA_V1_VISIBILITY_FIELD_KEY = 'scope';
22
+ /** context-visibility spec rung 3: what a note's visibility fails closed to. */
23
+ export const DEFAULT_VISIBILITY_CONTEXT = 'private';
24
+ /**
25
+ * context-store spec (contexture-home-layout): `.contexture/` is the tool's
26
+ * home directory. Only its cache subpath is derived/gitignored — the
27
+ * catalog, identity, and procedure subdirectories are authored-but-tool-
28
+ * owned and stay tracked.
29
+ */
30
+ export const DEFAULT_DERIVED_PATHS = ['.contexture/cache/'];
31
+ /** agent-identity spec: canonical identity files live here, excluded from every retrieval leg. */
32
+ export const DEFAULT_IDENTITY_PATH = '.contexture/identity/';
33
+ /**
34
+ * harness-portability spec (entry-doc-generation D5): contexture-owned
35
+ * skills are copied here (`<slug>/SKILL.md`), defaulting to the directory
36
+ * harnesses with skill auto-discovery read — one file, one hop. A store
37
+ * driven by another harness points this at that harness's skills directory.
38
+ */
39
+ export const DEFAULT_PROCEDURES_PATH = '.claude/skills/';
40
+ /** harness-portability spec (entry-doc-generation): operator-authored convention docs, indexed by AGENTS.md. */
41
+ export const DEFAULT_CONVENTIONS_PATH = '.contexture/conventions/';
42
+ /** Paths excluded from every retrieval leg by default. */
43
+ export const DEFAULT_EXCLUDE_PATHS = ['.contexture/'];
44
+ /** write-lifecycle spec: session worktrees live under a configured, gitignored path. */
45
+ export const DEFAULT_WORKTREES_PATH = '.worktrees/';
46
+ /** Branch names for session worktrees are prefixed so they're recognizable and sweep-safe. */
47
+ export const DEFAULT_SESSION_BRANCH_PREFIX = 'session/';
48
+ /** write-lifecycle spec: pre-commit's diff-size ceiling, in total changed lines. */
49
+ export const DEFAULT_DIFF_SIZE_CEILING_LINES = 2000;
50
+ /** context-catalog spec: where per-section catalog files live — tracked (never gitignored), since glosses are authored. */
51
+ export const DEFAULT_CATALOG_PATH = '.contexture/catalog/';
52
+ /** context-catalog spec: a section exceeding this triggers a failing doctor check, not a silent slowdown. */
53
+ export const DEFAULT_CATALOG_SECTION_MAX_BYTES = 32 * 1024;
54
+ /** disclosure-policy spec: v1 ships with no audiences pre-declared internal, and no hard walls — an explicit, empty starting point the operator opts into. */
55
+ export const DEFAULT_INTERNAL_AUDIENCES = [];
56
+ export const DEFAULT_HARD_WALLS = [];
57
+ /** context-ingest spec: capture's landing zone — a normal, retrievable directory, not an exclusion. */
58
+ export const DEFAULT_INBOX_PATH = 'inbox/';
59
+ /** context-organize spec: archive's destination, decoupled from any taxonomy layer name. */
60
+ export const DEFAULT_ARCHIVE_PATH = 'archive/';
61
+ /**
62
+ * adapters spec: init registers both shipped builtins by default, so
63
+ * out-of-the-box UX (a PR opened on session submit, a generated CLAUDE.md)
64
+ * keeps working without the operator hand-writing config — each is just as
65
+ * removable from this list as it was addable.
66
+ */
67
+ export const DEFAULT_ADAPTERS = [
68
+ { id: 'github', kind: 'forge' },
69
+ { id: 'claude-code', kind: 'harness-generation' },
70
+ ];
71
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAEtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,oBAAoB,CAAU,CAAC;AAErE,kGAAkG;AAClG,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD,gHAAgH;AAChH,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAEnE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,cAAc,CAAU,CAAC;AAE/D,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAEpD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC;AAExD,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,8JAA8J;AAC9J,MAAM,CAAC,MAAM,0BAA0B,GAAsB,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;AAEhE,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/B,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE;CAClD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type StoreConfig } from './schema.js';
2
+ export declare function configPathFor(root: string): string;
3
+ /**
4
+ * store-lifecycle spec: "Schema version is recorded and gated" — every
5
+ * command reads schema_version before operating. This peeks at it loosely,
6
+ * BEFORE full validation, so a store with a genuinely newer/incompatible
7
+ * shape reports "your version is newer" rather than a confusing generic
8
+ * shape-validation error the full schema would otherwise produce.
9
+ */
10
+ export declare function readConfig(root: string): Promise<StoreConfig>;
11
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AASA,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCnE"}
@@ -0,0 +1,49 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
4
+ import { CONFIG_FILE_NAME } from '../core/root.js';
5
+ import { InvalidConfigError, SchemaVersionMissingError, SchemaVersionNewerError, } from '../core/errors.js';
6
+ import { StoreConfigSchema, SUPPORTED_SCHEMA_VERSION } from './schema.js';
7
+ export function configPathFor(root) {
8
+ return path.join(root, CONFIG_FILE_NAME);
9
+ }
10
+ /**
11
+ * store-lifecycle spec: "Schema version is recorded and gated" — every
12
+ * command reads schema_version before operating. This peeks at it loosely,
13
+ * BEFORE full validation, so a store with a genuinely newer/incompatible
14
+ * shape reports "your version is newer" rather than a confusing generic
15
+ * shape-validation error the full schema would otherwise produce.
16
+ */
17
+ export async function readConfig(root) {
18
+ const configPath = configPathFor(root);
19
+ const text = await readFile(configPath, 'utf8');
20
+ let raw;
21
+ try {
22
+ raw = parseYaml(text);
23
+ }
24
+ catch (err) {
25
+ throw new InvalidConfigError(configPath, [
26
+ { path: '(root)', message: err instanceof Error ? err.message : String(err) },
27
+ ]);
28
+ }
29
+ const rawVersion = raw?.schema_version;
30
+ if (rawVersion === undefined || rawVersion === null) {
31
+ throw new SchemaVersionMissingError(configPath);
32
+ }
33
+ if (typeof rawVersion !== 'number' || !Number.isInteger(rawVersion)) {
34
+ throw new InvalidConfigError(configPath, [{ path: 'schema_version', message: 'must be an integer' }]);
35
+ }
36
+ if (rawVersion > SUPPORTED_SCHEMA_VERSION) {
37
+ throw new SchemaVersionNewerError(rawVersion, SUPPORTED_SCHEMA_VERSION);
38
+ }
39
+ const result = StoreConfigSchema.safeParse(raw);
40
+ if (!result.success) {
41
+ const issues = result.error.issues.map((issue) => ({
42
+ path: issue.path.join('.') || '(root)',
43
+ message: issue.message,
44
+ }));
45
+ throw new InvalidConfigError(configPath, issues);
46
+ }
47
+ return result.data;
48
+ }
49
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAoB,MAAM,aAAa,CAAC;AAE5F,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAI,GAA2C,EAAE,cAAc,CAAC;IAChF,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,UAAU,GAAG,wBAAwB,EAAE,CAAC;QAC1C,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type StoreConfig } from './schema.js';
2
+ /**
3
+ * Renders a StoreConfig to YAML text and round-trips it back through the
4
+ * schema before returning — a render that doesn't round-trip is a bug caught
5
+ * here, before any byte reaches disk, rather than discovered later as a
6
+ * corrupted store.
7
+ */
8
+ export declare function renderStoreConfig(config: StoreConfig): string;
9
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
2
+ import { StoreConfigSchema } from './schema.js';
3
+ const HEADER = '# contexture store configuration\n\n';
4
+ /**
5
+ * Renders a StoreConfig to YAML text and round-trips it back through the
6
+ * schema before returning — a render that doesn't round-trip is a bug caught
7
+ * here, before any byte reaches disk, rather than discovered later as a
8
+ * corrupted store.
9
+ */
10
+ export function renderStoreConfig(config) {
11
+ const text = HEADER + stringifyYaml(config, { indent: 2 });
12
+ StoreConfigSchema.parse(parseYaml(text)); // throws on mismatch; that IS the check
13
+ return text;
14
+ }
15
+ //# sourceMappingURL=render.js.map
@@ -0,0 +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"}