@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.
Files changed (48) hide show
  1. package/README.md +1 -0
  2. package/binary-digests.json +4 -4
  3. package/dist/SKILL.md +22 -0
  4. package/dist/cli/adr.js +1 -1
  5. package/dist/cli/adr.js.map +1 -1
  6. package/dist/cli/adrReanchor.d.ts +8 -0
  7. package/dist/cli/adrReanchor.js +74 -0
  8. package/dist/cli/adrReanchor.js.map +1 -0
  9. package/dist/cli/doctor.d.ts +2 -2
  10. package/dist/cli/doctor.js +12 -5
  11. package/dist/cli/doctor.js.map +1 -1
  12. package/dist/cli/doctorDecisions.d.ts +5 -0
  13. package/dist/cli/doctorDecisions.js +39 -2
  14. package/dist/cli/doctorDecisions.js.map +1 -1
  15. package/dist/cli/doctorFreshness.d.ts +6 -0
  16. package/dist/cli/doctorFreshness.js +23 -0
  17. package/dist/cli/doctorFreshness.js.map +1 -1
  18. package/dist/cli/migrate.d.ts +26 -0
  19. package/dist/cli/migrate.js +208 -0
  20. package/dist/cli/migrate.js.map +1 -0
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +30 -7
  23. package/dist/index.js.map +1 -1
  24. package/dist/server/createMcpServer.d.ts +5 -1
  25. package/dist/server/createMcpServer.js +16 -0
  26. package/dist/server/createMcpServer.js.map +1 -1
  27. package/dist/store/decisions.d.ts +22 -3
  28. package/dist/store/decisions.js +71 -15
  29. package/dist/store/decisions.js.map +1 -1
  30. package/dist/store/instrumentTool.d.ts +9 -1
  31. package/dist/store/instrumentTool.js +33 -2
  32. package/dist/store/instrumentTool.js.map +1 -1
  33. package/dist/store/reanchor.d.ts +33 -0
  34. package/dist/store/reanchor.js +85 -0
  35. package/dist/store/reanchor.js.map +1 -0
  36. package/dist/store/repoSession.d.ts +19 -0
  37. package/dist/store/repoSession.js +25 -0
  38. package/dist/store/repoSession.js.map +1 -1
  39. package/dist/store/trackedGraph.d.ts +14 -0
  40. package/dist/store/trackedGraph.js +39 -0
  41. package/dist/store/trackedGraph.js.map +1 -0
  42. package/dist/tools/reaffirmDecision.d.ts +4 -2
  43. package/dist/tools/reaffirmDecision.js +4 -2
  44. package/dist/tools/reaffirmDecision.js.map +1 -1
  45. package/dist/tools/reanchorDecision.d.ts +12 -0
  46. package/dist/tools/reanchorDecision.js +52 -0
  47. package/dist/tools/reanchorDecision.js.map +1 -0
  48. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ import { anchorRepoIds, loadDecisions } from "../store/decisions.js";
2
+ import { applyReanchor, planReanchor } from "../store/reanchor.js";
3
+ const err = (text) => ({ content: [{ type: "text", text }], isError: true });
4
+ function planReport(plan) {
5
+ return {
6
+ decision_id: plan.decision_id,
7
+ changed: plan.changed,
8
+ unresolved: plan.unresolved,
9
+ anchors: plan.anchors.map((a) => ({
10
+ node_id: a.anchor.node_id,
11
+ action: a.action,
12
+ ...(a.to ? { to_node_id: a.to.node_id } : {}),
13
+ ...(a.candidates !== undefined ? { candidates: a.candidates } : {}),
14
+ })),
15
+ };
16
+ }
17
+ /** Mechanical anchor repair (REP-24): rebinds anchors whose node moved or
18
+ * whose id churned, on confident matches only. Prose and (v2) body hash are
19
+ * untouched; staleness flags survive — reaffirm_decision clears those. */
20
+ export function makeReanchorDecision(store, repoId, repoPath, opts = {}) {
21
+ const today = opts.today ?? (() => new Date().toISOString().slice(0, 10));
22
+ return async (args) => {
23
+ try {
24
+ const { decisions } = loadDecisions(repoPath);
25
+ const targets = args.decision_id
26
+ ? decisions.filter((d) => d.id === args.decision_id)
27
+ : decisions.filter((d) => d.anchors.length > 0);
28
+ if (args.decision_id && targets.length === 0)
29
+ return err(`unknown decision: ${args.decision_id}`);
30
+ const repoIds = await anchorRepoIds(store, repoId);
31
+ // Hoisted so every decision in this call gets the same stamp — a sweep
32
+ // straddling midnight must not split across two dates.
33
+ const reanchoredAt = today();
34
+ const results = [];
35
+ for (const rec of targets) {
36
+ const plan = await planReanchor(store, repoIds, rec);
37
+ if (!args.dry_run)
38
+ applyReanchor(repoPath, rec, plan, reanchoredAt);
39
+ results.push(planReport(plan));
40
+ }
41
+ return {
42
+ content: [
43
+ { type: "text", text: JSON.stringify({ ok: true, dry_run: args.dry_run === true, results }) },
44
+ ],
45
+ };
46
+ }
47
+ catch (e) {
48
+ return err(e.message);
49
+ }
50
+ };
51
+ }
52
+ //# sourceMappingURL=reanchorDecision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reanchorDecision.js","sourceRoot":"","sources":["../../src/tools/reanchorDecision.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reposkein/mcp",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "RepoSkein gives your AI coding agent a map of your codebase — so it navigates structure instead of grepping and guessing.",
5
5
  "keywords": [
6
6
  "mcp",