@reposkein/mcp 0.6.1 → 0.8.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.
- package/README.md +1 -0
- package/binary-digests.json +4 -4
- package/dist/SKILL.md +22 -0
- package/dist/cli/adr.js +1 -1
- package/dist/cli/adr.js.map +1 -1
- package/dist/cli/adrReanchor.d.ts +8 -0
- package/dist/cli/adrReanchor.js +74 -0
- package/dist/cli/adrReanchor.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -2
- package/dist/cli/doctor.js +12 -5
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/doctorDecisions.d.ts +5 -0
- package/dist/cli/doctorDecisions.js +39 -2
- package/dist/cli/doctorDecisions.js.map +1 -1
- package/dist/cli/doctorFreshness.d.ts +6 -0
- package/dist/cli/doctorFreshness.js +23 -0
- package/dist/cli/doctorFreshness.js.map +1 -1
- package/dist/cli/migrate.d.ts +26 -0
- package/dist/cli/migrate.js +208 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +30 -7
- package/dist/index.js.map +1 -1
- package/dist/server/createMcpServer.d.ts +5 -1
- package/dist/server/createMcpServer.js +16 -0
- package/dist/server/createMcpServer.js.map +1 -1
- package/dist/store/decisions.d.ts +22 -3
- package/dist/store/decisions.js +71 -15
- package/dist/store/decisions.js.map +1 -1
- package/dist/store/instrumentTool.d.ts +9 -1
- package/dist/store/instrumentTool.js +33 -2
- package/dist/store/instrumentTool.js.map +1 -1
- package/dist/store/reanchor.d.ts +33 -0
- package/dist/store/reanchor.js +85 -0
- package/dist/store/reanchor.js.map +1 -0
- package/dist/store/repoSession.d.ts +19 -0
- package/dist/store/repoSession.js +25 -0
- package/dist/store/repoSession.js.map +1 -1
- package/dist/store/trackedGraph.d.ts +14 -0
- package/dist/store/trackedGraph.js +39 -0
- package/dist/store/trackedGraph.js.map +1 -0
- package/dist/tools/reaffirmDecision.d.ts +4 -2
- package/dist/tools/reaffirmDecision.js +4 -2
- package/dist/tools/reaffirmDecision.js.map +1 -1
- package/dist/tools/reanchorDecision.d.ts +12 -0
- package/dist/tools/reanchorDecision.js +52 -0
- package/dist/tools/reanchorDecision.js.map +1 -0
- package/package.json +1 -1
package/dist/store/decisions.js
CHANGED
|
@@ -92,10 +92,31 @@ export function takenDecisionIds(repoPath) {
|
|
|
92
92
|
}
|
|
93
93
|
return taken;
|
|
94
94
|
}
|
|
95
|
-
/** SHA-256 over the immutable body. Excludes
|
|
96
|
-
*
|
|
97
|
-
*
|
|
95
|
+
/** SHA-256 over the immutable body, `"v2:"`-prefixed. Excludes lifecycle
|
|
96
|
+
* (status/superseded_by), audit metadata (reanchored_at/anchor_history) and —
|
|
97
|
+
* since v2 — the anchors entirely: anchors are machine-managed pointers,
|
|
98
|
+
* re-stamped by reaffirm and repaired by reanchor, so binding them into the
|
|
99
|
+
* body made every mechanical repair look like an edit. Covers prose, paths,
|
|
100
|
+
* supersedes and attribution. */
|
|
98
101
|
export function computeBodyHash(rec) {
|
|
102
|
+
const body = {
|
|
103
|
+
alternatives: rec.alternatives ?? "",
|
|
104
|
+
consequences: rec.consequences ?? "",
|
|
105
|
+
context: rec.context,
|
|
106
|
+
decided_at: rec.decided_at,
|
|
107
|
+
decided_by: rec.decided_by,
|
|
108
|
+
decision: rec.decision,
|
|
109
|
+
paths: rec.paths,
|
|
110
|
+
supersedes: rec.supersedes,
|
|
111
|
+
title: rec.title,
|
|
112
|
+
trigger: rec.trigger.kind,
|
|
113
|
+
};
|
|
114
|
+
return "v2:" + createHash("sha256").update(JSON.stringify(body)).digest("hex");
|
|
115
|
+
}
|
|
116
|
+
/** The pre-v2 hash (included anchor_node_ids, bare hex). Verification only:
|
|
117
|
+
* records signed before the v2 scheme verify against this until their next
|
|
118
|
+
* write re-signs them. */
|
|
119
|
+
export function computeBodyHashV1(rec) {
|
|
99
120
|
const body = {
|
|
100
121
|
alternatives: rec.alternatives ?? "",
|
|
101
122
|
anchor_node_ids: rec.anchors.map((a) => a.node_id),
|
|
@@ -111,6 +132,12 @@ export function computeBodyHash(rec) {
|
|
|
111
132
|
};
|
|
112
133
|
return createHash("sha256").update(JSON.stringify(body)).digest("hex");
|
|
113
134
|
}
|
|
135
|
+
/** True when body_hash matches the record under whichever scheme signed it. */
|
|
136
|
+
export function verifyBodyHash(rec) {
|
|
137
|
+
return rec.body_hash.startsWith("v2:")
|
|
138
|
+
? rec.body_hash === computeBodyHash(rec)
|
|
139
|
+
: rec.body_hash === computeBodyHashV1(rec);
|
|
140
|
+
}
|
|
114
141
|
/** File name for a decision id (`adr:` prefix stripped). */
|
|
115
142
|
export function decisionFileName(id) {
|
|
116
143
|
return `${id.replace(/^adr:/, "")}.json`;
|
|
@@ -150,19 +177,14 @@ export function writeDecision(repoPath, rec) {
|
|
|
150
177
|
writeFileSync(tmp, canonicalizeDecision(rec));
|
|
151
178
|
renameSync(tmp, file);
|
|
152
179
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
return null;
|
|
158
|
-
if (typeof obj.decision !== "string" || typeof obj.decided_at !== "string")
|
|
159
|
-
return null;
|
|
160
|
-
const status = obj.status;
|
|
161
|
-
if (typeof status !== "string" || !STATUSES.includes(status))
|
|
162
|
-
return null;
|
|
163
|
-
const anchorsRaw = Array.isArray(obj.anchors) ? obj.anchors : [];
|
|
180
|
+
/** Parses an anchors array tolerantly: a malformed entry (not an object, or
|
|
181
|
+
* missing node_id) is dropped, never fatal — shared by `anchors` and each
|
|
182
|
+
* `anchor_history` entry. */
|
|
183
|
+
function parseAnchorArray(v) {
|
|
164
184
|
const anchors = [];
|
|
165
|
-
|
|
185
|
+
if (!Array.isArray(v))
|
|
186
|
+
return anchors;
|
|
187
|
+
for (const a of v) {
|
|
166
188
|
if (a === null || typeof a !== "object")
|
|
167
189
|
continue;
|
|
168
190
|
const o = a;
|
|
@@ -176,6 +198,25 @@ function parseDecision(obj) {
|
|
|
176
198
|
hash: typeof o.hash === "string" ? o.hash : null,
|
|
177
199
|
});
|
|
178
200
|
}
|
|
201
|
+
return anchors;
|
|
202
|
+
}
|
|
203
|
+
function parseDecision(obj) {
|
|
204
|
+
if (typeof obj.id !== "string" || !obj.id.startsWith("adr:"))
|
|
205
|
+
return null;
|
|
206
|
+
// The id is path-derived (decisionFileName/writeDecision join it under
|
|
207
|
+
// decisions dir) — reject a remainder with a separator or a `..` segment
|
|
208
|
+
// so no writer can ever be made to escape that directory.
|
|
209
|
+
const idRest = obj.id.slice("adr:".length);
|
|
210
|
+
if (/[/\\]/.test(idRest) || idRest.split(/[/\\]/).includes(".."))
|
|
211
|
+
return null;
|
|
212
|
+
if (typeof obj.title !== "string" || typeof obj.context !== "string")
|
|
213
|
+
return null;
|
|
214
|
+
if (typeof obj.decision !== "string" || typeof obj.decided_at !== "string")
|
|
215
|
+
return null;
|
|
216
|
+
const status = obj.status;
|
|
217
|
+
if (typeof status !== "string" || !STATUSES.includes(status))
|
|
218
|
+
return null;
|
|
219
|
+
const anchors = parseAnchorArray(obj.anchors);
|
|
179
220
|
const strArray = (v) => Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
|
|
180
221
|
const triggerKind = obj.trigger !== null &&
|
|
181
222
|
typeof obj.trigger === "object" &&
|
|
@@ -206,6 +247,21 @@ function parseDecision(obj) {
|
|
|
206
247
|
rec.alternatives = obj.alternatives;
|
|
207
248
|
if (typeof obj.superseded_by === "string")
|
|
208
249
|
rec.superseded_by = obj.superseded_by;
|
|
250
|
+
if (typeof obj.reanchored_at === "string")
|
|
251
|
+
rec.reanchored_at = obj.reanchored_at;
|
|
252
|
+
if (Array.isArray(obj.anchor_history)) {
|
|
253
|
+
const history = [];
|
|
254
|
+
for (const h of obj.anchor_history) {
|
|
255
|
+
if (h === null || typeof h !== "object")
|
|
256
|
+
continue;
|
|
257
|
+
const ho = h;
|
|
258
|
+
if (typeof ho.reanchored_at !== "string" || !Array.isArray(ho.anchors))
|
|
259
|
+
continue;
|
|
260
|
+
history.push({ reanchored_at: ho.reanchored_at, anchors: parseAnchorArray(ho.anchors) });
|
|
261
|
+
}
|
|
262
|
+
if (history.length > 0)
|
|
263
|
+
rec.anchor_history = history;
|
|
264
|
+
}
|
|
209
265
|
return rec;
|
|
210
266
|
}
|
|
211
267
|
/** Raw per-file scan (no dedupe) — the substrate for loadDecisions and for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../src/store/decisions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../src/store/decisions.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,5 +36,13 @@ export interface ToolLogger {
|
|
|
36
36
|
* (default `setImmediate`), which runs only after the response has
|
|
37
37
|
* already been handed back to the MCP transport. The deferred callback
|
|
38
38
|
* swallows every error itself — it must never surface as an unhandled
|
|
39
|
-
* exception/rejection.
|
|
39
|
+
* exception/rejection.
|
|
40
|
+
*
|
|
41
|
+
* A third constraint added by the REP-35 tracked-graph warning below:
|
|
42
|
+
* `session.takeTrackedGraphWarning()` can itself shell out to git on the
|
|
43
|
+
* FIRST call for a repo, so it must (a) reuse `cachedResolve()` rather than
|
|
44
|
+
* calling `session.resolve()` a second time (preserves fix 1), and (b) run
|
|
45
|
+
* strictly AFTER `ts` is captured, so its cost is never attributed to the
|
|
46
|
+
* call's logged timestamp (preserves fix 2's "ts is call-completion time,
|
|
47
|
+
* not deferred-write time" contract). */
|
|
40
48
|
export declare function createToolLogger(session: RepoSession, sessionLogger: SessionLogger, schedule?: (fn: () => void) => void): ToolLogger;
|
|
@@ -20,7 +20,15 @@ import { argsShapeOf, extractTouchedIds, resultByteSize } from "./sessionLog.js"
|
|
|
20
20
|
* (default `setImmediate`), which runs only after the response has
|
|
21
21
|
* already been handed back to the MCP transport. The deferred callback
|
|
22
22
|
* swallows every error itself — it must never surface as an unhandled
|
|
23
|
-
* exception/rejection.
|
|
23
|
+
* exception/rejection.
|
|
24
|
+
*
|
|
25
|
+
* A third constraint added by the REP-35 tracked-graph warning below:
|
|
26
|
+
* `session.takeTrackedGraphWarning()` can itself shell out to git on the
|
|
27
|
+
* FIRST call for a repo, so it must (a) reuse `cachedResolve()` rather than
|
|
28
|
+
* calling `session.resolve()` a second time (preserves fix 1), and (b) run
|
|
29
|
+
* strictly AFTER `ts` is captured, so its cost is never attributed to the
|
|
30
|
+
* call's logged timestamp (preserves fix 2's "ts is call-completion time,
|
|
31
|
+
* not deferred-write time" contract). */
|
|
24
32
|
export function createToolLogger(session, sessionLogger, schedule = setImmediate) {
|
|
25
33
|
const als = new AsyncLocalStorage();
|
|
26
34
|
function cachedResolve() {
|
|
@@ -53,8 +61,31 @@ export function createToolLogger(session, sessionLogger, schedule = setImmediate
|
|
|
53
61
|
return (args) => als.run({}, async () => {
|
|
54
62
|
let result;
|
|
55
63
|
let threw = false;
|
|
64
|
+
// Captured right when `cb` finishes — see (3) below; the `finally`
|
|
65
|
+
// block reuses it rather than re-stamping after the warning-append
|
|
66
|
+
// work runs.
|
|
67
|
+
let ts;
|
|
56
68
|
try {
|
|
57
69
|
result = await cb(args);
|
|
70
|
+
ts = new Date().toISOString();
|
|
71
|
+
try {
|
|
72
|
+
// REP-35: surface the tracked-graph hazard on the FIRST successful
|
|
73
|
+
// tool call that resolves to an affected repo — once per repo per
|
|
74
|
+
// session, appended as an extra content item so no handler needs
|
|
75
|
+
// to know about it. Reuses `cachedResolve()` (not
|
|
76
|
+
// `session.resolve()` directly) so this never costs a second,
|
|
77
|
+
// unmemoized resolution for the same call — see (1) above.
|
|
78
|
+
if (result?.isError !== true) {
|
|
79
|
+
const warning = session.takeTrackedGraphWarning(cachedResolve().repoPath);
|
|
80
|
+
const content = result?.content;
|
|
81
|
+
if (warning && Array.isArray(content)) {
|
|
82
|
+
content.push({ type: "text", text: JSON.stringify({ warning }) });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// the warning must never break a tool call
|
|
88
|
+
}
|
|
58
89
|
return result;
|
|
59
90
|
}
|
|
60
91
|
catch (err) {
|
|
@@ -68,7 +99,7 @@ export function createToolLogger(session, sessionLogger, schedule = setImmediate
|
|
|
68
99
|
try {
|
|
69
100
|
const resolution = cachedResolve();
|
|
70
101
|
if (resolution.repoPath) {
|
|
71
|
-
deferredLog(new Date().toISOString(), resolution.repoPath, name, argsShapeOf(args), !threw && result?.isError !== true, result);
|
|
102
|
+
deferredLog(ts ?? new Date().toISOString(), resolution.repoPath, name, argsShapeOf(args), !threw && result?.isError !== true, result);
|
|
72
103
|
}
|
|
73
104
|
}
|
|
74
105
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentTool.js","sourceRoot":"","sources":["../../src/store/instrumentTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAsB1H
|
|
1
|
+
{"version":3,"file":"instrumentTool.js","sourceRoot":"","sources":["../../src/store/instrumentTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { GraphStore } from "./GraphStore.js";
|
|
2
|
+
import { type DecisionAnchor, type DecisionRecord } from "./decisions.js";
|
|
3
|
+
/** Anchor repair for `adr reanchor` / `reanchor_decision` (REP-24).
|
|
4
|
+
*
|
|
5
|
+
* Reanchor is MECHANICAL pointer repair, distinct from reaffirm's semantic
|
|
6
|
+
* judgment: it rebinds an anchor only on a confident match — the id resolves
|
|
7
|
+
* under a live repo_id (suffix retry), or the recorded content hash matches
|
|
8
|
+
* exactly one live node — and preserves staleness (a suffix rebind keeps the
|
|
9
|
+
* recorded hash, so a stale flag survives the repair; clearing it is
|
|
10
|
+
* reaffirm_decision's job). Ambiguous and orphaned anchors are reported,
|
|
11
|
+
* never guessed. plan is pure; apply writes only when something rebinds, so
|
|
12
|
+
* a second run on the same graph is a byte-level no-op. */
|
|
13
|
+
export type ReanchorAction = "keep" | "rebind" | "stale" | "orphaned" | "ambiguous";
|
|
14
|
+
export interface AnchorPlanEntry {
|
|
15
|
+
anchor: DecisionAnchor;
|
|
16
|
+
action: ReanchorAction;
|
|
17
|
+
/** Present iff action === "rebind". */
|
|
18
|
+
to?: DecisionAnchor;
|
|
19
|
+
/** Content-hash match count when ambiguous. */
|
|
20
|
+
candidates?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ReanchorPlan {
|
|
23
|
+
decision_id: string;
|
|
24
|
+
anchors: AnchorPlanEntry[];
|
|
25
|
+
changed: boolean;
|
|
26
|
+
unresolved: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function planReanchor(store: GraphStore, repoIds: string[], rec: DecisionRecord): Promise<ReanchorPlan>;
|
|
29
|
+
/** Applies a plan's rebinds. Returns the written record, or null when the
|
|
30
|
+
* plan changes nothing (in which case NOTHING is written — idempotence is
|
|
31
|
+
* the determinism gate). Body prose is never touched; the v2 body hash is
|
|
32
|
+
* anchor-independent, so re-signing here only upgrades pre-v2 records. */
|
|
33
|
+
export declare function applyReanchor(repoPath: string, rec: DecisionRecord, plan: ReanchorPlan, reanchoredAt: string): DecisionRecord | null;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { computeBodyHash, nodeIdSuffix, writeDecision, } from "./decisions.js";
|
|
2
|
+
function liveAnchor(live, fallbackKind, hash) {
|
|
3
|
+
return {
|
|
4
|
+
node_id: live.id,
|
|
5
|
+
path: live.file_path,
|
|
6
|
+
name: live.qualified_name || live.name,
|
|
7
|
+
kind: live.labels[0] ?? fallbackKind,
|
|
8
|
+
hash,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export async function planReanchor(store, repoIds, rec) {
|
|
12
|
+
const anchors = [];
|
|
13
|
+
for (const anchor of rec.anchors) {
|
|
14
|
+
let live = await store.getNode(repoIds, anchor.node_id);
|
|
15
|
+
if (!live) {
|
|
16
|
+
const suffix = nodeIdSuffix(anchor.node_id);
|
|
17
|
+
if (suffix) {
|
|
18
|
+
for (const repoId of repoIds) {
|
|
19
|
+
const candidate = `rs1:${repoId}${suffix}`;
|
|
20
|
+
if (candidate === anchor.node_id)
|
|
21
|
+
continue;
|
|
22
|
+
live = await store.getNode(repoIds, candidate);
|
|
23
|
+
if (live)
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (live) {
|
|
29
|
+
if (live.id !== anchor.node_id) {
|
|
30
|
+
// Suffix repair: rebind the pointer, keep the recorded hash so a
|
|
31
|
+
// stale flag survives (reaffirm clears it, not reanchor).
|
|
32
|
+
anchors.push({ anchor, action: "rebind", to: liveAnchor(live, anchor.kind, anchor.hash) });
|
|
33
|
+
}
|
|
34
|
+
else if (anchor.hash !== null && live.content_hash !== null && anchor.hash !== live.content_hash) {
|
|
35
|
+
anchors.push({ anchor, action: "stale" });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
anchors.push({ anchor, action: "keep" });
|
|
39
|
+
}
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (anchor.hash && store.findByContentHash) {
|
|
43
|
+
const matches = await store.findByContentHash(repoIds, anchor.hash);
|
|
44
|
+
if (matches.length === 1) {
|
|
45
|
+
anchors.push({ anchor, action: "rebind", to: liveAnchor(matches[0], anchor.kind, anchor.hash) });
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (matches.length > 1) {
|
|
49
|
+
anchors.push({ anchor, action: "ambiguous", candidates: matches.length });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
anchors.push({ anchor, action: "orphaned" });
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
decision_id: rec.id,
|
|
57
|
+
anchors,
|
|
58
|
+
changed: anchors.some((a) => a.action === "rebind"),
|
|
59
|
+
unresolved: anchors.filter((a) => a.action === "orphaned" || a.action === "ambiguous").length,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Applies a plan's rebinds. Returns the written record, or null when the
|
|
63
|
+
* plan changes nothing (in which case NOTHING is written — idempotence is
|
|
64
|
+
* the determinism gate). Body prose is never touched; the v2 body hash is
|
|
65
|
+
* anchor-independent, so re-signing here only upgrades pre-v2 records. */
|
|
66
|
+
export function applyReanchor(repoPath, rec, plan, reanchoredAt) {
|
|
67
|
+
if (!plan.changed)
|
|
68
|
+
return null;
|
|
69
|
+
const anchors = plan.anchors.map((a) => (a.action === "rebind" ? a.to : a.anchor));
|
|
70
|
+
const history = [
|
|
71
|
+
...(rec.anchor_history ?? []),
|
|
72
|
+
{ reanchored_at: reanchoredAt, anchors: rec.anchors },
|
|
73
|
+
];
|
|
74
|
+
const updated = {
|
|
75
|
+
...rec,
|
|
76
|
+
anchors,
|
|
77
|
+
reanchored_at: reanchoredAt,
|
|
78
|
+
anchor_history: history,
|
|
79
|
+
body_hash: "",
|
|
80
|
+
};
|
|
81
|
+
updated.body_hash = computeBodyHash(updated);
|
|
82
|
+
writeDecision(repoPath, updated);
|
|
83
|
+
return updated;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=reanchor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reanchor.js","sourceRoot":"","sources":["../../src/store/reanchor.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,9 @@ export interface RepoInfo {
|
|
|
10
10
|
/** Cheap line counts (not full parses) — omitted where the file is absent. */
|
|
11
11
|
nodes?: number;
|
|
12
12
|
edges?: number;
|
|
13
|
+
/** True when git still TRACKS the derived graph here (pre-0.2.7 adopter —
|
|
14
|
+
* REP-35). Omitted when clean, so existing consumers see no change. */
|
|
15
|
+
graph_tracked?: boolean;
|
|
13
16
|
}
|
|
14
17
|
export declare function describeRepo(path: string): RepoInfo;
|
|
15
18
|
/** Every repo `list_repos` should report. Deliberately broader than
|
|
@@ -37,12 +40,28 @@ export declare class RepoSession {
|
|
|
37
40
|
private readonly cwd;
|
|
38
41
|
private readonly envRepoPath;
|
|
39
42
|
private selectedPath;
|
|
43
|
+
/** Repo paths whose tracked-graph state this session has already probed —
|
|
44
|
+
* warned or clean, either way we never probe (or repeat) again. */
|
|
45
|
+
private readonly graphWarned;
|
|
40
46
|
constructor(opts: {
|
|
41
47
|
cwd: string;
|
|
42
48
|
envRepoPath: string | undefined;
|
|
43
49
|
});
|
|
44
50
|
/** Current resolution, honoring an active `select_repo` pick first. */
|
|
45
51
|
resolve(): RepoResolution;
|
|
52
|
+
/** One-shot, once per repo per session: the tracked-graph warning for the
|
|
53
|
+
* currently resolved repo, or undefined (clean repo, no repo, or already
|
|
54
|
+
* taken). The instrumentation layer (instrumentTool.ts) appends it to the
|
|
55
|
+
* first successful tool result — repeating it every call would spend the
|
|
56
|
+
* context this feature exists to protect (REP-35).
|
|
57
|
+
*
|
|
58
|
+
* `resolvedPath` is an optional override: `instrumentTool.ts` already
|
|
59
|
+
* computes the call's resolution once via its ALS-memoized
|
|
60
|
+
* `cachedResolve()` (see its "single resolution per call" invariant) and
|
|
61
|
+
* passes that in, so this never triggers a second, unmemoized
|
|
62
|
+
* `resolve()` walk for the same tool call. Omit it (as a standalone
|
|
63
|
+
* caller would) to resolve directly. */
|
|
64
|
+
takeTrackedGraphWarning(resolvedPath?: string): string | undefined;
|
|
46
65
|
/** Every candidate repo for this session — see `discoverRepoPaths`. Each
|
|
47
66
|
* entry is flagged `selected` for whichever one `resolve()` currently
|
|
48
67
|
* returns, so an agent can see the effect of a prior `select_repo` call. */
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import { resolveRepoPath, walkUp, walkDown } from "./resolveRepoPath.js";
|
|
4
|
+
import { trackedGraphFiles, trackedGraphWarning } from "./trackedGraph.js";
|
|
4
5
|
function countLines(text) {
|
|
5
6
|
let n = 0;
|
|
6
7
|
for (const line of text.split("\n"))
|
|
@@ -41,11 +42,13 @@ function cheapCounts(path) {
|
|
|
41
42
|
}
|
|
42
43
|
export function describeRepo(path) {
|
|
43
44
|
const repo_id = readMetaRepoId(path);
|
|
45
|
+
const tracked = trackedGraphFiles(path).length > 0;
|
|
44
46
|
return {
|
|
45
47
|
path,
|
|
46
48
|
...(repo_id ? { repo_id } : {}),
|
|
47
49
|
name: repo_id ?? basename(path),
|
|
48
50
|
...cheapCounts(path),
|
|
51
|
+
...(tracked ? { graph_tracked: true } : {}),
|
|
49
52
|
};
|
|
50
53
|
}
|
|
51
54
|
/** Every repo `list_repos` should report. Deliberately broader than
|
|
@@ -77,6 +80,9 @@ export class RepoSession {
|
|
|
77
80
|
cwd;
|
|
78
81
|
envRepoPath;
|
|
79
82
|
selectedPath;
|
|
83
|
+
/** Repo paths whose tracked-graph state this session has already probed —
|
|
84
|
+
* warned or clean, either way we never probe (or repeat) again. */
|
|
85
|
+
graphWarned = new Set();
|
|
80
86
|
constructor(opts) {
|
|
81
87
|
this.cwd = opts.cwd;
|
|
82
88
|
this.envRepoPath = opts.envRepoPath;
|
|
@@ -87,6 +93,25 @@ export class RepoSession {
|
|
|
87
93
|
return { repoPath: this.selectedPath, source: "explicit" };
|
|
88
94
|
return resolveRepoPath({ cwd: this.cwd, envRepoPath: this.envRepoPath });
|
|
89
95
|
}
|
|
96
|
+
/** One-shot, once per repo per session: the tracked-graph warning for the
|
|
97
|
+
* currently resolved repo, or undefined (clean repo, no repo, or already
|
|
98
|
+
* taken). The instrumentation layer (instrumentTool.ts) appends it to the
|
|
99
|
+
* first successful tool result — repeating it every call would spend the
|
|
100
|
+
* context this feature exists to protect (REP-35).
|
|
101
|
+
*
|
|
102
|
+
* `resolvedPath` is an optional override: `instrumentTool.ts` already
|
|
103
|
+
* computes the call's resolution once via its ALS-memoized
|
|
104
|
+
* `cachedResolve()` (see its "single resolution per call" invariant) and
|
|
105
|
+
* passes that in, so this never triggers a second, unmemoized
|
|
106
|
+
* `resolve()` walk for the same tool call. Omit it (as a standalone
|
|
107
|
+
* caller would) to resolve directly. */
|
|
108
|
+
takeTrackedGraphWarning(resolvedPath) {
|
|
109
|
+
const path = resolvedPath ?? this.resolve().repoPath;
|
|
110
|
+
if (!path || this.graphWarned.has(path))
|
|
111
|
+
return undefined;
|
|
112
|
+
this.graphWarned.add(path);
|
|
113
|
+
return trackedGraphWarning(path);
|
|
114
|
+
}
|
|
90
115
|
/** Every candidate repo for this session — see `discoverRepoPaths`. Each
|
|
91
116
|
* entry is flagged `selected` for whichever one `resolve()` currently
|
|
92
117
|
* returns, so an agent can see the effect of a prior `select_repo` call. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoSession.js","sourceRoot":"","sources":["../../src/store/repoSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"repoSession.js","sourceRoot":"","sources":["../../src/store/repoSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The derived graph files that must never be tracked (repo-relative). */
|
|
2
|
+
export declare const GRAPH_FILES: readonly [".reposkein/nodes.jsonl", ".reposkein/edges.jsonl"];
|
|
3
|
+
/** Repo-relative paths of the derived graph files git currently TRACKS at
|
|
4
|
+
* `repoPath` — `[]` when untracked, or when there is no git repo at all.
|
|
5
|
+
* Pre-0.2.7 adopters committed these; a tracked pair reached 7.2MB (~1.9×
|
|
6
|
+
* a 1M-token context window) in the wild, so every surface that can steer
|
|
7
|
+
* an agent (doctor, migrate, the MCP session warning) keys off this one
|
|
8
|
+
* probe. */
|
|
9
|
+
export declare function trackedGraphFiles(repoPath: string): string[];
|
|
10
|
+
/** Agent-facing warning for a repo whose derived graph is tracked, or
|
|
11
|
+
* undefined when it isn't. One string, reused verbatim by doctor's detail,
|
|
12
|
+
* the MCP once-per-session warning, and `list_repos` — the copy names both
|
|
13
|
+
* the permanent fix and the interim escape hatch. */
|
|
14
|
+
export declare function trackedGraphWarning(repoPath: string): string | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
/** The derived graph files that must never be tracked (repo-relative). */
|
|
3
|
+
export const GRAPH_FILES = [".reposkein/nodes.jsonl", ".reposkein/edges.jsonl"];
|
|
4
|
+
/** Repo-relative paths of the derived graph files git currently TRACKS at
|
|
5
|
+
* `repoPath` — `[]` when untracked, or when there is no git repo at all.
|
|
6
|
+
* Pre-0.2.7 adopters committed these; a tracked pair reached 7.2MB (~1.9×
|
|
7
|
+
* a 1M-token context window) in the wild, so every surface that can steer
|
|
8
|
+
* an agent (doctor, migrate, the MCP session warning) keys off this one
|
|
9
|
+
* probe. */
|
|
10
|
+
export function trackedGraphFiles(repoPath) {
|
|
11
|
+
try {
|
|
12
|
+
const out = execFileSync("git", ["-C", repoPath, "ls-files", "--", ...GRAPH_FILES], {
|
|
13
|
+
encoding: "utf8",
|
|
14
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
15
|
+
});
|
|
16
|
+
return out
|
|
17
|
+
.split("\n")
|
|
18
|
+
.map((l) => l.trim())
|
|
19
|
+
.filter(Boolean);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return []; // no git / not a work tree → nothing can be tracked
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Agent-facing warning for a repo whose derived graph is tracked, or
|
|
26
|
+
* undefined when it isn't. One string, reused verbatim by doctor's detail,
|
|
27
|
+
* the MCP once-per-session warning, and `list_repos` — the copy names both
|
|
28
|
+
* the permanent fix and the interim escape hatch. */
|
|
29
|
+
export function trackedGraphWarning(repoPath) {
|
|
30
|
+
const tracked = trackedGraphFiles(repoPath);
|
|
31
|
+
if (tracked.length === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
return (`⚠ ${tracked.join(" + ")} are TRACKED in git at ${repoPath}. A bare \`git diff\`, ` +
|
|
34
|
+
"`git show`, `git status -v`, or `gh pr diff` there can pull megabytes of machine-" +
|
|
35
|
+
"generated JSONL into a context window and exhaust it. Permanent fix: run " +
|
|
36
|
+
`\`reposkein-mcp migrate ${repoPath}\` and commit the staged untracking. Until then, ` +
|
|
37
|
+
"always scope diffs, e.g. `git diff -- . ':(exclude).reposkein'`.");
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=trackedGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackedGraph.js","sourceRoot":"","sources":["../../src/store/trackedGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAU,CAAC;AAEzF;;;;;aAKa;AACb,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE;YAClF,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,OAAO,GAAG;aACP,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,oDAAoD;IACjE,CAAC;AACH,CAAC;AAED;;;sDAGsD;AACtD,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,CACL,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,QAAQ,yBAAyB;QACnF,mFAAmF;QACnF,2EAA2E;QAC3E,2BAA2B,QAAQ,mDAAmD;QACtF,kEAAkE,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,8 @@ export interface ReaffirmDecisionArgs {
|
|
|
6
6
|
/** "This decision is still correct": re-stamps every anchor from the live
|
|
7
7
|
* graph — stale anchors get the current hash, moved anchors are rebound to
|
|
8
8
|
* their recovered node — clearing review flags without supersede spam. The
|
|
9
|
-
* prose body never changes
|
|
10
|
-
*
|
|
9
|
+
* prose body never changes, and since v2 the body_hash doesn't either:
|
|
10
|
+
* anchors are excluded from it, so re-stamping is a no-op on the hash. The
|
|
11
|
+
* re-sign stays because it's a lazy v1→v2 upgrade path — a pre-v2 record
|
|
12
|
+
* re-signed here moves onto the anchor-independent scheme. */
|
|
11
13
|
export declare function makeReaffirmDecision(store: GraphStore, repoId: string, repoPath: string): (args: ReaffirmDecisionArgs) => Promise<ToolResult>;
|
|
@@ -3,8 +3,10 @@ const err = (text) => ({ content: [{ type: "text", text }], isError: true });
|
|
|
3
3
|
/** "This decision is still correct": re-stamps every anchor from the live
|
|
4
4
|
* graph — stale anchors get the current hash, moved anchors are rebound to
|
|
5
5
|
* their recovered node — clearing review flags without supersede spam. The
|
|
6
|
-
* prose body never changes
|
|
7
|
-
*
|
|
6
|
+
* prose body never changes, and since v2 the body_hash doesn't either:
|
|
7
|
+
* anchors are excluded from it, so re-stamping is a no-op on the hash. The
|
|
8
|
+
* re-sign stays because it's a lazy v1→v2 upgrade path — a pre-v2 record
|
|
9
|
+
* re-signed here moves onto the anchor-independent scheme. */
|
|
8
10
|
export function makeReaffirmDecision(store, repoId, repoPath) {
|
|
9
11
|
return async (args) => {
|
|
10
12
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaffirmDecision.js","sourceRoot":"","sources":["../../src/tools/reaffirmDecision.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,GAGd,MAAM,uBAAuB,CAAC;AAM/B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjG
|
|
1
|
+
{"version":3,"file":"reaffirmDecision.js","sourceRoot":"","sources":["../../src/tools/reaffirmDecision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GraphStore } from "../store/GraphStore.js";
|
|
2
|
+
import type { ToolResult } from "./readCypher.js";
|
|
3
|
+
export interface ReanchorDecisionArgs {
|
|
4
|
+
decision_id?: string;
|
|
5
|
+
dry_run?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Mechanical anchor repair (REP-24): rebinds anchors whose node moved or
|
|
8
|
+
* whose id churned, on confident matches only. Prose and (v2) body hash are
|
|
9
|
+
* untouched; staleness flags survive — reaffirm_decision clears those. */
|
|
10
|
+
export declare function makeReanchorDecision(store: GraphStore, repoId: string, repoPath: string, opts?: {
|
|
11
|
+
today?: () => string;
|
|
12
|
+
}): (args: ReanchorDecisionArgs) => Promise<ToolResult>;
|