@flyingrobots/graft 0.7.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 (283) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/README.md +33 -16
  3. package/dist/api/index.d.ts +3 -0
  4. package/dist/api/index.d.ts.map +1 -1
  5. package/dist/api/index.js +2 -0
  6. package/dist/api/index.js.map +1 -1
  7. package/dist/cli/cli-error.d.ts.map +1 -1
  8. package/dist/cli/cli-error.js +22 -3
  9. package/dist/cli/cli-error.js.map +1 -1
  10. package/dist/cli/command-parser.d.ts.map +1 -1
  11. package/dist/cli/command-parser.js +62 -6
  12. package/dist/cli/command-parser.js.map +1 -1
  13. package/dist/cli/dead-symbols-render.d.ts +2 -0
  14. package/dist/cli/dead-symbols-render.d.ts.map +1 -0
  15. package/dist/cli/dead-symbols-render.js +23 -0
  16. package/dist/cli/dead-symbols-render.js.map +1 -0
  17. package/dist/cli/doctor-render.d.ts +2 -0
  18. package/dist/cli/doctor-render.d.ts.map +1 -0
  19. package/dist/cli/doctor-render.js +80 -0
  20. package/dist/cli/doctor-render.js.map +1 -0
  21. package/dist/cli/entrypoint.d.ts +1 -0
  22. package/dist/cli/entrypoint.d.ts.map +1 -1
  23. package/dist/cli/entrypoint.js +1 -0
  24. package/dist/cli/entrypoint.js.map +1 -1
  25. package/dist/cli/git-graft-enhance-model.d.ts +33 -3
  26. package/dist/cli/git-graft-enhance-model.d.ts.map +1 -1
  27. package/dist/cli/git-graft-enhance-model.js +38 -0
  28. package/dist/cli/git-graft-enhance-model.js.map +1 -1
  29. package/dist/cli/git-graft-enhance-render.d.ts.map +1 -1
  30. package/dist/cli/git-graft-enhance-render.js +13 -0
  31. package/dist/cli/git-graft-enhance-render.js.map +1 -1
  32. package/dist/cli/git-graft-enhance.d.ts.map +1 -1
  33. package/dist/cli/git-graft-enhance.js +44 -1
  34. package/dist/cli/git-graft-enhance.js.map +1 -1
  35. package/dist/cli/index-cmd.d.ts +1 -0
  36. package/dist/cli/index-cmd.d.ts.map +1 -1
  37. package/dist/cli/index-cmd.js +3 -0
  38. package/dist/cli/index-cmd.js.map +1 -1
  39. package/dist/cli/main.d.ts +2 -0
  40. package/dist/cli/main.d.ts.map +1 -1
  41. package/dist/cli/main.js +24 -2
  42. package/dist/cli/main.js.map +1 -1
  43. package/dist/cli/peer-command.d.ts.map +1 -1
  44. package/dist/cli/peer-command.js +25 -0
  45. package/dist/cli/peer-command.js.map +1 -1
  46. package/dist/cli/review-cooldown.d.ts +15 -0
  47. package/dist/cli/review-cooldown.d.ts.map +1 -0
  48. package/dist/cli/review-cooldown.js +136 -0
  49. package/dist/cli/review-cooldown.js.map +1 -0
  50. package/dist/cli/structural-blame-render.d.ts +2 -0
  51. package/dist/cli/structural-blame-render.d.ts.map +1 -0
  52. package/dist/cli/structural-blame-render.js +39 -0
  53. package/dist/cli/structural-blame-render.js.map +1 -0
  54. package/dist/cli/structural-review-render.d.ts +2 -0
  55. package/dist/cli/structural-review-render.d.ts.map +1 -0
  56. package/dist/cli/structural-review-render.js +56 -0
  57. package/dist/cli/structural-review-render.js.map +1 -0
  58. package/dist/cli/structural-test-coverage-render.d.ts +2 -0
  59. package/dist/cli/structural-test-coverage-render.d.ts.map +1 -0
  60. package/dist/cli/structural-test-coverage-render.js +46 -0
  61. package/dist/cli/structural-test-coverage-render.js.map +1 -0
  62. package/dist/contracts/capabilities.d.ts +9 -6
  63. package/dist/contracts/capabilities.d.ts.map +1 -1
  64. package/dist/contracts/capabilities.js +40 -1
  65. package/dist/contracts/capabilities.js.map +1 -1
  66. package/dist/contracts/causal-ontology.d.ts +17 -17
  67. package/dist/contracts/output-schema-cli.d.ts +103 -41
  68. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  69. package/dist/contracts/output-schema-cli.js +29 -0
  70. package/dist/contracts/output-schema-cli.js.map +1 -1
  71. package/dist/contracts/output-schema-fragments.d.ts +76 -76
  72. package/dist/contracts/output-schema-mcp.d.ts +87 -62
  73. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  74. package/dist/contracts/output-schema-mcp.js +43 -21
  75. package/dist/contracts/output-schema-mcp.js.map +1 -1
  76. package/dist/contracts/output-schema-meta.d.ts +2 -2
  77. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  78. package/dist/contracts/output-schemas.d.ts +7 -7
  79. package/dist/contracts/output-schemas.d.ts.map +1 -1
  80. package/dist/contracts/output-schemas.js +69 -1
  81. package/dist/contracts/output-schemas.js.map +1 -1
  82. package/dist/git/version-guard.d.ts +17 -0
  83. package/dist/git/version-guard.d.ts.map +1 -0
  84. package/dist/git/version-guard.js +51 -0
  85. package/dist/git/version-guard.js.map +1 -0
  86. package/dist/hooks/posttooluse-read.js +2 -2
  87. package/dist/hooks/posttooluse-read.js.map +1 -1
  88. package/dist/mcp/burden.d.ts.map +1 -1
  89. package/dist/mcp/burden.js +2 -0
  90. package/dist/mcp/burden.js.map +1 -1
  91. package/dist/mcp/daemon-server.d.ts.map +1 -1
  92. package/dist/mcp/daemon-server.js +2 -0
  93. package/dist/mcp/daemon-server.js.map +1 -1
  94. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -1
  95. package/dist/mcp/persisted-local-history-graph.js +2 -1
  96. package/dist/mcp/persisted-local-history-graph.js.map +1 -1
  97. package/dist/mcp/persisted-local-history.d.ts +5 -5
  98. package/dist/mcp/repo-tool-job.d.ts.map +1 -1
  99. package/dist/mcp/repo-tool-job.js +2 -0
  100. package/dist/mcp/repo-tool-job.js.map +1 -1
  101. package/dist/mcp/server-invocation.d.ts.map +1 -1
  102. package/dist/mcp/server-invocation.js +206 -147
  103. package/dist/mcp/server-invocation.js.map +1 -1
  104. package/dist/mcp/server.d.ts.map +1 -1
  105. package/dist/mcp/server.js +184 -116
  106. package/dist/mcp/server.js.map +1 -1
  107. package/dist/mcp/stdio-server.d.ts.map +1 -1
  108. package/dist/mcp/stdio-server.js +2 -0
  109. package/dist/mcp/stdio-server.js.map +1 -1
  110. package/dist/mcp/tool-registry.d.ts.map +1 -1
  111. package/dist/mcp/tool-registry.js +4 -0
  112. package/dist/mcp/tool-registry.js.map +1 -1
  113. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  114. package/dist/mcp/tools/changed-since.js +10 -3
  115. package/dist/mcp/tools/changed-since.js.map +1 -1
  116. package/dist/mcp/tools/dead-symbols.d.ts +3 -0
  117. package/dist/mcp/tools/dead-symbols.d.ts.map +1 -0
  118. package/dist/mcp/tools/dead-symbols.js +33 -0
  119. package/dist/mcp/tools/dead-symbols.js.map +1 -0
  120. package/dist/mcp/tools/map.d.ts.map +1 -1
  121. package/dist/mcp/tools/map.js +2 -0
  122. package/dist/mcp/tools/map.js.map +1 -1
  123. package/dist/mcp/tools/precision-warp.d.ts.map +1 -1
  124. package/dist/mcp/tools/precision-warp.js +2 -6
  125. package/dist/mcp/tools/precision-warp.js.map +1 -1
  126. package/dist/mcp/tools/refactor-difficulty.d.ts.map +1 -1
  127. package/dist/mcp/tools/refactor-difficulty.js +2 -0
  128. package/dist/mcp/tools/refactor-difficulty.js.map +1 -1
  129. package/dist/mcp/tools/safe-read.d.ts.map +1 -1
  130. package/dist/mcp/tools/safe-read.js +10 -105
  131. package/dist/mcp/tools/safe-read.js.map +1 -1
  132. package/dist/mcp/tools/structural-test-coverage.d.ts +3 -0
  133. package/dist/mcp/tools/structural-test-coverage.d.ts.map +1 -0
  134. package/dist/mcp/tools/structural-test-coverage.js +35 -0
  135. package/dist/mcp/tools/structural-test-coverage.js.map +1 -0
  136. package/dist/operations/cached-file.d.ts +6 -2
  137. package/dist/operations/cached-file.d.ts.map +1 -1
  138. package/dist/operations/cached-file.js +30 -6
  139. package/dist/operations/cached-file.js.map +1 -1
  140. package/dist/operations/export-surface-diff.d.ts.map +1 -1
  141. package/dist/operations/export-surface-diff.js +2 -0
  142. package/dist/operations/export-surface-diff.js.map +1 -1
  143. package/dist/operations/file-outline.js +2 -2
  144. package/dist/operations/file-outline.js.map +1 -1
  145. package/dist/operations/graft-diff.d.ts.map +1 -1
  146. package/dist/operations/graft-diff.js +2 -0
  147. package/dist/operations/graft-diff.js.map +1 -1
  148. package/dist/operations/projection-safety.d.ts.map +1 -1
  149. package/dist/operations/projection-safety.js +2 -0
  150. package/dist/operations/projection-safety.js.map +1 -1
  151. package/dist/operations/repo-workspace.d.ts.map +1 -1
  152. package/dist/operations/repo-workspace.js +26 -8
  153. package/dist/operations/repo-workspace.js.map +1 -1
  154. package/dist/operations/review-cooldown-status.d.ts +27 -0
  155. package/dist/operations/review-cooldown-status.d.ts.map +1 -0
  156. package/dist/operations/review-cooldown-status.js +115 -0
  157. package/dist/operations/review-cooldown-status.js.map +1 -0
  158. package/dist/operations/safe-read.js +2 -2
  159. package/dist/operations/safe-read.js.map +1 -1
  160. package/dist/operations/sludge-detector.d.ts.map +1 -1
  161. package/dist/operations/sludge-detector.js +2 -1
  162. package/dist/operations/sludge-detector.js.map +1 -1
  163. package/dist/operations/structural-review.js +8 -8
  164. package/dist/operations/structural-review.js.map +1 -1
  165. package/dist/operations/structural-test-coverage-map.d.ts +44 -0
  166. package/dist/operations/structural-test-coverage-map.d.ts.map +1 -0
  167. package/dist/operations/structural-test-coverage-map.js +331 -0
  168. package/dist/operations/structural-test-coverage-map.js.map +1 -0
  169. package/dist/operations/structured-buffer-compare.d.ts.map +1 -1
  170. package/dist/operations/structured-buffer-compare.js +4 -1
  171. package/dist/operations/structured-buffer-compare.js.map +1 -1
  172. package/dist/operations/structured-buffer-model.d.ts +15 -13
  173. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  174. package/dist/operations/structured-buffer-model.js +24 -5
  175. package/dist/operations/structured-buffer-model.js.map +1 -1
  176. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  177. package/dist/operations/structured-buffer-query.js +21 -12
  178. package/dist/operations/structured-buffer-query.js.map +1 -1
  179. package/dist/parser/extractors/common.d.ts +16 -0
  180. package/dist/parser/extractors/common.d.ts.map +1 -0
  181. package/dist/parser/extractors/common.js +23 -0
  182. package/dist/parser/extractors/common.js.map +1 -0
  183. package/dist/parser/extractors/go.d.ts +18 -0
  184. package/dist/parser/extractors/go.d.ts.map +1 -0
  185. package/dist/parser/extractors/go.js +200 -0
  186. package/dist/parser/extractors/go.js.map +1 -0
  187. package/dist/parser/extractors/graphql.d.ts +26 -0
  188. package/dist/parser/extractors/graphql.d.ts.map +1 -0
  189. package/dist/parser/extractors/graphql.js +239 -0
  190. package/dist/parser/extractors/graphql.js.map +1 -0
  191. package/dist/parser/extractors/index.d.ts +4 -0
  192. package/dist/parser/extractors/index.d.ts.map +1 -0
  193. package/dist/parser/extractors/index.js +26 -0
  194. package/dist/parser/extractors/index.js.map +1 -0
  195. package/dist/parser/extractors/json.d.ts +10 -0
  196. package/dist/parser/extractors/json.d.ts.map +1 -0
  197. package/dist/parser/extractors/json.js +75 -0
  198. package/dist/parser/extractors/json.js.map +1 -0
  199. package/dist/parser/extractors/python.d.ts +16 -0
  200. package/dist/parser/extractors/python.d.ts.map +1 -0
  201. package/dist/parser/extractors/python.js +145 -0
  202. package/dist/parser/extractors/python.js.map +1 -0
  203. package/dist/parser/extractors/rust.d.ts +12 -0
  204. package/dist/parser/extractors/rust.d.ts.map +1 -0
  205. package/dist/parser/extractors/rust.js +122 -0
  206. package/dist/parser/extractors/rust.js.map +1 -0
  207. package/dist/parser/extractors/toml.d.ts +10 -0
  208. package/dist/parser/extractors/toml.d.ts.map +1 -0
  209. package/dist/parser/extractors/toml.js +74 -0
  210. package/dist/parser/extractors/toml.js.map +1 -0
  211. package/dist/parser/extractors/typescript.d.ts +13 -0
  212. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  213. package/dist/parser/extractors/typescript.js +179 -0
  214. package/dist/parser/extractors/typescript.js.map +1 -0
  215. package/dist/parser/extractors/yaml.d.ts +13 -0
  216. package/dist/parser/extractors/yaml.d.ts.map +1 -0
  217. package/dist/parser/extractors/yaml.js +93 -0
  218. package/dist/parser/extractors/yaml.js.map +1 -0
  219. package/dist/parser/lang.d.ts +2 -2
  220. package/dist/parser/lang.d.ts.map +1 -1
  221. package/dist/parser/lang.js +19 -1
  222. package/dist/parser/lang.js.map +1 -1
  223. package/dist/parser/outline.d.ts +4 -0
  224. package/dist/parser/outline.d.ts.map +1 -1
  225. package/dist/parser/outline.js +32 -221
  226. package/dist/parser/outline.js.map +1 -1
  227. package/dist/parser/runtime.d.ts +7 -0
  228. package/dist/parser/runtime.d.ts.map +1 -1
  229. package/dist/parser/runtime.js +99 -10
  230. package/dist/parser/runtime.js.map +1 -1
  231. package/dist/parser/types.d.ts +1 -1
  232. package/dist/parser/types.d.ts.map +1 -1
  233. package/dist/parser/types.js.map +1 -1
  234. package/dist/ports/provenance-timeline.d.ts +10 -0
  235. package/dist/ports/provenance-timeline.d.ts.map +1 -0
  236. package/dist/ports/provenance-timeline.js +17 -0
  237. package/dist/ports/provenance-timeline.js.map +1 -0
  238. package/dist/ports/semantic-enrichment.d.ts +47 -0
  239. package/dist/ports/semantic-enrichment.d.ts.map +1 -0
  240. package/dist/ports/semantic-enrichment.js +2 -0
  241. package/dist/ports/semantic-enrichment.js.map +1 -0
  242. package/dist/warp/ast-import-resolver.d.ts.map +1 -1
  243. package/dist/warp/ast-import-resolver.js +2 -1
  244. package/dist/warp/ast-import-resolver.js.map +1 -1
  245. package/dist/warp/dead-symbols.d.ts.map +1 -1
  246. package/dist/warp/dead-symbols.js +4 -7
  247. package/dist/warp/dead-symbols.js.map +1 -1
  248. package/dist/warp/index-head.d.ts +4 -0
  249. package/dist/warp/index-head.d.ts.map +1 -1
  250. package/dist/warp/index-head.js +255 -22
  251. package/dist/warp/index-head.js.map +1 -1
  252. package/dist/warp/observers.d.ts.map +1 -1
  253. package/dist/warp/observers.js +3 -2
  254. package/dist/warp/observers.js.map +1 -1
  255. package/dist/warp/refactor-difficulty.d.ts.map +1 -1
  256. package/dist/warp/refactor-difficulty.js +4 -9
  257. package/dist/warp/refactor-difficulty.js.map +1 -1
  258. package/dist/warp/references.d.ts.map +1 -1
  259. package/dist/warp/references.js +2 -1
  260. package/dist/warp/references.js.map +1 -1
  261. package/dist/warp/semantic-enrichment.d.ts +14 -0
  262. package/dist/warp/semantic-enrichment.d.ts.map +1 -0
  263. package/dist/warp/semantic-enrichment.js +55 -0
  264. package/dist/warp/semantic-enrichment.js.map +1 -0
  265. package/dist/warp/structural-queries.d.ts.map +1 -1
  266. package/dist/warp/structural-queries.js +7 -14
  267. package/dist/warp/structural-queries.js.map +1 -1
  268. package/dist/warp/sym-id-codec.d.ts +14 -0
  269. package/dist/warp/sym-id-codec.d.ts.map +1 -0
  270. package/dist/warp/sym-id-codec.js +47 -0
  271. package/dist/warp/sym-id-codec.js.map +1 -0
  272. package/dist/warp/symbol-timeline.d.ts.map +1 -1
  273. package/dist/warp/symbol-timeline.js +6 -14
  274. package/dist/warp/symbol-timeline.js.map +1 -1
  275. package/dist/warp/warp-structural-churn.d.ts.map +1 -1
  276. package/dist/warp/warp-structural-churn.js +6 -10
  277. package/dist/warp/warp-structural-churn.js.map +1 -1
  278. package/dist/warp/warp-structural-log.d.ts.map +1 -1
  279. package/dist/warp/warp-structural-log.js +8 -10
  280. package/dist/warp/warp-structural-log.js.map +1 -1
  281. package/docs/CLI.md +63 -5
  282. package/docs/MCP.md +2 -1
  283. package/package.json +5 -2
@@ -24,140 +24,120 @@ import { wrapWithPolicyCheck } from "./server-tool-access.js";
24
24
  import { buildToolContext } from "./server-context.js";
25
25
  import { createInvocationEngine, recordFootprint } from "./server-invocation.js";
26
26
  export { ALL_TOOL_REGISTRY, TOOL_REGISTRY } from "./tool-registry.js";
27
- export function createGraftServer(options = {}) {
28
- const mcpServer = new McpServer({ name: "graft", version: GRAFT_VERSION });
27
+ function setupMcpServer() {
28
+ return new McpServer({ name: "graft", version: GRAFT_VERSION });
29
+ }
30
+ function resolveGraftServerConfig(options) {
29
31
  const sessionId = options.sessionId ?? crypto.randomUUID();
30
32
  const mode = options.mode ?? "repo_local";
31
- const sessionWarpWriterId = mode === "daemon" ? buildSessionWarpWriterId(sessionId) : undefined;
33
+ const sessionWarpWriterId = mode === "daemon"
34
+ ? buildSessionWarpWriterId(sessionId)
35
+ : undefined;
32
36
  const env = options.env ?? process.env;
33
- const projectRoot = mode === "repo_local" ? (options.projectRoot ?? env["GRAFT_PROJECT_ROOT"]?.trim() ?? process.cwd()) : options.projectRoot;
37
+ const projectRoot = mode === "repo_local"
38
+ ? (options.projectRoot ?? env["GRAFT_PROJECT_ROOT"]?.trim() ?? process.cwd())
39
+ : options.projectRoot;
34
40
  const graftDir = options.graftDir
35
- ?? (mode === "repo_local" && projectRoot !== undefined ? path.join(projectRoot, ".graft") : undefined);
41
+ ?? (mode === "repo_local" && projectRoot !== undefined
42
+ ? path.join(projectRoot, ".graft")
43
+ : undefined);
36
44
  if (graftDir === undefined) {
37
45
  throw new Error("daemon mode requires an explicit graftDir");
38
46
  }
39
- const codec = new CanonicalJsonCodec();
40
- const runCapture = resolveRunCaptureConfig({
41
- ...(options.env !== undefined ? { env: options.env } : {}),
42
- ...(options.runCapture !== undefined ? { overrides: options.runCapture } : {}),
43
- });
44
- const observability = resolveRuntimeObservabilityState({
45
- graftDir,
46
- ...(options.env !== undefined ? { env: options.env } : {}),
47
- ...(options.runtimeObservability !== undefined ? { overrides: options.runtimeObservability } : {}),
48
- });
49
- const gitClient = options.git ?? nodeGit;
50
- const runtimeLogger = new RuntimeEventLogger({
51
- fs: nodeFs,
52
- codec,
53
- logPath: observability.logPath,
54
- maxBytes: observability.maxBytes,
55
- });
56
- const warpPool = options.warpPool ?? new InMemoryWarpPool((cwd, writerId) => openWarp({ cwd, writerId }));
57
- const processRunner = options.processRunner ?? nodeProcessRunner;
58
- const persistedLocalHistory = new PersistedLocalHistoryStore({
59
- fs: nodeFs,
60
- codec,
47
+ return {
48
+ sessionId,
49
+ mode,
50
+ env,
51
+ projectRoot,
61
52
  graftDir,
62
- });
63
- const daemonScheduler = mode === "daemon" ? (options.daemonScheduler ?? new DaemonJobScheduler()) : null;
64
- const daemonWorkerPool = mode === "daemon" ? (options.daemonWorkerPool ?? new InlineDaemonWorkerPool()) : null;
65
- const daemonControlPlane = mode === "daemon"
53
+ sessionWarpWriterId,
54
+ };
55
+ }
56
+ function createDaemonRuntimeParts(input) {
57
+ const { config, options, codec, gitClient, warpPool } = input;
58
+ const scheduler = config.mode === "daemon"
59
+ ? (options.daemonScheduler ?? new DaemonJobScheduler())
60
+ : null;
61
+ const workerPool = config.mode === "daemon"
62
+ ? (options.daemonWorkerPool ?? new InlineDaemonWorkerPool())
63
+ : null;
64
+ const controlPlane = config.mode === "daemon"
66
65
  ? (options.daemonControlPlane ?? new DaemonControlPlane({
67
66
  fs: nodeFs,
68
67
  codec,
69
68
  git: gitClient,
70
- graftDir,
69
+ graftDir: config.graftDir,
71
70
  }))
72
71
  : null;
73
- const monitorRuntime = mode !== "daemon" || daemonControlPlane === null || daemonScheduler === null || daemonWorkerPool === null
72
+ const monitorRuntime = config.mode !== "daemon" || controlPlane === null || scheduler === null || workerPool === null
74
73
  ? null
75
74
  : (options.monitorRuntime ?? new PersistentMonitorRuntime({
76
75
  fs: nodeFs,
77
76
  codec,
78
77
  git: gitClient,
79
- graftDir,
80
- controlPlane: daemonControlPlane,
81
- scheduler: daemonScheduler,
82
- workerPool: daemonWorkerPool,
78
+ graftDir: config.graftDir,
79
+ controlPlane,
80
+ scheduler,
81
+ workerPool,
83
82
  }));
83
+ const repoOverview = controlPlane !== null && monitorRuntime !== null
84
+ ? new DaemonRepoOverview({ controlPlane, monitorRuntime })
85
+ : null;
84
86
  const daemonStartedAt = new Date().toISOString();
85
- const daemonRuntime = options.daemonRuntime ?? (() => {
87
+ const runtime = options.daemonRuntime ?? (() => {
86
88
  return {
87
89
  transport: "unix_socket",
88
90
  sameUserOnly: true,
89
- socketPath: graftDir,
91
+ socketPath: config.graftDir,
90
92
  mcpPath: "/mcp",
91
93
  healthPath: "/healthz",
92
94
  activeWarpRepos: warpPool.size(),
93
95
  startedAt: daemonStartedAt,
94
96
  };
95
97
  });
96
- const handlers = new Map();
97
- const schemas = new Map();
98
- const workspaceRouter = new WorkspaceRouter({
99
- mode,
98
+ return {
99
+ scheduler,
100
+ workerPool,
101
+ controlPlane,
102
+ monitorRuntime,
103
+ repoOverview,
104
+ runtime,
105
+ };
106
+ }
107
+ function initWorkspaceRouter(input) {
108
+ const { config, options, gitClient, warpPool, persistedLocalHistory, daemon, } = input;
109
+ return new WorkspaceRouter({
110
+ mode: config.mode,
100
111
  fs: nodeFs,
101
112
  git: gitClient,
102
- graftDir,
103
- ...(projectRoot !== undefined ? { projectRoot } : {}),
113
+ graftDir: config.graftDir,
114
+ ...(config.projectRoot !== undefined ? { projectRoot: config.projectRoot } : {}),
104
115
  warpPool,
105
- transportSessionId: sessionId,
106
- ...(sessionWarpWriterId !== undefined ? { warpWriterId: sessionWarpWriterId } : {}),
107
- ...(daemonControlPlane !== null ? { authorizationPolicy: daemonControlPlane } : {}),
108
- ...(daemonControlPlane !== null ? { sharedAttachPolicy: daemonControlPlane } : {}),
116
+ transportSessionId: config.sessionId,
117
+ ...(config.sessionWarpWriterId !== undefined ? { warpWriterId: config.sessionWarpWriterId } : {}),
118
+ ...(daemon.controlPlane !== null ? { authorizationPolicy: daemon.controlPlane } : {}),
119
+ ...(daemon.controlPlane !== null ? { sharedAttachPolicy: daemon.controlPlane } : {}),
109
120
  persistedLocalHistory,
110
121
  persistedLocalHistoryGraph: options.persistedLocalHistoryGraph ?? true,
111
122
  });
112
- const daemonRepoOverview = daemonControlPlane !== null && monitorRuntime !== null
113
- ? new DaemonRepoOverview({
114
- controlPlane: daemonControlPlane,
115
- monitorRuntime,
116
- })
117
- : null;
118
- const runtimeReady = (async () => {
119
- if (mode === "repo_local" && projectRoot !== undefined) {
120
- await ensureGraftDirExcluded(projectRoot, graftDir, nodeFs);
123
+ }
124
+ function createRuntimeReady(input) {
125
+ const { config, workspaceRouter, daemon } = input;
126
+ return (async () => {
127
+ if (config.mode === "repo_local" && config.projectRoot !== undefined) {
128
+ await ensureGraftDirExcluded(config.projectRoot, config.graftDir, nodeFs);
121
129
  }
122
130
  await workspaceRouter.initialize();
123
131
  await Promise.all([
124
- daemonControlPlane?.initialize() ?? Promise.resolve(),
125
- monitorRuntime?.initialize() ?? Promise.resolve(),
132
+ daemon.controlPlane?.initialize() ?? Promise.resolve(),
133
+ daemon.monitorRuntime?.initialize() ?? Promise.resolve(),
126
134
  ]);
127
135
  })().then(() => undefined);
128
- // --- Invocation engine: AsyncLocalStorage, respond(), invokeTool() ---
129
- const engine = createInvocationEngine({
130
- sessionId,
131
- mode,
132
- codec,
133
- observability,
134
- runtimeLogger,
135
- workspaceRouter,
136
- daemonScheduler,
137
- daemonWorkerPool,
138
- runtimeReady,
139
- });
140
- // --- ToolContext: lazy-getter facade over workspace router + execution context ---
141
- const ctx = buildToolContext({
142
- workspaceRouter,
143
- fs: nodeFs,
144
- codec,
145
- processRunner,
146
- git: nodeGit,
147
- runCapture,
148
- observability,
149
- daemonControlPlane,
150
- daemonRepoOverview,
151
- daemonScheduler,
152
- daemonWorkerPool,
153
- monitorRuntime,
154
- daemonRuntime,
155
- getActiveExecutionContext: engine.getActiveExecutionContext,
156
- respond: engine.respond,
157
- recordFootprint: (entry) => { recordFootprint(engine.invocationStorage, entry); },
158
- });
159
- // --- Tool registration ---
160
- const activeToolRegistry = mode === "daemon" ? ALL_TOOL_REGISTRY : TOOL_REGISTRY;
136
+ }
137
+ function registerGraftToolSurface(input) {
138
+ const handlers = new Map();
139
+ const schemas = new Map();
140
+ const activeToolRegistry = input.mode === "daemon" ? ALL_TOOL_REGISTRY : TOOL_REGISTRY;
161
141
  for (const def of activeToolRegistry) {
162
142
  const rawHandler = def.createHandler();
163
143
  const handler = def.policyCheck === true ? wrapWithPolicyCheck(def.name, rawHandler) : rawHandler;
@@ -165,53 +145,141 @@ export function createGraftServer(options = {}) {
165
145
  if (def.schema !== undefined) {
166
146
  const zodSchema = z.object(def.schema).strict();
167
147
  schemas.set(def.name, zodSchema);
168
- mcpServer.registerTool(def.name, { description: def.description, inputSchema: def.schema }, async (args) => {
169
- return engine.invokeTool(def.name, handler, args, ctx, zodSchema);
170
- });
148
+ input.mcpServer.registerTool(def.name, { description: def.description, inputSchema: def.schema }, async (args) => input.engine.invokeTool(def.name, handler, args, input.ctx, zodSchema));
171
149
  }
172
150
  else {
173
- mcpServer.registerTool(def.name, { description: def.description }, async () => {
174
- return engine.invokeTool(def.name, handler, {}, ctx);
175
- });
151
+ input.mcpServer.registerTool(def.name, { description: def.description }, async () => input.engine.invokeTool(def.name, handler, {}, input.ctx));
176
152
  }
177
153
  }
178
- if (observability.enabled) {
179
- void engine.emitRuntimeEvent({
180
- event: "session_started",
181
- sessionId,
182
- logPath: observability.logPath,
183
- logPolicy: observability.logPolicy,
184
- });
185
- }
154
+ return { handlers, schemas };
155
+ }
156
+ function createGraftServerSurface(input) {
186
157
  return {
187
158
  getRegisteredTools() {
188
- return [...handlers.keys()];
159
+ return [...input.registered.handlers.keys()];
189
160
  },
190
161
  async callTool(name, args) {
191
- const handler = handlers.get(name);
162
+ const handler = input.registered.handlers.get(name);
192
163
  if (handler === undefined) {
193
164
  throw new Error(`Unknown tool: ${name}`);
194
165
  }
195
- const schema = schemas.get(name);
196
- return engine.invokeTool(name, handler, args, ctx, schema);
166
+ const schema = input.registered.schemas.get(name);
167
+ return input.engine.invokeTool(name, handler, args, input.ctx, schema);
197
168
  },
198
169
  injectSessionMessages(count) {
199
170
  for (let i = 0; i < count; i++) {
200
- workspaceRouter.governor.recordMessage();
171
+ input.workspaceRouter.governor.recordMessage();
201
172
  }
202
173
  },
203
174
  getWorkspaceStatus() {
204
- return workspaceRouter.getStatus();
175
+ return input.workspaceRouter.getStatus();
205
176
  },
206
177
  getRuntimeCausalContext() {
207
- if (workspaceRouter.getStatus().bindState !== "bound") {
178
+ if (input.workspaceRouter.getStatus().bindState !== "bound") {
208
179
  return null;
209
180
  }
210
- return workspaceRouter.captureExecutionContext().getCausalContext();
181
+ return input.workspaceRouter.captureExecutionContext().getCausalContext();
211
182
  },
212
183
  getMcpServer() {
213
- return mcpServer;
184
+ return input.mcpServer;
214
185
  },
215
186
  };
216
187
  }
188
+ export function createGraftServer(options = {}) {
189
+ const config = resolveGraftServerConfig(options);
190
+ const mcpServer = setupMcpServer();
191
+ const codec = new CanonicalJsonCodec();
192
+ const runCapture = resolveRunCaptureConfig({
193
+ ...(options.env !== undefined ? { env: options.env } : {}),
194
+ ...(options.runCapture !== undefined ? { overrides: options.runCapture } : {}),
195
+ });
196
+ const observability = resolveRuntimeObservabilityState({
197
+ graftDir: config.graftDir,
198
+ ...(options.env !== undefined ? { env: options.env } : {}),
199
+ ...(options.runtimeObservability !== undefined ? { overrides: options.runtimeObservability } : {}),
200
+ });
201
+ const gitClient = options.git ?? nodeGit;
202
+ const runtimeLogger = new RuntimeEventLogger({
203
+ fs: nodeFs,
204
+ codec,
205
+ logPath: observability.logPath,
206
+ maxBytes: observability.maxBytes,
207
+ });
208
+ const warpPool = options.warpPool ?? new InMemoryWarpPool((cwd, writerId) => openWarp({ cwd, writerId }));
209
+ const processRunner = options.processRunner ?? nodeProcessRunner;
210
+ const persistedLocalHistory = new PersistedLocalHistoryStore({
211
+ fs: nodeFs,
212
+ codec,
213
+ graftDir: config.graftDir,
214
+ });
215
+ const daemon = createDaemonRuntimeParts({
216
+ config,
217
+ options,
218
+ codec,
219
+ gitClient,
220
+ warpPool,
221
+ });
222
+ const workspaceRouter = initWorkspaceRouter({
223
+ config,
224
+ options,
225
+ gitClient,
226
+ warpPool,
227
+ persistedLocalHistory,
228
+ daemon,
229
+ });
230
+ const runtimeReady = createRuntimeReady({ config, workspaceRouter, daemon });
231
+ // --- Invocation engine: AsyncLocalStorage, respond(), invokeTool() ---
232
+ const engine = createInvocationEngine({
233
+ sessionId: config.sessionId,
234
+ mode: config.mode,
235
+ codec,
236
+ observability,
237
+ runtimeLogger,
238
+ workspaceRouter,
239
+ daemonScheduler: daemon.scheduler,
240
+ daemonWorkerPool: daemon.workerPool,
241
+ runtimeReady,
242
+ });
243
+ // --- ToolContext: lazy-getter facade over workspace router + execution context ---
244
+ const ctx = buildToolContext({
245
+ workspaceRouter,
246
+ fs: nodeFs,
247
+ codec,
248
+ processRunner,
249
+ git: gitClient,
250
+ runCapture,
251
+ observability,
252
+ daemonControlPlane: daemon.controlPlane,
253
+ daemonRepoOverview: daemon.repoOverview,
254
+ daemonScheduler: daemon.scheduler,
255
+ daemonWorkerPool: daemon.workerPool,
256
+ monitorRuntime: daemon.monitorRuntime,
257
+ daemonRuntime: daemon.runtime,
258
+ getActiveExecutionContext: engine.getActiveExecutionContext,
259
+ respond: engine.respond,
260
+ recordFootprint: (entry) => { recordFootprint(engine.invocationStorage, entry); },
261
+ });
262
+ // --- Tool registration ---
263
+ const registered = registerGraftToolSurface({
264
+ mcpServer,
265
+ mode: config.mode,
266
+ engine,
267
+ ctx,
268
+ });
269
+ if (observability.enabled) {
270
+ void engine.emitRuntimeEvent({
271
+ event: "session_started",
272
+ sessionId: config.sessionId,
273
+ logPath: observability.logPath,
274
+ logPolicy: observability.logPolicy,
275
+ });
276
+ }
277
+ return createGraftServerSurface({
278
+ mcpServer,
279
+ workspaceRouter,
280
+ engine,
281
+ ctx,
282
+ registered,
283
+ });
284
+ }
217
285
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stdio-server.d.ts","sourceRoot":"","sources":["../../src/mcp/stdio-server.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAUD,wBAAsB,gBAAgB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE"}
1
+ {"version":3,"file":"stdio-server.d.ts","sourceRoot":"","sources":["../../src/mcp/stdio-server.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAUD,wBAAsB,gBAAgB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE"}
@@ -1,5 +1,6 @@
1
1
  import * as path from "node:path";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { ensureGitVersionSupportsGraft } from "../git/version-guard.js";
3
4
  import { createGraftServer } from "./server.js";
4
5
  function resolveProjectRoot(cwd) {
5
6
  const fromEnv = process.env["GRAFT_PROJECT_ROOT"]?.trim();
@@ -9,6 +10,7 @@ function resolveProjectRoot(cwd) {
9
10
  return cwd;
10
11
  }
11
12
  export async function startStdioServer(cwd = process.cwd()) {
13
+ await ensureGitVersionSupportsGraft();
12
14
  const projectRoot = resolveProjectRoot(cwd);
13
15
  const graft = createGraftServer({
14
16
  projectRoot,
@@ -1 +1 @@
1
- {"version":3,"file":"stdio-server.js","sourceRoot":"","sources":["../../src/mcp/stdio-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOhD,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAC9B,WAAW;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"stdio-server.js","sourceRoot":"","sources":["../../src/mcp/stdio-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOhD,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,6BAA6B,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAC9B,WAAW;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA6CnD,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EA6BlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAgBzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAGtD,CAAC"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+CnD,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EA+BlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAgBzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAGtD,CAAC"}
@@ -15,12 +15,14 @@ import { mapTool } from "./tools/map.js";
15
15
  import { codeShowTool } from "./tools/code-show.js";
16
16
  import { codeFindTool } from "./tools/code-find.js";
17
17
  import { codeRefsTool } from "./tools/code-refs.js";
18
+ import { deadSymbolsTool } from "./tools/dead-symbols.js";
18
19
  import { structuralChurnTool } from "./tools/structural-churn.js";
19
20
  import { exportSurfaceDiffTool } from "./tools/export-surface-diff.js";
20
21
  import { structuralLogTool } from "./tools/structural-log.js";
21
22
  import { structuralBlameTool } from "./tools/structural-blame.js";
22
23
  import { refactorDifficultyTool } from "./tools/refactor-difficulty.js";
23
24
  import { structuralReviewTool } from "./tools/structural-review.js";
25
+ import { structuralTestCoverageTool } from "./tools/structural-test-coverage.js";
24
26
  import { daemonMonitorsTool } from "./tools/daemon-monitors.js";
25
27
  import { daemonReposTool } from "./tools/daemon-repos.js";
26
28
  import { daemonSessionsTool } from "./tools/daemon-sessions.js";
@@ -68,6 +70,8 @@ export const TOOL_REGISTRY = [
68
70
  structuralBlameTool,
69
71
  refactorDifficultyTool,
70
72
  structuralReviewTool,
73
+ structuralTestCoverageTool,
74
+ deadSymbolsTool,
71
75
  knowledgeMapTool,
72
76
  ];
73
77
  export const DAEMON_TOOL_REGISTRY = [
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/mcp/tool-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/mcp/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"changed-since.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,gBAAgB,EAAE,cA8D9B,CAAC"}
1
+ {"version":3,"file":"changed-since.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,gBAAgB,EAAE,cAqE9B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { RefusedResult } from "../../policy/types.js";
3
- import { extractOutlineForFile } from "../../parser/outline.js";
3
+ import { detectStructuredFormat } from "../../parser/lang.js";
4
+ import { extractOutlineForFileAsync } from "../../parser/outline.js";
4
5
  import { diffOutlines } from "../../parser/diff.js";
5
6
  import { hashContent } from "../cache.js";
6
7
  import { evaluateMcpPolicy } from "../policy.js";
@@ -32,8 +33,7 @@ export const changedSinceTool = {
32
33
  if (policy instanceof RefusedResult) {
33
34
  return ctx.respond("changed_since", { status: "refused", reason: policy.reason });
34
35
  }
35
- const newOutlineResult = extractOutlineForFile(filePath, rawContent);
36
- if (newOutlineResult === null) {
36
+ if (detectStructuredFormat(filePath) === null) {
37
37
  return ctx.respond("changed_since", {
38
38
  status: "unsupported",
39
39
  reason: "UNSUPPORTED_LANGUAGE",
@@ -46,6 +46,13 @@ export const changedSinceTool = {
46
46
  if (cacheResult.stale === null) {
47
47
  return ctx.respond("changed_since", { status: "no_previous_observation" });
48
48
  }
49
+ const newOutlineResult = await extractOutlineForFileAsync(filePath, rawContent);
50
+ if (newOutlineResult === null) {
51
+ return ctx.respond("changed_since", {
52
+ status: "unsupported",
53
+ reason: "UNSUPPORTED_LANGUAGE",
54
+ });
55
+ }
49
56
  const diff = diffOutlines(cacheResult.stale.outline, newOutlineResult.entries);
50
57
  if (consume) {
51
58
  ctx.cache.record(filePath, hashContent(rawContent), newOutlineResult.entries, newOutlineResult.jumpTable ?? [], actual);
@@ -1 +1 @@
1
- {"version":3,"file":"changed-since.js","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changed-since.js","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "../context.js";
2
+ export declare const deadSymbolsTool: ToolDefinition;
3
+ //# sourceMappingURL=dead-symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dead-symbols.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/dead-symbols.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,eAAe,EAAE,cAgC7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { findDeadSymbols } from "../../warp/dead-symbols.js";
3
+ export const deadSymbolsTool = {
4
+ name: "graft_dead_symbols",
5
+ description: "Dead symbol detection. Lists symbols removed in recent indexed commits " +
6
+ "that were not re-added, using WARP graph history only.",
7
+ schema: {
8
+ maxCommits: z.number().int().positive().optional(),
9
+ },
10
+ createHandler() {
11
+ return async (args, ctx) => {
12
+ const maxCommits = args["maxCommits"];
13
+ const warp = await ctx.getWarp();
14
+ const symbols = await findDeadSymbols(warp, {
15
+ ...(typeof maxCommits === "number" ? { maxCommits } : {}),
16
+ });
17
+ const sorted = [...symbols].sort((a, b) => a.filePath.localeCompare(b.filePath) ||
18
+ a.name.localeCompare(b.name) ||
19
+ a.removedInCommit.localeCompare(b.removedInCommit));
20
+ ctx.recordFootprint({
21
+ paths: sorted.map((symbol) => symbol.filePath),
22
+ symbols: sorted.map((symbol) => symbol.name),
23
+ });
24
+ return ctx.respond("graft_dead_symbols", {
25
+ ...(typeof maxCommits === "number" ? { maxCommits } : {}),
26
+ symbols: sorted,
27
+ total: sorted.length,
28
+ summary: `${String(sorted.length)} dead symbols found in indexed WARP history.`,
29
+ });
30
+ };
31
+ },
32
+ };
33
+ //# sourceMappingURL=dead-symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dead-symbols.js","sourceRoot":"","sources":["../../../src/mcp/tools/dead-symbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,yEAAyE;QACzE,wDAAwD;IAC1D,MAAM,EAAE;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACnD;IACD,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE;gBAC1C,GAAG,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5B,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CACnD,CAAC;YACF,GAAG,CAAC,eAAe,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;aAC7C,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBACvC,GAAG,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C;aAChF,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/map.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAKjE,iEAAiE;AACjE,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,0EAA0E;AAC1E,eAAO,MAAM,aAAa,QAAS,CAAC;AAgEpC,eAAO,MAAM,OAAO,EAAE,cA2GrB,CAAC"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/map.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAKjE,iEAAiE;AACjE,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,0EAA0E;AAC1E,eAAO,MAAM,aAAa,QAAS,CAAC;AAgEpC,eAAO,MAAM,OAAO,EAAE,cA4GrB,CAAC"}
@@ -2,6 +2,7 @@ import * as path from "node:path";
2
2
  import { z } from "zod";
3
3
  import { extractOutline } from "../../parser/outline.js";
4
4
  import { detectLang } from "../../parser/lang.js";
5
+ import { ensureParserReady } from "../../parser/runtime.js";
5
6
  import { GitFileQuery, listGitFiles } from "./git-files.js";
6
7
  import { evaluateMcpRefusal } from "../policy.js";
7
8
  import { collectSymbols, normalizeRepoPath } from "./precision.js";
@@ -66,6 +67,7 @@ export const mapTool = {
66
67
  },
67
68
  createHandler() {
68
69
  return async (args, ctx) => {
70
+ await ensureParserReady();
69
71
  const request = new StructuralMapRequest(args, ctx.projectRoot);
70
72
  // Budget gate: if the session budget is exhausted, return summary-only.
71
73
  const budget = ctx.governor.getBudget();