@isaacriehm/cairn-core 0.6.0 → 0.7.1

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 (431) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/align-undo/undo.js +2 -2
  3. package/dist/align-undo/undo.js.map +1 -1
  4. package/dist/attention/bulk-accept.js +104 -55
  5. package/dist/attention/bulk-accept.js.map +1 -1
  6. package/dist/attention/dedup.js +23 -10
  7. package/dist/attention/dedup.js.map +1 -1
  8. package/dist/attention/restore.js +2 -2
  9. package/dist/attention/restore.js.map +1 -1
  10. package/dist/attention/scoring.js +1 -1
  11. package/dist/attention/scoring.js.map +1 -1
  12. package/dist/attention/serve/api.d.ts +1 -0
  13. package/dist/attention/serve/api.js +130 -77
  14. package/dist/attention/serve/api.js.map +1 -1
  15. package/dist/attention/serve/index.d.ts +1 -0
  16. package/dist/attention/serve/index.js +21 -7
  17. package/dist/attention/serve/index.js.map +1 -1
  18. package/dist/attention/source-strip.js +41 -46
  19. package/dist/attention/source-strip.js.map +1 -1
  20. package/dist/claude/cache.d.ts +10 -19
  21. package/dist/claude/cache.js +0 -0
  22. package/dist/claude/cache.js.map +1 -1
  23. package/dist/claude/runner.d.ts +4 -6
  24. package/dist/claude/runner.js +242 -203
  25. package/dist/claude/runner.js.map +1 -1
  26. package/dist/claude/types.d.ts +5 -5
  27. package/dist/context/handoff-builder.d.ts +28 -4
  28. package/dist/context/handoff-builder.js +75 -157
  29. package/dist/context/handoff-builder.js.map +1 -1
  30. package/dist/context/spec-delta.js +61 -9
  31. package/dist/context/spec-delta.js.map +1 -1
  32. package/dist/context/task-summary.js +5 -1
  33. package/dist/context/task-summary.js.map +1 -1
  34. package/dist/decision-capture/id.js +1 -1
  35. package/dist/decision-capture/id.js.map +1 -1
  36. package/dist/doctor/index.d.ts +9 -11
  37. package/dist/doctor/index.js +118 -175
  38. package/dist/doctor/index.js.map +1 -1
  39. package/dist/drain/drain.d.ts +1 -1
  40. package/dist/drain/drain.js +16 -16
  41. package/dist/drain/drain.js.map +1 -1
  42. package/dist/drain/index.d.ts +1 -1
  43. package/dist/drain/index.js +1 -1
  44. package/dist/events/reader.d.ts +9 -10
  45. package/dist/events/reader.js +46 -57
  46. package/dist/events/reader.js.map +1 -1
  47. package/dist/events/writer.js +1 -1
  48. package/dist/events/writer.js.map +1 -1
  49. package/dist/fix-align/index.d.ts +1 -1
  50. package/dist/fix-align/index.js +1 -1
  51. package/dist/fix-align/run.d.ts +1 -1
  52. package/dist/fix-align/run.js +4 -3
  53. package/dist/fix-align/run.js.map +1 -1
  54. package/dist/fix-align/sentinel.d.ts +1 -2
  55. package/dist/fix-align/sentinel.js +3 -4
  56. package/dist/fix-align/sentinel.js.map +1 -1
  57. package/dist/gc/apply.js +1 -1
  58. package/dist/gc/apply.js.map +1 -1
  59. package/dist/gc/attested-commits.d.ts +19 -0
  60. package/dist/gc/attested-commits.js +48 -0
  61. package/dist/gc/attested-commits.js.map +1 -0
  62. package/dist/gc/canary.d.ts +11 -21
  63. package/dist/gc/canary.js +18 -24
  64. package/dist/gc/canary.js.map +1 -1
  65. package/dist/gc/citation-integrity.d.ts +11 -14
  66. package/dist/gc/citation-integrity.js +124 -125
  67. package/dist/gc/citation-integrity.js.map +1 -1
  68. package/dist/gc/classify.d.ts +1 -1
  69. package/dist/gc/classify.js +2 -2
  70. package/dist/gc/classify.js.map +1 -1
  71. package/dist/gc/completion-integrity.d.ts +6 -7
  72. package/dist/gc/completion-integrity.js +45 -53
  73. package/dist/gc/completion-integrity.js.map +1 -1
  74. package/dist/gc/doc-gardening.js +1 -9
  75. package/dist/gc/doc-gardening.js.map +1 -1
  76. package/dist/gc/frontmatter.js +2 -2
  77. package/dist/gc/frontmatter.js.map +1 -1
  78. package/dist/gc/index.d.ts +7 -6
  79. package/dist/gc/index.js +3 -2
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/gc/quality-update.d.ts +6 -10
  82. package/dist/gc/quality-update.js +12 -15
  83. package/dist/gc/quality-update.js.map +1 -1
  84. package/dist/gc/scope-coverage.js +1 -1
  85. package/dist/gc/scope-coverage.js.map +1 -1
  86. package/dist/gc/stub-hits.d.ts +7 -25
  87. package/dist/gc/stub-hits.js +14 -40
  88. package/dist/gc/stub-hits.js.map +1 -1
  89. package/dist/gc/sweep.js +15 -6
  90. package/dist/gc/sweep.js.map +1 -1
  91. package/dist/gc/types.d.ts +5 -5
  92. package/dist/gc/types.js +2 -2
  93. package/dist/gc/walk-source.js +8 -28
  94. package/dist/gc/walk-source.js.map +1 -1
  95. package/dist/hooks/defer.d.ts +9 -20
  96. package/dist/hooks/defer.js +10 -27
  97. package/dist/hooks/defer.js.map +1 -1
  98. package/dist/hooks/post-tool-use/allowlist-reader.d.ts +2 -1
  99. package/dist/hooks/post-tool-use/allowlist-reader.js +49 -34
  100. package/dist/hooks/post-tool-use/allowlist-reader.js.map +1 -1
  101. package/dist/hooks/post-tool-use/index.d.ts +3 -4
  102. package/dist/hooks/post-tool-use/index.js +3 -3
  103. package/dist/hooks/post-tool-use/index.js.map +1 -1
  104. package/dist/hooks/post-tool-use/legend-builder.d.ts +11 -2
  105. package/dist/hooks/post-tool-use/legend-builder.js +27 -2
  106. package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
  107. package/dist/hooks/post-tool-use/post-write.d.ts +8 -0
  108. package/dist/hooks/post-tool-use/post-write.js +112 -0
  109. package/dist/hooks/post-tool-use/post-write.js.map +1 -0
  110. package/dist/hooks/post-tool-use/read-enricher.d.ts +10 -5
  111. package/dist/hooks/post-tool-use/read-enricher.js +114 -149
  112. package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
  113. package/dist/hooks/post-tool-use/sot-align.d.ts +12 -0
  114. package/dist/hooks/post-tool-use/sot-align.js +73 -49
  115. package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
  116. package/dist/hooks/post-tool-use/write-guardian.d.ts +40 -8
  117. package/dist/hooks/post-tool-use/write-guardian.js +202 -254
  118. package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
  119. package/dist/hooks/pre-commit/sot-align-precommit.js +2 -2
  120. package/dist/hooks/pre-commit/sot-align-precommit.js.map +1 -1
  121. package/dist/hooks/runners/index.d.ts +2 -2
  122. package/dist/hooks/runners/index.js +1 -1
  123. package/dist/hooks/runners/index.js.map +1 -1
  124. package/dist/hooks/runners/payload.d.ts +34 -19
  125. package/dist/hooks/runners/payload.js +47 -44
  126. package/dist/hooks/runners/payload.js.map +1 -1
  127. package/dist/hooks/runners/session-end.js +12 -11
  128. package/dist/hooks/runners/session-end.js.map +1 -1
  129. package/dist/hooks/runners/session-start.d.ts +4 -2
  130. package/dist/hooks/runners/session-start.js +88 -261
  131. package/dist/hooks/runners/session-start.js.map +1 -1
  132. package/dist/hooks/runners/stop.js +27 -8
  133. package/dist/hooks/runners/stop.js.map +1 -1
  134. package/dist/hooks/runners/user-prompt-submit.js +7 -1
  135. package/dist/hooks/runners/user-prompt-submit.js.map +1 -1
  136. package/dist/hooks/sot-align-common.d.ts +1 -2
  137. package/dist/hooks/sot-align-common.js +2 -2
  138. package/dist/hooks/sot-align-common.js.map +1 -1
  139. package/dist/index.d.ts +1 -1
  140. package/dist/index.js +12 -3
  141. package/dist/index.js.map +1 -1
  142. package/dist/init/baseline-audit.d.ts +14 -58
  143. package/dist/init/baseline-audit.js +92 -320
  144. package/dist/init/baseline-audit.js.map +1 -1
  145. package/dist/init/brand-derive.d.ts +11 -15
  146. package/dist/init/brand-derive.js +21 -46
  147. package/dist/init/brand-derive.js.map +1 -1
  148. package/dist/init/brand-setup.d.ts +1 -1
  149. package/dist/init/brand-setup.js +1 -1
  150. package/dist/init/detect.d.ts +25 -6
  151. package/dist/init/detect.js +107 -136
  152. package/dist/init/detect.js.map +1 -1
  153. package/dist/init/index.d.ts +4 -4
  154. package/dist/init/index.js +2 -2
  155. package/dist/init/index.js.map +1 -1
  156. package/dist/init/ingest-docs.d.ts +83 -23
  157. package/dist/init/ingest-docs.js +648 -136
  158. package/dist/init/ingest-docs.js.map +1 -1
  159. package/dist/init/init.d.ts +29 -20
  160. package/dist/init/init.js +132 -290
  161. package/dist/init/init.js.map +1 -1
  162. package/dist/init/mapper-merge.js +1 -1
  163. package/dist/init/mapper-merge.js.map +1 -1
  164. package/dist/init/mapper-parallel.d.ts +1 -1
  165. package/dist/init/mapper-parallel.js +10 -1
  166. package/dist/init/mapper-parallel.js.map +1 -1
  167. package/dist/init/mapper.js +1 -1
  168. package/dist/init/mapper.js.map +1 -1
  169. package/dist/init/multi-dev/install.d.ts +5 -5
  170. package/dist/init/multi-dev/install.js +4 -4
  171. package/dist/init/overlay.js +1 -0
  172. package/dist/init/overlay.js.map +1 -1
  173. package/dist/init/phases/1-detect.js +1 -1
  174. package/dist/init/phases/1-detect.js.map +1 -1
  175. package/dist/init/phases/{7c-rules-merge.d.ts → 10-rules-merge.d.ts} +2 -2
  176. package/dist/init/phases/{7c-rules-merge.js → 10-rules-merge.js} +6 -12
  177. package/dist/init/phases/10-rules-merge.js.map +1 -0
  178. package/dist/init/phases/11-baseline.d.ts +7 -0
  179. package/dist/init/phases/{8-baseline.js → 11-baseline.js} +5 -9
  180. package/dist/init/phases/11-baseline.js.map +1 -0
  181. package/dist/init/phases/12-strip.d.ts +10 -0
  182. package/dist/init/phases/{10-strip.js → 12-strip.js} +10 -14
  183. package/dist/init/phases/12-strip.js.map +1 -0
  184. package/dist/init/phases/{12-multidev.d.ts → 13-multidev.d.ts} +2 -2
  185. package/dist/init/phases/{12-multidev.js → 13-multidev.js} +4 -4
  186. package/dist/init/phases/{12-multidev.js.map → 13-multidev.js.map} +1 -1
  187. package/dist/init/phases/3-mapper.d.ts +1 -1
  188. package/dist/init/phases/3-mapper.js +2 -2
  189. package/dist/init/phases/3-mapper.js.map +1 -1
  190. package/dist/init/phases/{3b-seed.d.ts → 4-seed.d.ts} +2 -2
  191. package/dist/init/phases/{3b-seed.js → 4-seed.js} +7 -7
  192. package/dist/init/phases/4-seed.js.map +1 -0
  193. package/dist/init/phases/{4-pilot.d.ts → 5-pilot.d.ts} +2 -2
  194. package/dist/init/phases/{4-pilot.js → 5-pilot.js} +9 -9
  195. package/dist/init/phases/{4-pilot.js.map → 5-pilot.js.map} +1 -1
  196. package/dist/init/phases/{5-brand.d.ts → 6-brand.d.ts} +2 -7
  197. package/dist/init/phases/{5-brand.js → 6-brand.js} +6 -14
  198. package/dist/init/phases/6-brand.js.map +1 -0
  199. package/dist/init/phases/{5b-topic-index.d.ts → 7-topic-index.d.ts} +2 -11
  200. package/dist/init/phases/{5b-topic-index.js → 7-topic-index.js} +9 -18
  201. package/dist/init/phases/7-topic-index.js.map +1 -0
  202. package/dist/init/phases/8-docs-ingest.d.ts +10 -0
  203. package/dist/init/phases/{6-docs-ingest.js → 8-docs-ingest.js} +12 -14
  204. package/dist/init/phases/8-docs-ingest.js.map +1 -0
  205. package/dist/init/phases/9-source-comments.d.ts +6 -0
  206. package/dist/init/phases/{7b-source-comments.js → 9-source-comments.js} +7 -26
  207. package/dist/init/phases/9-source-comments.js.map +1 -0
  208. package/dist/init/phases/index.d.ts +12 -12
  209. package/dist/init/phases/index.js +11 -11
  210. package/dist/init/phases/index.js.map +1 -1
  211. package/dist/init/phases/{parallel-678.d.ts → parallel-8910.d.ts} +7 -8
  212. package/dist/init/phases/{parallel-678.js → parallel-8910.js} +34 -46
  213. package/dist/init/phases/parallel-8910.js.map +1 -0
  214. package/dist/init/phases/source-comments-output-io.d.ts +3 -3
  215. package/dist/init/phases/source-comments-output-io.js +3 -3
  216. package/dist/init/phases/types.d.ts +1 -1
  217. package/dist/init/phases/types.js +10 -10
  218. package/dist/init/phases/types.js.map +1 -1
  219. package/dist/init/rules-merge/discover.d.ts +2 -2
  220. package/dist/init/rules-merge/discover.js +28 -43
  221. package/dist/init/rules-merge/discover.js.map +1 -1
  222. package/dist/init/rules-merge/ingest.d.ts +6 -6
  223. package/dist/init/rules-merge/ingest.js +9 -10
  224. package/dist/init/rules-merge/ingest.js.map +1 -1
  225. package/dist/init/rules-merge/keep-markers.d.ts +1 -1
  226. package/dist/init/rules-merge/keep-markers.js +1 -1
  227. package/dist/init/rules-merge/regenerate.d.ts +3 -3
  228. package/dist/init/rules-merge/regenerate.js +3 -3
  229. package/dist/init/seed.js +17 -24
  230. package/dist/init/seed.js.map +1 -1
  231. package/dist/init/sot-emit.d.ts +48 -8
  232. package/dist/init/sot-emit.js +88 -10
  233. package/dist/init/sot-emit.js.map +1 -1
  234. package/dist/init/source-comments/classify.d.ts +2 -2
  235. package/dist/init/source-comments/classify.js +9 -1
  236. package/dist/init/source-comments/classify.js.map +1 -1
  237. package/dist/init/source-comments/index.d.ts +1 -1
  238. package/dist/init/source-comments/index.js.map +1 -1
  239. package/dist/init/source-comments/ingest.d.ts +2 -2
  240. package/dist/init/source-comments/ingest.js +110 -12
  241. package/dist/init/source-comments/ingest.js.map +1 -1
  242. package/dist/init/source-comments/strip-replace.js +3 -2
  243. package/dist/init/source-comments/strip-replace.js.map +1 -1
  244. package/dist/init/source-comments/walker.d.ts +3 -26
  245. package/dist/init/source-comments/walker.js +18 -30
  246. package/dist/init/source-comments/walker.js.map +1 -1
  247. package/dist/init/topic-index/index.d.ts +15 -1
  248. package/dist/init/topic-index/index.js +84 -5
  249. package/dist/init/topic-index/index.js.map +1 -1
  250. package/dist/init/topic-index/judge.d.ts +5 -9
  251. package/dist/init/topic-index/judge.js +25 -17
  252. package/dist/init/topic-index/judge.js.map +1 -1
  253. package/dist/init/topic-index/resolve.d.ts +23 -3
  254. package/dist/init/topic-index/resolve.js +102 -16
  255. package/dist/init/topic-index/resolve.js.map +1 -1
  256. package/dist/init/topic-index/walk.d.ts +36 -4
  257. package/dist/init/topic-index/walk.js +78 -12
  258. package/dist/init/topic-index/walk.js.map +1 -1
  259. package/dist/lock.js +4 -1
  260. package/dist/lock.js.map +1 -1
  261. package/dist/logger.js +3 -0
  262. package/dist/logger.js.map +1 -1
  263. package/dist/mcp/history/summarizer.js +6 -1
  264. package/dist/mcp/history/summarizer.js.map +1 -1
  265. package/dist/mcp/history/walker.js +1 -1
  266. package/dist/mcp/history/walker.js.map +1 -1
  267. package/dist/mcp/path-allowlist.js +1 -1
  268. package/dist/mcp/path-allowlist.js.map +1 -1
  269. package/dist/mcp/schemas.d.ts +47 -21
  270. package/dist/mcp/schemas.js +38 -9
  271. package/dist/mcp/schemas.js.map +1 -1
  272. package/dist/mcp/server.js +10 -0
  273. package/dist/mcp/server.js.map +1 -1
  274. package/dist/mcp/tools/archive.js +1 -1
  275. package/dist/mcp/tools/archive.js.map +1 -1
  276. package/dist/mcp/tools/attention-wait.js +12 -2
  277. package/dist/mcp/tools/attention-wait.js.map +1 -1
  278. package/dist/mcp/tools/bulk-accept-attention.js +29 -30
  279. package/dist/mcp/tools/bulk-accept-attention.js.map +1 -1
  280. package/dist/mcp/tools/canonical-for-topic.js +37 -15
  281. package/dist/mcp/tools/canonical-for-topic.js.map +1 -1
  282. package/dist/mcp/tools/decision-get.js +2 -2
  283. package/dist/mcp/tools/decision-get.js.map +1 -1
  284. package/dist/mcp/tools/decisions-for-symbol.js +2 -2
  285. package/dist/mcp/tools/decisions-for-symbol.js.map +1 -1
  286. package/dist/mcp/tools/get-full.js +1 -1
  287. package/dist/mcp/tools/get-full.js.map +1 -1
  288. package/dist/mcp/tools/ground-get.js +1 -1
  289. package/dist/mcp/tools/ground-get.js.map +1 -1
  290. package/dist/mcp/tools/in-scope.d.ts +8 -0
  291. package/dist/mcp/tools/in-scope.js +125 -0
  292. package/dist/mcp/tools/in-scope.js.map +1 -0
  293. package/dist/mcp/tools/index.js +11 -6
  294. package/dist/mcp/tools/index.js.map +1 -1
  295. package/dist/mcp/tools/init-phases.d.ts +3 -2
  296. package/dist/mcp/tools/init-phases.js +125 -124
  297. package/dist/mcp/tools/init-phases.js.map +1 -1
  298. package/dist/mcp/tools/invariant-get.js +2 -2
  299. package/dist/mcp/tools/invariant-get.js.map +1 -1
  300. package/dist/mcp/tools/record-decision.d.ts +4 -3
  301. package/dist/mcp/tools/record-decision.js +111 -36
  302. package/dist/mcp/tools/record-decision.js.map +1 -1
  303. package/dist/mcp/tools/reject-candidate.d.ts +24 -0
  304. package/dist/mcp/tools/reject-candidate.js +71 -0
  305. package/dist/mcp/tools/reject-candidate.js.map +1 -0
  306. package/dist/mcp/tools/resolve-attention.d.ts +5 -18
  307. package/dist/mcp/tools/resolve-attention.js +58 -158
  308. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  309. package/dist/mcp/tools/search-candidates.d.ts +20 -0
  310. package/dist/mcp/tools/search-candidates.js +93 -0
  311. package/dist/mcp/tools/search-candidates.js.map +1 -0
  312. package/dist/mcp/tools/search.js +5 -4
  313. package/dist/mcp/tools/search.js.map +1 -1
  314. package/dist/mcp/tools/supersedes-chain.js +2 -2
  315. package/dist/mcp/tools/supersedes-chain.js.map +1 -1
  316. package/dist/mcp/tools/task-create.d.ts +1 -0
  317. package/dist/mcp/tools/task-create.js +2 -0
  318. package/dist/mcp/tools/task-create.js.map +1 -1
  319. package/dist/mcp/tools/timeline.js +1 -1
  320. package/dist/mcp/tools/timeline.js.map +1 -1
  321. package/dist/mcp/tools/types.d.ts +1 -0
  322. package/dist/mcp/tools/types.js +9 -1
  323. package/dist/mcp/tools/types.js.map +1 -1
  324. package/dist/sensors/attestation.d.ts +1 -1
  325. package/dist/sensors/attestation.js +2 -2
  326. package/dist/sensors/attestation.js.map +1 -1
  327. package/dist/sensors/catalog.d.ts +26 -28
  328. package/dist/sensors/catalog.js +79 -81
  329. package/dist/sensors/catalog.js.map +1 -1
  330. package/dist/sensors/decisions.d.ts +1 -1
  331. package/dist/sensors/decisions.js +15 -14
  332. package/dist/sensors/decisions.js.map +1 -1
  333. package/dist/sensors/diff.js +46 -22
  334. package/dist/sensors/diff.js.map +1 -1
  335. package/dist/sensors/runner.d.ts +2 -2
  336. package/dist/sensors/runner.js +3 -3
  337. package/dist/sensors/shell.d.ts +4 -0
  338. package/dist/sensors/shell.js +16 -0
  339. package/dist/sensors/shell.js.map +1 -0
  340. package/dist/sensors/structural.d.ts +3 -2
  341. package/dist/sensors/structural.js +3 -11
  342. package/dist/sensors/structural.js.map +1 -1
  343. package/dist/sensors/stub-catalog.d.ts +2 -1
  344. package/dist/sensors/stub-catalog.js +2 -9
  345. package/dist/sensors/stub-catalog.js.map +1 -1
  346. package/dist/sensors/types.d.ts +3 -4
  347. package/dist/sensors/types.js +1 -2
  348. package/dist/sensors/types.js.map +1 -1
  349. package/dist/session-start/build.js +1 -1
  350. package/dist/session-start/build.js.map +1 -1
  351. package/dist/status-line/event-queue.js +1 -1
  352. package/dist/status-line/index.d.ts +1 -1
  353. package/package.json +3 -2
  354. package/templates/.cairn/config/sensors.yaml +8 -8
  355. package/templates/attention-ui/app.js +101 -39
  356. package/dist/fs.d.ts +0 -5
  357. package/dist/fs.js +0 -11
  358. package/dist/fs.js.map +0 -1
  359. package/dist/ground/alignment-pending.d.ts +0 -28
  360. package/dist/ground/alignment-pending.js +0 -83
  361. package/dist/ground/alignment-pending.js.map +0 -1
  362. package/dist/ground/anchor-map.d.ts +0 -14
  363. package/dist/ground/anchor-map.js +0 -56
  364. package/dist/ground/anchor-map.js.map +0 -1
  365. package/dist/ground/drift.d.ts +0 -8
  366. package/dist/ground/drift.js +0 -23
  367. package/dist/ground/drift.js.map +0 -1
  368. package/dist/ground/frontmatter.d.ts +0 -32
  369. package/dist/ground/frontmatter.js +0 -77
  370. package/dist/ground/frontmatter.js.map +0 -1
  371. package/dist/ground/glob.d.ts +0 -10
  372. package/dist/ground/glob.js +0 -46
  373. package/dist/ground/glob.js.map +0 -1
  374. package/dist/ground/index.d.ts +0 -23
  375. package/dist/ground/index.js +0 -17
  376. package/dist/ground/index.js.map +0 -1
  377. package/dist/ground/ledgers.d.ts +0 -14
  378. package/dist/ground/ledgers.js +0 -105
  379. package/dist/ground/ledgers.js.map +0 -1
  380. package/dist/ground/manifest.d.ts +0 -10
  381. package/dist/ground/manifest.js +0 -84
  382. package/dist/ground/manifest.js.map +0 -1
  383. package/dist/ground/paths.d.ts +0 -41
  384. package/dist/ground/paths.js +0 -103
  385. package/dist/ground/paths.js.map +0 -1
  386. package/dist/ground/quality-grades.d.ts +0 -11
  387. package/dist/ground/quality-grades.js +0 -100
  388. package/dist/ground/quality-grades.js.map +0 -1
  389. package/dist/ground/schemas.d.ts +0 -502
  390. package/dist/ground/schemas.js +0 -318
  391. package/dist/ground/schemas.js.map +0 -1
  392. package/dist/ground/scope-index.d.ts +0 -96
  393. package/dist/ground/scope-index.js +0 -290
  394. package/dist/ground/scope-index.js.map +0 -1
  395. package/dist/ground/slug.d.ts +0 -60
  396. package/dist/ground/slug.js +0 -103
  397. package/dist/ground/slug.js.map +0 -1
  398. package/dist/ground/sot-bindings.d.ts +0 -14
  399. package/dist/ground/sot-bindings.js +0 -79
  400. package/dist/ground/sot-bindings.js.map +0 -1
  401. package/dist/ground/sot-cache.d.ts +0 -18
  402. package/dist/ground/sot-cache.js +0 -62
  403. package/dist/ground/sot-cache.js.map +0 -1
  404. package/dist/ground/topic-index.d.ts +0 -27
  405. package/dist/ground/topic-index.js +0 -82
  406. package/dist/ground/topic-index.js.map +0 -1
  407. package/dist/ground/walk.d.ts +0 -7
  408. package/dist/ground/walk.js +0 -53
  409. package/dist/ground/walk.js.map +0 -1
  410. package/dist/hooks/post-tool-use/ledger-cache.d.ts +0 -40
  411. package/dist/hooks/post-tool-use/ledger-cache.js +0 -290
  412. package/dist/hooks/post-tool-use/ledger-cache.js.map +0 -1
  413. package/dist/init/phases/10-strip.d.ts +0 -11
  414. package/dist/init/phases/10-strip.js.map +0 -1
  415. package/dist/init/phases/3b-seed.js.map +0 -1
  416. package/dist/init/phases/5-brand.js.map +0 -1
  417. package/dist/init/phases/5b-topic-index.js.map +0 -1
  418. package/dist/init/phases/6-docs-ingest.d.ts +0 -10
  419. package/dist/init/phases/6-docs-ingest.js.map +0 -1
  420. package/dist/init/phases/7b-source-comments.d.ts +0 -15
  421. package/dist/init/phases/7b-source-comments.js.map +0 -1
  422. package/dist/init/phases/7c-rules-merge.js.map +0 -1
  423. package/dist/init/phases/8-baseline.d.ts +0 -10
  424. package/dist/init/phases/8-baseline.js.map +0 -1
  425. package/dist/init/phases/parallel-678.js.map +0 -1
  426. package/dist/mcp/tools/decisions-in-scope.d.ts +0 -7
  427. package/dist/mcp/tools/decisions-in-scope.js +0 -66
  428. package/dist/mcp/tools/decisions-in-scope.js.map +0 -1
  429. package/dist/mcp/tools/invariants-in-scope.d.ts +0 -7
  430. package/dist/mcp/tools/invariants-in-scope.js +0 -81
  431. package/dist/mcp/tools/invariants-in-scope.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { decisionsDir, invariantsDir, matchAnyGlob, parseFrontmatter, } from "@isaacriehm/cairn-state";
4
+ import { DecisionFrontmatter, InvariantFrontmatter, readScopeIndex, } from "@isaacriehm/cairn-state";
5
+ import { inScopeInput } from "../schemas.js";
6
+ async function handler(ctx, input) {
7
+ const types = new Set(input.types ?? ["decision", "invariant"]);
8
+ const path_globs = input.path_globs;
9
+ const statusFilter = input.status ? new Set(input.status) : null;
10
+ const scopeIndex = readScopeIndex(ctx.repoRoot);
11
+ const decIndexHits = new Set();
12
+ const invIndexHits = new Set();
13
+ if (scopeIndex !== null) {
14
+ for (const [filePath, entry] of Object.entries(scopeIndex.files)) {
15
+ if (entry.unscoped === true)
16
+ continue;
17
+ const matches = path_globs.some((g) => matchAnyGlob(g, [filePath]));
18
+ if (!matches)
19
+ continue;
20
+ for (const id of entry.decisions)
21
+ decIndexHits.add(id);
22
+ for (const id of entry.invariants)
23
+ invIndexHits.add(id);
24
+ }
25
+ }
26
+ const out = [];
27
+ // Decisions
28
+ if (types.has("decision")) {
29
+ const dir = decisionsDir(ctx.repoRoot);
30
+ if (existsSync(dir)) {
31
+ const wantStatus = statusFilter ?? new Set(["accepted"]);
32
+ for (const entry of readdirSync(dir, {
33
+ withFileTypes: true,
34
+ encoding: "utf8",
35
+ })) {
36
+ if (!entry.isFile() || !entry.name.endsWith(".md"))
37
+ continue;
38
+ const abs = join(dir, entry.name);
39
+ const parsed = parseFrontmatter(readFileSync(abs, "utf8"));
40
+ const fm = DecisionFrontmatter.safeParse(parsed.frontmatter);
41
+ if (!fm.success)
42
+ continue;
43
+ if (!wantStatus.has(fm.data.status))
44
+ continue;
45
+ const scope = fm.data.scope_globs ?? [];
46
+ const overlap = scope.length === 0
47
+ ? false
48
+ : scope.some((scopeGlob) => path_globs.some((req) => matchAnyGlob(scopeGlob, [req]) ||
49
+ matchAnyGlob(req, [scopeGlob])));
50
+ const indexHit = decIndexHits.has(fm.data.id);
51
+ if (!overlap && !indexHit)
52
+ continue;
53
+ out.push({
54
+ id: fm.data.id,
55
+ kind: "decision",
56
+ title: fm.data.title,
57
+ status: fm.data.status,
58
+ ...(fm.data.scope_globs ? { scope_globs: fm.data.scope_globs } : {}),
59
+ ...(fm.data.decided_at ? { decided_at: fm.data.decided_at } : {}),
60
+ });
61
+ }
62
+ }
63
+ }
64
+ // Invariants
65
+ if (types.has("invariant")) {
66
+ const iDir = invariantsDir(ctx.repoRoot);
67
+ const dDir = decisionsDir(ctx.repoRoot);
68
+ if (existsSync(iDir)) {
69
+ const wantStatus = statusFilter ?? new Set(["active"]);
70
+ const decisionScopeById = new Map();
71
+ if (existsSync(dDir)) {
72
+ for (const entry of readdirSync(dDir, {
73
+ withFileTypes: true,
74
+ encoding: "utf8",
75
+ })) {
76
+ if (!entry.isFile() || !entry.name.endsWith(".md"))
77
+ continue;
78
+ const parsed = parseFrontmatter(readFileSync(join(dDir, entry.name), "utf8"));
79
+ const fm = DecisionFrontmatter.safeParse(parsed.frontmatter);
80
+ if (!fm.success)
81
+ continue;
82
+ decisionScopeById.set(fm.data.id, fm.data.scope_globs ?? []);
83
+ }
84
+ }
85
+ for (const entry of readdirSync(iDir, {
86
+ withFileTypes: true,
87
+ encoding: "utf8",
88
+ })) {
89
+ if (!entry.isFile() || !entry.name.endsWith(".md"))
90
+ continue;
91
+ const parsed = parseFrontmatter(readFileSync(join(iDir, entry.name), "utf8"));
92
+ const fm = InvariantFrontmatter.safeParse(parsed.frontmatter);
93
+ if (!fm.success)
94
+ continue;
95
+ const status = fm.data.status ?? "active";
96
+ if (!wantStatus.has(status))
97
+ continue;
98
+ const sourceDecision = fm.data.source_decision ?? null;
99
+ const scope = sourceDecision
100
+ ? decisionScopeById.get(sourceDecision) ?? []
101
+ : [];
102
+ const overlap = scope.some((scopeGlob) => path_globs.some((req) => matchAnyGlob(scopeGlob, [req]) || matchAnyGlob(req, [scopeGlob])));
103
+ const indexHit = invIndexHits.has(fm.data.id);
104
+ if (!overlap && !indexHit)
105
+ continue;
106
+ out.push({
107
+ id: fm.data.id,
108
+ kind: "invariant",
109
+ title: fm.data.title,
110
+ status,
111
+ source_decision: sourceDecision,
112
+ });
113
+ }
114
+ }
115
+ }
116
+ out.sort((a, b) => a.id.localeCompare(b.id));
117
+ return out;
118
+ }
119
+ export const inScopeTool = {
120
+ name: "cairn_in_scope",
121
+ description: "List decisions and/or invariants whose scope overlaps the given path_globs. Returns summaries with ID, title, and status.",
122
+ inputSchema: inScopeInput,
123
+ handler,
124
+ };
125
+ //# sourceMappingURL=in-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-scope.js","sourceRoot":"","sources":["../../../src/mcp/tools/in-scope.ts"],"names":[],"mappings":"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"}
@@ -8,39 +8,43 @@ import { bulkAcceptAttentionTool } from "./bulk-accept-attention.js";
8
8
  import { canonicalForTopicTool } from "./canonical-for-topic.js";
9
9
  import { decisionGetTool } from "./decision-get.js";
10
10
  import { decisionsForSymbolTool } from "./decisions-for-symbol.js";
11
- import { decisionsInScopeTool } from "./decisions-in-scope.js";
12
11
  import { getFullTool } from "./get-full.js";
13
12
  import { groundGetTool } from "./ground-get.js";
14
- import { initParallel678Tool, initPhaseTools, initResumeTool, } from "./init-phases.js";
13
+ import { inScopeTool } from "./in-scope.js";
14
+ import { initParallel8910Tool, initPhaseTools, initResumeTool, initRunTool, } from "./init-phases.js";
15
15
  import { invariantGetTool } from "./invariant-get.js";
16
- import { invariantsInScopeTool } from "./invariants-in-scope.js";
17
16
  import { queryHistoryTool } from "./query-history.js";
18
17
  import { recordDecisionTool } from "./record-decision.js";
18
+ import { rejectCandidateTool } from "./reject-candidate.js";
19
19
  import { resolveAttentionTool } from "./resolve-attention.js";
20
20
  import { searchTool } from "./search.js";
21
+ import { searchCandidatesTool } from "./search-candidates.js";
21
22
  import { supersedesChainTool } from "./supersedes-chain.js";
22
23
  import { taskCreateTool } from "./task-create.js";
23
24
  import { timelineTool } from "./timeline.js";
24
25
  export const allTools = [
25
26
  // Read — graph traversal
26
27
  decisionGetTool,
27
- decisionsInScopeTool,
28
28
  decisionsForSymbolTool,
29
29
  canonicalForTopicTool,
30
30
  groundGetTool,
31
31
  supersedesChainTool,
32
32
  invariantGetTool,
33
- invariantsInScopeTool,
33
+ inScopeTool,
34
34
  // Read — 3-layer progressive
35
35
  searchTool,
36
36
  timelineTool,
37
37
  getFullTool,
38
38
  // Read — historical (gated)
39
39
  queryHistoryTool,
40
+ // Read — phase 6 candidate surface
41
+ searchCandidatesTool,
40
42
  // Write
41
43
  recordDecisionTool,
42
44
  taskCreateTool,
43
45
  archiveTool,
46
+ // Write — phase 6 candidate surface
47
+ rejectCandidateTool,
44
48
  // Write — plugin-era
45
49
  resolveAttentionTool,
46
50
  bulkAcceptAttentionTool,
@@ -52,7 +56,8 @@ export const allTools = [
52
56
  alignDrainTool,
53
57
  // Write — init pipeline (v0.2.0 MCP-native init)
54
58
  initResumeTool,
55
- initParallel678Tool,
59
+ initRunTool,
60
+ initParallel8910Tool,
56
61
  ...initPhaseTools,
57
62
  ];
58
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,yBAAyB;IACzB,eAAe;IACf,oBAAoB;IACpB,sBAAsB;IACtB,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,qBAAqB;IACrB,6BAA6B;IAC7B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,4BAA4B;IAC5B,gBAAgB;IAChB,QAAQ;IACR,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,qCAAqC;IACrC,cAAc;IACd,iDAAiD;IACjD,cAAc;IACd,mBAAmB;IACnB,GAAG,cAAc;CAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,yBAAyB;IACzB,eAAe;IACf,sBAAsB;IACtB,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,6BAA6B;IAC7B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,4BAA4B;IAC5B,gBAAgB;IAChB,mCAAmC;IACnC,oBAAoB;IACpB,QAAQ;IACR,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,oCAAoC;IACpC,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,qCAAqC;IACrC,cAAc;IACd,iDAAiD;IACjD,cAAc;IACd,WAAW;IACX,oBAAoB;IACpB,GAAG,cAAc;CAClB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP tools for the v0.3.5 init pipeline.
3
3
  *
4
- * Twelve `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
4
+ * Thirteen `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
5
5
  * plus `cairn_init_resume`. The cairn-adopt skill drives the
6
6
  * pipeline by:
7
7
  * 1. cairn_init_resume → { status, nextPhase, repoRoot }
@@ -34,6 +34,7 @@ interface PhaseToolInput {
34
34
  interface ResumeToolInput {
35
35
  }
36
36
  export declare const initPhaseTools: ToolDef<PhaseToolInput>[];
37
- export declare const initParallel678Tool: ToolDef<PhaseToolInput>;
37
+ export declare const initRunTool: ToolDef<unknown>;
38
+ export declare const initParallel8910Tool: ToolDef<PhaseToolInput>;
38
39
  export declare const initResumeTool: ToolDef<ResumeToolInput>;
39
40
  export {};
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP tools for the v0.3.5 init pipeline.
3
3
  *
4
- * Twelve `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
4
+ * Thirteen `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
5
5
  * plus `cairn_init_resume`. The cairn-adopt skill drives the
6
6
  * pipeline by:
7
7
  * 1. cairn_init_resume → { status, nextPhase, repoRoot }
@@ -26,7 +26,7 @@
26
26
  * phase outputs — a single bad call could nuke a 90KB mapper run.
27
27
  */
28
28
  import { z } from "zod";
29
- import { PHASE_IDS, clearProgress, freshPhaseState, readPhaseState, resumePhases, runPhase10Strip, runPhase12Multidev, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase5bTopicIndex, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, runPhases678Parallel, writePhaseState, writeProgress, } from "../../init/index.js";
29
+ import { PHASE_IDS, clearProgress, freshPhaseState, readPhaseState, resumePhases, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase4Seed, runPhase5Pilot, runPhase6Brand, runPhase7TopicIndex, runPhase8DocsIngest, runPhase9SourceComments, runPhase10RulesMerge, runPhase11Baseline, runPhase12Strip, runPhase13Multidev, runPhases8910Parallel, writePhaseState, writeProgress, } from "../../init/index.js";
30
30
  import { mcpError } from "../errors.js";
31
31
  const phaseIdEnum = z.enum(PHASE_IDS);
32
32
  const phaseStateSchema = z.object({
@@ -37,7 +37,8 @@ const phaseStateSchema = z.object({
37
37
  startedAt: z.string().min(1),
38
38
  schemaVersion: z.literal(1),
39
39
  });
40
- const initPhaseInput = {
40
+ const phaseRunInput = {
41
+ phase: phaseIdEnum,
41
42
  // State is optional — phase tools read .cairn/init-state.json by
42
43
  // default. Callers can still pass an explicit state object (e.g.
43
44
  // smoke tests) but the cairn-adopt skill should pass nothing here.
@@ -46,21 +47,25 @@ const initPhaseInput = {
46
47
  // into state.answer before invoking the phase runner.
47
48
  answer: z.string().optional(),
48
49
  };
50
+ const initPhaseInput = {
51
+ state: phaseStateSchema.optional(),
52
+ answer: z.string().optional(),
53
+ };
49
54
  const initResumeInput = {};
50
55
  const RUNNERS = {
51
56
  "1-detect": runPhase1Detect,
52
57
  "2-walker": runPhase2Walker,
53
58
  "3-mapper": runPhase3Mapper,
54
- "3b-seed": runPhase3bSeed,
55
- "4-pilot": runPhase4Pilot,
56
- "5-brand": runPhase5Brand,
57
- "5b-topic-index": runPhase5bTopicIndex,
58
- "6-docs-ingest": runPhase6DocsIngest,
59
- "7b-source-comments": runPhase7bSourceComments,
60
- "7c-rules-merge": runPhase7cRulesMerge,
61
- "8-baseline": runPhase8Baseline,
62
- "10-strip": runPhase10Strip,
63
- "12-multidev": runPhase12Multidev,
59
+ "4-seed": runPhase4Seed,
60
+ "5-pilot": runPhase5Pilot,
61
+ "6-brand": runPhase6Brand,
62
+ "7-topic-index": runPhase7TopicIndex,
63
+ "8-docs-ingest": runPhase8DocsIngest,
64
+ "9-source-comments": runPhase9SourceComments,
65
+ "10-rules-merge": runPhase10RulesMerge,
66
+ "11-baseline": runPhase11Baseline,
67
+ "12-strip": runPhase12Strip,
68
+ "13-multidev": runPhase13Multidev,
64
69
  };
65
70
  function toSlim(result) {
66
71
  if (result.status === "complete") {
@@ -71,92 +76,86 @@ function toSlim(result) {
71
76
  }
72
77
  return { status: "error", error: result.error };
73
78
  }
79
+ async function handlePhaseRun(ctx, id, input) {
80
+ // Resolve state: prefer the explicit arg (smoke tests, debug
81
+ // tooling), fall back to disk (cairn-adopt skill default).
82
+ let state = input.state ?? null;
83
+ if (state === null) {
84
+ state = readPhaseState(ctx.repoRoot);
85
+ }
86
+ if (state === null) {
87
+ return mcpError("VALIDATION_FAILED", `cairn_init_run for phase ${id} found no init state at .cairn/init-state.json. Call cairn_init_resume to start a fresh pipeline.`);
88
+ }
89
+ // Sanity: the tool's id must match the phase id baked into state.
90
+ if (state.currentPhase !== id) {
91
+ return mcpError("VALIDATION_FAILED", `cairn_init_run for phase ${id} requires state.currentPhase=${id}, got ${state.currentPhase}`);
92
+ }
93
+ // The state's repoRoot drives the phase, but we sanity-check it
94
+ // against the MCP context's repoRoot so a misaddressed call
95
+ // (e.g. an old state file from a different repo) gets caught.
96
+ if (state.repoRoot !== ctx.repoRoot) {
97
+ return mcpError("VALIDATION_FAILED", `state.repoRoot ${state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
98
+ }
99
+ // Splice the operator's answer into state for needs_input phases.
100
+ const stateForRun = input.answer !== undefined && input.answer.length > 0
101
+ ? { ...state, answer: input.answer }
102
+ : state;
103
+ const runner = RUNNERS[id];
104
+ // Coarse-grained statusline coverage
105
+ const isLongPhase = id === "3-mapper" ||
106
+ id === "8-docs-ingest" ||
107
+ id === "9-source-comments" ||
108
+ id === "10-rules-merge";
109
+ if (!isLongPhase) {
110
+ writeProgress(state.repoRoot, {
111
+ phase: id,
112
+ batch: 1,
113
+ total: 1,
114
+ startedAt: Date.now(),
115
+ });
116
+ }
117
+ const t0 = performance.now();
118
+ const result = await runner(stateForRun);
119
+ const durationMs = Math.round(performance.now() - t0);
120
+ clearProgress(state.repoRoot);
121
+ // Stamp `duration_ms` on the phase's output entry
122
+ if (result.status !== "error") {
123
+ const phaseOut = result.state.outputs[id];
124
+ if (typeof phaseOut === "object" && phaseOut !== null) {
125
+ const obj = phaseOut;
126
+ if (obj.duration_ms === undefined) {
127
+ obj.duration_ms = durationMs;
128
+ }
129
+ }
130
+ }
131
+ // Persist state ONLY on non-error results.
132
+ if (result.status !== "error") {
133
+ try {
134
+ writePhaseState(result.state);
135
+ }
136
+ catch (err) {
137
+ return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
138
+ }
139
+ }
140
+ return toSlim(result);
141
+ }
142
+ function makePhaseRunTool() {
143
+ return {
144
+ name: "cairn_init_run",
145
+ description: "Run a specific initialization phase. Call cairn_init_resume to find the next phase, then invoke this tool with that phase ID. Supports sequential execution of the 13-phase adoption pipeline.",
146
+ inputSchema: phaseRunInput,
147
+ handler: async (ctx, input) => {
148
+ return handlePhaseRun(ctx, input.phase, input);
149
+ },
150
+ };
151
+ }
74
152
  function makePhaseTool(id) {
75
153
  return {
76
154
  name: `cairn_init_phase_${normalizeId(id)}`,
77
155
  description: phaseDescription(id),
78
156
  inputSchema: initPhaseInput,
79
157
  handler: async (ctx, input) => {
80
- // Resolve state: prefer the explicit arg (smoke tests, debug
81
- // tooling), fall back to disk (cairn-adopt skill default).
82
- let state = input.state ?? null;
83
- if (state === null) {
84
- state = readPhaseState(ctx.repoRoot);
85
- }
86
- if (state === null) {
87
- return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} found no init state at .cairn/init-state.json. Call cairn_init_resume to start a fresh pipeline.`);
88
- }
89
- // Sanity: the tool's id must match the phase id baked into state.
90
- if (state.currentPhase !== id) {
91
- return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} requires state.currentPhase=${id}, got ${state.currentPhase}`);
92
- }
93
- // The state's repoRoot drives the phase, but we sanity-check it
94
- // against the MCP context's repoRoot so a misaddressed call
95
- // (e.g. an old state file from a different repo) gets caught.
96
- if (state.repoRoot !== ctx.repoRoot) {
97
- return mcpError("VALIDATION_FAILED", `state.repoRoot ${state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
98
- }
99
- // Splice the operator's answer into state for needs_input phases.
100
- // The runner clears `state.answer` once it has consumed it (via
101
- // `advancePhase`), so passing an answer to a phase that doesn't
102
- // expect one is a no-op rather than a hazard.
103
- const stateForRun = input.answer !== undefined && input.answer.length > 0
104
- ? { ...state, answer: input.answer }
105
- : state;
106
- const runner = RUNNERS[id];
107
- // Coarse-grained statusline coverage: every phase gets at least
108
- // one heartbeat write (batch=1, total=1) at entry so the operator
109
- // sees the current phase id mid-init even for fast phases. The
110
- // long phases (3-mapper, 6-docs-ingest, 7b-source-comments,
111
- // 7c-rules-merge) overwrite with finer-grained per-batch progress
112
- // from inside the runner. clearProgress at the end of every
113
- // phase ensures stale heartbeats don't survive into the next.
114
- const isLongPhase = id === "3-mapper" ||
115
- id === "6-docs-ingest" ||
116
- id === "7b-source-comments" ||
117
- id === "7c-rules-merge";
118
- if (!isLongPhase) {
119
- writeProgress(state.repoRoot, {
120
- phase: id,
121
- batch: 1,
122
- total: 1,
123
- startedAt: Date.now(),
124
- });
125
- }
126
- const t0 = performance.now();
127
- const result = await runner(stateForRun);
128
- const durationMs = Math.round(performance.now() - t0);
129
- clearProgress(state.repoRoot);
130
- // Stamp `duration_ms` on the phase's output entry so init-state.json
131
- // carries an ETA-auditable record for every phase, not just the ones
132
- // that bother to track time internally (3-mapper). The result.state
133
- // returned by the runner is freshly constructed; mutating its
134
- // current-phase entry is safe and doesn't ripple to prior phases.
135
- if (result.status !== "error") {
136
- const phaseOut = result.state.outputs[id];
137
- if (typeof phaseOut === "object" && phaseOut !== null) {
138
- const obj = phaseOut;
139
- if (obj["duration_ms"] === undefined) {
140
- obj["duration_ms"] = durationMs;
141
- }
142
- }
143
- }
144
- // Persist state ONLY on non-error results. An error path returns
145
- // the input state echo unchanged; persisting it would clobber
146
- // the on-disk state file with whatever shape the caller sent in
147
- // (in v0.3.4 a malformed state nuked a 90KB mapper run this way).
148
- if (result.status !== "error") {
149
- try {
150
- writePhaseState(result.state);
151
- }
152
- catch (err) {
153
- return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
154
- }
155
- }
156
- // The state file lingers after terminal phase 12-multidev so the
157
- // cairn-adopt skill can read outputs for its final summary
158
- // banner. Cleanup is a manual concern (cairn doctor / re-init).
159
- return toSlim(result);
158
+ return handlePhaseRun(ctx, id, input);
160
159
  },
161
160
  };
162
161
  }
@@ -194,39 +193,39 @@ function phaseDescription(id) {
194
193
  return "Phase 2-walker — build the repo summary (manifest previews, by-extension counts, framework signals). Always advances.";
195
194
  case "3-mapper":
196
195
  return "Phase 3-mapper — Sonnet-driven domain map (chunked across module slices). Long-running; no operator input.";
197
- case "3b-seed":
198
- return "Phase 3b-seed — write .cairn/ skeleton + config.yaml + scope-index from templates and mapper output. Always advances; no operator input.";
199
- case "4-pilot":
200
- return "Phase 4-pilot — operator picks the seed module from mapper's top candidates (1 question).";
201
- case "5-brand":
202
- return "Phase 5-brand — operator picks how to populate the brand DEC drafts: skip / auto-fill / manual (1 question).";
203
- case "5b-topic-index":
204
- return "Phase 5b-topic-index — cross-source dedup pre-pass. Walks docs/*.md + CLAUDE.md + AGENTS.md + .claude/rules/* and emits topic-index.yaml + anchor-map.yaml so phases 6/7b/7c can dedup-by-topic instead of one DEC per source.";
205
- case "6-docs-ingest":
206
- return "Phase 6-docs-ingest — Haiku batch over README + docs/ → DEC drafts + canonical-map topics. No operator input.";
207
- case "7b-source-comments":
208
- return "Phase 7b-source-comments — Haiku batch over docblock-class source comments → DEC drafts + invariant proposals.";
209
- case "7c-rules-merge":
210
- return "Phase 7c-rules-merge — Haiku batch over CLAUDE.md / AGENTS.md / .claude/rules/* → propose net-new rules + flag conflicts.";
211
- case "8-baseline":
212
- return "Phase 8-baseline — first sensor sweep against synthetic full-tree diff. No operator input.";
213
- case "10-strip":
214
- return "Phase 10-strip — per-module strip-replace consent for source-comment essays. Operator picks strip / keep / skip per flagged module.";
215
- case "12-multidev":
216
- return "Phase 12-multidev — detect per-host package manager(s) and emit JOIN.md hints for new contributors. No filesystem mutations. Idempotent.";
196
+ case "4-seed":
197
+ return "Phase 4-seed — write .cairn/ skeleton + config.yaml + scope-index from templates and mapper output. Always advances; no operator input.";
198
+ case "5-pilot":
199
+ return "Phase 5-pilot — operator picks the seed module from mapper's top candidates (1 question).";
200
+ case "6-brand":
201
+ return "Phase 6-brand — operator picks how to populate the brand DEC drafts: skip / auto-fill / manual (1 question).";
202
+ case "7-topic-index":
203
+ return "Phase 7-topic-index — cross-source dedup pre-pass. Walks docs/*.md + CLAUDE.md + AGENTS.md + .claude/rules/* and emits topic-index.yaml + anchor-map.yaml so phases 8/9/10 can dedup-by-topic instead of one DEC per source.";
204
+ case "8-docs-ingest":
205
+ return "Phase 8-docs-ingest — Haiku batch over README + docs/ → DEC drafts + canonical-map topics. No operator input.";
206
+ case "9-source-comments":
207
+ return "Phase 9-source-comments — Haiku batch over docblock-class source comments → DEC drafts + invariant proposals.";
208
+ case "10-rules-merge":
209
+ return "Phase 10-rules-merge — Haiku batch over CLAUDE.md / AGENTS.md / .claude/rules/* → propose net-new rules + flag conflicts.";
210
+ case "11-baseline":
211
+ return "Phase 11-baseline — first sensor sweep against synthetic full-tree diff. No operator input.";
212
+ case "12-strip":
213
+ return "Phase 12-strip — per-module strip-replace consent for source-comment essays. Operator picks strip / keep / skip per flagged module.";
214
+ case "13-multidev":
215
+ return "Phase 13-multidev — detect per-host package manager(s) and emit JOIN.md hints for new contributors. No filesystem mutations. Idempotent.";
217
216
  }
218
217
  }
219
218
  /**
220
219
  * Combined parallel runner for the post-pilot ingestion window. Runs
221
- * phases 6-docs-ingest, 7b-source-comments, and 7c-rules-merge in
220
+ * phases 8-docs-ingest, 9-source-comments, and 10-rules-merge in
222
221
  * parallel inside a single MCP call. The cairn-adopt skill prefers
223
- * this tool when state.currentPhase=6-docs-ingest; the per-phase
222
+ * this tool when state.currentPhase=8-docs-ingest; the per-phase
224
223
  * sequential tools remain registered for fallback / debug paths.
225
224
  */
226
- function makeParallel678Tool() {
225
+ function makeParallel8910Tool() {
227
226
  return {
228
- name: "cairn_init_phases_678_parallel",
229
- description: "Run phases 6-docs-ingest, 7b-source-comments, and 7c-rules-merge concurrently. Pre-scans existing DEC + INV ids and threads shared Sets through all three so id allocations don't collide. Returns the combined slim response with nextPhase=8-baseline. Skill prefers this when state.currentPhase=6-docs-ingest; the per-phase sequential tools stay available for fallback. Wall-clock saves the smaller-two phases' time on real-world adoptions.",
227
+ name: "cairn_init_phases_8_9_10_parallel",
228
+ description: "Run phases 8-docs-ingest, 9-source-comments, and 10-rules-merge concurrently. Pre-scans existing DEC + INV ids and threads shared Sets through all three so id allocations don't collide. Returns the combined slim response with nextPhase=11-baseline. Skill prefers this when state.currentPhase=8-docs-ingest; the per-phase sequential tools stay available for fallback. Wall-clock saves the smaller-two phases' time on real-world adoptions.",
230
229
  inputSchema: initPhaseInput,
231
230
  handler: async (ctx, input) => {
232
231
  let state = input.state ?? null;
@@ -234,19 +233,19 @@ function makeParallel678Tool() {
234
233
  state = readPhaseState(ctx.repoRoot);
235
234
  }
236
235
  if (state === null) {
237
- return mcpError("VALIDATION_FAILED", "cairn_init_phases_678_parallel found no init state at .cairn/init-state.json. Call cairn_init_resume to start a fresh pipeline.");
236
+ return mcpError("VALIDATION_FAILED", "cairn_init_phases_8_9_10_parallel found no init state at .cairn/init-state.json. Call cairn_init_resume to start a fresh pipeline.");
238
237
  }
239
- if (state.currentPhase !== "6-docs-ingest") {
240
- return mcpError("VALIDATION_FAILED", `cairn_init_phases_678_parallel requires state.currentPhase=6-docs-ingest, got ${state.currentPhase}`);
238
+ if (state.currentPhase !== "8-docs-ingest") {
239
+ return mcpError("VALIDATION_FAILED", `cairn_init_phases_8_9_10_parallel requires state.currentPhase=8-docs-ingest, got ${state.currentPhase}`);
241
240
  }
242
241
  if (state.repoRoot !== ctx.repoRoot) {
243
242
  return mcpError("VALIDATION_FAILED", `state.repoRoot ${state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
244
243
  }
245
244
  const t0 = performance.now();
246
- const result = await runPhases678Parallel(state);
245
+ const result = await runPhases8910Parallel(state);
247
246
  const durationMs = Math.round(performance.now() - t0);
248
247
  if (result.status !== "error") {
249
- for (const id of ["6-docs-ingest", "7b-source-comments", "7c-rules-merge"]) {
248
+ for (const id of ["8-docs-ingest", "9-source-comments", "10-rules-merge"]) {
250
249
  const phaseOut = result.state.outputs[id];
251
250
  if (typeof phaseOut === "object" && phaseOut !== null) {
252
251
  const obj = phaseOut;
@@ -267,6 +266,8 @@ function makeParallel678Tool() {
267
266
  };
268
267
  }
269
268
  export const initPhaseTools = PHASE_IDS.map((id) => makePhaseTool(id));
270
- export const initParallel678Tool = makeParallel678Tool();
269
+ export const initRunTool = makePhaseRunTool();
270
+ export const initParallel8910Tool = makeParallel8910Tool();
271
271
  export const initResumeTool = makeResumeTool();
272
+ ;
272
273
  //# sourceMappingURL=init-phases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { invariantsDir, parseFrontmatter } from "../../ground/index.js";
4
- import { InvariantFrontmatter } from "../../ground/index.js";
3
+ import { invariantsDir, parseFrontmatter } from "@isaacriehm/cairn-state";
4
+ import { InvariantFrontmatter } from "@isaacriehm/cairn-state";
5
5
  import { mcpError } from "../errors.js";
6
6
  import { invariantGetInput } from "../schemas.js";
7
7
  async function handler(ctx, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"invariant-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/invariant-get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invariant-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/invariant-get.ts"],"names":[],"mappings":"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"}