@reposkein/mcp 0.2.7 → 0.4.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 (140) hide show
  1. package/README.md +73 -1
  2. package/binary-digests.json +4 -4
  3. package/dist/SKILL.md +63 -1
  4. package/dist/cli/adr.d.ts +37 -0
  5. package/dist/cli/adr.js +231 -0
  6. package/dist/cli/adr.js.map +1 -0
  7. package/dist/cli/agentAdapters.d.ts +68 -0
  8. package/dist/cli/agentAdapters.js +223 -0
  9. package/dist/cli/agentAdapters.js.map +1 -0
  10. package/dist/cli/ansi.d.ts +24 -0
  11. package/dist/cli/ansi.js +40 -0
  12. package/dist/cli/ansi.js.map +1 -0
  13. package/dist/cli/doctor.d.ts +34 -2
  14. package/dist/cli/doctor.js +53 -5
  15. package/dist/cli/doctor.js.map +1 -1
  16. package/dist/cli/doctorDecisions.d.ts +5 -0
  17. package/dist/cli/doctorDecisions.js +83 -0
  18. package/dist/cli/doctorDecisions.js.map +1 -0
  19. package/dist/cli/doctorFreshness.d.ts +43 -0
  20. package/dist/cli/doctorFreshness.js +111 -0
  21. package/dist/cli/doctorFreshness.js.map +1 -0
  22. package/dist/cli/doctorSummaries.d.ts +2 -0
  23. package/dist/cli/doctorSummaries.js +95 -0
  24. package/dist/cli/doctorSummaries.js.map +1 -0
  25. package/dist/cli/federatedDiscovery.d.ts +16 -0
  26. package/dist/cli/federatedDiscovery.js +75 -0
  27. package/dist/cli/federatedDiscovery.js.map +1 -0
  28. package/dist/cli/init.d.ts +69 -6
  29. package/dist/cli/init.js +194 -28
  30. package/dist/cli/init.js.map +1 -1
  31. package/dist/cli/sourceSlices.d.ts +17 -0
  32. package/dist/cli/sourceSlices.js +59 -0
  33. package/dist/cli/sourceSlices.js.map +1 -0
  34. package/dist/cli/stats.d.ts +29 -0
  35. package/dist/cli/stats.js +180 -0
  36. package/dist/cli/stats.js.map +1 -0
  37. package/dist/cli/view.d.ts +71 -3
  38. package/dist/cli/view.js +147 -12
  39. package/dist/cli/view.js.map +1 -1
  40. package/dist/guard/decisionValidation.d.ts +29 -0
  41. package/dist/guard/decisionValidation.js +51 -0
  42. package/dist/guard/decisionValidation.js.map +1 -0
  43. package/dist/guard/summaryValidation.d.ts +3 -0
  44. package/dist/guard/summaryValidation.js +5 -3
  45. package/dist/guard/summaryValidation.js.map +1 -1
  46. package/dist/index.d.ts +48 -0
  47. package/dist/index.js +355 -78
  48. package/dist/index.js.map +1 -1
  49. package/dist/indexer/decisionsAffected.d.ts +42 -0
  50. package/dist/indexer/decisionsAffected.js +149 -0
  51. package/dist/indexer/decisionsAffected.js.map +1 -0
  52. package/dist/indexer/fetchBinary.d.ts +14 -0
  53. package/dist/indexer/fetchBinary.js +81 -40
  54. package/dist/indexer/fetchBinary.js.map +1 -1
  55. package/dist/indexer/runIndexer.d.ts +3 -2
  56. package/dist/indexer/runIndexer.js +8 -4
  57. package/dist/indexer/runIndexer.js.map +1 -1
  58. package/dist/profile/decisions.d.ts +37 -0
  59. package/dist/profile/decisions.js +112 -0
  60. package/dist/profile/decisions.js.map +1 -0
  61. package/dist/profile/types.d.ts +8 -0
  62. package/dist/store/GraphStore.d.ts +5 -0
  63. package/dist/store/JsonlGraphStore.d.ts +14 -3
  64. package/dist/store/JsonlGraphStore.js +66 -19
  65. package/dist/store/JsonlGraphStore.js.map +1 -1
  66. package/dist/store/decisions.d.ts +131 -0
  67. package/dist/store/decisions.js +321 -0
  68. package/dist/store/decisions.js.map +1 -0
  69. package/dist/store/indexedAt.d.ts +18 -0
  70. package/dist/store/indexedAt.js +56 -0
  71. package/dist/store/indexedAt.js.map +1 -0
  72. package/dist/store/instrumentTool.d.ts +40 -0
  73. package/dist/store/instrumentTool.js +82 -0
  74. package/dist/store/instrumentTool.js.map +1 -0
  75. package/dist/store/repoContextCache.d.ts +15 -0
  76. package/dist/store/repoContextCache.js +26 -0
  77. package/dist/store/repoContextCache.js.map +1 -0
  78. package/dist/store/repoSession.d.ts +63 -0
  79. package/dist/store/repoSession.js +123 -0
  80. package/dist/store/repoSession.js.map +1 -0
  81. package/dist/store/resolveRepoPath.d.ts +31 -0
  82. package/dist/store/resolveRepoPath.js +85 -0
  83. package/dist/store/resolveRepoPath.js.map +1 -0
  84. package/dist/store/sessionLog.d.ts +98 -0
  85. package/dist/store/sessionLog.js +216 -0
  86. package/dist/store/sessionLog.js.map +1 -0
  87. package/dist/store/sessionStats.d.ts +55 -0
  88. package/dist/store/sessionStats.js +140 -0
  89. package/dist/store/sessionStats.js.map +1 -0
  90. package/dist/store/sidecar.d.ts +39 -3
  91. package/dist/store/sidecar.js +89 -5
  92. package/dist/store/sidecar.js.map +1 -1
  93. package/dist/store/summaryShards.d.ts +117 -0
  94. package/dist/store/summaryShards.js +291 -0
  95. package/dist/store/summaryShards.js.map +1 -0
  96. package/dist/store/teamConfig.d.ts +13 -0
  97. package/dist/store/teamConfig.js +49 -0
  98. package/dist/store/teamConfig.js.map +1 -0
  99. package/dist/tools/getContextProfile.d.ts +1 -1
  100. package/dist/tools/getContextProfile.js +9 -1
  101. package/dist/tools/getContextProfile.js.map +1 -1
  102. package/dist/tools/getDecision.d.ts +6 -0
  103. package/dist/tools/getDecision.js +59 -0
  104. package/dist/tools/getDecision.js.map +1 -0
  105. package/dist/tools/impact.d.ts +1 -1
  106. package/dist/tools/impact.js +13 -1
  107. package/dist/tools/impact.js.map +1 -1
  108. package/dist/tools/indexerTools.d.ts +16 -2
  109. package/dist/tools/indexerTools.js +44 -5
  110. package/dist/tools/indexerTools.js.map +1 -1
  111. package/dist/tools/listDecisions.d.ts +19 -0
  112. package/dist/tools/listDecisions.js +93 -0
  113. package/dist/tools/listDecisions.js.map +1 -0
  114. package/dist/tools/reaffirmDecision.d.ts +11 -0
  115. package/dist/tools/reaffirmDecision.js +55 -0
  116. package/dist/tools/reaffirmDecision.js.map +1 -0
  117. package/dist/tools/recordDecision.d.ts +24 -0
  118. package/dist/tools/recordDecision.js +135 -0
  119. package/dist/tools/recordDecision.js.map +1 -0
  120. package/dist/tools/semanticFind.d.ts +9 -2
  121. package/dist/tools/semanticFind.js +44 -2
  122. package/dist/tools/semanticFind.js.map +1 -1
  123. package/dist/tools/setDecisionStatus.d.ts +8 -0
  124. package/dist/tools/setDecisionStatus.js +34 -0
  125. package/dist/tools/setDecisionStatus.js.map +1 -0
  126. package/dist/viz/assets/{graph.worker-CC7BeE-8.js → graph.worker-DkH6-lMU.js} +1 -1
  127. package/dist/viz/assets/index-CxqeGuRS.css +1 -0
  128. package/dist/viz/assets/index-DiNZyrXx.js +9 -0
  129. package/dist/viz/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  130. package/dist/viz/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  131. package/dist/viz/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
  132. package/dist/viz/assets/r3f-BZY3QR6_.js +336 -0
  133. package/dist/viz/assets/tanstack-CjXr-L-s.js +62 -0
  134. package/dist/viz/assets/three-Cpu5RUEM.js +4116 -0
  135. package/dist/viz/index.html +5 -4
  136. package/package.json +5 -4
  137. package/dist/viz/assets/index-C_8UkiJ8.js +0 -9
  138. package/dist/viz/assets/r3f-Cku1OhB-.js +0 -277
  139. package/dist/viz/assets/tanstack-DyXcNRWk.js +0 -77
  140. package/dist/viz/assets/three-Z8XaLGmf.js +0 -3839
@@ -32,6 +32,9 @@ export interface ProfileTarget {
32
32
  summary: string | null;
33
33
  stale: boolean;
34
34
  repo_id?: string;
35
+ /** ADRs governing this node (max 5) — see profile/decisions.ts. Absent when
36
+ * the repo has no decisions touching it. */
37
+ decisions?: import("./decisions.js").GoverningDecision[];
35
38
  }
36
39
  export interface ContextProfile {
37
40
  target: ProfileTarget;
@@ -39,6 +42,11 @@ export interface ContextProfile {
39
42
  downstream: NeighborEntry[];
40
43
  inlined_context: string;
41
44
  enrichment_needed: string[];
45
+ /** Accepted decisions whose anchor on the target went stale. Deliberately
46
+ * NOT folded into enrichment_needed — that field's contract is node ids
47
+ * fed to write_semantic_summary. Re-read these and conform / supersede /
48
+ * reaffirm instead. */
49
+ decisions_needing_review?: string[];
42
50
  truncated?: {
43
51
  upstream: boolean;
44
52
  downstream: boolean;
@@ -67,6 +67,11 @@ export interface GraphStore {
67
67
  /** Function/Class/Interface/Enum corpus nodes for all repoIds, sorted by id.
68
68
  * Used by the shared BM25F scorer for semantic_find. */
69
69
  searchCorpus(repoIds: string[]): Promise<CorpusNode[]>;
70
+ /** Optional: live nodes whose content_hash equals hash, ordered by id.
71
+ * Used by decision-anchor recovery ("moved" state) — the recorded hash is
72
+ * the only signal that survives a rename. Stores that don't implement it
73
+ * degrade those anchors to "orphaned". */
74
+ findByContentHash?(repoIds: string[], hash: string): Promise<TargetRow[]>;
70
75
  /** Raw read-only Cypher (read_cypher tool only). Stores without a Cypher
71
76
  * engine throw CypherUnsupportedError. */
72
77
  runRead(query: string, params?: Record<string, unknown>, opts?: {
@@ -8,11 +8,12 @@ import type { TargetRow } from "../profile/types.js";
8
8
  *
9
9
  * Reloads when either ROOT JSONL file's mtime changes (v1: a child-only
10
10
  * change without a root change won't trigger reload — acceptable).
11
- * writeSummary persists to the durable sidecar (.reposkein/local/summaries.jsonl). */
11
+ * writeSummary persists to this agent's durable sidecar
12
+ * (.reposkein/local/summaries-<agent>.jsonl). */
12
13
  export declare class JsonlGraphStore implements GraphStore {
13
14
  private readonly repoId;
14
15
  private graph;
15
- private mtime;
16
+ private stamp;
16
17
  private readonly repoPath;
17
18
  private readonly nodesPath;
18
19
  private readonly edgesPath;
@@ -22,9 +23,19 @@ export declare class JsonlGraphStore implements GraphStore {
22
23
  * children (guarded, cycle-safe). Each child's repo_id comes from the proxy
23
24
  * Repository node's federated_repo_id in the parent's nodes.jsonl. */
24
25
  private collectRepos;
25
- /** Reloads the graph if either ROOT file's mtime changed since last load. */
26
+ /** Reloads the graph when anything it reads has changed on disk.
27
+ *
28
+ * The key covers the derived JSONL, the committed summary shards, AND every
29
+ * agent's sidecar. Keying on nodes/edges alone made a `git pull` that
30
+ * brought in only a teammate's shards invisible for the life of the process
31
+ * — the shards are committed and the derived graph is not, so that is the
32
+ * ordinary case. Leaving the sidecars out did the same to a second agent
33
+ * working the same checkout, which the overlay explicitly promises to
34
+ * surface. Stat calls only, O(shards + sidecars). */
35
+ private freshnessKey;
26
36
  private ensureFresh;
27
37
  getNode(repoIds: string[], id: string): Promise<TargetRow | null>;
38
+ findByContentHash(repoIds: string[], hash: string): Promise<TargetRow[]>;
28
39
  resolveByPathAndName(repoIds: string[], filePath: string, name: string): Promise<TargetRow[]>;
29
40
  resolveByName(repoIds: string[], name: string): Promise<TargetRow[]>;
30
41
  callers(repoIds: string[], id: string, limit: number): Promise<NeighborRow[]>;
@@ -2,7 +2,8 @@ import { statSync, readFileSync, existsSync } from "node:fs";
2
2
  import { join, resolve, isAbsolute, sep } from "node:path";
3
3
  import { CypherUnsupportedError, } from "./GraphStore.js";
4
4
  import { buildFederatedGraph, emptyGraph, } from "./jsonlGraph.js";
5
- import { readSidecar, upsertSidecar, sidecarPath } from "./sidecar.js";
5
+ import { loadAllSidecars, sidecarPaths, sidecarPath, upsertSidecar } from "./sidecar.js";
6
+ import { absorbSummarySource, emptyAccumulator, loadSummaryShards, recordSummaryConflicts, summaryShardsStamp, } from "./summaryShards.js";
6
7
  function str(v) {
7
8
  return typeof v === "string" ? v : null;
8
9
  }
@@ -29,7 +30,8 @@ function toTargetRow(n) {
29
30
  repo_id: n.repoId,
30
31
  name,
31
32
  qualified_name: str(n.props.qualified_name) ?? name,
32
- file_path: str(n.props.file_path) ?? "",
33
+ // File/Directory nodes carry `path` instead of `file_path`.
34
+ file_path: str(n.props.file_path) ?? str(n.props.path) ?? "",
33
35
  start_line: num(n.props.start_line),
34
36
  end_line: num(n.props.end_line),
35
37
  semantic_summary: str(n.props.semantic_summary),
@@ -66,11 +68,12 @@ const hasLabel = (n, l) => n.labels.includes(l);
66
68
  *
67
69
  * Reloads when either ROOT JSONL file's mtime changes (v1: a child-only
68
70
  * change without a root change won't trigger reload — acceptable).
69
- * writeSummary persists to the durable sidecar (.reposkein/local/summaries.jsonl). */
71
+ * writeSummary persists to this agent's durable sidecar
72
+ * (.reposkein/local/summaries-<agent>.jsonl). */
70
73
  export class JsonlGraphStore {
71
74
  repoId;
72
75
  graph = emptyGraph();
73
- mtime = -1;
76
+ stamp = "";
74
77
  repoPath;
75
78
  nodesPath;
76
79
  edgesPath;
@@ -134,8 +137,16 @@ export class JsonlGraphStore {
134
137
  visit(this.repoPath, this.repoId);
135
138
  return repos;
136
139
  }
137
- /** Reloads the graph if either ROOT file's mtime changed since last load. */
138
- ensureFresh() {
140
+ /** Reloads the graph when anything it reads has changed on disk.
141
+ *
142
+ * The key covers the derived JSONL, the committed summary shards, AND every
143
+ * agent's sidecar. Keying on nodes/edges alone made a `git pull` that
144
+ * brought in only a teammate's shards invisible for the life of the process
145
+ * — the shards are committed and the derived graph is not, so that is the
146
+ * ordinary case. Leaving the sidecars out did the same to a second agent
147
+ * working the same checkout, which the overlay explicitly promises to
148
+ * surface. Stat calls only, O(shards + sidecars). */
149
+ freshnessKey() {
139
150
  let m = 0;
140
151
  try {
141
152
  if (existsSync(this.nodesPath))
@@ -146,23 +157,51 @@ export class JsonlGraphStore {
146
157
  catch {
147
158
  m = 0;
148
159
  }
149
- if (m === this.mtime)
160
+ return `${m}|${summaryShardsStamp(this.repoPath, sidecarPaths)}`;
161
+ }
162
+ ensureFresh() {
163
+ const key = this.freshnessKey();
164
+ if (key === this.stamp)
150
165
  return;
151
- this.mtime = m;
166
+ this.stamp = key;
152
167
  try {
153
168
  this.graph = buildFederatedGraph(this.collectRepos());
154
- // Overlay the ROOT's durable sidecar summaries (child sidecars are their
155
- // own concern; v1 overlays the active repo only).
156
- for (const [id, rec] of readSidecar(this.sidecarFile)) {
169
+ // Overlay authored summaries: the committed shards first, then this
170
+ // machine's sidecars as a strictly newer source, folded through the same
171
+ // rules the indexer uses. So what the server serves is exactly what the
172
+ // next `index` will write — including which side wins a divergence.
173
+ //
174
+ // The shard overlay only matters between indexes (`index` already grafts
175
+ // them into nodes.jsonl), but that is the ordinary case: a teammate's
176
+ // summaries arrive with a `git pull` long before anyone re-indexes.
177
+ // Sidecars are every agent's, not just this process's, so two agents on
178
+ // one checkout see each other's work.
179
+ const shards = loadSummaryShards(this.repoPath);
180
+ const overlay = emptyAccumulator();
181
+ absorbSummarySource(overlay, {
182
+ summaries: shards.summaries,
183
+ conflicts: [],
184
+ warnings: [],
185
+ });
186
+ absorbSummarySource(overlay, loadAllSidecars(this.repoPath));
187
+ for (const [id, rec] of overlay.summaries) {
157
188
  const n = this.graph.byId.get(id);
158
- if (n) {
159
- n.props.semantic_summary = rec.semantic_summary;
160
- n.props.summary_of_hash = rec.summary_of_hash;
161
- n.props.summary_model = rec.summary_model;
162
- n.props.summary_at = rec.summary_at;
163
- n.props.summary_by = rec.summary_by;
164
- }
189
+ if (!n)
190
+ continue;
191
+ // Gated on the content hash for exactly the reason the indexer gates
192
+ // its graft: a summary whose node has since changed is stale, and
193
+ // serving it as current is worse than not serving it. Sidecar records
194
+ // are stamped with the node's live hash at write time, so an unchanged
195
+ // node passes this the same way a shard record does.
196
+ if (rec.props.summary_of_hash !== n.props.content_hash)
197
+ continue;
198
+ for (const [k, v] of Object.entries(rec.props))
199
+ n.props[k] = v;
165
200
  }
201
+ // Divergence losers — from a merged shard, or from two agents writing the
202
+ // same node — are authored prose. Preserve them for a human rather than
203
+ // discarding them on the read path.
204
+ recordSummaryConflicts(this.repoPath, [...shards.conflicts, ...overlay.conflicts]);
166
205
  }
167
206
  catch {
168
207
  this.graph = emptyGraph();
@@ -173,6 +212,13 @@ export class JsonlGraphStore {
173
212
  const n = this.graph.byId.get(id);
174
213
  return n && repoIds.includes(n.repoId) ? toTargetRow(n) : null;
175
214
  }
215
+ async findByContentHash(repoIds, hash) {
216
+ this.ensureFresh();
217
+ return this.graph.nodes
218
+ .filter((n) => repoIds.includes(n.repoId) && str(n.props.content_hash) === hash)
219
+ .sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))
220
+ .map(toTargetRow);
221
+ }
176
222
  async resolveByPathAndName(repoIds, filePath, name) {
177
223
  this.ensureFresh();
178
224
  return this.graph.nodes
@@ -285,7 +331,8 @@ export class JsonlGraphStore {
285
331
  qualified_name: str(n.props.qualified_name) ?? name,
286
332
  signature: str(n.props.signature) ?? "",
287
333
  summary: str(n.props.semantic_summary) ?? "",
288
- file_path: str(n.props.file_path) ?? "",
334
+ // File/Directory nodes carry `path` instead of `file_path`.
335
+ file_path: str(n.props.file_path) ?? str(n.props.path) ?? "",
289
336
  repo_id: n.repoId,
290
337
  });
291
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JsonlGraphStore.js","sourceRoot":"","sources":["../../src/store/JsonlGraphStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonlGraphStore.js","sourceRoot":"","sources":["../../src/store/JsonlGraphStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import type { GraphStore } from "./GraphStore.js";
2
+ /** Architecture Decision Records (ADRs), committed one file per decision at
3
+ * .reposkein/decisions/<date>-<slug>.json. File-per-decision (not a single
4
+ * JSONL) so parallel branches recording decisions never merge-conflict on
5
+ * forges, which compute mergeability in a bare repo where .gitattributes
6
+ * union-merge is never consulted — the #35 lesson.
7
+ *
8
+ * Ids are portable `adr:<date>-<slug>` (no repo_id: date+slug already
9
+ * disambiguates, and repo_id differs across forks/no-remote clones unless
10
+ * meta.json is committed). Anchor node_ids keep the full rs1: form but are
11
+ * matched tolerantly by suffix. Bodies are immutable after creation (checked
12
+ * via body_hash); only status/supersession/anchor re-stamping may change,
13
+ * and records are never machine-deleted — a decision about deleted code is
14
+ * still history. */
15
+ export type DecisionStatus = "proposed" | "accepted" | "rejected" | "deprecated" | "superseded";
16
+ export interface DecisionAnchor {
17
+ node_id: string;
18
+ path: string;
19
+ name: string;
20
+ kind: string;
21
+ /** content_hash of the anchored node at record (or reaffirm) time; null if
22
+ * the node had none. */
23
+ hash: string | null;
24
+ }
25
+ export type DecisionTriggerKind = "manual" | "graph_delta" | "drift";
26
+ export interface DecisionRecord {
27
+ id: string;
28
+ title: string;
29
+ status: DecisionStatus;
30
+ context: string;
31
+ decision: string;
32
+ consequences?: string;
33
+ alternatives?: string;
34
+ anchors: DecisionAnchor[];
35
+ /** Literal file paths or directory prefixes ending "/" (no globs). */
36
+ paths: string[];
37
+ supersedes: string[];
38
+ superseded_by?: string;
39
+ decided_at: string;
40
+ decided_by: string;
41
+ trigger: {
42
+ kind: DecisionTriggerKind;
43
+ };
44
+ /** Hash of the immutable body fields (see computeBodyHash). Lets doctor
45
+ * detect hand-edited bodies. */
46
+ body_hash: string;
47
+ }
48
+ /** Anchor lifecycle at read time. Never deletes: the worst state is a flag. */
49
+ export type AnchorState = "current" | "stale" | "moved" | "orphaned";
50
+ export interface ResolvedAnchor extends DecisionAnchor {
51
+ state: AnchorState;
52
+ /** The live node id the anchor resolved to (differs from node_id for
53
+ * moved anchors and suffix matches across repo_ids). */
54
+ resolved_node_id?: string;
55
+ }
56
+ export declare function decisionsDir(repoPath: string): string;
57
+ /** The ordinal-free id a (date, title) pair maps to. */
58
+ export declare function decisionBaseId(date: string, title: string): string;
59
+ /** A short, content-derived salt for a colliding slug.
60
+ *
61
+ * The old collision escape was an ordinal (`.1`, `.2`). That is exactly wrong
62
+ * for the case it exists for: two branches recording a same-day decision with
63
+ * the same title BOTH see `.1` free and both mint it, so both write the same
64
+ * filename — reintroducing the merge conflict that file-per-decision exists to
65
+ * remove, on a file whose bodies differ.
66
+ *
67
+ * Salting from the body instead makes the id a function of the content: two
68
+ * branches with genuinely different decisions get different files and merge
69
+ * without touching each other, while two identical recordings collapse to one
70
+ * id (which is the right answer — they are the same decision). */
71
+ export declare function decisionSlugSalt(source: string): string;
72
+ /** Mints `adr:<date>-<slug>`, salting the slug with content when taken.
73
+ *
74
+ * `saltSource` should be something that differs between two decisions a person
75
+ * would consider distinct — the body hash, or the prose itself. Omitting it
76
+ * falls back to the old ordinal, which is fine for a single-writer context
77
+ * (an import loop) but not for concurrent branches. */
78
+ export declare function mintDecisionId(date: string, title: string, taken: ReadonlySet<string>, saltSource?: string): string;
79
+ /** Every id that must not be minted again: parsed record ids PLUS ids implied
80
+ * by existing filenames. The filename side matters when a file is damaged
81
+ * (conflict markers): its record doesn't parse, but minting its id anyway
82
+ * would let writeDecision rename over the hand-recoverable file — violating
83
+ * "records are never machine-deleted". */
84
+ export declare function takenDecisionIds(repoPath: string): Set<string>;
85
+ /** SHA-256 over the immutable body. Excludes status/superseded_by (lifecycle)
86
+ * and anchor hash values (re-stamped by reaffirm) — but covers WHICH nodes
87
+ * and paths the decision governs, and every prose field. */
88
+ export declare function computeBodyHash(rec: Omit<DecisionRecord, "body_hash">): string;
89
+ /** File name for a decision id (`adr:` prefix stripped). */
90
+ export declare function decisionFileName(id: string): string;
91
+ /** Canonical bytes: `id` first, then sorted keys, 2-space indent, trailing LF.
92
+ * Pretty-printed (unlike the derived JSONL) because these files are authored
93
+ * history that humans review in PR diffs. */
94
+ export declare function canonicalizeDecision(rec: DecisionRecord): string;
95
+ /** Atomic write: temp file in the same dir, then rename. */
96
+ export declare function writeDecision(repoPath: string, rec: DecisionRecord): void;
97
+ export interface LoadedDecisions {
98
+ /** Sorted by id; deduped by id with status precedence. */
99
+ decisions: DecisionRecord[];
100
+ warnings: string[];
101
+ }
102
+ export interface DecisionFileEntry {
103
+ file: string;
104
+ /** null when the file is malformed (bad JSON, conflict markers, missing
105
+ * required fields). */
106
+ record: DecisionRecord | null;
107
+ }
108
+ /** Raw per-file scan (no dedupe) — the substrate for loadDecisions and for
109
+ * doctor's duplicate/integrity checks. */
110
+ export declare function loadDecisionFiles(repoPath: string): DecisionFileEntry[];
111
+ /** Loads every decision file. Tolerant: malformed files (conflict markers,
112
+ * bad JSON, missing fields) are skipped with a warning, never thrown — a
113
+ * damaged file must not take recall down. */
114
+ export declare function loadDecisions(repoPath: string): LoadedDecisions;
115
+ /** Repo ids for anchor resolution: the root plus its federated children —
116
+ * decisions live at the root but may govern nodes in nested repos. Falls
117
+ * back to the root alone if federation lookup fails. */
118
+ export declare function anchorRepoIds(store: GraphStore, repoId: string): Promise<string[]>;
119
+ /** The portion of a node id that survives repo_id drift: `:<kind>:<rest>`.
120
+ * Shared by every decision surface — anchor resolution, profile governance,
121
+ * list filtering, and drift cross-referencing must agree on tolerance. */
122
+ export declare function nodeIdSuffix(nodeId: string): string | null;
123
+ /** The repo_id embedded in an rs1: node id, or null. */
124
+ export declare function nodeIdRepo(nodeId: string): string | null;
125
+ /** Resolves each anchor against the live graph:
126
+ * - current: node id live (exact or repo_id-suffix match), hash unchanged
127
+ * - stale: node id live, content differs since record time
128
+ * - moved: id dead, but the recorded content hash matches a live node —
129
+ * the only signal that survives renames
130
+ * - orphaned: nothing matches; kept and flagged, never deleted */
131
+ export declare function resolveAnchorStates(store: GraphStore, repoIds: string[], anchors: DecisionAnchor[]): Promise<ResolvedAnchor[]>;