@isaacriehm/cairn-core 0.5.0 → 0.7.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 (128) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/align-undo/log.d.ts +2 -2
  3. package/dist/align-undo/log.js +80 -17
  4. package/dist/align-undo/log.js.map +1 -1
  5. package/dist/align-undo/undo.d.ts +10 -11
  6. package/dist/align-undo/undo.js +233 -23
  7. package/dist/align-undo/undo.js.map +1 -1
  8. package/dist/attention/bulk-accept.js +65 -37
  9. package/dist/attention/bulk-accept.js.map +1 -1
  10. package/dist/attention/serve/api.js +10 -18
  11. package/dist/attention/serve/api.js.map +1 -1
  12. package/dist/attention/serve/index.js +3 -3
  13. package/dist/attention/serve/index.js.map +1 -1
  14. package/dist/drain/drain.js +4 -4
  15. package/dist/drain/drain.js.map +1 -1
  16. package/dist/fix-align/index.d.ts +2 -0
  17. package/dist/fix-align/index.js +1 -0
  18. package/dist/fix-align/index.js.map +1 -1
  19. package/dist/fix-align/sentinel.d.ts +59 -0
  20. package/dist/fix-align/sentinel.js +149 -0
  21. package/dist/fix-align/sentinel.js.map +1 -0
  22. package/dist/fs.d.ts +5 -0
  23. package/dist/fs.js +11 -0
  24. package/dist/fs.js.map +1 -0
  25. package/dist/gc/apply.js +4 -4
  26. package/dist/gc/apply.js.map +1 -1
  27. package/dist/ground/anchor-map.js +3 -4
  28. package/dist/ground/anchor-map.js.map +1 -1
  29. package/dist/ground/file-candidates-map.d.ts +23 -0
  30. package/dist/ground/file-candidates-map.js +76 -0
  31. package/dist/ground/file-candidates-map.js.map +1 -0
  32. package/dist/ground/frontmatter.d.ts +12 -0
  33. package/dist/ground/frontmatter.js +28 -0
  34. package/dist/ground/frontmatter.js.map +1 -1
  35. package/dist/ground/index.d.ts +6 -4
  36. package/dist/ground/index.js +6 -4
  37. package/dist/ground/index.js.map +1 -1
  38. package/dist/ground/paths.d.ts +2 -0
  39. package/dist/ground/paths.js +6 -0
  40. package/dist/ground/paths.js.map +1 -1
  41. package/dist/ground/rejected.d.ts +42 -0
  42. package/dist/ground/rejected.js +100 -0
  43. package/dist/ground/rejected.js.map +1 -0
  44. package/dist/ground/schemas.d.ts +88 -8
  45. package/dist/ground/schemas.js +73 -19
  46. package/dist/ground/schemas.js.map +1 -1
  47. package/dist/ground/scope-index.js +4 -4
  48. package/dist/ground/scope-index.js.map +1 -1
  49. package/dist/ground/sot-bindings.js +3 -4
  50. package/dist/ground/sot-bindings.js.map +1 -1
  51. package/dist/ground/sot-cache.js +3 -4
  52. package/dist/ground/sot-cache.js.map +1 -1
  53. package/dist/ground/topic-index.d.ts +7 -0
  54. package/dist/ground/topic-index.js +26 -4
  55. package/dist/ground/topic-index.js.map +1 -1
  56. package/dist/hooks/post-tool-use/index.d.ts +1 -1
  57. package/dist/hooks/post-tool-use/index.js +1 -1
  58. package/dist/hooks/post-tool-use/index.js.map +1 -1
  59. package/dist/hooks/post-tool-use/ledger-cache.d.ts +13 -0
  60. package/dist/hooks/post-tool-use/ledger-cache.js +48 -0
  61. package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
  62. package/dist/hooks/post-tool-use/legend-builder.d.ts +10 -1
  63. package/dist/hooks/post-tool-use/legend-builder.js +27 -2
  64. package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
  65. package/dist/hooks/post-tool-use/read-enricher.js +8 -2
  66. package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
  67. package/dist/hooks/post-tool-use/sot-align.js +11 -16
  68. package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
  69. package/dist/hooks/pre-commit/sot-align-precommit.js +3 -3
  70. package/dist/hooks/pre-commit/sot-align-precommit.js.map +1 -1
  71. package/dist/init/index.d.ts +2 -2
  72. package/dist/init/index.js +1 -1
  73. package/dist/init/index.js.map +1 -1
  74. package/dist/init/ingest-docs.d.ts +82 -22
  75. package/dist/init/ingest-docs.js +632 -108
  76. package/dist/init/ingest-docs.js.map +1 -1
  77. package/dist/init/init.d.ts +10 -1
  78. package/dist/init/init.js +113 -251
  79. package/dist/init/init.js.map +1 -1
  80. package/dist/init/mapper-parallel.js +8 -0
  81. package/dist/init/mapper-parallel.js.map +1 -1
  82. package/dist/init/mapper.js +6 -6
  83. package/dist/init/mapper.js.map +1 -1
  84. package/dist/init/phases/6-docs-ingest.d.ts +9 -4
  85. package/dist/init/phases/6-docs-ingest.js +13 -10
  86. package/dist/init/phases/6-docs-ingest.js.map +1 -1
  87. package/dist/init/phases/parallel-678.js +10 -4
  88. package/dist/init/phases/parallel-678.js.map +1 -1
  89. package/dist/init/sot-emit.d.ts +22 -0
  90. package/dist/init/sot-emit.js +51 -9
  91. package/dist/init/sot-emit.js.map +1 -1
  92. package/dist/init/source-comments/ingest.js +107 -7
  93. package/dist/init/source-comments/ingest.js.map +1 -1
  94. package/dist/init/topic-index/index.d.ts +14 -0
  95. package/dist/init/topic-index/index.js +83 -4
  96. package/dist/init/topic-index/index.js.map +1 -1
  97. package/dist/init/topic-index/judge.js +14 -1
  98. package/dist/init/topic-index/judge.js.map +1 -1
  99. package/dist/init/topic-index/resolve.d.ts +19 -0
  100. package/dist/init/topic-index/resolve.js +100 -14
  101. package/dist/init/topic-index/resolve.js.map +1 -1
  102. package/dist/init/topic-index/walk.d.ts +32 -0
  103. package/dist/init/topic-index/walk.js +70 -4
  104. package/dist/init/topic-index/walk.js.map +1 -1
  105. package/dist/mcp/history/summarizer.js +5 -0
  106. package/dist/mcp/history/summarizer.js.map +1 -1
  107. package/dist/mcp/schemas.d.ts +48 -0
  108. package/dist/mcp/schemas.js +43 -0
  109. package/dist/mcp/schemas.js.map +1 -1
  110. package/dist/mcp/tools/index.d.ts +1 -1
  111. package/dist/mcp/tools/index.js +8 -0
  112. package/dist/mcp/tools/index.js.map +1 -1
  113. package/dist/mcp/tools/init-phases.js.map +1 -1
  114. package/dist/mcp/tools/propose-decision.d.ts +34 -0
  115. package/dist/mcp/tools/propose-decision.js +200 -0
  116. package/dist/mcp/tools/propose-decision.js.map +1 -0
  117. package/dist/mcp/tools/record-decision.js +5 -2
  118. package/dist/mcp/tools/record-decision.js.map +1 -1
  119. package/dist/mcp/tools/reject-candidate.d.ts +24 -0
  120. package/dist/mcp/tools/reject-candidate.js +71 -0
  121. package/dist/mcp/tools/reject-candidate.js.map +1 -0
  122. package/dist/mcp/tools/resolve-attention.js +7 -54
  123. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  124. package/dist/mcp/tools/search-candidates.d.ts +20 -0
  125. package/dist/mcp/tools/search-candidates.js +93 -0
  126. package/dist/mcp/tools/search-candidates.js.map +1 -0
  127. package/package.json +1 -1
  128. package/templates/attention-ui/app.js +40 -3
@@ -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,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,cAAkC;IAClC,WAA+B;IAC/B,qBAAqB;IACrB,oBAAwC;IACxC,uBAA2C;IAC3C,kBAAsC;IACtC,oBAAwC;IACxC,kBAAsC;IACtC,iBAAqC;IACrC,qCAAqC;IACrC,cAAkC;IAClC,iDAAiD;IACjD,cAAkC;IAClC,mBAAuC;IACvC,GAAI,cAAqC;CAC1C,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,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,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,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,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,kEAAkE;IAClE,oBAAoB;IACpB,QAAQ;IACR,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,mEAAmE;IACnE,mBAAmB;IACnB,mBAAmB;IACnB,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 +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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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `cairn_propose_decision` — promote a topic-index candidate (slug)
3
+ * into a DEC draft under `.cairn/ground/decisions/_inbox/`.
4
+ *
5
+ * Spec: PHASE_6_REDESIGN §4.6 / §5.4. The AI-curator path. Body is
6
+ * ALWAYS verbatim from `readSotBody` so the resulting draft's
7
+ * `sot_content_hash` matches the source paragraph the agent saw — no
8
+ * paraphrasing, no AI-generated prose. The drift sensor depends on
9
+ * this hash.
10
+ *
11
+ * Refusal modes (returned as `{ ok: false, reason: <kind> }`):
12
+ * - `not_found` — slug not present in the topic-index.
13
+ * - `rejected` — slug appears in `.cairn/ground/_rejected.yaml`.
14
+ * - `unreadable` — `readSotBody` returned null (anchor-map missing
15
+ * or the source file disappeared).
16
+ * - `drifted` — body hash no longer matches `entry.content_hash`.
17
+ * The operator (or another agent) edited the source
18
+ * paragraph after phase 5b walked it. Caller should
19
+ * re-run `cairn index` and re-evaluate.
20
+ *
21
+ * Idempotent: a slug that already has a `dec_id` returns
22
+ * `{ ok: true, dec_id, path, warning: "...already exists" }` rather
23
+ * than re-emitting. The locked "DO NOT enforce" wording goes back
24
+ * to the agent verbatim so it cannot accidentally cite the draft as
25
+ * accepted policy.
26
+ */
27
+ import type { ToolDef } from "./types.js";
28
+ interface Input {
29
+ slug: string;
30
+ title?: string;
31
+ kind?: "decision" | "rule";
32
+ }
33
+ export declare const proposeDecisionTool: ToolDef<Input>;
34
+ export {};
@@ -0,0 +1,200 @@
1
+ /**
2
+ * `cairn_propose_decision` — promote a topic-index candidate (slug)
3
+ * into a DEC draft under `.cairn/ground/decisions/_inbox/`.
4
+ *
5
+ * Spec: PHASE_6_REDESIGN §4.6 / §5.4. The AI-curator path. Body is
6
+ * ALWAYS verbatim from `readSotBody` so the resulting draft's
7
+ * `sot_content_hash` matches the source paragraph the agent saw — no
8
+ * paraphrasing, no AI-generated prose. The drift sensor depends on
9
+ * this hash.
10
+ *
11
+ * Refusal modes (returned as `{ ok: false, reason: <kind> }`):
12
+ * - `not_found` — slug not present in the topic-index.
13
+ * - `rejected` — slug appears in `.cairn/ground/_rejected.yaml`.
14
+ * - `unreadable` — `readSotBody` returned null (anchor-map missing
15
+ * or the source file disappeared).
16
+ * - `drifted` — body hash no longer matches `entry.content_hash`.
17
+ * The operator (or another agent) edited the source
18
+ * paragraph after phase 5b walked it. Caller should
19
+ * re-run `cairn index` and re-evaluate.
20
+ *
21
+ * Idempotent: a slug that already has a `dec_id` returns
22
+ * `{ ok: true, dec_id, path, warning: "...already exists" }` rather
23
+ * than re-emitting. The locked "DO NOT enforce" wording goes back
24
+ * to the agent verbatim so it cannot accidentally cite the draft as
25
+ * accepted policy.
26
+ */
27
+ import { mkdirSync, writeFileSync } from "node:fs";
28
+ import { join } from "node:path";
29
+ import { stringify as stringifyYaml } from "yaml";
30
+ import { bodyContentHash, decisionsDir, deriveDecId, readAnchorMap, readRejectedYaml, readTopicIndex, setTopic, writeFileCandidatesMap, writeTopicIndex, } from "../../ground/index.js";
31
+ import { scanExistingDecisionIds } from "../../decision-capture/index.js";
32
+ import { withWriteLock } from "../../lock.js";
33
+ import { readSotBody } from "../../init/sot-emit.js";
34
+ import { requireBootstrap } from "../bootstrap-guard.js";
35
+ import { proposeDecisionInput } from "../schemas.js";
36
+ const CAPTURE_SOURCE = "ai-proposed";
37
+ const DECIDED_BY = "ai-curator";
38
+ async function handler(ctx, input) {
39
+ const block = requireBootstrap(ctx.repoRoot);
40
+ if (block !== null)
41
+ return block;
42
+ return withWriteLock(ctx.repoRoot, () => {
43
+ const topicIndex = readTopicIndex(ctx.repoRoot);
44
+ const entry = topicIndex.topics[input.slug];
45
+ if (entry === undefined) {
46
+ return {
47
+ ok: false,
48
+ reason: "not_found",
49
+ detail: `slug "${input.slug}" not in topic-index`,
50
+ };
51
+ }
52
+ if (entry.dec_id !== undefined) {
53
+ return {
54
+ ok: true,
55
+ dec_id: entry.dec_id,
56
+ path: relativeInboxPath(entry.dec_id, ctx.repoRoot),
57
+ warning: `DEC draft already exists for slug ${input.slug}; returning existing id ${entry.dec_id}.`,
58
+ };
59
+ }
60
+ const rejected = readRejectedYaml(ctx.repoRoot);
61
+ const reject = rejected.get(input.slug);
62
+ if (reject !== undefined) {
63
+ return {
64
+ ok: false,
65
+ reason: "rejected",
66
+ detail: reject.reason,
67
+ };
68
+ }
69
+ const anchorMap = readAnchorMap(ctx.repoRoot);
70
+ const body = readSotBody(ctx.repoRoot, entry, anchorMap);
71
+ if (body === null) {
72
+ return {
73
+ ok: false,
74
+ reason: "unreadable",
75
+ detail: "anchor-map missing or source body unreadable",
76
+ };
77
+ }
78
+ // Drift check — the topic-index records the body hash phase 5b
79
+ // saw. If the operator (or another agent) has since edited the
80
+ // paragraph, the AI may be promoting outdated content. Surface it
81
+ // and bounce the caller; correct path is `cairn index` then retry.
82
+ if (entry.content_hash !== undefined) {
83
+ const currentHash = bodyContentHash(body);
84
+ if (currentHash !== entry.content_hash) {
85
+ return {
86
+ ok: false,
87
+ reason: "drifted",
88
+ detail: "Source file modified since index build. Run 'cairn index' to refresh, then retry.",
89
+ };
90
+ }
91
+ }
92
+ const titleSeed = input.title !== undefined && input.title.trim().length > 0
93
+ ? input.title.trim()
94
+ : firstLineFallback(body);
95
+ const sotPath = entryToSotPath(entry);
96
+ const existingIds = scanExistingDecisionIds(ctx.repoRoot);
97
+ const decId = allocateUniqueDecId({ sot_path: sotPath, title: titleSeed, capture_source: CAPTURE_SOURCE }, existingIds);
98
+ writeDraftToInbox({
99
+ repoRoot: ctx.repoRoot,
100
+ id: decId,
101
+ title: titleSeed,
102
+ body,
103
+ sot_path: sotPath,
104
+ source_file: entry.sot_source,
105
+ });
106
+ const updatedTopicIndex = setTopic(topicIndex, input.slug, {
107
+ ...entry,
108
+ dec_id: decId,
109
+ });
110
+ writeTopicIndex(ctx.repoRoot, updatedTopicIndex);
111
+ // Refresh the per-file candidate count map so the read-enrich
112
+ // hint reflects the post-promote state next time the agent reads
113
+ // the file.
114
+ writeFileCandidatesMap(ctx.repoRoot, updatedTopicIndex);
115
+ return {
116
+ ok: true,
117
+ dec_id: decId,
118
+ path: relativeInboxPath(decId, ctx.repoRoot),
119
+ warning: `Created draft from slug ${input.slug}. Status=draft, pending operator review via cairn-attention. ` +
120
+ `DO NOT enforce this rule yet — proposal only. You MAY cite as "proposed (${decId}, draft)".`,
121
+ };
122
+ });
123
+ }
124
+ function writeDraftToInbox(args) {
125
+ const inboxDir = join(decisionsDir(args.repoRoot), "_inbox");
126
+ mkdirSync(inboxDir, { recursive: true });
127
+ const abs = join(inboxDir, `${args.id}.draft.md`);
128
+ const now = new Date().toISOString();
129
+ const fm = {
130
+ id: args.id,
131
+ title: args.title,
132
+ type: "adr",
133
+ status: "draft",
134
+ audience: "dual",
135
+ generated: now,
136
+ "verified-at": now,
137
+ decided_at: now,
138
+ decided_by: DECIDED_BY,
139
+ sot_kind: "path",
140
+ sot_path: args.sot_path,
141
+ sot_content_hash: bodyContentHash(args.body),
142
+ capture_source: CAPTURE_SOURCE,
143
+ source_file: args.source_file,
144
+ };
145
+ const out = [];
146
+ out.push("---");
147
+ out.push(stringifyYaml(fm).trimEnd());
148
+ out.push("---");
149
+ out.push("");
150
+ out.push(args.body.trimEnd());
151
+ out.push("");
152
+ writeFileSync(abs, out.join("\n"), "utf8");
153
+ return abs;
154
+ }
155
+ function relativeInboxPath(id, _repoRoot) {
156
+ // Project-relative path so callers can hand it straight to Read or
157
+ // `cairn_decision_get` without prefix juggling.
158
+ return `.cairn/ground/decisions/_inbox/${id}.draft.md`;
159
+ }
160
+ function entryToSotPath(entry) {
161
+ const sot = entry.candidates.find((c) => c.file === entry.sot_source);
162
+ if (sot === undefined)
163
+ return entry.sot_source;
164
+ if (sot.anchor !== undefined && sot.anchor.length > 0) {
165
+ return `${entry.sot_source}#${sot.anchor}`;
166
+ }
167
+ return entry.sot_source;
168
+ }
169
+ function firstLineFallback(body) {
170
+ const first = body.split("\n").find((l) => l.trim().length > 0) ?? "";
171
+ return first.replace(/^#+\s*/, "").trim().slice(0, 120) || "(untitled)";
172
+ }
173
+ /**
174
+ * Mirrors `phase 6`'s id allocator: derive a content-stable id, fall
175
+ * back to `<title> #N` suffixing on the (vanishingly rare) collision
176
+ * against an existing on-disk DEC.
177
+ */
178
+ function allocateUniqueDecId(input, existingIds) {
179
+ const id = deriveDecId(input);
180
+ if (!existingIds.has(id)) {
181
+ existingIds.add(id);
182
+ return id;
183
+ }
184
+ for (let suffix = 2; suffix < 1_000; suffix += 1) {
185
+ const tagged = deriveDecId({ ...input, title: `${input.title} #${suffix}` });
186
+ if (!existingIds.has(tagged)) {
187
+ existingIds.add(tagged);
188
+ return tagged;
189
+ }
190
+ }
191
+ existingIds.add(id);
192
+ return id;
193
+ }
194
+ export const proposeDecisionTool = {
195
+ name: "cairn_propose_decision",
196
+ description: "Promote a topic-index candidate (slug) to a DEC draft in `_inbox/`. Body is verbatim via readSotBody; AI may only supply a title. Refuses on rejected, drifted, or unreadable slugs. Returns a locked 'DO NOT enforce — proposal only' warning so the draft is never miscited as accepted policy.",
197
+ inputSchema: proposeDecisionInput,
198
+ handler,
199
+ };
200
+ //# sourceMappingURL=propose-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propose-decision.js","sourceRoot":"","sources":["../../../src/mcp/tools/propose-decision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,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;AAClD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,sBAAsB,EACtB,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AASrD,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,UAAU,GAAG,YAAY,CAAC;AAWhC,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;IAEjC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,SAAS,KAAK,CAAC,IAAI,sBAAsB;aAClB,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACnD,OAAO,EAAE,qCAAqC,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,MAAM,GAAG;aACnE,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM;aACU,CAAC;QACpC,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,8CAA8C;aACvB,CAAC;QACpC,CAAC;QAED,+DAA+D;QAC/D,+DAA+D;QAC/D,kEAAkE;QAClE,mEAAmE;QACnE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,WAAW,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,SAAS;oBACjB,MAAM,EACJ,mFAAmF;iBACtD,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAC1E,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YACpB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,mBAAmB,CAC/B,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,EACvE,WAAW,CACZ,CAAC;QAEF,iBAAiB,CAAC;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,SAAS;YAChB,IAAI;YACJ,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,KAAK,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE;YACzD,GAAG,KAAK;YACR,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACjD,8DAA8D;QAC9D,iEAAiE;QACjE,YAAY;QACZ,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAExD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;YAC5C,OAAO,EACL,2BAA2B,KAAK,CAAC,IAAI,+DAA+D;gBACpG,4EAA4E,KAAK,YAAY;SAChE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAWD,SAAS,iBAAiB,CAAC,IAAoB;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,EAAE,GAA4B;QAClC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,GAAG;QACd,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IACF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU,EAAE,SAAiB;IACtD,mEAAmE;IACnE,gDAAgD;IAChD,OAAO,kCAAkC,EAAE,WAAW,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;IACtE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;IAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,UAAU,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,KAAkE,EAClE,WAAwB;IAExB,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,mSAAmS;IACrS,WAAW,EAAE,oBAAoB;IACjC,OAAO;CACR,CAAC"}
@@ -3,7 +3,7 @@ import { join } from "node:path";
3
3
  import { stringify as stringifyYaml } from "yaml";
4
4
  import { computeDecisionId, scanExistingDecisionIds, } from "../../decision-capture/index.js";
5
5
  import { writeInvalidationEvent } from "../../events/index.js";
6
- import { decisionsDir } from "../../ground/index.js";
6
+ import { bodyContentHash, decisionsDir } from "../../ground/index.js";
7
7
  import { DecisionAssertion } from "../../ground/index.js";
8
8
  import { withWriteLock } from "../../lock.js";
9
9
  import { requireBootstrap } from "../bootstrap-guard.js";
@@ -58,6 +58,7 @@ async function handler(ctx, input) {
58
58
  const target = input.target ?? "inbox";
59
59
  const outDir = target === "accepted" ? dir : inboxDir;
60
60
  mkdirSync(outDir, { recursive: true });
61
+ const body = input.body_markdown ?? `# ${id} — ${input.title}\n\n## Summary\n\n${input.summary}\n`;
61
62
  const frontmatter = {
62
63
  id,
63
64
  title: input.title,
@@ -68,13 +69,15 @@ async function handler(ctx, input) {
68
69
  "verified-at": new Date().toISOString(),
69
70
  decided_at: new Date().toISOString().slice(0, 10),
70
71
  scope_globs: input.scope_globs,
72
+ sot_kind: "ledger",
73
+ sot_path: "ledger",
74
+ sot_content_hash: bodyContentHash(body),
71
75
  ...(input.supersedes !== undefined ? { supersedes: input.supersedes } : {}),
72
76
  ...(input.assertions !== undefined ? { assertions: input.assertions } : {}),
73
77
  ...(input.human_review_hint !== undefined
74
78
  ? { human_review_hint: input.human_review_hint }
75
79
  : {}),
76
80
  };
77
- const body = input.body_markdown ?? `# ${id} — ${input.title}\n\n## Summary\n\n${input.summary}\n`;
78
81
  const filename = target === "accepted" ? `${id}.md` : `${id}.draft.md`;
79
82
  const path = join(outDir, filename);
80
83
  const content = `---\n${stringifyYaml(frontmatter)}---\n\n${body}`;
@@ -1 +1 @@
1
- {"version":3,"file":"record-decision.js","sourceRoot":"","sources":["../../../src/mcp/tools/record-decision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-decision.js","sourceRoot":"","sources":["../../../src/mcp/tools/record-decision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `cairn_reject_candidate` — append a topic-index slug to
3
+ * `.cairn/ground/_rejected.yaml` so phase 6 / `cairn ingest` /
4
+ * `cairn_propose_decision` skip it on the next pass.
5
+ *
6
+ * Spec: PHASE_6_REDESIGN §4.6. Dedup by slug — first writer wins the
7
+ * `reason` string; subsequent writes only refresh `rejected_at`. The
8
+ * AI-curator path stamps `rejected_by: "ai-curator"`; operator-driven
9
+ * rejections (`cairn-attention` skill) reuse the same writer with
10
+ * `rejected_by: "operator"`.
11
+ *
12
+ * Refusal modes:
13
+ * - `not_found` — slug not present in the topic-index. We refuse so
14
+ * stale agent calls can't poison the rejection
15
+ * ledger with phantom slugs that the GC pass would
16
+ * immediately drop.
17
+ */
18
+ import type { ToolDef } from "./types.js";
19
+ interface Input {
20
+ slug: string;
21
+ reason: string;
22
+ }
23
+ export declare const rejectCandidateTool: ToolDef<Input>;
24
+ export {};
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `cairn_reject_candidate` — append a topic-index slug to
3
+ * `.cairn/ground/_rejected.yaml` so phase 6 / `cairn ingest` /
4
+ * `cairn_propose_decision` skip it on the next pass.
5
+ *
6
+ * Spec: PHASE_6_REDESIGN §4.6. Dedup by slug — first writer wins the
7
+ * `reason` string; subsequent writes only refresh `rejected_at`. The
8
+ * AI-curator path stamps `rejected_by: "ai-curator"`; operator-driven
9
+ * rejections (`cairn-attention` skill) reuse the same writer with
10
+ * `rejected_by: "operator"`.
11
+ *
12
+ * Refusal modes:
13
+ * - `not_found` — slug not present in the topic-index. We refuse so
14
+ * stale agent calls can't poison the rejection
15
+ * ledger with phantom slugs that the GC pass would
16
+ * immediately drop.
17
+ */
18
+ import { appendRejected, readRejectedYaml, readTopicIndex, writeRejectedYaml, } from "../../ground/index.js";
19
+ import { withWriteLock } from "../../lock.js";
20
+ import { requireBootstrap } from "../bootstrap-guard.js";
21
+ import { rejectCandidateInput } from "../schemas.js";
22
+ const REJECTED_BY = "ai-curator";
23
+ async function handler(ctx, input) {
24
+ const block = requireBootstrap(ctx.repoRoot);
25
+ if (block !== null)
26
+ return block;
27
+ return withWriteLock(ctx.repoRoot, () => {
28
+ const topicIndex = readTopicIndex(ctx.repoRoot);
29
+ const entry = topicIndex.topics[input.slug];
30
+ if (entry === undefined) {
31
+ return {
32
+ ok: false,
33
+ reason: "not_found",
34
+ detail: `slug "${input.slug}" not in topic-index`,
35
+ };
36
+ }
37
+ const sot = entry.candidates.find((c) => c.file === entry.sot_source);
38
+ const now = new Date().toISOString();
39
+ const record = {
40
+ slug: input.slug,
41
+ rejected_at: now,
42
+ rejected_by: REJECTED_BY,
43
+ reason: input.reason,
44
+ sot_source: entry.sot_source,
45
+ ...(sot?.line_range !== undefined ? { line_range: sot.line_range } : {}),
46
+ };
47
+ const current = readRejectedYaml(ctx.repoRoot);
48
+ const existing = current.get(input.slug);
49
+ const next = appendRejected(current, record);
50
+ writeRejectedYaml(ctx.repoRoot, next);
51
+ if (existing !== undefined) {
52
+ return {
53
+ ok: true,
54
+ slug: input.slug,
55
+ warning: `Slug ${input.slug} was already rejected by ${existing.rejected_by} (${existing.reason}). ` +
56
+ `Refreshed rejected_at; original reason preserved.`,
57
+ };
58
+ }
59
+ return {
60
+ ok: true,
61
+ slug: input.slug,
62
+ };
63
+ });
64
+ }
65
+ export const rejectCandidateTool = {
66
+ name: "cairn_reject_candidate",
67
+ description: "Mark a topic-index slug as not-a-decision in `.cairn/ground/_rejected.yaml`. Phase 6 / cairn ingest / cairn_propose_decision skip rejected slugs. Dedup by slug; first writer wins the reason string. Use when the candidate is research, narrative, plan, status, or otherwise not a binding rule.",
68
+ inputSchema: rejectCandidateInput,
69
+ handler,
70
+ };
71
+ //# sourceMappingURL=reject-candidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reject-candidate.js","sourceRoot":"","sources":["../../../src/mcp/tools/reject-candidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAgBrD,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,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;IAEjC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,SAAS,KAAK,CAAC,IAAI,sBAAsB;aAClB,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,GAAG;YAChB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;QAEF,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EACL,QAAQ,KAAK,CAAC,IAAI,4BAA4B,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,MAAM,KAAK;oBAC3F,mDAAmD;aACtB,CAAC;QACpC,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;SACe,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,qSAAqS;IACvS,WAAW,EAAE,oBAAoB;IACjC,OAAO;CACR,CAAC"}
@@ -22,11 +22,12 @@
22
22
  */
23
23
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
24
24
  import { dirname, join } from "node:path";
25
+ import { writeFileSafe } from "../../fs.js";
25
26
  import { createHash } from "node:crypto";
26
- import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
27
+ import { stringify as stringifyYaml } from "yaml";
27
28
  import { parseDraftMeta, restoreDec, runDecSourceStrip, } from "../../attention/index.js";
28
29
  import { writeInvalidationEvent } from "../../events/index.js";
29
- import { alignmentPendingDir, archivedConflictsDir, bindDec, bodyContentHash, conflictsDir, decisionsDir, deleteSotCacheEntry, deriveLedgerDecId, deriveLedgerInvId, emptySotBindings, emptySotCache, invariantsDir, readSotBindings, readSotCache, recordDriftEvent, setSotCacheEntry, unbindDec, writeSotBindings, writeSotCache, } from "../../ground/index.js";
30
+ import { alignmentPendingDir, archivedConflictsDir, bindDec, bodyContentHash, conflictsDir, decisionsDir, deleteSotCacheEntry, deriveLedgerDecId, deriveLedgerInvId, invariantsDir, parseFrontmatterRecord, readSotBindings, readSotCache, recordDriftEvent, setSotCacheEntry, unbindDec, writeSotBindings, writeSotCache, } from "../../ground/index.js";
30
31
  import { tokenize } from "../../text/jaccard.js";
31
32
  import { applyStripReplace, formatBareCitation, } from "../../init/source-comments/index.js";
32
33
  import { writeDecisionsLedger, writeInvariantsLedger } from "../../ground/ledgers.js";
@@ -323,20 +324,7 @@ function parseConflictFile(repoRoot, itemId) {
323
324
  catch {
324
325
  return null;
325
326
  }
326
- const fmMatch = raw.match(/^---\n([\s\S]*?)\n---\n?/);
327
- let fm = {};
328
- if (fmMatch !== null && fmMatch[1] !== undefined) {
329
- try {
330
- const parsed = parseYaml(fmMatch[1]);
331
- if (typeof parsed === "object" && parsed !== null) {
332
- fm = parsed;
333
- }
334
- }
335
- catch {
336
- /* best-effort */
337
- }
338
- }
339
- const body = fmMatch !== null ? raw.slice(fmMatch[0].length) : raw;
327
+ const { fm, body } = parseFrontmatterRecord(raw);
340
328
  const aId = String(fm["a_id"] ?? itemId.split("__")[0] ?? "");
341
329
  const bId = String(fm["b_id"] ?? itemId.split("__")[1] ?? "");
342
330
  if (!CONFLICT_ID_RE.test(aId) || !CONFLICT_ID_RE.test(bId))
@@ -361,20 +349,7 @@ function readEntity(ref) {
361
349
  catch {
362
350
  return null;
363
351
  }
364
- const fmMatch = raw.match(/^---\n([\s\S]*?)\n---\n?/);
365
- let fm = {};
366
- if (fmMatch !== null && fmMatch[1] !== undefined) {
367
- try {
368
- const parsed = parseYaml(fmMatch[1]);
369
- if (typeof parsed === "object" && parsed !== null) {
370
- fm = parsed;
371
- }
372
- }
373
- catch {
374
- /* best-effort */
375
- }
376
- }
377
- const body = fmMatch !== null ? raw.slice(fmMatch[0].length) : raw;
352
+ const { fm, body } = parseFrontmatterRecord(raw);
378
353
  return { fm, body, raw };
379
354
  }
380
355
  function writeEntity(ref, fm, body) {
@@ -516,8 +491,6 @@ function cleanLosersFromSotState(repoRoot, losers) {
516
491
  */
517
492
  function bindAndCacheMergedEntity(repoRoot, mergedId, mergedBody) {
518
493
  let bindings = readSotBindings(repoRoot);
519
- if (Object.keys(bindings.forward).length === 0)
520
- bindings = emptySotBindings();
521
494
  bindings = bindDec(bindings, mergedId, "ledger");
522
495
  try {
523
496
  writeSotBindings(repoRoot, bindings);
@@ -526,8 +499,6 @@ function bindAndCacheMergedEntity(repoRoot, mergedId, mergedBody) {
526
499
  log.warn({ err: err instanceof Error ? err.message : String(err) }, "sot-bindings rewrite failed for merged entity");
527
500
  }
528
501
  let cache = readSotCache(repoRoot);
529
- if (Object.keys(cache.entries).length === 0)
530
- cache = emptySotCache();
531
502
  cache = setSotCacheEntry(cache, mergedId, {
532
503
  dec_id: mergedId,
533
504
  sot_path: "ledger",
@@ -556,20 +527,7 @@ function loadAlignmentPending(repoRoot, itemId) {
556
527
  catch {
557
528
  return null;
558
529
  }
559
- const fmMatch = raw.match(/^---\n([\s\S]*?)\n---\n?/);
560
- let fm = {};
561
- if (fmMatch !== null && fmMatch[1] !== undefined) {
562
- try {
563
- const parsed = parseYaml(fmMatch[1]);
564
- if (typeof parsed === "object" && parsed !== null) {
565
- fm = parsed;
566
- }
567
- }
568
- catch {
569
- /* best-effort */
570
- }
571
- }
572
- const body = fmMatch !== null ? raw.slice(fmMatch[0].length) : raw;
530
+ const { fm, body } = parseFrontmatterRecord(raw);
573
531
  // Block prose lives between the first ```/``` fence pair under the
574
532
  // "## Block ..." heading. Pick the first fenced block.
575
533
  const blockMatch = body.match(/##\s+Block[^\n]*\n+```\n([\s\S]*?)\n```/);
@@ -834,13 +792,9 @@ function emitFreshDec(repoRoot, args) {
834
792
  mkdirSync(dir, { recursive: true });
835
793
  writeFileSync(abs, `---\n${stringifyYaml(fm).trimEnd()}\n---\n\n${trimmed}\n`, "utf8");
836
794
  let bindings = readSotBindings(repoRoot);
837
- if (Object.keys(bindings.forward).length === 0)
838
- bindings = emptySotBindings();
839
795
  bindings = bindDec(bindings, id, "ledger");
840
796
  writeSotBindings(repoRoot, bindings);
841
797
  let cache = readSotCache(repoRoot);
842
- if (Object.keys(cache.entries).length === 0)
843
- cache = emptySotCache();
844
798
  cache = setSotCacheEntry(cache, id, {
845
799
  dec_id: id,
846
800
  sot_path: "ledger",
@@ -1058,8 +1012,7 @@ function mergeConflict(repoRoot, conflict, rationale) {
1058
1012
  mergedFm["decided_at"] = now;
1059
1013
  mergedFm["decided_by"] = "cairn-conflict-merge";
1060
1014
  }
1061
- mkdirSync(dirname(mergedAbs), { recursive: true });
1062
- writeFileSync(mergedAbs, `---\n${stringifyYaml(mergedFm).trimEnd()}\n---\n${mergedBody}`, "utf8");
1015
+ writeFileSafe(mergedAbs, `---\n${stringifyYaml(mergedFm).trimEnd()}\n---\n${mergedBody}`);
1063
1016
  // Both old entries get superseded_by → new merged id.
1064
1017
  setSupersededBy(repoRoot, conflict.aRef, mergedId, "superseded");
1065
1018
  setSupersededBy(repoRoot, conflict.bRef, mergedId, "superseded");