@isaacriehm/cairn-core 0.1.10 → 0.3.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 (399) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/claude/runner.d.ts +1 -1
  3. package/dist/claude/runner.js +62 -1
  4. package/dist/claude/runner.js.map +1 -1
  5. package/dist/claude/types.d.ts +14 -7
  6. package/dist/claude/types.js +5 -7
  7. package/dist/claude/types.js.map +1 -1
  8. package/dist/context/index.d.ts +4 -4
  9. package/dist/context/index.js +3 -4
  10. package/dist/context/index.js.map +1 -1
  11. package/dist/context/spec-delta.js +3 -4
  12. package/dist/context/spec-delta.js.map +1 -1
  13. package/dist/context/task-summary.d.ts +18 -0
  14. package/dist/context/task-summary.js +89 -0
  15. package/dist/context/task-summary.js.map +1 -0
  16. package/dist/decision-capture/id.d.ts +21 -4
  17. package/dist/decision-capture/id.js +56 -5
  18. package/dist/decision-capture/id.js.map +1 -1
  19. package/dist/decision-capture/index.d.ts +7 -22
  20. package/dist/decision-capture/index.js +7 -17
  21. package/dist/decision-capture/index.js.map +1 -1
  22. package/dist/doctor/index.d.ts +2 -2
  23. package/dist/doctor/index.js +5 -60
  24. package/dist/doctor/index.js.map +1 -1
  25. package/dist/events/index.d.ts +1 -1
  26. package/dist/events/index.js +1 -1
  27. package/dist/events/writer.d.ts +1 -1
  28. package/dist/events/writer.js +1 -1
  29. package/dist/gc/canary.d.ts +13 -23
  30. package/dist/gc/canary.js +36 -92
  31. package/dist/gc/canary.js.map +1 -1
  32. package/dist/gc/citation-integrity.d.ts +6 -6
  33. package/dist/gc/citation-integrity.js +64 -20
  34. package/dist/gc/citation-integrity.js.map +1 -1
  35. package/dist/gc/frontmatter.js +1 -1
  36. package/dist/gc/generator-drift.js +1 -1
  37. package/dist/gc/generator-drift.js.map +1 -1
  38. package/dist/gc/index.d.ts +2 -2
  39. package/dist/gc/index.js +1 -1
  40. package/dist/gc/index.js.map +1 -1
  41. package/dist/gc/quality-update.d.ts +4 -4
  42. package/dist/gc/quality-update.js +5 -5
  43. package/dist/gc/quality-update.js.map +1 -1
  44. package/dist/gc/types.d.ts +1 -30
  45. package/dist/ground/index.d.ts +2 -2
  46. package/dist/ground/index.js +1 -1
  47. package/dist/ground/index.js.map +1 -1
  48. package/dist/ground/ledgers.d.ts +0 -4
  49. package/dist/ground/ledgers.js +10 -8
  50. package/dist/ground/ledgers.js.map +1 -1
  51. package/dist/ground/manifest.js +0 -4
  52. package/dist/ground/manifest.js.map +1 -1
  53. package/dist/ground/paths.js +0 -1
  54. package/dist/ground/paths.js.map +1 -1
  55. package/dist/ground/quality-grades.js +3 -1
  56. package/dist/ground/quality-grades.js.map +1 -1
  57. package/dist/ground/schemas.d.ts +2 -7
  58. package/dist/ground/schemas.js +7 -2
  59. package/dist/ground/schemas.js.map +1 -1
  60. package/dist/ground/scope-index.d.ts +62 -14
  61. package/dist/ground/scope-index.js +215 -45
  62. package/dist/ground/scope-index.js.map +1 -1
  63. package/dist/hooks/bypass-detection.js +14 -17
  64. package/dist/hooks/bypass-detection.js.map +1 -1
  65. package/dist/hooks/defer.d.ts +50 -0
  66. package/dist/hooks/defer.js +87 -0
  67. package/dist/hooks/defer.js.map +1 -0
  68. package/dist/hooks/post-tool-use/citation-scanner.d.ts +7 -5
  69. package/dist/hooks/post-tool-use/citation-scanner.js +15 -9
  70. package/dist/hooks/post-tool-use/citation-scanner.js.map +1 -1
  71. package/dist/hooks/post-tool-use/copy-scanner.js +1 -1
  72. package/dist/hooks/post-tool-use/copy-scanner.js.map +1 -1
  73. package/dist/hooks/post-tool-use/ledger-cache.d.ts +10 -2
  74. package/dist/hooks/post-tool-use/ledger-cache.js +58 -4
  75. package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
  76. package/dist/hooks/post-tool-use/legend-builder.d.ts +3 -3
  77. package/dist/hooks/post-tool-use/legend-builder.js +30 -8
  78. package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
  79. package/dist/hooks/post-tool-use/read-enricher.d.ts +1 -1
  80. package/dist/hooks/post-tool-use/read-enricher.js +68 -21
  81. package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
  82. package/dist/hooks/post-tool-use/write-guardian.js +148 -18
  83. package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
  84. package/dist/hooks/runners/index.d.ts +3 -0
  85. package/dist/hooks/runners/index.js +2 -0
  86. package/dist/hooks/runners/index.js.map +1 -1
  87. package/dist/hooks/runners/payload.d.ts +1 -1
  88. package/dist/hooks/runners/payload.js +27 -12
  89. package/dist/hooks/runners/payload.js.map +1 -1
  90. package/dist/hooks/runners/session-start.js +250 -75
  91. package/dist/hooks/runners/session-start.js.map +1 -1
  92. package/dist/hooks/runners/stop.d.ts +9 -12
  93. package/dist/hooks/runners/stop.js +129 -41
  94. package/dist/hooks/runners/stop.js.map +1 -1
  95. package/dist/hooks/runners/user-prompt-submit.d.ts +15 -0
  96. package/dist/hooks/runners/user-prompt-submit.js +149 -0
  97. package/dist/hooks/runners/user-prompt-submit.js.map +1 -0
  98. package/dist/hooks/seed-attested.d.ts +25 -0
  99. package/dist/hooks/seed-attested.js +84 -0
  100. package/dist/hooks/seed-attested.js.map +1 -0
  101. package/dist/hooks/user-prompt-submit.d.ts +7 -0
  102. package/dist/hooks/user-prompt-submit.js +12 -0
  103. package/dist/hooks/user-prompt-submit.js.map +1 -0
  104. package/dist/index.d.ts +3 -6
  105. package/dist/index.js +14 -12
  106. package/dist/index.js.map +1 -1
  107. package/dist/init/baseline-audit.d.ts +5 -1
  108. package/dist/init/baseline-audit.js +25 -2
  109. package/dist/init/baseline-audit.js.map +1 -1
  110. package/dist/init/glob-inference.d.ts +16 -0
  111. package/dist/init/glob-inference.js +108 -0
  112. package/dist/init/glob-inference.js.map +1 -0
  113. package/dist/init/index.d.ts +4 -0
  114. package/dist/init/index.js +2 -0
  115. package/dist/init/index.js.map +1 -1
  116. package/dist/init/ingest-docs.d.ts +1 -1
  117. package/dist/init/ingest-docs.js +19 -6
  118. package/dist/init/ingest-docs.js.map +1 -1
  119. package/dist/init/init.js +17 -94
  120. package/dist/init/init.js.map +1 -1
  121. package/dist/init/mapper-merge.d.ts +8 -2
  122. package/dist/init/mapper-merge.js +50 -32
  123. package/dist/init/mapper-merge.js.map +1 -1
  124. package/dist/init/mapper-parallel.d.ts +2 -3
  125. package/dist/init/mapper-parallel.js +9 -38
  126. package/dist/init/mapper-parallel.js.map +1 -1
  127. package/dist/init/mapper-prompts.js +1 -1
  128. package/dist/init/mapper-prompts.js.map +1 -1
  129. package/dist/init/mapper.d.ts +7 -128
  130. package/dist/init/mapper.js +30 -7
  131. package/dist/init/mapper.js.map +1 -1
  132. package/dist/init/module-slicer.d.ts +1 -1
  133. package/dist/init/module-slicer.js +1 -1
  134. package/dist/init/multi-dev/install.d.ts +9 -10
  135. package/dist/init/multi-dev/install.js +15 -84
  136. package/dist/init/multi-dev/install.js.map +1 -1
  137. package/dist/init/overlay.d.ts +14 -0
  138. package/dist/init/overlay.js +65 -0
  139. package/dist/init/overlay.js.map +1 -0
  140. package/dist/init/phases/1-detect.d.ts +10 -0
  141. package/dist/init/phases/1-detect.js +36 -0
  142. package/dist/init/phases/1-detect.js.map +1 -0
  143. package/dist/init/phases/10-strip.d.ts +11 -0
  144. package/dist/init/phases/10-strip.js +79 -0
  145. package/dist/init/phases/10-strip.js.map +1 -0
  146. package/dist/init/phases/12-multidev.d.ts +6 -0
  147. package/dist/init/phases/12-multidev.js +34 -0
  148. package/dist/init/phases/12-multidev.js.map +1 -0
  149. package/dist/init/phases/2-walker.d.ts +8 -0
  150. package/dist/init/phases/2-walker.js +34 -0
  151. package/dist/init/phases/2-walker.js.map +1 -0
  152. package/dist/init/phases/3-mapper.d.ts +14 -0
  153. package/dist/init/phases/3-mapper.js +56 -0
  154. package/dist/init/phases/3-mapper.js.map +1 -0
  155. package/dist/init/phases/3b-seed.d.ts +18 -0
  156. package/dist/init/phases/3b-seed.js +140 -0
  157. package/dist/init/phases/3b-seed.js.map +1 -0
  158. package/dist/init/phases/4-pilot.d.ts +10 -0
  159. package/dist/init/phases/4-pilot.js +108 -0
  160. package/dist/init/phases/4-pilot.js.map +1 -0
  161. package/dist/init/phases/5-brand.d.ts +10 -0
  162. package/dist/init/phases/5-brand.js +66 -0
  163. package/dist/init/phases/5-brand.js.map +1 -0
  164. package/dist/init/phases/6-docs-ingest.d.ts +11 -0
  165. package/dist/init/phases/6-docs-ingest.js +39 -0
  166. package/dist/init/phases/6-docs-ingest.js.map +1 -0
  167. package/dist/init/phases/7b-source-comments.d.ts +6 -0
  168. package/dist/init/phases/7b-source-comments.js +34 -0
  169. package/dist/init/phases/7b-source-comments.js.map +1 -0
  170. package/dist/init/phases/7c-rules-merge.d.ts +6 -0
  171. package/dist/init/phases/7c-rules-merge.js +34 -0
  172. package/dist/init/phases/7c-rules-merge.js.map +1 -0
  173. package/dist/init/phases/8-baseline.d.ts +10 -0
  174. package/dist/init/phases/8-baseline.js +52 -0
  175. package/dist/init/phases/8-baseline.js.map +1 -0
  176. package/dist/init/phases/index.d.ts +15 -0
  177. package/dist/init/phases/index.js +16 -0
  178. package/dist/init/phases/index.js.map +1 -0
  179. package/dist/init/phases/orchestrator.d.ts +49 -0
  180. package/dist/init/phases/orchestrator.js +85 -0
  181. package/dist/init/phases/orchestrator.js.map +1 -0
  182. package/dist/init/phases/state-io.d.ts +19 -0
  183. package/dist/init/phases/state-io.js +73 -0
  184. package/dist/init/phases/state-io.js.map +1 -0
  185. package/dist/init/phases/types.d.ts +93 -0
  186. package/dist/init/phases/types.js +30 -0
  187. package/dist/init/phases/types.js.map +1 -0
  188. package/dist/init/prompts.d.ts +6 -8
  189. package/dist/init/prompts.js +3 -6
  190. package/dist/init/prompts.js.map +1 -1
  191. package/dist/init/rules-merge/ingest.js +1 -1
  192. package/dist/init/seed.js +11 -2
  193. package/dist/init/seed.js.map +1 -1
  194. package/dist/init/source-comments/classify.d.ts +1 -41
  195. package/dist/init/source-comments/classify.js +68 -37
  196. package/dist/init/source-comments/classify.js.map +1 -1
  197. package/dist/init/source-comments/index.d.ts +2 -2
  198. package/dist/init/source-comments/index.js +2 -2
  199. package/dist/init/source-comments/index.js.map +1 -1
  200. package/dist/init/source-comments/ingest.d.ts +38 -2
  201. package/dist/init/source-comments/ingest.js +237 -4
  202. package/dist/init/source-comments/ingest.js.map +1 -1
  203. package/dist/init/source-comments/strip-replace.d.ts +10 -19
  204. package/dist/init/source-comments/strip-replace.js +26 -2
  205. package/dist/init/source-comments/strip-replace.js.map +1 -1
  206. package/dist/init/source-comments/walker.d.ts +9 -2
  207. package/dist/init/source-comments/walker.js +38 -19
  208. package/dist/init/source-comments/walker.js.map +1 -1
  209. package/dist/init/submodules.d.ts +3 -2
  210. package/dist/init/types.d.ts +3 -5
  211. package/dist/init/types.js +3 -5
  212. package/dist/init/types.js.map +1 -1
  213. package/dist/init/visual.d.ts +4 -9
  214. package/dist/init/visual.js +1 -16
  215. package/dist/init/visual.js.map +1 -1
  216. package/dist/init/walker.d.ts +0 -6
  217. package/dist/init/walker.js +2 -3
  218. package/dist/init/walker.js.map +1 -1
  219. package/dist/join/index.js +49 -2
  220. package/dist/join/index.js.map +1 -1
  221. package/dist/logger.d.ts +1 -2
  222. package/dist/logger.js +5 -6
  223. package/dist/logger.js.map +1 -1
  224. package/dist/mcp/context.d.ts +2 -3
  225. package/dist/mcp/context.js.map +1 -1
  226. package/dist/mcp/errors.d.ts +1 -1
  227. package/dist/mcp/errors.js.map +1 -1
  228. package/dist/mcp/history/prompt.d.ts +2 -1
  229. package/dist/mcp/history/walker.js +1 -1
  230. package/dist/mcp/history/walker.js.map +1 -1
  231. package/dist/mcp/path-allowlist.d.ts +0 -6
  232. package/dist/mcp/path-allowlist.js +0 -10
  233. package/dist/mcp/path-allowlist.js.map +1 -1
  234. package/dist/mcp/schemas.d.ts +34 -72
  235. package/dist/mcp/schemas.js +40 -70
  236. package/dist/mcp/schemas.js.map +1 -1
  237. package/dist/mcp/serve.d.ts +1 -1
  238. package/dist/mcp/serve.js +2 -5
  239. package/dist/mcp/serve.js.map +1 -1
  240. package/dist/mcp/server.js +10 -4
  241. package/dist/mcp/server.js.map +1 -1
  242. package/dist/mcp/telemetry.d.ts +8 -1
  243. package/dist/mcp/telemetry.js +16 -0
  244. package/dist/mcp/telemetry.js.map +1 -1
  245. package/dist/mcp/tools/decision-get.js +37 -29
  246. package/dist/mcp/tools/decision-get.js.map +1 -1
  247. package/dist/mcp/tools/decisions-in-scope.js +22 -3
  248. package/dist/mcp/tools/decisions-in-scope.js.map +1 -1
  249. package/dist/mcp/tools/ground-get.js +2 -2
  250. package/dist/mcp/tools/ground-get.js.map +1 -1
  251. package/dist/mcp/tools/index.js +6 -2
  252. package/dist/mcp/tools/index.js.map +1 -1
  253. package/dist/mcp/tools/init-phases.d.ts +24 -0
  254. package/dist/mcp/tools/init-phases.js +140 -0
  255. package/dist/mcp/tools/init-phases.js.map +1 -0
  256. package/dist/mcp/tools/invariant-get.js +1 -1
  257. package/dist/mcp/tools/invariant-get.js.map +1 -1
  258. package/dist/mcp/tools/invariants-in-scope.js +26 -7
  259. package/dist/mcp/tools/invariants-in-scope.js.map +1 -1
  260. package/dist/mcp/tools/query-history.js +3 -3
  261. package/dist/mcp/tools/query-history.js.map +1 -1
  262. package/dist/mcp/tools/resolve-attention.d.ts +6 -4
  263. package/dist/mcp/tools/resolve-attention.js +253 -24
  264. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  265. package/dist/mcp/tools/search.js +3 -4
  266. package/dist/mcp/tools/search.js.map +1 -1
  267. package/dist/mcp/tools/task-create.d.ts +15 -0
  268. package/dist/mcp/tools/task-create.js +96 -0
  269. package/dist/mcp/tools/task-create.js.map +1 -0
  270. package/dist/mcp/tools/timeline.js +3 -7
  271. package/dist/mcp/tools/timeline.js.map +1 -1
  272. package/dist/profiles/types.d.ts +2 -2
  273. package/dist/profiles/types.js +1 -1
  274. package/dist/sensors/catalog.js +8 -3
  275. package/dist/sensors/catalog.js.map +1 -1
  276. package/dist/session/id.d.ts +1 -3
  277. package/dist/session/id.js +1 -1
  278. package/dist/session/id.js.map +1 -1
  279. package/dist/session-start/build.d.ts +7 -11
  280. package/dist/session-start/build.js +62 -34
  281. package/dist/session-start/build.js.map +1 -1
  282. package/dist/session-start/index.d.ts +2 -2
  283. package/dist/session-start/index.js +2 -2
  284. package/dist/session-start/index.js.map +1 -1
  285. package/dist/session-start/templates.d.ts +20 -4
  286. package/dist/session-start/templates.js +45 -35
  287. package/dist/session-start/templates.js.map +1 -1
  288. package/dist/status-line/format.d.ts +20 -9
  289. package/dist/status-line/format.js +45 -35
  290. package/dist/status-line/format.js.map +1 -1
  291. package/dist/status-line/index.d.ts +3 -4
  292. package/dist/status-line/index.js +1 -1
  293. package/dist/status-line/index.js.map +1 -1
  294. package/dist/status-line/reader.d.ts +9 -6
  295. package/dist/status-line/reader.js +50 -18
  296. package/dist/status-line/reader.js.map +1 -1
  297. package/dist/status-line/writer.d.ts +6 -9
  298. package/dist/status-line/writer.js +10 -12
  299. package/dist/status-line/writer.js.map +1 -1
  300. package/dist/trace/index.d.ts +44 -0
  301. package/dist/trace/index.js +51 -0
  302. package/dist/trace/index.js.map +1 -0
  303. package/package.json +2 -3
  304. package/templates/.archive/README.md +3 -3
  305. package/templates/.cairn/JOIN.md +3 -9
  306. package/templates/.cairn/config/sensors.yaml +16 -19
  307. package/templates/.cairn/config/stub-patterns.yaml +4 -4
  308. package/templates/.cairn/config/trust-policy.yaml +3 -35
  309. package/templates/.cairn/config/workflow.md +13 -194
  310. package/templates/.cairn/git-hooks/commit-msg +15 -4
  311. package/templates/.cairn/git-hooks/pre-commit +22 -13
  312. package/templates/.cairn/ground/canonical-map/topics.yaml +3 -26
  313. package/templates/.cairn/ground/capabilities/snippets.yaml +0 -1
  314. package/templates/.cairn/ground/manifest.yaml +5 -8
  315. package/templates/.cairn/ground/product/personas.yaml +0 -1
  316. package/dist/context/checkpoint.d.ts +0 -10
  317. package/dist/context/checkpoint.js +0 -29
  318. package/dist/context/checkpoint.js.map +0 -1
  319. package/dist/decision-capture/capture.d.ts +0 -57
  320. package/dist/decision-capture/capture.js +0 -186
  321. package/dist/decision-capture/capture.js.map +0 -1
  322. package/dist/decision-capture/extractor.d.ts +0 -20
  323. package/dist/decision-capture/extractor.js +0 -103
  324. package/dist/decision-capture/extractor.js.map +0 -1
  325. package/dist/decision-capture/prompt.d.ts +0 -15
  326. package/dist/decision-capture/prompt.js +0 -68
  327. package/dist/decision-capture/prompt.js.map +0 -1
  328. package/dist/decision-capture/refinement-prompt.d.ts +0 -25
  329. package/dist/decision-capture/refinement-prompt.js +0 -146
  330. package/dist/decision-capture/refinement-prompt.js.map +0 -1
  331. package/dist/decision-capture/refinement-schema.d.ts +0 -52
  332. package/dist/decision-capture/refinement-schema.js +0 -61
  333. package/dist/decision-capture/refinement-schema.js.map +0 -1
  334. package/dist/decision-capture/refinement.d.ts +0 -60
  335. package/dist/decision-capture/refinement.js +0 -439
  336. package/dist/decision-capture/refinement.js.map +0 -1
  337. package/dist/decision-capture/schema.d.ts +0 -70
  338. package/dist/decision-capture/schema.js +0 -71
  339. package/dist/decision-capture/schema.js.map +0 -1
  340. package/dist/decision-capture/types.d.ts +0 -201
  341. package/dist/decision-capture/types.js +0 -20
  342. package/dist/decision-capture/types.js.map +0 -1
  343. package/dist/decision-capture/writer.d.ts +0 -90
  344. package/dist/decision-capture/writer.js +0 -267
  345. package/dist/decision-capture/writer.js.map +0 -1
  346. package/dist/frontend-types.d.ts +0 -243
  347. package/dist/frontend-types.js +0 -15
  348. package/dist/frontend-types.js.map +0 -1
  349. package/dist/hooks/index.d.ts +0 -12
  350. package/dist/hooks/index.js +0 -13
  351. package/dist/hooks/index.js.map +0 -1
  352. package/dist/inbox.d.ts +0 -17
  353. package/dist/inbox.js +0 -30
  354. package/dist/inbox.js.map +0 -1
  355. package/dist/mcp/tools/append-run-note.d.ts +0 -18
  356. package/dist/mcp/tools/append-run-note.js +0 -47
  357. package/dist/mcp/tools/append-run-note.js.map +0 -1
  358. package/dist/mcp/tools/append.d.ts +0 -8
  359. package/dist/mcp/tools/append.js +0 -37
  360. package/dist/mcp/tools/append.js.map +0 -1
  361. package/dist/mcp/tools/ask-operator.d.ts +0 -34
  362. package/dist/mcp/tools/ask-operator.js +0 -97
  363. package/dist/mcp/tools/ask-operator.js.map +0 -1
  364. package/dist/mcp/tools/drop-task.d.ts +0 -12
  365. package/dist/mcp/tools/drop-task.js +0 -68
  366. package/dist/mcp/tools/drop-task.js.map +0 -1
  367. package/dist/mcp/tools/record-run-event.d.ts +0 -10
  368. package/dist/mcp/tools/record-run-event.js +0 -32
  369. package/dist/mcp/tools/record-run-event.js.map +0 -1
  370. package/dist/prompt.d.ts +0 -19
  371. package/dist/prompt.js +0 -50
  372. package/dist/prompt.js.map +0 -1
  373. package/dist/tier0/classify.d.ts +0 -10
  374. package/dist/tier0/classify.js +0 -110
  375. package/dist/tier0/classify.js.map +0 -1
  376. package/dist/tier0/index.d.ts +0 -2
  377. package/dist/tier0/index.js +0 -2
  378. package/dist/tier0/index.js.map +0 -1
  379. package/dist/tier0/types.d.ts +0 -24
  380. package/dist/tier0/types.js +0 -9
  381. package/dist/tier0/types.js.map +0 -1
  382. package/dist/tightener/index.d.ts +0 -4
  383. package/dist/tightener/index.js +0 -4
  384. package/dist/tightener/index.js.map +0 -1
  385. package/dist/tightener/prompt.d.ts +0 -3
  386. package/dist/tightener/prompt.js +0 -67
  387. package/dist/tightener/prompt.js.map +0 -1
  388. package/dist/tightener/schema.d.ts +0 -68
  389. package/dist/tightener/schema.js +0 -44
  390. package/dist/tightener/schema.js.map +0 -1
  391. package/dist/tightener/tighten.d.ts +0 -2
  392. package/dist/tightener/tighten.js +0 -66
  393. package/dist/tightener/tighten.js.map +0 -1
  394. package/dist/tightener/types.d.ts +0 -74
  395. package/dist/tightener/types.js +0 -6
  396. package/dist/tightener/types.js.map +0 -1
  397. package/templates/.claude/settings.json +0 -57
  398. package/templates/.mcp.json +0 -8
  399. package/templates/README.md +0 -24
@@ -7,15 +7,50 @@
7
7
  * Spec: PLUGIN_ARCHITECTURE §7 + §10. Bin entrypoint at
8
8
  * `cairn-core/src/hooks/session-start.ts` calls into this runner.
9
9
  */
10
- import { existsSync } from "node:fs";
10
+ import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
11
+ import { homedir } from "node:os";
11
12
  import { join } from "node:path";
13
+ import { readActiveTaskSummary } from "../../context/index.js";
12
14
  import { gcStaleEvents } from "../../events/index.js";
13
- import { inspectJoinState } from "../../join/index.js";
15
+ import { writeDecisionsLedger, writeInvariantsLedger } from "../../ground/ledgers.js";
16
+ import { rescanScopeIndex } from "../../ground/scope-index.js";
17
+ import { scanBypassedCommits } from "../bypass-detection.js";
18
+ import { inspectJoinState, runJoin } from "../../join/index.js";
14
19
  import { resolveRepoRoot } from "../../session-start/index.js";
15
20
  import { buildSessionStartContext } from "../../session-start/index.js";
16
21
  import { ensureSessionDir, gcStaleSessions, resolveSessionId, seedEventsMarker, } from "../../session/index.js";
17
22
  import { defaultStatusJson, writeStatusJson } from "../../status-line/index.js";
18
23
  import { emitShapeB, parseHookPayload, readHookStdin, recordHookTelemetry, } from "./payload.js";
24
+ /**
25
+ * Maintain the shim file the `/cairn-statusline-setup` command relies
26
+ * on — a single line containing the absolute path to the active
27
+ * bundle's `dist/cli.mjs`. The user's `~/.claude/settings.json`
28
+ * statusLine command reads this path so plugin upgrades (which change
29
+ * CLAUDE_PLUGIN_ROOT's version segment) don't break the badge.
30
+ *
31
+ * No-op when the hook isn't running under the Claude Code plugin
32
+ * (CLAUDE_PLUGIN_ROOT unset) — terminal `cairn hook session-start`
33
+ * invocations don't touch user-level settings.
34
+ */
35
+ function syncActiveVersionShim(warnings) {
36
+ const pluginRoot = process.env["CLAUDE_PLUGIN_ROOT"];
37
+ if (typeof pluginRoot !== "string" || pluginRoot.length === 0)
38
+ return;
39
+ const bundlePath = join(pluginRoot, "dist", "cli.mjs");
40
+ if (!existsSync(bundlePath)) {
41
+ warnings.push(`statusline_shim_skipped: bundle missing at ${bundlePath}`);
42
+ return;
43
+ }
44
+ const shimDir = join(homedir(), ".claude", "plugins", "cache", "isaacriehm-cairn");
45
+ const shimPath = join(shimDir, ".active-version-path");
46
+ try {
47
+ mkdirSync(shimDir, { recursive: true });
48
+ writeFileSync(shimPath, `${bundlePath}\n`, "utf8");
49
+ }
50
+ catch (err) {
51
+ warnings.push(`statusline_shim_failed: ${err instanceof Error ? err.message : String(err)}`);
52
+ }
53
+ }
19
54
  export async function runSessionStartHook() {
20
55
  const startedAt = Date.now();
21
56
  const raw = await readHookStdin();
@@ -24,6 +59,8 @@ export async function runSessionStartHook() {
24
59
  const source = typeof payload.source === "string" ? payload.source : null;
25
60
  const cwdInput = typeof payload.cwd === "string" ? payload.cwd : process.cwd();
26
61
  const repoRoot = resolveRepoRoot(cwdInput);
62
+ const shimWarnings = [];
63
+ syncActiveVersionShim(shimWarnings);
27
64
  if (repoRoot === null) {
28
65
  // No `.cairn/` found walking up from cwd. If cwd is itself a git
29
66
  // repo, this is an *unadopted* project — render the adoption banner
@@ -44,7 +81,10 @@ export async function runSessionStartHook() {
44
81
  sessionId: payloadSessionId,
45
82
  source,
46
83
  durationMs: Date.now() - startedAt,
47
- warnings: adoptionBanner !== null ? ["adoption_offered"] : ["no_cairn_dir_found"],
84
+ warnings: [
85
+ ...(adoptionBanner !== null ? ["adoption_offered"] : ["no_cairn_dir_found"]),
86
+ ...shimWarnings,
87
+ ],
48
88
  extra: {
49
89
  sections_rendered: adoptionBanner !== null ? ["adoption_banner"] : [],
50
90
  sections_dropped: [],
@@ -57,7 +97,7 @@ export async function runSessionStartHook() {
57
97
  const sessionId = resolveSessionId({ session_id: payloadSessionId ?? undefined });
58
98
  try {
59
99
  ensureSessionDir({ repoRoot, sessionId });
60
- writeStatusJson(repoRoot, sessionId, defaultStatusJson(true));
100
+ writeStatusJson(repoRoot, sessionId, defaultStatusJson());
61
101
  seedEventsMarker({ repoRoot, sessionId });
62
102
  }
63
103
  catch (err) {
@@ -80,6 +120,36 @@ export async function runSessionStartHook() {
80
120
  catch (err) {
81
121
  sessionWarnings.push(`events_gc_failed: ${err instanceof Error ? err.message : String(err)}`);
82
122
  }
123
+ // Deterministic scope-index sync — walk source files, regex for §INV/§DEC
124
+ // tokens, fold into scope-index. No LLM. Cheap (~100ms on 50k files via
125
+ // git ls-files). Keeps the in-scope tools accurate when an agent has
126
+ // moved cite tokens between files since the last init / rebuild.
127
+ try {
128
+ const rescan = rescanScopeIndex(repoRoot);
129
+ if (rescan.dirty) {
130
+ sessionWarnings.push(`scope_rescan_dirty:added=${rescan.entriesAdded},updated=${rescan.entriesUpdated}`);
131
+ }
132
+ }
133
+ catch (err) {
134
+ sessionWarnings.push(`scope_rescan_failed: ${err instanceof Error ? err.message : String(err)}`);
135
+ }
136
+ // Defensive ledger rebuilds — operator may edit a DEC or INV .md file
137
+ // out-of-band (text editor, git checkout of a different branch). The
138
+ // ledger.yaml indices won't reflect that until the next accept/reject
139
+ // landed via the MCP write path. Rebuild from on-disk frontmatter so
140
+ // the in-scope tools never see a stale ledger. Pure JS, milliseconds.
141
+ try {
142
+ writeDecisionsLedger({ repoRoot });
143
+ }
144
+ catch (err) {
145
+ sessionWarnings.push(`decisions_ledger_rebuild_failed: ${err instanceof Error ? err.message : String(err)}`);
146
+ }
147
+ try {
148
+ writeInvariantsLedger({ repoRoot });
149
+ }
150
+ catch (err) {
151
+ sessionWarnings.push(`invariants_ledger_rebuild_failed: ${err instanceof Error ? err.message : String(err)}`);
152
+ }
83
153
  const isResume = source === "resume";
84
154
  const buildArgs = { repoRoot };
85
155
  if (isResume)
@@ -91,10 +161,24 @@ export async function runSessionStartHook() {
91
161
  }
92
162
  const result = await buildSessionStartContext(buildArgs);
93
163
  try {
164
+ const active = readActiveTaskSummary(repoRoot);
165
+ let bypassCount = 0;
166
+ try {
167
+ bypassCount = scanBypassedCommits(repoRoot).bypassed.length;
168
+ }
169
+ catch {
170
+ bypassCount = 0;
171
+ }
94
172
  writeStatusJson(repoRoot, sessionId, {
95
173
  decisions_in_scope: result.counts.decisions,
96
174
  invariants_in_scope: result.counts.invariants,
97
- attention_count: result.counts.pendingDrafts,
175
+ attention_count: result.counts.pendingDrafts +
176
+ result.counts.baselineFindings +
177
+ result.counts.driftFindings,
178
+ task_state: active?.taskState ?? "idle",
179
+ task_id: active?.taskId ?? null,
180
+ task_module: active?.taskModule ?? null,
181
+ bypass_count: bypassCount,
98
182
  updated_at: new Date().toISOString(),
99
183
  });
100
184
  }
@@ -122,24 +206,30 @@ export async function runSessionStartHook() {
122
206
  warnings: [
123
207
  ...result.warnings,
124
208
  ...sessionWarnings,
125
- ...(bootstrapBanner !== null ? ["bootstrap_required"] : []),
209
+ ...shimWarnings,
210
+ ...(bootstrapBanner !== null ? ["bootstrap_failed"] : []),
126
211
  ],
127
212
  extra: {
128
213
  sections_rendered: result.sectionsRendered,
129
214
  sections_dropped: result.sectionsDropped,
130
215
  total_chars: additionalContext.length,
216
+ additional_context: additionalContext,
217
+ ...(bootstrapBanner !== null ? { bootstrap_banner: bootstrapBanner } : {}),
131
218
  },
132
219
  });
133
220
  }
134
221
  /**
135
222
  * Per PLUGIN_ARCHITECTURE §17 Layer 4: when a clone is cairn-adopted
136
223
  * (`.cairn/config.yaml` present + `.git/` present) but `core.hooksPath`
137
- * is unset, the plugin enters degraded mode. The session opens — read
138
- * tools still work but main Claude must surface the bootstrap prompt
139
- * inline before the operator engages with any cairn write surface. The
140
- * banner is the only contract: if the surrounding skill / agent does not
141
- * gate on it, the MCP write tools' BOOTSTRAP_REQUIRED envelope is the
142
- * server-side backstop.
224
+ * is unset, run `cairn join` synchronously to wire the per-clone hooks.
225
+ * Bootstrap is idempotent, local-clone-only state (git config + chmod +
226
+ * gitignored sentinel files) plugin install is implicit consent for
227
+ * local config wiring, no operator prompt needed.
228
+ *
229
+ * Returns null on success (no banner needed) or when not in
230
+ * bootstrap-required state. Returns a failure banner only when
231
+ * `runJoin` errored — operator needs to know the write surface stayed
232
+ * disabled.
143
233
  */
144
234
  function renderBootstrapBanner(repoRoot) {
145
235
  if (!existsSync(join(repoRoot, ".git")))
@@ -149,86 +239,171 @@ function renderBootstrapBanner(repoRoot) {
149
239
  const state = inspectJoinState({ repoRoot });
150
240
  if (state.hooksPathSet)
151
241
  return null;
242
+ // Auto-run join. Idempotent — no harm if a parallel session beat us.
243
+ const result = runJoin({ repoRoot });
244
+ if (result.bootstrapped)
245
+ return null;
246
+ // Surface failure inline so operator knows the write surface is still
247
+ // refused. Include each errored step's detail for diagnosis.
152
248
  const lines = [];
153
- lines.push("## Cairn — bootstrap required");
249
+ lines.push("## Cairn — bootstrap failed");
154
250
  lines.push("");
155
- lines.push("This project is cairn-adopted, but this clone is not bootstrapped. " +
156
- "Without bootstrap, MCP write tools refuse, the cairn-direction " +
157
- "skill blocks, and local commits will fail at the pre-commit hook.");
251
+ lines.push("This clone is cairn-adopted but `cairn join` did not finish. " +
252
+ "MCP write tools refuse and local commits skip attestation until " +
253
+ "this resolves.");
158
254
  lines.push("");
159
- lines.push(`Project pinned to cairn ${state.projectCairnVersion ?? "(unset)"}.`);
160
- lines.push("");
161
- lines.push("Surface this inline to the operator on first interaction:");
162
- lines.push("");
163
- lines.push("> This project uses Cairn, but your clone isn't bootstrapped.");
164
- lines.push("> `[a]` bootstrap now (run the join command, ~5s)");
165
- lines.push("> `[b]` skip (cairn write surface stays disabled)");
166
- lines.push("");
167
- lines.push("On `[a]`, spawn this Bash command in the repo's working directory:");
168
- lines.push("");
169
- lines.push("```bash");
170
- lines.push("npx -y @isaacriehm/cairn join");
171
- lines.push("```");
255
+ for (const step of result.steps) {
256
+ if (step.status === "error") {
257
+ lines.push(`- **${step.step}** ${step.detail}`);
258
+ }
259
+ }
172
260
  lines.push("");
173
- lines.push("Wait for it to print `cairn join: bootstrapped` (or report any per-step " +
174
- "warning). The next assistant turn picks up the unblocked surface.");
261
+ lines.push("Re-run manually: `node \"${CLAUDE_PLUGIN_ROOT}/dist/cli.mjs\" join`");
175
262
  return lines.join("\n");
176
263
  }
177
264
  /**
178
265
  * Per PLUGIN_ARCHITECTURE §6: when the operator opens Claude Code in a
179
- * git repo with no `.cairn/` directory, the plugin proactively offers
180
- * adoption inline. SessionStart has no DOM to draw on — it injects the
181
- * instruction here as additionalContext so Claude reads it on the first
182
- * user message and surfaces the inline A/B/C prompt.
266
+ * project root with no `.cairn/` directory, the plugin proactively
267
+ * offers adoption inline. SessionStart has no DOM to draw on — it
268
+ * injects the instruction here as additionalContext so Claude reads it
269
+ * on the first user message and surfaces the inline A/B/C prompt.
183
270
  *
184
- * Returns null when cwd is not a git repo (Claude Code launched outside
185
- * any project) silent in that case.
271
+ * Project-shape detection: cwd is a project if it has `.git/` OR any
272
+ * common build manifest. The `cairn-adopt` skill's preflight handles
273
+ * the no-git case (offers `git init`), so we don't need to gate on
274
+ * `.git/` here. Returns null when cwd looks like a non-project dir
275
+ * (e.g. `~/`, `/tmp/`) — silent in that case.
276
+ */
277
+ const PROJECT_MARKERS = [
278
+ ".git",
279
+ "package.json",
280
+ "pyproject.toml",
281
+ "Cargo.toml",
282
+ "go.mod",
283
+ "Gemfile",
284
+ "build.gradle",
285
+ "build.gradle.kts",
286
+ "pom.xml",
287
+ "composer.json",
288
+ "Package.swift",
289
+ "deno.json",
290
+ "bun.lockb",
291
+ ];
292
+ function looksLikeProjectRoot(cwd) {
293
+ for (const marker of PROJECT_MARKERS) {
294
+ if (existsSync(join(cwd, marker)))
295
+ return true;
296
+ }
297
+ return false;
298
+ }
299
+ /**
300
+ * Find direct child directories that look like project roots. When the
301
+ * operator opens Claude Code in a parent dir (e.g. `~/Clients/Foo/`)
302
+ * that contains one or more adoptable projects in immediate subdirs,
303
+ * we surface them so the operator can `cd` in. Caps at 8 children to
304
+ * avoid spamming when launched in `~/` or similar.
186
305
  */
306
+ function findAdoptableChildren(cwd, max = 8) {
307
+ let entries;
308
+ try {
309
+ entries = readdirSync(cwd, { withFileTypes: true });
310
+ }
311
+ catch {
312
+ return [];
313
+ }
314
+ const out = [];
315
+ for (const entry of entries) {
316
+ if (!entry.isDirectory())
317
+ continue;
318
+ if (entry.name.startsWith("."))
319
+ continue;
320
+ const childPath = join(cwd, String(entry.name));
321
+ if (!looksLikeProjectRoot(childPath))
322
+ continue;
323
+ if (existsSync(join(childPath, ".cairn")))
324
+ continue; // already adopted
325
+ if (existsSync(join(childPath, ".cairn-skip")))
326
+ continue;
327
+ out.push(String(entry.name));
328
+ if (out.length >= max)
329
+ break;
330
+ }
331
+ return out;
332
+ }
187
333
  function renderAdoptionBanner(cwd) {
188
- if (!existsSync(join(cwd, ".git")))
189
- return null;
190
- // Operator opted-out previously — never re-prompt.
191
334
  if (existsSync(join(cwd, ".cairn-skip")))
192
335
  return null;
193
- // Walk upward briefly to make sure no parent has .cairn/ either —
194
- // monorepo subdirectories should not re-prompt for adoption.
195
- let dir = cwd;
196
- for (let i = 0; i < 40; i++) {
197
- if (existsSync(join(dir, ".cairn")))
198
- return null;
199
- if (existsSync(join(dir, ".cairn-skip")))
200
- return null;
201
- const parent = join(dir, "..");
202
- if (parent === dir)
203
- break;
204
- dir = parent;
205
- if (!existsSync(join(dir, ".git")))
206
- break;
336
+ const cwdIsProject = looksLikeProjectRoot(cwd);
337
+ if (cwdIsProject) {
338
+ // Walk upward briefly to make sure no parent has .cairn/ either —
339
+ // monorepo subdirectories should not re-prompt for adoption.
340
+ let dir = cwd;
341
+ for (let i = 0; i < 40; i++) {
342
+ if (existsSync(join(dir, ".cairn")))
343
+ return null;
344
+ if (existsSync(join(dir, ".cairn-skip")))
345
+ return null;
346
+ const parent = join(dir, "..");
347
+ if (parent === dir)
348
+ break;
349
+ dir = parent;
350
+ if (!looksLikeProjectRoot(dir))
351
+ break;
352
+ }
353
+ const lines = [];
354
+ lines.push("## Cairn — adoption available");
355
+ lines.push("");
356
+ lines.push("This project has no `.cairn/` directory. Cairn is installed and " +
357
+ "can adopt it: a one-time visual pass that ingests existing " +
358
+ "decisions, source-comment essays, and `CLAUDE.md` / `AGENTS.md` " +
359
+ "rules into queryable ground state.");
360
+ lines.push("");
361
+ lines.push("Invoke the `cairn-adopt` skill on the operator's first message — " +
362
+ "even a casual greeting like \"hi\". The skill renders the " +
363
+ "yes / not now / never prompt through `AskUserQuestion`; do not " +
364
+ "duplicate the prompt as inline markdown.");
365
+ lines.push("");
366
+ lines.push("On `never for this project`, the skill writes a one-line " +
367
+ "`.cairn-skip` file at the repo root so future sessions don't " +
368
+ "re-prompt.");
369
+ lines.push("");
370
+ lines.push("If the operator asks what cairn does, summarize: persistent " +
371
+ "ground state for AI agents — decisions, invariants, canonical " +
372
+ "map, sensors. Stops re-debating settled choices across sessions.");
373
+ return lines.join("\n");
207
374
  }
375
+ // cwd isn't itself a project — scan one level down for adoptable
376
+ // children (e.g. operator opened Claude Code in
377
+ // `~/Clients/Foo/Deliverables/Website/` containing `abholidaylighting/`).
378
+ const children = findAdoptableChildren(cwd);
379
+ if (children.length === 0)
380
+ return null;
208
381
  const lines = [];
209
- lines.push("## Cairn — adoption available");
382
+ lines.push("## Cairn — adoptable project in subdir");
210
383
  lines.push("");
211
- lines.push("This project is a git repo with no `.cairn/` directory. Cairn " +
212
- "is installed and can adopt it: a one-time visual pass that " +
213
- "ingests existing decisions, source-comment essays, and " +
214
- "`CLAUDE.md` / `AGENTS.md` rules into queryable ground state.");
215
- lines.push("");
216
- lines.push("Surface this inline to the operator on their first message — even " +
217
- "a casual greeting like \"hi\". Use AskUserQuestion or a markdown " +
218
- "blockquote with the three options:");
219
- lines.push("");
220
- lines.push("> Adopt this project with cairn?");
221
- lines.push("> `[a]` yes walk adoption now (~30-60s, streamed)");
222
- lines.push("> `[b]` not now — ask again next session");
223
- lines.push("> `[c]` never — mark this project opted-out (writes `.cairn-skip`)");
224
- lines.push("");
225
- lines.push("On `[a]`, invoke the `cairn-adopt` skill (it auto-detects). On " +
226
- "`[c]`, write a one-line `.cairn-skip` file at the repo root so " +
227
- "future sessions don't re-prompt.");
384
+ if (children.length === 1) {
385
+ lines.push(`The current dir isn't a project root, but \`${children[0]}/\` is ` +
386
+ "and it has no `.cairn/`. Cairn can adopt it once the operator `cd`s in.");
387
+ lines.push("");
388
+ lines.push("Suggested first reply (edit if the operator prefers a different surface):");
389
+ lines.push("");
390
+ lines.push(`> Cairn can adopt \`${children[0]}/\`. \`cd\` in and reopen Claude Code, ` +
391
+ "or stay here for read-only access.");
392
+ }
393
+ else {
394
+ lines.push(`The current dir isn't a project root, but ${children.length} ` +
395
+ "immediate subdirs look adoptable:");
396
+ lines.push("");
397
+ for (const c of children) {
398
+ lines.push(`- \`${c}/\``);
399
+ }
400
+ lines.push("");
401
+ lines.push("Suggest the operator `cd` into one of them to adopt.");
402
+ }
228
403
  lines.push("");
229
- lines.push("If the operator asks what cairn does, summarize: persistent " +
230
- "ground state for AI agents decisions, invariants, canonical " +
231
- "map, sensors. Stops re-debating settled choices across sessions.");
404
+ lines.push("Do NOT auto-invoke `cairn-adopt` from this surface the skill " +
405
+ "operates on `cwd`, not subdirs. Surface the suggestion in chat " +
406
+ "and let the operator change directory.");
232
407
  return lines.join("\n");
233
408
  }
234
409
  //# sourceMappingURL=session-start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/hooks/runners/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/hooks/runners/session-start.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,15 @@
1
1
  /**
2
2
  * `Stop` hook runner — fires when the assistant turn ends.
3
3
  *
4
- * Current scope:
5
- * • Drain `.cairn/events/` since the per-session marker; stamp the
6
- * poll cursor so the next Stop only sees newer events.
7
- * • Scan `.cairn/tasks/active/<id>/` for tasks that have a
8
- * tightened spec but no `attestation.yaml`; surface a reviewer-
9
- * spawn hint in additionalContext so main Claude can spawn the
10
- * reviewer subagent on the next assistant turn.
11
- * • Patch the per-session status.json `updated_at` (heartbeat).
4
+ * Per PLUGIN_ARCHITECTURE §10:
5
+ * • Drains `.cairn/events/` since the per-session marker.
6
+ * Scans `.cairn/tasks/active/<id>/` for tasks missing attestation.yaml.
7
+ * • Compares HEAD's last 5 commits against `.cairn/.attested-commits`;
8
+ * surfaces bypass hint for `--no-verify` commits.
9
+ * Patches per-session status.json `updated_at` (heartbeat).
12
10
  *
13
- * Future scope (steps 7–8 per PLUGIN_ARCHITECTURE §10):
14
- * Run sensors on staged + unstaged diff; surface findings inline.
15
- * Compare HEAD's last 5 commits against `.attested-commits` marker;
16
- * surface backfill prompt for `--no-verify` bypasses.
11
+ * When context to surface: emits `{ decision: "block", reason: "..." }` so
12
+ * Claude reads the hint and invokes cairn-attention on the next turn.
13
+ * When nothing: emits `{ continue: true }` and Claude stops normally.
17
14
  */
18
15
  export declare function runStopHook(): Promise<void>;