@isaacriehm/cairn-core 0.1.9 → 0.2.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 (158) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/context/checkpoint.d.ts +4 -3
  3. package/dist/context/checkpoint.js +4 -3
  4. package/dist/context/checkpoint.js.map +1 -1
  5. package/dist/context/index.d.ts +2 -2
  6. package/dist/context/index.js +2 -2
  7. package/dist/context/spec-delta.js +1 -1
  8. package/dist/context/spec-delta.js.map +1 -1
  9. package/dist/doctor/index.d.ts +1 -1
  10. package/dist/doctor/index.js +4 -59
  11. package/dist/doctor/index.js.map +1 -1
  12. package/dist/frontend-types.d.ts +3 -3
  13. package/dist/frontend-types.js +3 -3
  14. package/dist/gc/quality-update.d.ts +4 -4
  15. package/dist/gc/quality-update.js +4 -4
  16. package/dist/ground/manifest.js +0 -2
  17. package/dist/ground/manifest.js.map +1 -1
  18. package/dist/ground/paths.js +0 -1
  19. package/dist/ground/paths.js.map +1 -1
  20. package/dist/ground/scope-index.d.ts +3 -2
  21. package/dist/ground/scope-index.js +3 -2
  22. package/dist/ground/scope-index.js.map +1 -1
  23. package/dist/hooks/bypass-detection.js +13 -18
  24. package/dist/hooks/bypass-detection.js.map +1 -1
  25. package/dist/hooks/defer.d.ts +50 -0
  26. package/dist/hooks/defer.js +87 -0
  27. package/dist/hooks/defer.js.map +1 -0
  28. package/dist/hooks/index.d.ts +2 -0
  29. package/dist/hooks/index.js +1 -0
  30. package/dist/hooks/index.js.map +1 -1
  31. package/dist/hooks/post-tool-use/ledger-cache.d.ts +2 -2
  32. package/dist/hooks/post-tool-use/ledger-cache.js +5 -4
  33. package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
  34. package/dist/hooks/runners/index.d.ts +2 -0
  35. package/dist/hooks/runners/index.js +1 -0
  36. package/dist/hooks/runners/index.js.map +1 -1
  37. package/dist/hooks/runners/session-start.js +49 -15
  38. package/dist/hooks/runners/session-start.js.map +1 -1
  39. package/dist/hooks/runners/stop.js +81 -24
  40. package/dist/hooks/runners/stop.js.map +1 -1
  41. package/dist/hooks/seed-attested.d.ts +25 -0
  42. package/dist/hooks/seed-attested.js +84 -0
  43. package/dist/hooks/seed-attested.js.map +1 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.js +13 -7
  46. package/dist/index.js.map +1 -1
  47. package/dist/init/index.d.ts +2 -0
  48. package/dist/init/index.js +1 -0
  49. package/dist/init/index.js.map +1 -1
  50. package/dist/init/init.js +8 -90
  51. package/dist/init/init.js.map +1 -1
  52. package/dist/init/mapper.d.ts +1 -1
  53. package/dist/init/multi-dev/install.d.ts +15 -10
  54. package/dist/init/multi-dev/install.js +17 -14
  55. package/dist/init/multi-dev/install.js.map +1 -1
  56. package/dist/init/overlay.d.ts +14 -0
  57. package/dist/init/overlay.js +65 -0
  58. package/dist/init/overlay.js.map +1 -0
  59. package/dist/init/phases/1-detect.d.ts +10 -0
  60. package/dist/init/phases/1-detect.js +36 -0
  61. package/dist/init/phases/1-detect.js.map +1 -0
  62. package/dist/init/phases/10-strip.d.ts +11 -0
  63. package/dist/init/phases/10-strip.js +80 -0
  64. package/dist/init/phases/10-strip.js.map +1 -0
  65. package/dist/init/phases/12-multidev.d.ts +11 -0
  66. package/dist/init/phases/12-multidev.js +39 -0
  67. package/dist/init/phases/12-multidev.js.map +1 -0
  68. package/dist/init/phases/2-walker.d.ts +8 -0
  69. package/dist/init/phases/2-walker.js +34 -0
  70. package/dist/init/phases/2-walker.js.map +1 -0
  71. package/dist/init/phases/3-mapper.d.ts +14 -0
  72. package/dist/init/phases/3-mapper.js +56 -0
  73. package/dist/init/phases/3-mapper.js.map +1 -0
  74. package/dist/init/phases/3b-seed.d.ts +27 -0
  75. package/dist/init/phases/3b-seed.js +149 -0
  76. package/dist/init/phases/3b-seed.js.map +1 -0
  77. package/dist/init/phases/4-pilot.d.ts +10 -0
  78. package/dist/init/phases/4-pilot.js +70 -0
  79. package/dist/init/phases/4-pilot.js.map +1 -0
  80. package/dist/init/phases/5-brand.d.ts +10 -0
  81. package/dist/init/phases/5-brand.js +66 -0
  82. package/dist/init/phases/5-brand.js.map +1 -0
  83. package/dist/init/phases/6-docs-ingest.d.ts +11 -0
  84. package/dist/init/phases/6-docs-ingest.js +39 -0
  85. package/dist/init/phases/6-docs-ingest.js.map +1 -0
  86. package/dist/init/phases/7b-source-comments.d.ts +6 -0
  87. package/dist/init/phases/7b-source-comments.js +34 -0
  88. package/dist/init/phases/7b-source-comments.js.map +1 -0
  89. package/dist/init/phases/7c-rules-merge.d.ts +6 -0
  90. package/dist/init/phases/7c-rules-merge.js +34 -0
  91. package/dist/init/phases/7c-rules-merge.js.map +1 -0
  92. package/dist/init/phases/8-baseline.d.ts +10 -0
  93. package/dist/init/phases/8-baseline.js +52 -0
  94. package/dist/init/phases/8-baseline.js.map +1 -0
  95. package/dist/init/phases/index.d.ts +15 -0
  96. package/dist/init/phases/index.js +16 -0
  97. package/dist/init/phases/index.js.map +1 -0
  98. package/dist/init/phases/orchestrator.d.ts +49 -0
  99. package/dist/init/phases/orchestrator.js +85 -0
  100. package/dist/init/phases/orchestrator.js.map +1 -0
  101. package/dist/init/phases/state-io.d.ts +19 -0
  102. package/dist/init/phases/state-io.js +73 -0
  103. package/dist/init/phases/state-io.js.map +1 -0
  104. package/dist/init/phases/types.d.ts +93 -0
  105. package/dist/init/phases/types.js +30 -0
  106. package/dist/init/phases/types.js.map +1 -0
  107. package/dist/init/seed.js +11 -2
  108. package/dist/init/seed.js.map +1 -1
  109. package/dist/init/walker.d.ts +0 -6
  110. package/dist/init/walker.js +2 -3
  111. package/dist/init/walker.js.map +1 -1
  112. package/dist/join/index.js +49 -2
  113. package/dist/join/index.js.map +1 -1
  114. package/dist/logger.d.ts +1 -1
  115. package/dist/logger.js +5 -5
  116. package/dist/logger.js.map +1 -1
  117. package/dist/mcp/errors.d.ts +1 -1
  118. package/dist/mcp/schemas.d.ts +19 -0
  119. package/dist/mcp/schemas.js +19 -0
  120. package/dist/mcp/schemas.js.map +1 -1
  121. package/dist/mcp/tools/append-run-note.js +13 -6
  122. package/dist/mcp/tools/append-run-note.js.map +1 -1
  123. package/dist/mcp/tools/drop-task.js +1 -1
  124. package/dist/mcp/tools/drop-task.js.map +1 -1
  125. package/dist/mcp/tools/ground-get.js +2 -2
  126. package/dist/mcp/tools/ground-get.js.map +1 -1
  127. package/dist/mcp/tools/index.js +4 -0
  128. package/dist/mcp/tools/index.js.map +1 -1
  129. package/dist/mcp/tools/init-phases.d.ts +24 -0
  130. package/dist/mcp/tools/init-phases.js +140 -0
  131. package/dist/mcp/tools/init-phases.js.map +1 -0
  132. package/dist/mcp/tools/query-history.js +1 -1
  133. package/dist/mcp/tools/query-history.js.map +1 -1
  134. package/dist/mcp/tools/resolve-attention.d.ts +3 -1
  135. package/dist/mcp/tools/resolve-attention.js +228 -11
  136. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  137. package/dist/profiles/types.d.ts +1 -1
  138. package/dist/sensors/catalog.js +8 -3
  139. package/dist/sensors/catalog.js.map +1 -1
  140. package/dist/session-start/build.d.ts +4 -0
  141. package/dist/session-start/build.js +7 -0
  142. package/dist/session-start/build.js.map +1 -1
  143. package/dist/status-line/format.d.ts +10 -7
  144. package/dist/status-line/format.js +16 -14
  145. package/dist/status-line/format.js.map +1 -1
  146. package/dist/status-line/index.d.ts +0 -3
  147. package/dist/status-line/index.js.map +1 -1
  148. package/dist/status-line/reader.d.ts +1 -1
  149. package/dist/status-line/reader.js +2 -5
  150. package/dist/status-line/reader.js.map +1 -1
  151. package/dist/status-line/writer.d.ts +1 -9
  152. package/dist/status-line/writer.js +1 -12
  153. package/dist/status-line/writer.js.map +1 -1
  154. package/package.json +1 -1
  155. package/templates/.cairn/JOIN.md +3 -9
  156. package/templates/.cairn/git-hooks/commit-msg +14 -3
  157. package/templates/.cairn/git-hooks/pre-commit +22 -13
  158. package/templates/README.md +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"drop-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/drop-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drop-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/drop-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa9C,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;aACrB,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,kFAAkF;QAClF,MAAM,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG;YAClB,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,eAAe;YACvC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACP,WAAW,EAAE,MAAM;SACpB,CAAC;QAEF,MAAM,IAAI,GAAG,QAAQ,aAAa,CAAC,WAAW,CAAC,YAAY,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC;QAC5F,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACvC,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,EAAE;SACpB,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACnC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAC5B,IAAI,EAAE,uBAAuB,EAAE,UAAU;gBACzC,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE;aACvE,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0FAA0F;IAC5F,WAAW,EAAE,aAAa;IAC1B,OAAO;CACR,CAAC"}
@@ -9,14 +9,14 @@ async function handler(ctx, input) {
9
9
  case "manifest": {
10
10
  const path = manifestPath(ctx.repoRoot);
11
11
  if (!existsSync(path)) {
12
- return mcpError("FILE_NOT_FOUND", "manifest.yaml not present (daemon not run yet?)");
12
+ return mcpError("FILE_NOT_FOUND", "manifest.yaml not present (init not run yet?)");
13
13
  }
14
14
  return { path: ".cairn/ground/manifest.yaml", content: readFileSync(path, "utf8") };
15
15
  }
16
16
  case "quality_grades": {
17
17
  const path = qualityGradesPath(ctx.repoRoot);
18
18
  if (!existsSync(path)) {
19
- return mcpError("FILE_NOT_FOUND", "quality-grades.yaml not present (daemon not run yet?)");
19
+ return mcpError("FILE_NOT_FOUND", "quality-grades.yaml not present (init not run yet?)");
20
20
  }
21
21
  return { path: ".cairn/ground/quality-grades.yaml", content: readFileSync(path, "utf8") };
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ground-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/ground-get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ground-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/ground-get.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { decisionsForSymbolTool } from "./decisions-for-symbol.js";
6
6
  import { decisionsInScopeTool } from "./decisions-in-scope.js";
7
7
  import { getFullTool } from "./get-full.js";
8
8
  import { groundGetTool } from "./ground-get.js";
9
+ import { initPhaseTools, initResumeTool } from "./init-phases.js";
9
10
  import { invariantGetTool } from "./invariant-get.js";
10
11
  import { invariantsInScopeTool } from "./invariants-in-scope.js";
11
12
  import { queryHistoryTool } from "./query-history.js";
@@ -36,5 +37,8 @@ export const allTools = [
36
37
  archiveTool,
37
38
  // Write — plugin-era
38
39
  resolveAttentionTool,
40
+ // Write — init pipeline (v0.2.0 MCP-native init)
41
+ initResumeTool,
42
+ ...initPhaseTools,
39
43
  ];
40
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,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,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,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,yBAAyB;IACzB,eAAmC;IACnC,oBAAwC;IACxC,sBAA0C;IAC1C,qBAAyC;IACzC,aAAiC;IACjC,mBAAuC;IACvC,gBAAoC;IACpC,qBAAyC;IACzC,6BAA6B;IAC7B,UAA8B;IAC9B,YAAgC;IAChC,WAA+B;IAC/B,4BAA4B;IAC5B,gBAAoC;IACpC,QAAQ;IACR,kBAAsC;IACtC,iBAAqC;IACrC,WAA+B;IAC/B,qBAAqB;IACrB,oBAAwC;CACzC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,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,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,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,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,yBAAyB;IACzB,eAAmC;IACnC,oBAAwC;IACxC,sBAA0C;IAC1C,qBAAyC;IACzC,aAAiC;IACjC,mBAAuC;IACvC,gBAAoC;IACpC,qBAAyC;IACzC,6BAA6B;IAC7B,UAA8B;IAC9B,YAAgC;IAChC,WAA+B;IAC/B,4BAA4B;IAC5B,gBAAoC;IACpC,QAAQ;IACR,kBAAsC;IACtC,iBAAqC;IACrC,WAA+B;IAC/B,qBAAqB;IACrB,oBAAwC;IACxC,iDAAiD;IACjD,cAAkC;IAClC,GAAI,cAAqC;CAC1C,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * MCP tools for the v0.2.0 init pipeline.
3
+ *
4
+ * Eleven `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
5
+ * plus `cairn_init_resume`. The cairn-adopt skill drives the
6
+ * pipeline by:
7
+ * 1. cairn_init_resume → { nextPhase, state }
8
+ * 2. cairn_init_phase_<next> → { complete | needs_input | error, state }
9
+ * 3. AskUserQuestion if needs_input → re-call same tool with state.answer
10
+ * 4. loop on complete + advance until nextPhase === null
11
+ *
12
+ * State persists to .cairn/init-state.json after every phase result
13
+ * (whether complete or needs_input) so the operator can crash-recover.
14
+ */
15
+ import { type PhaseState } from "../../init/index.js";
16
+ import type { ToolDef } from "./types.js";
17
+ interface PhaseToolInput {
18
+ state: PhaseState;
19
+ }
20
+ interface ResumeToolInput {
21
+ }
22
+ export declare const initPhaseTools: ToolDef<PhaseToolInput>[];
23
+ export declare const initResumeTool: ToolDef<ResumeToolInput>;
24
+ export {};
@@ -0,0 +1,140 @@
1
+ /**
2
+ * MCP tools for the v0.2.0 init pipeline.
3
+ *
4
+ * Eleven `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
5
+ * plus `cairn_init_resume`. The cairn-adopt skill drives the
6
+ * pipeline by:
7
+ * 1. cairn_init_resume → { nextPhase, state }
8
+ * 2. cairn_init_phase_<next> → { complete | needs_input | error, state }
9
+ * 3. AskUserQuestion if needs_input → re-call same tool with state.answer
10
+ * 4. loop on complete + advance until nextPhase === null
11
+ *
12
+ * State persists to .cairn/init-state.json after every phase result
13
+ * (whether complete or needs_input) so the operator can crash-recover.
14
+ */
15
+ import { z } from "zod";
16
+ import { PHASE_IDS, freshPhaseState, resumePhases, runPhase10Strip, runPhase12Multidev, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, writePhaseState, clearPhaseState, } from "../../init/index.js";
17
+ import { mcpError } from "../errors.js";
18
+ const phaseIdEnum = z.enum(PHASE_IDS);
19
+ const phaseStateSchema = z.object({
20
+ repoRoot: z.string().min(1),
21
+ currentPhase: phaseIdEnum,
22
+ outputs: z.record(z.string(), z.unknown()),
23
+ answer: z.string().optional(),
24
+ startedAt: z.string().min(1),
25
+ schemaVersion: z.literal(1),
26
+ });
27
+ const initPhaseInput = {
28
+ state: phaseStateSchema,
29
+ };
30
+ const initResumeInput = {};
31
+ const RUNNERS = {
32
+ "1-detect": runPhase1Detect,
33
+ "2-walker": runPhase2Walker,
34
+ "3-mapper": runPhase3Mapper,
35
+ "3b-seed": runPhase3bSeed,
36
+ "4-pilot": runPhase4Pilot,
37
+ "5-brand": runPhase5Brand,
38
+ "6-docs-ingest": runPhase6DocsIngest,
39
+ "7b-source-comments": runPhase7bSourceComments,
40
+ "7c-rules-merge": runPhase7cRulesMerge,
41
+ "8-baseline": runPhase8Baseline,
42
+ "10-strip": runPhase10Strip,
43
+ "12-multidev": runPhase12Multidev,
44
+ };
45
+ function makePhaseTool(id) {
46
+ return {
47
+ name: `cairn_init_phase_${normalizeId(id)}`,
48
+ description: phaseDescription(id),
49
+ inputSchema: initPhaseInput,
50
+ handler: async (ctx, input) => {
51
+ // Sanity: the tool's id must match the phase id baked into state.
52
+ if (input.state.currentPhase !== id) {
53
+ return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} requires state.currentPhase=${id}, got ${input.state.currentPhase}`);
54
+ }
55
+ // The state's repoRoot drives the phase, but we sanity-check it
56
+ // against the MCP context's repoRoot so a misaddressed call
57
+ // (e.g. an old state file from a different repo) gets caught.
58
+ if (input.state.repoRoot !== ctx.repoRoot) {
59
+ return mcpError("VALIDATION_FAILED", `state.repoRoot ${input.state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
60
+ }
61
+ const runner = RUNNERS[id];
62
+ const result = await runner(input.state);
63
+ // Persist state after every phase result so the operator can
64
+ // /exit Claude Code mid-init and resume on the next session.
65
+ try {
66
+ writePhaseState(result.state);
67
+ }
68
+ catch (err) {
69
+ return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
70
+ }
71
+ // Pipeline complete — clean up the state file so the next init
72
+ // starts fresh rather than resuming.
73
+ if (result.status === "complete" && result.nextPhase === null) {
74
+ try {
75
+ clearPhaseState(ctx.repoRoot);
76
+ }
77
+ catch {
78
+ // best-effort cleanup
79
+ }
80
+ }
81
+ return result;
82
+ },
83
+ };
84
+ }
85
+ function makeResumeTool() {
86
+ return {
87
+ name: "cairn_init_resume",
88
+ description: "Read the on-disk init state for the current repo and return the next phase to invoke. The cairn-adopt skill calls this once at the start of the pipeline (and after any operator interruption) to find where to pick up. Returns { status: 'ready' | 'done', nextPhase: PhaseId | null, state: PhaseState }.",
89
+ inputSchema: initResumeInput,
90
+ handler: async (ctx) => {
91
+ const report = resumePhases(ctx.repoRoot);
92
+ // For a fresh start, ensure state.repoRoot matches ctx.repoRoot
93
+ // (resumePhases uses freshPhaseState(ctx.repoRoot) for this case).
94
+ if (report.state.repoRoot !== ctx.repoRoot) {
95
+ return {
96
+ ...report,
97
+ state: { ...freshPhaseState(ctx.repoRoot), startedAt: report.state.startedAt },
98
+ };
99
+ }
100
+ return report;
101
+ },
102
+ };
103
+ }
104
+ function normalizeId(id) {
105
+ // Tool names go through MCP's allowed-character set — the dash in
106
+ // "7b-source-comments" is fine but we underscore for consistency
107
+ // with cairn_init_resume / cairn_record_decision conventions.
108
+ return id.replace(/-/g, "_");
109
+ }
110
+ function phaseDescription(id) {
111
+ switch (id) {
112
+ case "1-detect":
113
+ return "Phase 1-detect — scan the project's environment + stack signatures. Always advances; no operator input.";
114
+ case "2-walker":
115
+ return "Phase 2-walker — build the repo summary (manifest previews, by-extension counts, framework signals). Always advances.";
116
+ case "3-mapper":
117
+ return "Phase 3-mapper — Sonnet-driven domain map (chunked across module slices). Long-running; no operator input.";
118
+ case "3b-seed":
119
+ return "Phase 3b-seed — write .cairn/ skeleton + config.yaml + scope-index from templates and mapper output. Always advances; no operator input.";
120
+ case "4-pilot":
121
+ return "Phase 4-pilot — operator picks the seed module from mapper's top candidates (1 question).";
122
+ case "5-brand":
123
+ return "Phase 5-brand — operator picks how to populate the brand DEC drafts: skip / auto-fill / manual (1 question).";
124
+ case "6-docs-ingest":
125
+ return "Phase 6-docs-ingest — Haiku batch over README + docs/ → DEC drafts + canonical-map topics. No operator input.";
126
+ case "7b-source-comments":
127
+ return "Phase 7b-source-comments — Haiku batch over docblock-class source comments → DEC drafts + invariant proposals.";
128
+ case "7c-rules-merge":
129
+ return "Phase 7c-rules-merge — Haiku batch over CLAUDE.md / AGENTS.md / .claude/rules/* → propose net-new rules + flag conflicts.";
130
+ case "8-baseline":
131
+ return "Phase 8-baseline — first sensor sweep against synthetic full-tree diff. No operator input.";
132
+ case "10-strip":
133
+ return "Phase 10-strip — per-module strip-replace consent for source-comment essays. Operator picks strip / keep / skip per flagged module.";
134
+ case "12-multidev":
135
+ return "Phase 12-multidev — detect per-host package manager(s) and emit JOIN.md hints for new contributors. No filesystem mutations. Idempotent.";
136
+ }
137
+ }
138
+ export const initPhaseTools = PHASE_IDS.map((id) => makePhaseTool(id));
139
+ export const initResumeTool = makeResumeTool();
140
+ //# sourceMappingURL=init-phases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ async function handler(ctx, input) {
30
30
  catch (err) {
31
31
  if (err instanceof ClaudeError) {
32
32
  if (isQuotaKind(err.kind)) {
33
- return mcpError("DAEMON_UNAVAILABLE", `history summarizer quota / rate-limit issue: ${err.message}`, { kind: err.kind, exit_code: err.exitCode ?? null });
33
+ return mcpError("OPERATION_TIMEOUT", `history summarizer quota / rate-limit issue: ${err.message}`, { kind: err.kind, exit_code: err.exitCode ?? null });
34
34
  }
35
35
  return mcpError("OPERATION_TIMEOUT", `history summarizer call failed: ${err.message}`, { kind: err.kind, exit_code: err.exitCode ?? null });
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-history.js","sourceRoot":"","sources":["../../../src/mcp/tools/query-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAA0C;YAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CACb,oBAAoB,EACpB,gDAAgD,GAAG,CAAC,OAAO,EAAE,EAC7D,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CACb,mBAAmB,EACnB,mCAAmC,GAAG,CAAC,OAAO,EAAE,EAChD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC/B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,OAAO,QAAQ,CACb,mBAAmB,EACnB,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC/E,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,+SAA+S;IACjT,WAAW,EAAE,iBAAiB;IAC9B,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"query-history.js","sourceRoot":"","sources":["../../../src/mcp/tools/query-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAA0C;YAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CACb,mBAAmB,EACnB,gDAAgD,GAAG,CAAC,OAAO,EAAE,EAC7D,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CACb,mBAAmB,EACnB,mCAAmC,GAAG,CAAC,OAAO,EAAE,EAChD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC/B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,OAAO,QAAQ,CACb,mBAAmB,EACnB,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC/E,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,+SAA+S;IACjT,WAAW,EAAE,iBAAiB;IAC9B,OAAO;CACR,CAAC"}
@@ -24,7 +24,9 @@ import type { ToolDef } from "./types.js";
24
24
  interface Input {
25
25
  item_id: string;
26
26
  choice: "a" | "b" | "c";
27
- kind: "decision_draft" | "baseline_finding" | "invalidation_event" | "drift";
27
+ kind: "decision_draft" | "baseline_finding" | "invalidation_event" | "drift" | "bypass" | "review";
28
+ flagged_items?: string[];
29
+ defer_hours?: number;
28
30
  rationale?: string;
29
31
  }
30
32
  export declare const resolveAttentionTool: ToolDef<Input>;
@@ -20,14 +20,19 @@
20
20
  * | invalidation_event | c | abort — caller archives task (no-op here) |
21
21
  * | drift | a/b/c | reserved (drift surface lands later) |
22
22
  */
23
- import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
23
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
24
24
  import { dirname, join } from "node:path";
25
+ import { parse as parseYaml } from "yaml";
25
26
  import { writeInvalidationEvent } from "../../events/index.js";
26
27
  import { decisionsDir } from "../../ground/index.js";
28
+ import { clearDeferState, writeDeferState, } from "../../hooks/defer.js";
29
+ import { applyStripReplace, } from "../../init/source-comments/strip-replace.js";
27
30
  import { withWriteLock } from "../../lock.js";
31
+ import { logger } from "../../logger.js";
28
32
  import { requireBootstrap } from "../bootstrap-guard.js";
29
33
  import { mcpError } from "../errors.js";
30
34
  import { resolveAttentionInput } from "../schemas.js";
35
+ const log = logger("mcp.resolve-attention");
31
36
  async function handler(ctx, input) {
32
37
  const block = requireBootstrap(ctx.repoRoot);
33
38
  if (block !== null)
@@ -45,8 +50,66 @@ async function handler(ctx, input) {
45
50
  resolved_kind: "drift_acknowledged",
46
51
  note: "drift resolution surface not yet implemented (step 7+); item left in queue",
47
52
  };
53
+ case "bypass":
54
+ return resolveBypass(ctx, input);
55
+ case "review":
56
+ return resolveReview(ctx, input);
48
57
  }
49
58
  }
59
+ function resolveBypass(ctx, input) {
60
+ return resolveStopSignal(ctx, input, "bypass");
61
+ }
62
+ function resolveReview(ctx, input) {
63
+ return resolveStopSignal(ctx, input, "review");
64
+ }
65
+ /**
66
+ * Shared resolution path for the two Stop-hook surfaces. choice=a/b
67
+ * are kind-specific intents (the calling skill executes them); the
68
+ * tool's job is to either clear an existing defer file (a/b cases)
69
+ * or write a fresh one with the current snapshot (c).
70
+ */
71
+ function resolveStopSignal(ctx, input, kind) {
72
+ const flagged = input.flagged_items && input.flagged_items.length > 0
73
+ ? input.flagged_items
74
+ : [input.item_id];
75
+ if (input.choice === "c") {
76
+ return withWriteLock(ctx.repoRoot, () => {
77
+ const state = writeDeferState(ctx.repoRoot, kind, {
78
+ flagged_shas: kind === "bypass" ? flagged : [],
79
+ flagged_task_ids: kind === "review" ? flagged : [],
80
+ ...(input.defer_hours !== undefined ? { hours: input.defer_hours } : {}),
81
+ });
82
+ return {
83
+ ok: true,
84
+ resolved_kind: `${kind}_deferred`,
85
+ deferred_until: new Date(Date.parse(state.deferred_at) +
86
+ state.deferred_for_hours * 60 * 60 * 1000).toISOString(),
87
+ flagged_count: flagged.length,
88
+ ...(input.rationale !== undefined ? { rationale: input.rationale } : {}),
89
+ };
90
+ });
91
+ }
92
+ // a/b: the operator engaged with the surface (either acted on it or
93
+ // dismissed it). Clear any prior defer so the next Stop sees the
94
+ // fresh state of the world.
95
+ return withWriteLock(ctx.repoRoot, () => {
96
+ clearDeferState(ctx.repoRoot, kind);
97
+ const intent = kind === "bypass"
98
+ ? input.choice === "a"
99
+ ? "bypass_record"
100
+ : "bypass_accept"
101
+ : input.choice === "a"
102
+ ? "review_now"
103
+ : "review_skip";
104
+ return {
105
+ ok: true,
106
+ resolved_kind: intent,
107
+ item_id: input.item_id,
108
+ flagged_count: flagged.length,
109
+ ...(input.rationale !== undefined ? { rationale: input.rationale } : {}),
110
+ };
111
+ });
112
+ }
50
113
  function resolveDecisionDraft(ctx, input) {
51
114
  if (!/^DEC-\d{4,}$/.test(input.item_id)) {
52
115
  return Promise.resolve(mcpError("VALIDATION_FAILED", `decision_draft item_id must match DEC-NNNN, got ${input.item_id}`));
@@ -73,18 +136,17 @@ function resolveDecisionDraft(ctx, input) {
73
136
  const acceptedPath = join(decDir, `${input.item_id}.md`);
74
137
  mkdirSync(dirname(acceptedPath), { recursive: true });
75
138
  const draft = readFileSync(inboxPath, "utf8");
139
+ const draftMeta = parseDraftFrontmatter(draft);
76
140
  const promoted = promoteDraftStatus(draft);
77
141
  writeFileSync(acceptedPath, promoted, "utf8");
78
142
  // Remove the draft after promoting so the inbox stays clean.
79
- renameSync(inboxPath, `${inboxPath}.accepted`);
80
- // Best-effort: delete the .accepted suffix file. We keep the
81
- // rename + cleanup as two steps so an interrupt mid-rename leaves
82
- // a recoverable trail rather than a vanished draft.
143
+ // The canonical accepted file at <decDir>/<id>.md is the
144
+ // recoverable copy if the rmSync interrupts.
83
145
  try {
84
- renameSync(`${inboxPath}.accepted`, `${inboxPath}.accepted.bak`);
146
+ rmSync(inboxPath, { force: true });
85
147
  }
86
148
  catch {
87
- // ignore — file already gone
149
+ // ignore — best effort, the accepted file is what matters
88
150
  }
89
151
  try {
90
152
  emitEvent(ctx, "decision_accepted", input.item_id, `.cairn/ground/decisions/${input.item_id}.md`);
@@ -92,12 +154,17 @@ function resolveDecisionDraft(ctx, input) {
92
154
  catch {
93
155
  // event emission must never roll back the resolution
94
156
  }
95
- return {
157
+ let stripOutcome = null;
158
+ if (draftMeta?.captureSource === "init-source-comments" && draftMeta.blockId !== null) {
159
+ stripOutcome = runSourceStrip(ctx.repoRoot, input.item_id, draftMeta);
160
+ }
161
+ const base = {
96
162
  ok: true,
97
163
  resolved_kind: "decision_accepted",
98
164
  item_id: input.item_id,
99
165
  accepted_path: `.cairn/ground/decisions/${input.item_id}.md`,
100
166
  };
167
+ return stripOutcome === null ? base : { ...base, source_strip: stripOutcome };
101
168
  }
102
169
  // choice === "b" — reject + archive.
103
170
  const today = new Date().toISOString().slice(0, 10);
@@ -140,7 +207,26 @@ function resolveBaselineFinding(ctx, input) {
140
207
  return withWriteLock(ctx.repoRoot, () => {
141
208
  const suppressionsPath = join(ctx.repoRoot, ".cairn", "baseline", "suppressions.yaml");
142
209
  mkdirSync(dirname(suppressionsPath), { recursive: true });
143
- const initial = existsSync(suppressionsPath) ? "" : "suppressions:\n";
210
+ // Empty / missing file seed the YAML root key so the appended
211
+ // entries land under a valid `suppressions:` list. statSync may
212
+ // throw on race; treat any error as "needs header".
213
+ let needsHeader = !existsSync(suppressionsPath);
214
+ if (!needsHeader) {
215
+ try {
216
+ const sz = statSync(suppressionsPath).size;
217
+ if (sz === 0)
218
+ needsHeader = true;
219
+ else {
220
+ const head = readFileSync(suppressionsPath, "utf8");
221
+ if (!/^suppressions\s*:/m.test(head))
222
+ needsHeader = true;
223
+ }
224
+ }
225
+ catch {
226
+ needsHeader = true;
227
+ }
228
+ }
229
+ const initial = needsHeader ? "suppressions:\n" : "";
144
230
  const entry = ` - id: ${JSON.stringify(input.item_id)}\n` +
145
231
  ` suppressed_at: ${JSON.stringify(new Date().toISOString())}\n` +
146
232
  (input.rationale !== undefined
@@ -171,8 +257,139 @@ function resolveInvalidationEvent(_ctx, input) {
171
257
  function promoteDraftStatus(body) {
172
258
  // Frontmatter `status: draft` → `status: accepted`. Best-effort regex
173
259
  // — if the frontmatter shape is unusual the file is still acceptable
174
- // (status field is advisory).
175
- return body.replace(/^status:\s*draft\b/m, "status: accepted");
260
+ // (status field is advisory). Also covers
261
+ // `status: draft-from-source-comment` (phase 7b's draft marker).
262
+ return body.replace(/^status:\s*draft(?:-from-source-comment)?\b/m, "status: accepted");
263
+ }
264
+ function parseDraftFrontmatter(body) {
265
+ const match = /^---\n([\s\S]*?)\n---/.exec(body);
266
+ if (match === null)
267
+ return null;
268
+ let parsed;
269
+ try {
270
+ parsed = parseYaml(match[1] ?? "");
271
+ }
272
+ catch {
273
+ return null;
274
+ }
275
+ if (parsed === null || typeof parsed !== "object")
276
+ return null;
277
+ const obj = parsed;
278
+ return {
279
+ blockId: typeof obj["blockId"] === "string" ? obj["blockId"] : null,
280
+ sourceFile: typeof obj["sourceFile"] === "string" ? obj["sourceFile"] : null,
281
+ captureSource: typeof obj["capture_source"] === "string" ? obj["capture_source"] : null,
282
+ title: typeof obj["title"] === "string" ? obj["title"] : null,
283
+ };
284
+ }
285
+ function runSourceStrip(repoRoot, decId, meta) {
286
+ const blockId = meta.blockId;
287
+ if (blockId === null) {
288
+ return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-block-id" };
289
+ }
290
+ const auditPath = findLatestAudit(repoRoot);
291
+ if (auditPath === null) {
292
+ return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-audit-found" };
293
+ }
294
+ let auditBody;
295
+ try {
296
+ auditBody = parseYaml(readFileSync(auditPath, "utf8"));
297
+ }
298
+ catch (err) {
299
+ log.warn({ err: err instanceof Error ? err.message : String(err), auditPath }, "audit parse failed");
300
+ return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "audit-parse-failed" };
301
+ }
302
+ const blocks = extractAuditBlocks(auditBody);
303
+ const block = blocks.find((b) => b.block_id === blockId);
304
+ if (block === undefined) {
305
+ return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "block-not-found" };
306
+ }
307
+ const replacement = formatCitation(block.lang, decId, meta.title ?? "");
308
+ const item = {
309
+ blockId,
310
+ file: block.file,
311
+ startOffset: block.start_offset,
312
+ endOffset: block.end_offset,
313
+ replacement,
314
+ };
315
+ let result;
316
+ try {
317
+ result = applyStripReplace({ repoRoot, items: [item] });
318
+ }
319
+ catch (err) {
320
+ log.warn({ err: err instanceof Error ? err.message : String(err), decId, blockId }, "strip-replace failed");
321
+ return { attempted: true, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "strip-failed" };
322
+ }
323
+ return {
324
+ attempted: true,
325
+ files_modified: result.filesModified,
326
+ items_applied: result.itemsApplied,
327
+ audit_path: auditPath,
328
+ };
329
+ }
330
+ function findLatestAudit(repoRoot) {
331
+ const dir = join(repoRoot, ".cairn", "baseline");
332
+ if (!existsSync(dir))
333
+ return null;
334
+ let entries;
335
+ try {
336
+ entries = readdirSync(dir);
337
+ }
338
+ catch {
339
+ return null;
340
+ }
341
+ const candidates = entries
342
+ .filter((n) => n.startsWith("source-comments-") && n.endsWith(".yaml"))
343
+ .map((name) => {
344
+ const abs = join(dir, name);
345
+ let mtime = 0;
346
+ try {
347
+ mtime = statSync(abs).mtimeMs;
348
+ }
349
+ catch {
350
+ // ignore
351
+ }
352
+ return { abs, mtime };
353
+ })
354
+ .sort((a, b) => b.mtime - a.mtime);
355
+ return candidates[0]?.abs ?? null;
356
+ }
357
+ function extractAuditBlocks(body) {
358
+ if (body === null || typeof body !== "object")
359
+ return [];
360
+ const obj = body;
361
+ const raw = obj["blocks"];
362
+ if (!Array.isArray(raw))
363
+ return [];
364
+ const out = [];
365
+ for (const entry of raw) {
366
+ if (entry === null || typeof entry !== "object")
367
+ continue;
368
+ const e = entry;
369
+ const block_id = e["block_id"];
370
+ const file = e["file"];
371
+ const lang = e["lang"];
372
+ const start_offset = e["start_offset"];
373
+ const end_offset = e["end_offset"];
374
+ if (typeof block_id !== "string" ||
375
+ typeof file !== "string" ||
376
+ typeof lang !== "string" ||
377
+ typeof start_offset !== "number" ||
378
+ typeof end_offset !== "number") {
379
+ continue;
380
+ }
381
+ out.push({ block_id, file, lang, start_offset, end_offset });
382
+ }
383
+ return out;
384
+ }
385
+ const HASH_LANGS = new Set(["py", "rb", "sh", "lua"]);
386
+ function formatCitation(lang, decId, title) {
387
+ const trimmedTitle = title.trim();
388
+ const tail = trimmedTitle.length > 0 ? `: ${trimmedTitle}` : "";
389
+ if (HASH_LANGS.has(lang)) {
390
+ return `# See ${decId}${tail}`;
391
+ }
392
+ return `// See ${decId}${tail}`;
176
393
  }
177
394
  function emitEvent(ctx, kind, decId, path) {
178
395
  writeInvalidationEvent(ctx.repoRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface ProfileSensorRef {
18
18
  severity?: "hard" | "soft";
19
19
  }
20
20
  export interface ProfileExtractorContext {
21
- /** The repo root the daemon is operating against (mirror path). */
21
+ /** The repo root the GC / MCP server is operating against (mirror path). */
22
22
  repoRoot: string;
23
23
  }
24
24
  export interface ProfileExtractor {