@flyingrobots/graft 0.6.1 → 0.7.1

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 (665) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +1 -2
  3. package/bin/graft.js +26 -26
  4. package/dist/adapters/json-text-decoder.d.ts +3 -0
  5. package/dist/adapters/json-text-decoder.d.ts.map +1 -0
  6. package/dist/adapters/json-text-decoder.js +12 -0
  7. package/dist/adapters/json-text-decoder.js.map +1 -0
  8. package/dist/adapters/node-paths.d.ts +3 -0
  9. package/dist/adapters/node-paths.d.ts.map +1 -0
  10. package/dist/adapters/node-paths.js +29 -0
  11. package/dist/adapters/node-paths.js.map +1 -0
  12. package/dist/adapters/repo-paths.d.ts.map +1 -1
  13. package/dist/adapters/repo-paths.js +40 -5
  14. package/dist/adapters/repo-paths.js.map +1 -1
  15. package/dist/api/tool-bridge.d.ts +1 -1
  16. package/dist/api/tool-bridge.d.ts.map +1 -1
  17. package/dist/api/tool-bridge.js +1 -1
  18. package/dist/api/tool-bridge.js.map +1 -1
  19. package/dist/cli/cli-error.d.ts.map +1 -1
  20. package/dist/cli/cli-error.js +47 -10
  21. package/dist/cli/cli-error.js.map +1 -1
  22. package/dist/cli/command-parser.d.ts +12 -3
  23. package/dist/cli/command-parser.d.ts.map +1 -1
  24. package/dist/cli/command-parser.js +161 -2
  25. package/dist/cli/command-parser.js.map +1 -1
  26. package/dist/cli/daemon-status-model.d.ts +87 -0
  27. package/dist/cli/daemon-status-model.d.ts.map +1 -0
  28. package/dist/cli/daemon-status-model.js +142 -0
  29. package/dist/cli/daemon-status-model.js.map +1 -0
  30. package/dist/cli/daemon-status-render.d.ts +3 -0
  31. package/dist/cli/daemon-status-render.d.ts.map +1 -0
  32. package/dist/cli/daemon-status-render.js +100 -0
  33. package/dist/cli/daemon-status-render.js.map +1 -0
  34. package/dist/cli/daemon-status.d.ts +7 -0
  35. package/dist/cli/daemon-status.d.ts.map +1 -0
  36. package/dist/cli/daemon-status.js +79 -0
  37. package/dist/cli/daemon-status.js.map +1 -0
  38. package/dist/cli/git-graft-enhance-model.d.ts +67 -0
  39. package/dist/cli/git-graft-enhance-model.d.ts.map +1 -0
  40. package/dist/cli/git-graft-enhance-model.js +55 -0
  41. package/dist/cli/git-graft-enhance-model.js.map +1 -0
  42. package/dist/cli/git-graft-enhance-render.d.ts +3 -0
  43. package/dist/cli/git-graft-enhance-render.d.ts.map +1 -0
  44. package/dist/cli/git-graft-enhance-render.js +29 -0
  45. package/dist/cli/git-graft-enhance-render.js.map +1 -0
  46. package/dist/cli/git-graft-enhance.d.ts +14 -0
  47. package/dist/cli/git-graft-enhance.d.ts.map +1 -0
  48. package/dist/cli/git-graft-enhance.js +29 -0
  49. package/dist/cli/git-graft-enhance.js.map +1 -0
  50. package/dist/cli/index-cmd.d.ts.map +1 -1
  51. package/dist/cli/index-cmd.js +18 -21
  52. package/dist/cli/index-cmd.js.map +1 -1
  53. package/dist/cli/index-model.d.ts +5 -9
  54. package/dist/cli/index-model.d.ts.map +1 -1
  55. package/dist/cli/index-model.js +20 -18
  56. package/dist/cli/index-model.js.map +1 -1
  57. package/dist/cli/init-client-config.d.ts +12 -7
  58. package/dist/cli/init-client-config.d.ts.map +1 -1
  59. package/dist/cli/init-client-config.js +145 -47
  60. package/dist/cli/init-client-config.js.map +1 -1
  61. package/dist/cli/init-model.d.ts +9 -2
  62. package/dist/cli/init-model.d.ts.map +1 -1
  63. package/dist/cli/init-model.js +54 -6
  64. package/dist/cli/init-model.js.map +1 -1
  65. package/dist/cli/init-render.d.ts.map +1 -1
  66. package/dist/cli/init-render.js +2 -2
  67. package/dist/cli/init-render.js.map +1 -1
  68. package/dist/cli/init.d.ts.map +1 -1
  69. package/dist/cli/init.js +11 -9
  70. package/dist/cli/init.js.map +1 -1
  71. package/dist/cli/json-document.d.ts +6 -0
  72. package/dist/cli/json-document.d.ts.map +1 -1
  73. package/dist/cli/json-document.js +12 -0
  74. package/dist/cli/json-document.js.map +1 -1
  75. package/dist/cli/main.d.ts +7 -0
  76. package/dist/cli/main.d.ts.map +1 -1
  77. package/dist/cli/main.js +49 -7
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migrate-local-history.d.ts.map +1 -1
  80. package/dist/cli/migrate-local-history.js +3 -2
  81. package/dist/cli/migrate-local-history.js.map +1 -1
  82. package/dist/cli/peer-command.d.ts +1 -1
  83. package/dist/cli/peer-command.d.ts.map +1 -1
  84. package/dist/cli/peer-command.js +1 -1
  85. package/dist/cli/peer-command.js.map +1 -1
  86. package/dist/contracts/capabilities.d.ts +5 -5
  87. package/dist/contracts/capabilities.d.ts.map +1 -1
  88. package/dist/contracts/capabilities.js +89 -0
  89. package/dist/contracts/capabilities.js.map +1 -1
  90. package/dist/contracts/causal-ontology.d.ts +17 -17
  91. package/dist/contracts/json-object.d.ts +0 -1
  92. package/dist/contracts/json-object.d.ts.map +1 -1
  93. package/dist/contracts/json-object.js +0 -10
  94. package/dist/contracts/json-object.js.map +1 -1
  95. package/dist/contracts/output-schema-cli.d.ts +277 -25
  96. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  97. package/dist/contracts/output-schema-cli.js +35 -3
  98. package/dist/contracts/output-schema-cli.js.map +1 -1
  99. package/dist/contracts/output-schema-fragments.d.ts +212 -87
  100. package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
  101. package/dist/contracts/output-schema-fragments.js +49 -2
  102. package/dist/contracts/output-schema-fragments.js.map +1 -1
  103. package/dist/contracts/output-schema-mcp.d.ts +372 -47
  104. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  105. package/dist/contracts/output-schema-mcp.js +217 -1
  106. package/dist/contracts/output-schema-mcp.js.map +1 -1
  107. package/dist/contracts/output-schema-meta.d.ts +2 -2
  108. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  109. package/dist/contracts/output-schemas.d.ts +7 -7
  110. package/dist/contracts/output-schemas.d.ts.map +1 -1
  111. package/dist/contracts/output-schemas.js +294 -6
  112. package/dist/contracts/output-schemas.js.map +1 -1
  113. package/dist/git/diff.d.ts +11 -0
  114. package/dist/git/diff.d.ts.map +1 -1
  115. package/dist/git/diff.js +50 -6
  116. package/dist/git/diff.js.map +1 -1
  117. package/dist/hooks/posttooluse-read.js +1 -1
  118. package/dist/hooks/posttooluse-read.js.map +1 -1
  119. package/dist/hooks/pretooluse-read.js +1 -1
  120. package/dist/hooks/pretooluse-read.js.map +1 -1
  121. package/dist/mcp/burden.d.ts.map +1 -1
  122. package/dist/mcp/burden.js +9 -0
  123. package/dist/mcp/burden.js.map +1 -1
  124. package/dist/mcp/context.d.ts +3 -2
  125. package/dist/mcp/context.d.ts.map +1 -1
  126. package/dist/mcp/context.js +2 -37
  127. package/dist/mcp/context.js.map +1 -1
  128. package/dist/mcp/daemon-server.d.ts +2 -0
  129. package/dist/mcp/daemon-server.d.ts.map +1 -1
  130. package/dist/mcp/daemon-server.js +6 -1
  131. package/dist/mcp/daemon-server.js.map +1 -1
  132. package/dist/mcp/daemon-session-host.d.ts +1 -0
  133. package/dist/mcp/daemon-session-host.d.ts.map +1 -1
  134. package/dist/mcp/daemon-session-host.js +3 -0
  135. package/dist/mcp/daemon-session-host.js.map +1 -1
  136. package/dist/mcp/daemon-stdio-bridge.d.ts +1 -0
  137. package/dist/mcp/daemon-stdio-bridge.d.ts.map +1 -1
  138. package/dist/mcp/daemon-stdio-bridge.js +1 -0
  139. package/dist/mcp/daemon-stdio-bridge.js.map +1 -1
  140. package/dist/mcp/daemon-worker-child-pool.d.ts +2 -0
  141. package/dist/mcp/daemon-worker-child-pool.d.ts.map +1 -1
  142. package/dist/mcp/daemon-worker-child-pool.js +10 -3
  143. package/dist/mcp/daemon-worker-child-pool.js.map +1 -1
  144. package/dist/mcp/daemon-worker-pool.d.ts +1 -1
  145. package/dist/mcp/daemon-worker-pool.d.ts.map +1 -1
  146. package/dist/mcp/daemon-worker-pool.js +1 -1
  147. package/dist/mcp/daemon-worker-pool.js.map +1 -1
  148. package/dist/mcp/monitor-tick-job.d.ts +1 -0
  149. package/dist/mcp/monitor-tick-job.d.ts.map +1 -1
  150. package/dist/mcp/monitor-tick-job.js +84 -29
  151. package/dist/mcp/monitor-tick-job.js.map +1 -1
  152. package/dist/mcp/monitor-types.d.ts +1 -1
  153. package/dist/mcp/monitor-types.d.ts.map +1 -1
  154. package/dist/mcp/persisted-local-history-graph.d.ts +2 -2
  155. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -1
  156. package/dist/mcp/persisted-local-history-graph.js +3 -2
  157. package/dist/mcp/persisted-local-history-graph.js.map +1 -1
  158. package/dist/mcp/persisted-local-history.d.ts +5 -5
  159. package/dist/mcp/persisted-local-history.js +2 -2
  160. package/dist/mcp/persisted-local-history.js.map +1 -1
  161. package/dist/mcp/persistent-monitor-runtime.d.ts +1 -0
  162. package/dist/mcp/persistent-monitor-runtime.d.ts.map +1 -1
  163. package/dist/mcp/persistent-monitor-runtime.js +35 -0
  164. package/dist/mcp/persistent-monitor-runtime.js.map +1 -1
  165. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -1
  166. package/dist/mcp/repo-tool-worker-context.js +5 -2
  167. package/dist/mcp/repo-tool-worker-context.js.map +1 -1
  168. package/dist/mcp/server-context.d.ts.map +1 -1
  169. package/dist/mcp/server-context.js +13 -0
  170. package/dist/mcp/server-context.js.map +1 -1
  171. package/dist/mcp/server-tool-access.d.ts +1 -1
  172. package/dist/mcp/server-tool-access.d.ts.map +1 -1
  173. package/dist/mcp/server-tool-access.js +3 -1
  174. package/dist/mcp/server-tool-access.js.map +1 -1
  175. package/dist/mcp/server.d.ts +3 -0
  176. package/dist/mcp/server.d.ts.map +1 -1
  177. package/dist/mcp/server.js +5 -3
  178. package/dist/mcp/server.js.map +1 -1
  179. package/dist/mcp/tool-registry.d.ts.map +1 -1
  180. package/dist/mcp/tool-registry.js +18 -0
  181. package/dist/mcp/tool-registry.js.map +1 -1
  182. package/dist/mcp/tools/code-find.d.ts.map +1 -1
  183. package/dist/mcp/tools/code-find.js +20 -0
  184. package/dist/mcp/tools/code-find.js.map +1 -1
  185. package/dist/mcp/tools/code-show.d.ts.map +1 -1
  186. package/dist/mcp/tools/code-show.js +24 -0
  187. package/dist/mcp/tools/code-show.js.map +1 -1
  188. package/dist/mcp/tools/diagnostic-models.d.ts +2 -0
  189. package/dist/mcp/tools/diagnostic-models.d.ts.map +1 -1
  190. package/dist/mcp/tools/doctor.d.ts.map +1 -1
  191. package/dist/mcp/tools/doctor.js +18 -1
  192. package/dist/mcp/tools/doctor.js.map +1 -1
  193. package/dist/mcp/tools/export-surface-diff.d.ts +3 -0
  194. package/dist/mcp/tools/export-surface-diff.d.ts.map +1 -0
  195. package/dist/mcp/tools/export-surface-diff.js +24 -0
  196. package/dist/mcp/tools/export-surface-diff.js.map +1 -0
  197. package/dist/mcp/tools/file-outline.js +1 -1
  198. package/dist/mcp/tools/file-outline.js.map +1 -1
  199. package/dist/mcp/tools/graft-edit.d.ts +3 -0
  200. package/dist/mcp/tools/graft-edit.d.ts.map +1 -0
  201. package/dist/mcp/tools/graft-edit.js +192 -0
  202. package/dist/mcp/tools/graft-edit.js.map +1 -0
  203. package/dist/mcp/tools/knowledge-map.d.ts +3 -0
  204. package/dist/mcp/tools/knowledge-map.d.ts.map +1 -0
  205. package/dist/mcp/tools/knowledge-map.js +31 -0
  206. package/dist/mcp/tools/knowledge-map.js.map +1 -0
  207. package/dist/mcp/tools/monitor-nudge.d.ts +3 -0
  208. package/dist/mcp/tools/monitor-nudge.d.ts.map +1 -0
  209. package/dist/mcp/tools/monitor-nudge.js +17 -0
  210. package/dist/mcp/tools/monitor-nudge.js.map +1 -0
  211. package/dist/mcp/tools/precision-warp.d.ts +3 -3
  212. package/dist/mcp/tools/precision-warp.d.ts.map +1 -1
  213. package/dist/mcp/tools/precision-warp.js +24 -15
  214. package/dist/mcp/tools/precision-warp.js.map +1 -1
  215. package/dist/mcp/tools/refactor-difficulty.d.ts +3 -0
  216. package/dist/mcp/tools/refactor-difficulty.d.ts.map +1 -0
  217. package/dist/mcp/tools/refactor-difficulty.js +36 -0
  218. package/dist/mcp/tools/refactor-difficulty.js.map +1 -0
  219. package/dist/mcp/tools/safe-read.js +2 -2
  220. package/dist/mcp/tools/safe-read.js.map +1 -1
  221. package/dist/mcp/tools/structural-blame.d.ts +3 -0
  222. package/dist/mcp/tools/structural-blame.d.ts.map +1 -0
  223. package/dist/mcp/tools/structural-blame.js +44 -0
  224. package/dist/mcp/tools/structural-blame.js.map +1 -0
  225. package/dist/mcp/tools/structural-churn.d.ts +3 -0
  226. package/dist/mcp/tools/structural-churn.d.ts.map +1 -0
  227. package/dist/mcp/tools/structural-churn.js +28 -0
  228. package/dist/mcp/tools/structural-churn.js.map +1 -0
  229. package/dist/mcp/tools/structural-log.d.ts +3 -0
  230. package/dist/mcp/tools/structural-log.d.ts.map +1 -0
  231. package/dist/mcp/tools/structural-log.js +38 -0
  232. package/dist/mcp/tools/structural-log.js.map +1 -0
  233. package/dist/mcp/tools/structural-review.d.ts +3 -0
  234. package/dist/mcp/tools/structural-review.d.ts.map +1 -0
  235. package/dist/mcp/tools/structural-review.js +55 -0
  236. package/dist/mcp/tools/structural-review.js.map +1 -0
  237. package/dist/mcp/warp-pool.d.ts +4 -4
  238. package/dist/mcp/warp-pool.d.ts.map +1 -1
  239. package/dist/mcp/warp-pool.js.map +1 -1
  240. package/dist/mcp/workspace-router-model.d.ts +2 -2
  241. package/dist/mcp/workspace-router-model.d.ts.map +1 -1
  242. package/dist/mcp/workspace-router-runtime.d.ts +3 -3
  243. package/dist/mcp/workspace-router-runtime.d.ts.map +1 -1
  244. package/dist/mcp/workspace-router-runtime.js +4 -1
  245. package/dist/mcp/workspace-router-runtime.js.map +1 -1
  246. package/dist/mcp/workspace-router.d.ts +3 -2
  247. package/dist/mcp/workspace-router.d.ts.map +1 -1
  248. package/dist/mcp/workspace-router.js +6 -0
  249. package/dist/mcp/workspace-router.js.map +1 -1
  250. package/dist/operations/adaptive-projection.d.ts +22 -0
  251. package/dist/operations/adaptive-projection.d.ts.map +1 -0
  252. package/dist/operations/adaptive-projection.js +36 -0
  253. package/dist/operations/adaptive-projection.js.map +1 -0
  254. package/dist/operations/agent-handoff.d.ts +25 -0
  255. package/dist/operations/agent-handoff.d.ts.map +1 -0
  256. package/dist/operations/agent-handoff.js +36 -0
  257. package/dist/operations/agent-handoff.js.map +1 -0
  258. package/dist/operations/capture-range.d.ts +33 -0
  259. package/dist/operations/capture-range.d.ts.map +1 -0
  260. package/dist/operations/capture-range.js +45 -0
  261. package/dist/operations/capture-range.js.map +1 -0
  262. package/dist/operations/conversation-primer.d.ts +27 -0
  263. package/dist/operations/conversation-primer.d.ts.map +1 -0
  264. package/dist/operations/conversation-primer.js +52 -0
  265. package/dist/operations/conversation-primer.js.map +1 -0
  266. package/dist/operations/cross-session-resume.d.ts +28 -0
  267. package/dist/operations/cross-session-resume.d.ts.map +1 -0
  268. package/dist/operations/cross-session-resume.js +79 -0
  269. package/dist/operations/cross-session-resume.js.map +1 -0
  270. package/dist/operations/deterministic-replay.d.ts +39 -0
  271. package/dist/operations/deterministic-replay.d.ts.map +1 -0
  272. package/dist/operations/deterministic-replay.js +90 -0
  273. package/dist/operations/deterministic-replay.js.map +1 -0
  274. package/dist/operations/export-surface-diff.d.ts +36 -0
  275. package/dist/operations/export-surface-diff.d.ts.map +1 -0
  276. package/dist/operations/export-surface-diff.js +298 -0
  277. package/dist/operations/export-surface-diff.js.map +1 -0
  278. package/dist/operations/footprint-parallelism.d.ts +25 -0
  279. package/dist/operations/footprint-parallelism.d.ts.map +1 -0
  280. package/dist/operations/footprint-parallelism.js +79 -0
  281. package/dist/operations/footprint-parallelism.js.map +1 -0
  282. package/dist/operations/graft-diff.d.ts.map +1 -1
  283. package/dist/operations/graft-diff.js +14 -7
  284. package/dist/operations/graft-diff.js.map +1 -1
  285. package/dist/operations/horizon-of-readability.d.ts +23 -0
  286. package/dist/operations/horizon-of-readability.d.ts.map +1 -0
  287. package/dist/operations/horizon-of-readability.js +39 -0
  288. package/dist/operations/horizon-of-readability.js.map +1 -0
  289. package/dist/operations/import-reference-impact.d.ts +13 -0
  290. package/dist/operations/import-reference-impact.d.ts.map +1 -0
  291. package/dist/operations/import-reference-impact.js +101 -0
  292. package/dist/operations/import-reference-impact.js.map +1 -0
  293. package/dist/operations/knowledge-map.d.ts +30 -0
  294. package/dist/operations/knowledge-map.d.ts.map +1 -0
  295. package/dist/operations/knowledge-map.js +64 -0
  296. package/dist/operations/knowledge-map.js.map +1 -0
  297. package/dist/operations/observation-cache.d.ts +8 -2
  298. package/dist/operations/observation-cache.d.ts.map +1 -1
  299. package/dist/operations/observation-cache.js +17 -5
  300. package/dist/operations/observation-cache.js.map +1 -1
  301. package/dist/operations/projection-safety.d.ts +31 -0
  302. package/dist/operations/projection-safety.d.ts.map +1 -0
  303. package/dist/operations/projection-safety.js +77 -0
  304. package/dist/operations/projection-safety.js.map +1 -0
  305. package/dist/operations/repo-workspace.js +3 -3
  306. package/dist/operations/repo-workspace.js.map +1 -1
  307. package/dist/operations/semantic-drift.d.ts +27 -0
  308. package/dist/operations/semantic-drift.d.ts.map +1 -0
  309. package/dist/operations/semantic-drift.js +46 -0
  310. package/dist/operations/semantic-drift.js.map +1 -0
  311. package/dist/operations/session-filtration.d.ts +36 -0
  312. package/dist/operations/session-filtration.d.ts.map +1 -0
  313. package/dist/operations/session-filtration.js +48 -0
  314. package/dist/operations/session-filtration.js.map +1 -0
  315. package/dist/operations/session-replay.d.ts +17 -0
  316. package/dist/operations/session-replay.d.ts.map +1 -0
  317. package/dist/operations/session-replay.js +59 -0
  318. package/dist/operations/session-replay.js.map +1 -0
  319. package/dist/operations/sludge-detector.d.ts +45 -0
  320. package/dist/operations/sludge-detector.d.ts.map +1 -0
  321. package/dist/operations/sludge-detector.js +278 -0
  322. package/dist/operations/sludge-detector.js.map +1 -0
  323. package/dist/operations/structural-blame.d.ts +67 -0
  324. package/dist/operations/structural-blame.d.ts.map +1 -0
  325. package/dist/operations/structural-blame.js +111 -0
  326. package/dist/operations/structural-blame.js.map +1 -0
  327. package/dist/operations/structural-review.d.ts +47 -0
  328. package/dist/operations/structural-review.d.ts.map +1 -0
  329. package/dist/operations/structural-review.js +225 -0
  330. package/dist/operations/structural-review.js.map +1 -0
  331. package/dist/operations/teaching-hints.d.ts +18 -0
  332. package/dist/operations/teaching-hints.d.ts.map +1 -0
  333. package/dist/operations/teaching-hints.js +35 -0
  334. package/dist/operations/teaching-hints.js.map +1 -0
  335. package/dist/parser/diff.d.ts +2 -0
  336. package/dist/parser/diff.d.ts.map +1 -1
  337. package/dist/parser/diff.js +7 -0
  338. package/dist/parser/diff.js.map +1 -1
  339. package/dist/ports/paths.d.ts +17 -0
  340. package/dist/ports/paths.d.ts.map +1 -0
  341. package/dist/ports/{warp.js → paths.js} +2 -2
  342. package/dist/ports/paths.js.map +1 -0
  343. package/dist/version.d.ts.map +1 -1
  344. package/dist/version.js +3 -1
  345. package/dist/version.js.map +1 -1
  346. package/dist/warp/ast-emitter.d.ts +28 -0
  347. package/dist/warp/ast-emitter.d.ts.map +1 -0
  348. package/dist/warp/ast-emitter.js +90 -0
  349. package/dist/warp/ast-emitter.js.map +1 -0
  350. package/dist/warp/ast-import-resolver.d.ts +13 -0
  351. package/dist/warp/ast-import-resolver.d.ts.map +1 -0
  352. package/dist/warp/ast-import-resolver.js +259 -0
  353. package/dist/warp/ast-import-resolver.js.map +1 -0
  354. package/dist/warp/commit-meta.d.ts +8 -0
  355. package/dist/warp/commit-meta.d.ts.map +1 -0
  356. package/dist/warp/commit-meta.js +13 -0
  357. package/dist/warp/commit-meta.js.map +1 -0
  358. package/dist/warp/context.d.ts +10 -0
  359. package/dist/warp/context.d.ts.map +1 -0
  360. package/dist/warp/context.js +26 -0
  361. package/dist/warp/context.js.map +1 -0
  362. package/dist/warp/dead-symbols.d.ts +40 -0
  363. package/dist/warp/dead-symbols.d.ts.map +1 -0
  364. package/dist/warp/dead-symbols.js +127 -0
  365. package/dist/warp/dead-symbols.js.map +1 -0
  366. package/dist/warp/drift-sentinel.d.ts +30 -0
  367. package/dist/warp/drift-sentinel.d.ts.map +1 -0
  368. package/dist/warp/drift-sentinel.js +65 -0
  369. package/dist/warp/drift-sentinel.js.map +1 -0
  370. package/dist/warp/index-head.d.ts +32 -0
  371. package/dist/warp/index-head.d.ts.map +1 -0
  372. package/dist/warp/index-head.js +245 -0
  373. package/dist/warp/index-head.js.map +1 -0
  374. package/dist/warp/observers.d.ts +6 -6
  375. package/dist/warp/observers.d.ts.map +1 -1
  376. package/dist/warp/observers.js +5 -4
  377. package/dist/warp/observers.js.map +1 -1
  378. package/dist/warp/open.d.ts +5 -4
  379. package/dist/warp/open.d.ts.map +1 -1
  380. package/dist/warp/open.js +24 -49
  381. package/dist/warp/open.js.map +1 -1
  382. package/dist/warp/outline-diff-trailer.d.ts +26 -0
  383. package/dist/warp/outline-diff-trailer.d.ts.map +1 -0
  384. package/dist/warp/outline-diff-trailer.js +68 -0
  385. package/dist/warp/outline-diff-trailer.js.map +1 -0
  386. package/dist/warp/refactor-difficulty.d.ts +38 -0
  387. package/dist/warp/refactor-difficulty.d.ts.map +1 -0
  388. package/dist/warp/refactor-difficulty.js +169 -0
  389. package/dist/warp/refactor-difficulty.js.map +1 -0
  390. package/dist/warp/references.d.ts +22 -0
  391. package/dist/warp/references.d.ts.map +1 -0
  392. package/dist/warp/references.js +57 -0
  393. package/dist/warp/references.js.map +1 -0
  394. package/dist/warp/stale-docs.d.ts +56 -0
  395. package/dist/warp/stale-docs.d.ts.map +1 -0
  396. package/dist/warp/stale-docs.js +149 -0
  397. package/dist/warp/stale-docs.js.map +1 -0
  398. package/dist/warp/structural-drift-detection.d.ts +49 -0
  399. package/dist/warp/structural-drift-detection.d.ts.map +1 -0
  400. package/dist/warp/structural-drift-detection.js +51 -0
  401. package/dist/warp/structural-drift-detection.js.map +1 -0
  402. package/dist/warp/structural-queries.d.ts +49 -0
  403. package/dist/warp/structural-queries.d.ts.map +1 -0
  404. package/dist/warp/structural-queries.js +175 -0
  405. package/dist/warp/structural-queries.js.map +1 -0
  406. package/dist/warp/symbol-timeline.d.ts +34 -0
  407. package/dist/warp/symbol-timeline.d.ts.map +1 -0
  408. package/dist/warp/symbol-timeline.js +127 -0
  409. package/dist/warp/symbol-timeline.js.map +1 -0
  410. package/dist/warp/traverse-hydrate.d.ts +23 -0
  411. package/dist/warp/traverse-hydrate.d.ts.map +1 -0
  412. package/dist/warp/traverse-hydrate.js +39 -0
  413. package/dist/warp/traverse-hydrate.js.map +1 -0
  414. package/dist/warp/warp-reference-count.d.ts +19 -0
  415. package/dist/warp/warp-reference-count.d.ts.map +1 -0
  416. package/dist/warp/warp-reference-count.js +32 -0
  417. package/dist/warp/warp-reference-count.js.map +1 -0
  418. package/dist/warp/warp-structural-blame.d.ts +20 -0
  419. package/dist/warp/warp-structural-blame.d.ts.map +1 -0
  420. package/dist/warp/warp-structural-blame.js +43 -0
  421. package/dist/warp/warp-structural-blame.js.map +1 -0
  422. package/dist/warp/warp-structural-churn.d.ts +30 -0
  423. package/dist/warp/warp-structural-churn.d.ts.map +1 -0
  424. package/dist/warp/warp-structural-churn.js +213 -0
  425. package/dist/warp/warp-structural-churn.js.map +1 -0
  426. package/dist/warp/warp-structural-log.d.ts +35 -0
  427. package/dist/warp/warp-structural-log.d.ts.map +1 -0
  428. package/dist/warp/warp-structural-log.js +104 -0
  429. package/dist/warp/warp-structural-log.js.map +1 -0
  430. package/docs/CLI.md +68 -4
  431. package/docs/MCP.md +23 -0
  432. package/docs/SETUP.md +112 -27
  433. package/package.json +13 -6
  434. package/dist/ports/warp.d.ts +0 -45
  435. package/dist/ports/warp.d.ts.map +0 -1
  436. package/dist/ports/warp.js.map +0 -1
  437. package/dist/warp/identity-resolver.d.ts +0 -14
  438. package/dist/warp/identity-resolver.d.ts.map +0 -1
  439. package/dist/warp/identity-resolver.js +0 -31
  440. package/dist/warp/identity-resolver.js.map +0 -1
  441. package/dist/warp/indexer-git.d.ts +0 -22
  442. package/dist/warp/indexer-git.d.ts.map +0 -1
  443. package/dist/warp/indexer-git.js +0 -148
  444. package/dist/warp/indexer-git.js.map +0 -1
  445. package/dist/warp/indexer-graph.d.ts +0 -17
  446. package/dist/warp/indexer-graph.d.ts.map +0 -1
  447. package/dist/warp/indexer-graph.js +0 -179
  448. package/dist/warp/indexer-graph.js.map +0 -1
  449. package/dist/warp/indexer-model.d.ts +0 -51
  450. package/dist/warp/indexer-model.d.ts.map +0 -1
  451. package/dist/warp/indexer-model.js +0 -21
  452. package/dist/warp/indexer-model.js.map +0 -1
  453. package/dist/warp/indexer.d.ts +0 -9
  454. package/dist/warp/indexer.d.ts.map +0 -1
  455. package/dist/warp/indexer.js +0 -112
  456. package/dist/warp/indexer.js.map +0 -1
  457. package/dist/warp/symbol-identity.d.ts +0 -11
  458. package/dist/warp/symbol-identity.d.ts.map +0 -1
  459. package/dist/warp/symbol-identity.js +0 -67
  460. package/dist/warp/symbol-identity.js.map +0 -1
  461. package/src/adapters/canonical-json.ts +0 -56
  462. package/src/adapters/node-fs.ts +0 -43
  463. package/src/adapters/node-git.ts +0 -47
  464. package/src/adapters/node-process-runner.ts +0 -27
  465. package/src/adapters/repo-paths.ts +0 -22
  466. package/src/adapters/rotating-ndjson-log.ts +0 -66
  467. package/src/api/index.ts +0 -107
  468. package/src/api/repo-local-graft.ts +0 -21
  469. package/src/api/repo-workspace.ts +0 -34
  470. package/src/api/tool-bridge.ts +0 -21
  471. package/src/cli/activity-render.ts +0 -112
  472. package/src/cli/cli-error.ts +0 -153
  473. package/src/cli/command-parser.ts +0 -302
  474. package/src/cli/entrypoint.ts +0 -18
  475. package/src/cli/index-cmd.ts +0 -94
  476. package/src/cli/index-model.ts +0 -76
  477. package/src/cli/init-bootstrap.ts +0 -47
  478. package/src/cli/init-client-config.ts +0 -299
  479. package/src/cli/init-model.ts +0 -229
  480. package/src/cli/init-render.ts +0 -54
  481. package/src/cli/init-target-hooks.ts +0 -93
  482. package/src/cli/init.ts +0 -122
  483. package/src/cli/json-document.ts +0 -144
  484. package/src/cli/local-history-dag-model.ts +0 -437
  485. package/src/cli/local-history-dag-render.ts +0 -133
  486. package/src/cli/local-history-dag.ts +0 -103
  487. package/src/cli/main.ts +0 -150
  488. package/src/cli/migrate-local-history.ts +0 -118
  489. package/src/cli/peer-command.ts +0 -59
  490. package/src/contracts/capabilities.ts +0 -450
  491. package/src/contracts/causal-ontology.ts +0 -627
  492. package/src/contracts/causal-surface-next-action.ts +0 -18
  493. package/src/contracts/json-object.ts +0 -28
  494. package/src/contracts/mcp-runtime.ts +0 -16
  495. package/src/contracts/output-schema-cli.ts +0 -70
  496. package/src/contracts/output-schema-fragments.ts +0 -831
  497. package/src/contracts/output-schema-mcp.ts +0 -282
  498. package/src/contracts/output-schema-meta.ts +0 -119
  499. package/src/contracts/output-schemas.ts +0 -1230
  500. package/src/git/diff.ts +0 -100
  501. package/src/git/target-git-hook-bootstrap.ts +0 -56
  502. package/src/guards/stream-boundary.ts +0 -110
  503. package/src/hooks/posttooluse-read.ts +0 -54
  504. package/src/hooks/pretooluse-read.ts +0 -52
  505. package/src/hooks/read-governor.ts +0 -95
  506. package/src/hooks/read-messages.ts +0 -53
  507. package/src/hooks/shared.ts +0 -168
  508. package/src/index.ts +0 -1
  509. package/src/mcp/burden.ts +0 -123
  510. package/src/mcp/cache.ts +0 -7
  511. package/src/mcp/cached-file.ts +0 -1
  512. package/src/mcp/context.ts +0 -187
  513. package/src/mcp/control-plane/authz-storage.ts +0 -129
  514. package/src/mcp/control-plane/session-registry.ts +0 -115
  515. package/src/mcp/control-plane/status-projection.ts +0 -76
  516. package/src/mcp/control-plane/types.ts +0 -144
  517. package/src/mcp/daemon-bootstrap.ts +0 -100
  518. package/src/mcp/daemon-control-plane.ts +0 -310
  519. package/src/mcp/daemon-job-scheduler.ts +0 -279
  520. package/src/mcp/daemon-repos.ts +0 -99
  521. package/src/mcp/daemon-server.ts +0 -165
  522. package/src/mcp/daemon-session-host.ts +0 -230
  523. package/src/mcp/daemon-stdio-bridge.ts +0 -260
  524. package/src/mcp/daemon-worker-child-pool.ts +0 -213
  525. package/src/mcp/daemon-worker-inline-pool.ts +0 -46
  526. package/src/mcp/daemon-worker-pool.ts +0 -7
  527. package/src/mcp/daemon-worker-process.ts +0 -52
  528. package/src/mcp/daemon-worker-types.ts +0 -66
  529. package/src/mcp/metrics.ts +0 -176
  530. package/src/mcp/monitor-health.ts +0 -83
  531. package/src/mcp/monitor-persistence.ts +0 -54
  532. package/src/mcp/monitor-tick-job.ts +0 -102
  533. package/src/mcp/monitor-types.ts +0 -103
  534. package/src/mcp/persisted-local-history-graph.ts +0 -591
  535. package/src/mcp/persisted-local-history-policy.ts +0 -501
  536. package/src/mcp/persisted-local-history-views.ts +0 -250
  537. package/src/mcp/persisted-local-history.ts +0 -1621
  538. package/src/mcp/persistent-monitor-runtime.ts +0 -445
  539. package/src/mcp/policy.ts +0 -75
  540. package/src/mcp/receipt.ts +0 -201
  541. package/src/mcp/repo-concurrency.ts +0 -392
  542. package/src/mcp/repo-overview/filter.ts +0 -44
  543. package/src/mcp/repo-overview/types.ts +0 -63
  544. package/src/mcp/repo-overview/view-projection.ts +0 -90
  545. package/src/mcp/repo-state-git.ts +0 -247
  546. package/src/mcp/repo-state-observation.ts +0 -203
  547. package/src/mcp/repo-state-transition.ts +0 -151
  548. package/src/mcp/repo-state-types.ts +0 -107
  549. package/src/mcp/repo-state.ts +0 -146
  550. package/src/mcp/repo-tool-job.ts +0 -102
  551. package/src/mcp/repo-tool-worker-context.ts +0 -212
  552. package/src/mcp/repo-workspace.ts +0 -21
  553. package/src/mcp/run-capture-config.ts +0 -33
  554. package/src/mcp/runtime-causal-context.ts +0 -72
  555. package/src/mcp/runtime-observability.ts +0 -217
  556. package/src/mcp/runtime-staged-target.ts +0 -161
  557. package/src/mcp/runtime-workspace-overlay.ts +0 -255
  558. package/src/mcp/secret-scrub.ts +0 -89
  559. package/src/mcp/semantic-transition-guidance.ts +0 -60
  560. package/src/mcp/semantic-transition-summary.ts +0 -130
  561. package/src/mcp/server-context.ts +0 -223
  562. package/src/mcp/server-invocation.ts +0 -388
  563. package/src/mcp/server-tool-access.ts +0 -145
  564. package/src/mcp/server.ts +0 -265
  565. package/src/mcp/stdio-server.ts +0 -26
  566. package/src/mcp/stdio.ts +0 -3
  567. package/src/mcp/tool-registry.ts +0 -80
  568. package/src/mcp/tools/activity-view.ts +0 -325
  569. package/src/mcp/tools/budget.ts +0 -23
  570. package/src/mcp/tools/causal-attach.ts +0 -67
  571. package/src/mcp/tools/causal-status.ts +0 -58
  572. package/src/mcp/tools/changed-since.ts +0 -71
  573. package/src/mcp/tools/code-find.ts +0 -169
  574. package/src/mcp/tools/code-refs.ts +0 -470
  575. package/src/mcp/tools/code-show.ts +0 -262
  576. package/src/mcp/tools/daemon-monitors.ts +0 -14
  577. package/src/mcp/tools/daemon-repos.ts +0 -22
  578. package/src/mcp/tools/daemon-sessions.ts +0 -14
  579. package/src/mcp/tools/daemon-status.ts +0 -12
  580. package/src/mcp/tools/diagnostic-models.ts +0 -95
  581. package/src/mcp/tools/doctor.ts +0 -66
  582. package/src/mcp/tools/explain.ts +0 -84
  583. package/src/mcp/tools/file-outline.ts +0 -67
  584. package/src/mcp/tools/git-files.ts +0 -73
  585. package/src/mcp/tools/graft-diff.ts +0 -35
  586. package/src/mcp/tools/map-collector.ts +0 -338
  587. package/src/mcp/tools/map.ts +0 -185
  588. package/src/mcp/tools/monitor-pause.ts +0 -18
  589. package/src/mcp/tools/monitor-resume.ts +0 -18
  590. package/src/mcp/tools/monitor-start.ts +0 -20
  591. package/src/mcp/tools/monitor-stop.ts +0 -18
  592. package/src/mcp/tools/precision-live.ts +0 -158
  593. package/src/mcp/tools/precision-match.ts +0 -54
  594. package/src/mcp/tools/precision-paths.ts +0 -59
  595. package/src/mcp/tools/precision-query.ts +0 -127
  596. package/src/mcp/tools/precision-show.ts +0 -86
  597. package/src/mcp/tools/precision-visibility.ts +0 -44
  598. package/src/mcp/tools/precision-warp.ts +0 -90
  599. package/src/mcp/tools/precision.ts +0 -21
  600. package/src/mcp/tools/read-range.ts +0 -28
  601. package/src/mcp/tools/run-capture.ts +0 -149
  602. package/src/mcp/tools/safe-read.ts +0 -148
  603. package/src/mcp/tools/since.ts +0 -53
  604. package/src/mcp/tools/state.ts +0 -39
  605. package/src/mcp/tools/stats.ts +0 -24
  606. package/src/mcp/tools/workspace-authorizations.ts +0 -14
  607. package/src/mcp/tools/workspace-authorize.ts +0 -20
  608. package/src/mcp/tools/workspace-bind.ts +0 -25
  609. package/src/mcp/tools/workspace-rebind.ts +0 -25
  610. package/src/mcp/tools/workspace-revoke.ts +0 -18
  611. package/src/mcp/tools/workspace-status.ts +0 -12
  612. package/src/mcp/warp-pool.ts +0 -36
  613. package/src/mcp/workspace-read-observation-model.ts +0 -48
  614. package/src/mcp/workspace-read-observation.ts +0 -103
  615. package/src/mcp/workspace-router-capability.ts +0 -32
  616. package/src/mcp/workspace-router-history.ts +0 -233
  617. package/src/mcp/workspace-router-model.ts +0 -131
  618. package/src/mcp/workspace-router-resolution.ts +0 -71
  619. package/src/mcp/workspace-router-runtime.ts +0 -243
  620. package/src/mcp/workspace-router.ts +0 -681
  621. package/src/metrics/logger.ts +0 -40
  622. package/src/metrics/types.ts +0 -40
  623. package/src/operations/cached-file.ts +0 -40
  624. package/src/operations/diff-identity.ts +0 -127
  625. package/src/operations/file-outline.ts +0 -48
  626. package/src/operations/graft-diff.ts +0 -162
  627. package/src/operations/observation-cache.ts +0 -149
  628. package/src/operations/read-range.ts +0 -64
  629. package/src/operations/repo-workspace.ts +0 -339
  630. package/src/operations/result-dto.ts +0 -23
  631. package/src/operations/safe-read.ts +0 -118
  632. package/src/operations/state.ts +0 -66
  633. package/src/operations/structured-buffer-compare.ts +0 -429
  634. package/src/operations/structured-buffer-model.ts +0 -456
  635. package/src/operations/structured-buffer-query.ts +0 -794
  636. package/src/operations/structured-buffer.ts +0 -181
  637. package/src/parser/diff.ts +0 -313
  638. package/src/parser/lang.ts +0 -71
  639. package/src/parser/markdown.ts +0 -197
  640. package/src/parser/outline.ts +0 -316
  641. package/src/parser/runtime.ts +0 -71
  642. package/src/parser/types.ts +0 -75
  643. package/src/policy/evaluate.ts +0 -178
  644. package/src/policy/graftignore.ts +0 -6
  645. package/src/policy/types.ts +0 -87
  646. package/src/ports/codec.ts +0 -13
  647. package/src/ports/filesystem.ts +0 -18
  648. package/src/ports/git.ts +0 -16
  649. package/src/ports/guards.ts +0 -68
  650. package/src/ports/process-runner.ts +0 -22
  651. package/src/ports/warp.ts +0 -55
  652. package/src/release/security-gate.ts +0 -102
  653. package/src/session/tracker.ts +0 -145
  654. package/src/session/types.ts +0 -23
  655. package/src/version.ts +0 -3
  656. package/src/warp/identity-resolver.ts +0 -35
  657. package/src/warp/indexer-git.ts +0 -182
  658. package/src/warp/indexer-graph.ts +0 -276
  659. package/src/warp/indexer-model.ts +0 -69
  660. package/src/warp/indexer.ts +0 -186
  661. package/src/warp/observers.ts +0 -100
  662. package/src/warp/open.ts +0 -93
  663. package/src/warp/plumbing.d.ts +0 -15
  664. package/src/warp/symbol-identity.ts +0 -100
  665. package/src/warp/writer-id.ts +0 -30
package/src/mcp/server.ts DELETED
@@ -1,265 +0,0 @@
1
- import * as crypto from "node:crypto";
2
- import * as path from "node:path";
3
- import { z } from "zod";
4
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- import type { JsonObject } from "../contracts/json-object.js";
6
- import type { ToolHandler, ToolContext } from "./context.js";
7
- import type { McpToolResult } from "./receipt.js";
8
- import { nodeFs } from "../adapters/node-fs.js";
9
- import { CanonicalJsonCodec } from "../adapters/canonical-json.js";
10
- import { nodeProcessRunner } from "../adapters/node-process-runner.js";
11
- import type { ProcessRunner } from "../ports/process-runner.js";
12
- import { nodeGit } from "../adapters/node-git.js";
13
- import { openWarp } from "../warp/open.js";
14
- import type { RunCaptureConfig } from "./run-capture-config.js";
15
- import { resolveRunCaptureConfig } from "./run-capture-config.js";
16
- import {
17
- WorkspaceRouter,
18
- type WorkspaceMode,
19
- } from "./workspace-router.js";
20
- import { DaemonControlPlane, type DaemonRuntimeDescriptor } from "./daemon-control-plane.js";
21
- import { DaemonRepoOverview } from "./daemon-repos.js";
22
- import { DaemonJobScheduler } from "./daemon-job-scheduler.js";
23
- import { InlineDaemonWorkerPool, type DaemonWorkerPool } from "./daemon-worker-pool.js";
24
- import { PersistentMonitorRuntime } from "./persistent-monitor-runtime.js";
25
- import {
26
- RuntimeEventLogger,
27
- ensureGraftDirExcluded,
28
- resolveRuntimeObservabilityState,
29
- type RuntimeObservabilityState,
30
- } from "./runtime-observability.js";
31
- import { InMemoryWarpPool, type WarpPool } from "./warp-pool.js";
32
- import { buildSessionWarpWriterId } from "../warp/writer-id.js";
33
- import { PersistedLocalHistoryStore } from "./persisted-local-history.js";
34
- import { GRAFT_VERSION } from "../version.js";
35
- import { ALL_TOOL_REGISTRY, TOOL_REGISTRY } from "./tool-registry.js";
36
- import { wrapWithPolicyCheck } from "./server-tool-access.js";
37
- import { buildToolContext } from "./server-context.js";
38
- import { createInvocationEngine, recordFootprint } from "./server-invocation.js";
39
-
40
- export type { McpToolResult, ToolHandler, ToolContext };
41
- export { ALL_TOOL_REGISTRY, TOOL_REGISTRY } from "./tool-registry.js";
42
-
43
- export interface GraftServer {
44
- getRegisteredTools(): string[];
45
- callTool(name: string, args: JsonObject): Promise<McpToolResult>;
46
- injectSessionMessages(count: number): void;
47
- getWorkspaceStatus(): import("./workspace-router.js").WorkspaceStatus;
48
- getRuntimeCausalContext(): import("./runtime-causal-context.js").RuntimeCausalContext | null;
49
- getMcpServer(): McpServer;
50
- }
51
-
52
- export interface CreateGraftServerOptions {
53
- mode?: WorkspaceMode;
54
- sessionId?: string;
55
- projectRoot?: string;
56
- graftDir?: string;
57
- env?: Readonly<Record<string, string | undefined>>;
58
- runCapture?: Partial<RunCaptureConfig>;
59
- runtimeObservability?: Partial<RuntimeObservabilityState>;
60
- warpPool?: WarpPool;
61
- daemonControlPlane?: DaemonControlPlane;
62
- monitorRuntime?: PersistentMonitorRuntime;
63
- daemonScheduler?: DaemonJobScheduler;
64
- daemonWorkerPool?: DaemonWorkerPool;
65
- daemonRuntime?: (() => DaemonRuntimeDescriptor) | undefined;
66
- processRunner?: ProcessRunner;
67
- }
68
-
69
- export function createGraftServer(options: CreateGraftServerOptions = {}): GraftServer {
70
- const mcpServer = new McpServer({ name: "graft", version: GRAFT_VERSION });
71
- const sessionId = options.sessionId ?? crypto.randomUUID();
72
- const mode = options.mode ?? "repo_local";
73
- const sessionWarpWriterId = mode === "daemon" ? buildSessionWarpWriterId(sessionId) : undefined;
74
- const env = options.env ?? process.env;
75
- const projectRoot = mode === "repo_local" ? (options.projectRoot ?? env["GRAFT_PROJECT_ROOT"]?.trim() ?? process.cwd()) : options.projectRoot;
76
- const graftDir = options.graftDir
77
- ?? (mode === "repo_local" && projectRoot !== undefined ? path.join(projectRoot, ".graft") : undefined);
78
- if (graftDir === undefined) {
79
- throw new Error("daemon mode requires an explicit graftDir");
80
- }
81
- const codec = new CanonicalJsonCodec();
82
- const runCapture = resolveRunCaptureConfig({
83
- ...(options.env !== undefined ? { env: options.env } : {}),
84
- ...(options.runCapture !== undefined ? { overrides: options.runCapture } : {}),
85
- });
86
- const observability = resolveRuntimeObservabilityState({
87
- graftDir,
88
- ...(options.env !== undefined ? { env: options.env } : {}),
89
- ...(options.runtimeObservability !== undefined ? { overrides: options.runtimeObservability } : {}),
90
- });
91
- const runtimeLogger = new RuntimeEventLogger({
92
- fs: nodeFs,
93
- codec,
94
- logPath: observability.logPath,
95
- maxBytes: observability.maxBytes,
96
- });
97
- const warpPool = options.warpPool ?? new InMemoryWarpPool((cwd, writerId) => openWarp({ cwd, writerId }));
98
- const processRunner = options.processRunner ?? nodeProcessRunner;
99
- const persistedLocalHistory = new PersistedLocalHistoryStore({
100
- fs: nodeFs,
101
- codec,
102
- graftDir,
103
- });
104
- const daemonScheduler = mode === "daemon" ? (options.daemonScheduler ?? new DaemonJobScheduler()) : null;
105
- const daemonWorkerPool = mode === "daemon" ? (options.daemonWorkerPool ?? new InlineDaemonWorkerPool()) : null;
106
- const daemonControlPlane = mode === "daemon"
107
- ? (options.daemonControlPlane ?? new DaemonControlPlane({
108
- fs: nodeFs,
109
- codec,
110
- git: nodeGit,
111
- graftDir,
112
- }))
113
- : null;
114
- const monitorRuntime = mode !== "daemon" || daemonControlPlane === null || daemonScheduler === null || daemonWorkerPool === null
115
- ? null
116
- : (options.monitorRuntime ?? new PersistentMonitorRuntime({
117
- fs: nodeFs,
118
- codec,
119
- git: nodeGit,
120
- graftDir,
121
- controlPlane: daemonControlPlane,
122
- scheduler: daemonScheduler,
123
- workerPool: daemonWorkerPool,
124
- }));
125
- const daemonStartedAt = new Date().toISOString();
126
- const daemonRuntime = options.daemonRuntime ?? (() => {
127
- return {
128
- transport: "unix_socket",
129
- sameUserOnly: true,
130
- socketPath: graftDir,
131
- mcpPath: "/mcp",
132
- healthPath: "/healthz",
133
- activeWarpRepos: warpPool.size(),
134
- startedAt: daemonStartedAt,
135
- };
136
- });
137
- const handlers = new Map<string, ToolHandler>();
138
- const schemas = new Map<string, z.ZodObject>();
139
- const workspaceRouter = new WorkspaceRouter({
140
- mode,
141
- fs: nodeFs,
142
- git: nodeGit,
143
- graftDir,
144
- ...(projectRoot !== undefined ? { projectRoot } : {}),
145
- warpPool,
146
- transportSessionId: sessionId,
147
- ...(sessionWarpWriterId !== undefined ? { warpWriterId: sessionWarpWriterId } : {}),
148
- ...(daemonControlPlane !== null ? { authorizationPolicy: daemonControlPlane } : {}),
149
- ...(daemonControlPlane !== null ? { sharedAttachPolicy: daemonControlPlane } : {}),
150
- persistedLocalHistory,
151
- });
152
- const daemonRepoOverview = daemonControlPlane !== null && monitorRuntime !== null
153
- ? new DaemonRepoOverview({
154
- controlPlane: daemonControlPlane,
155
- monitorRuntime,
156
- })
157
- : null;
158
- const runtimeReady = (async () => {
159
- if (mode === "repo_local" && projectRoot !== undefined) {
160
- await ensureGraftDirExcluded(projectRoot, graftDir, nodeFs);
161
- }
162
- await workspaceRouter.initialize();
163
- await Promise.all([
164
- daemonControlPlane?.initialize() ?? Promise.resolve(),
165
- monitorRuntime?.initialize() ?? Promise.resolve(),
166
- ]);
167
- })().then(() => undefined);
168
-
169
- // --- Invocation engine: AsyncLocalStorage, respond(), invokeTool() ---
170
-
171
- const engine = createInvocationEngine({
172
- sessionId,
173
- mode,
174
- codec,
175
- observability,
176
- runtimeLogger,
177
- workspaceRouter,
178
- daemonScheduler,
179
- daemonWorkerPool,
180
- runtimeReady,
181
- });
182
-
183
- // --- ToolContext: lazy-getter facade over workspace router + execution context ---
184
-
185
- const ctx: ToolContext = buildToolContext({
186
- workspaceRouter,
187
- fs: nodeFs,
188
- codec,
189
- processRunner,
190
- git: nodeGit,
191
- runCapture,
192
- observability,
193
- daemonControlPlane,
194
- daemonRepoOverview,
195
- daemonScheduler,
196
- daemonWorkerPool,
197
- monitorRuntime,
198
- daemonRuntime,
199
- getActiveExecutionContext: engine.getActiveExecutionContext,
200
- respond: engine.respond,
201
- recordFootprint: (entry) => { recordFootprint(engine.invocationStorage, entry); },
202
- });
203
-
204
- // --- Tool registration ---
205
-
206
- const activeToolRegistry = mode === "daemon" ? ALL_TOOL_REGISTRY : TOOL_REGISTRY;
207
-
208
- for (const def of activeToolRegistry) {
209
- const rawHandler = def.createHandler();
210
- const handler = def.policyCheck === true ? wrapWithPolicyCheck(def.name, rawHandler) : rawHandler;
211
- handlers.set(def.name, handler);
212
-
213
- if (def.schema !== undefined) {
214
- const zodSchema = z.object(def.schema).strict();
215
- schemas.set(def.name, zodSchema);
216
- mcpServer.registerTool(def.name, { description: def.description, inputSchema: def.schema }, async (args) => {
217
- return engine.invokeTool(def.name, handler, args, ctx, zodSchema);
218
- });
219
- } else {
220
- mcpServer.registerTool(def.name, { description: def.description }, async () => {
221
- return engine.invokeTool(def.name, handler, {}, ctx);
222
- });
223
- }
224
- }
225
-
226
- if (observability.enabled) {
227
- void engine.emitRuntimeEvent({
228
- event: "session_started",
229
- sessionId,
230
- logPath: observability.logPath,
231
- logPolicy: observability.logPolicy,
232
- });
233
- }
234
-
235
- return {
236
- getRegisteredTools(): string[] {
237
- return [...handlers.keys()];
238
- },
239
- async callTool(name: string, args: JsonObject): Promise<McpToolResult> {
240
- const handler = handlers.get(name);
241
- if (handler === undefined) {
242
- throw new Error(`Unknown tool: ${name}`);
243
- }
244
- const schema = schemas.get(name);
245
- return engine.invokeTool(name, handler, args, ctx, schema);
246
- },
247
- injectSessionMessages(count: number): void {
248
- for (let i = 0; i < count; i++) {
249
- workspaceRouter.governor.recordMessage();
250
- }
251
- },
252
- getWorkspaceStatus() {
253
- return workspaceRouter.getStatus();
254
- },
255
- getRuntimeCausalContext() {
256
- if (workspaceRouter.getStatus().bindState !== "bound") {
257
- return null;
258
- }
259
- return workspaceRouter.captureExecutionContext().getCausalContext();
260
- },
261
- getMcpServer(): McpServer {
262
- return mcpServer;
263
- },
264
- };
265
- }
@@ -1,26 +0,0 @@
1
- import * as path from "node:path";
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { createGraftServer } from "./server.js";
4
-
5
- export interface StartStdioServerOptions {
6
- readonly runtime: "stdio" | "daemon";
7
- readonly socketPath?: string;
8
- }
9
-
10
- function resolveProjectRoot(cwd: string): string {
11
- const fromEnv = process.env["GRAFT_PROJECT_ROOT"]?.trim();
12
- if (fromEnv !== undefined && fromEnv.length > 0) {
13
- return path.resolve(fromEnv);
14
- }
15
- return cwd;
16
- }
17
-
18
- export async function startStdioServer(cwd = process.cwd()): Promise<void> {
19
- const projectRoot = resolveProjectRoot(cwd);
20
- const graft = createGraftServer({
21
- projectRoot,
22
- graftDir: path.join(projectRoot, ".graft"),
23
- });
24
- const transport = new StdioServerTransport();
25
- await graft.getMcpServer().connect(transport);
26
- }
package/src/mcp/stdio.ts DELETED
@@ -1,3 +0,0 @@
1
- import { startStdioServer } from "./stdio-server.js";
2
-
3
- await startStdioServer();
@@ -1,80 +0,0 @@
1
- import type { ToolDefinition } from "./context.js";
2
-
3
- import { safeReadTool } from "./tools/safe-read.js";
4
- import { fileOutlineTool } from "./tools/file-outline.js";
5
- import { readRangeTool } from "./tools/read-range.js";
6
- import { changedSinceTool } from "./tools/changed-since.js";
7
- import { graftDiffTool } from "./tools/graft-diff.js";
8
- import { runCaptureTool } from "./tools/run-capture.js";
9
- import { stateSaveTool, stateLoadTool } from "./tools/state.js";
10
- import { doctorTool } from "./tools/doctor.js";
11
- import { statsTool } from "./tools/stats.js";
12
- import { explainTool } from "./tools/explain.js";
13
- import { setBudgetTool } from "./tools/budget.js";
14
- import { sinceTool } from "./tools/since.js";
15
- import { mapTool } from "./tools/map.js";
16
- import { codeShowTool } from "./tools/code-show.js";
17
- import { codeFindTool } from "./tools/code-find.js";
18
- import { codeRefsTool } from "./tools/code-refs.js";
19
- import { daemonMonitorsTool } from "./tools/daemon-monitors.js";
20
- import { daemonReposTool } from "./tools/daemon-repos.js";
21
- import { daemonSessionsTool } from "./tools/daemon-sessions.js";
22
- import { daemonStatusTool } from "./tools/daemon-status.js";
23
- import { monitorPauseTool } from "./tools/monitor-pause.js";
24
- import { monitorResumeTool } from "./tools/monitor-resume.js";
25
- import { monitorStartTool } from "./tools/monitor-start.js";
26
- import { monitorStopTool } from "./tools/monitor-stop.js";
27
- import { activityViewTool } from "./tools/activity-view.js";
28
- import { causalStatusTool } from "./tools/causal-status.js";
29
- import { causalAttachTool } from "./tools/causal-attach.js";
30
- import { workspaceAuthorizeTool } from "./tools/workspace-authorize.js";
31
- import { workspaceAuthorizationsTool } from "./tools/workspace-authorizations.js";
32
- import { workspaceBindTool } from "./tools/workspace-bind.js";
33
- import { workspaceRevokeTool } from "./tools/workspace-revoke.js";
34
- import { workspaceStatusTool } from "./tools/workspace-status.js";
35
- import { workspaceRebindTool } from "./tools/workspace-rebind.js";
36
-
37
- export const TOOL_REGISTRY: readonly ToolDefinition[] = [
38
- safeReadTool,
39
- fileOutlineTool,
40
- readRangeTool,
41
- changedSinceTool,
42
- graftDiffTool,
43
- runCaptureTool,
44
- stateSaveTool,
45
- stateLoadTool,
46
- doctorTool,
47
- activityViewTool,
48
- causalStatusTool,
49
- causalAttachTool,
50
- statsTool,
51
- explainTool,
52
- setBudgetTool,
53
- sinceTool,
54
- mapTool,
55
- codeShowTool,
56
- codeFindTool,
57
- codeRefsTool,
58
- ];
59
-
60
- export const DAEMON_TOOL_REGISTRY: readonly ToolDefinition[] = [
61
- daemonReposTool,
62
- daemonStatusTool,
63
- daemonSessionsTool,
64
- daemonMonitorsTool,
65
- monitorStartTool,
66
- monitorPauseTool,
67
- monitorResumeTool,
68
- monitorStopTool,
69
- workspaceAuthorizeTool,
70
- workspaceAuthorizationsTool,
71
- workspaceRevokeTool,
72
- workspaceBindTool,
73
- workspaceStatusTool,
74
- workspaceRebindTool,
75
- ];
76
-
77
- export const ALL_TOOL_REGISTRY: readonly ToolDefinition[] = [
78
- ...TOOL_REGISTRY,
79
- ...DAEMON_TOOL_REGISTRY,
80
- ];
@@ -1,325 +0,0 @@
1
- import { z } from "zod";
2
- import { buildRuntimeStagedTarget } from "../runtime-staged-target.js";
3
- import { deriveCausalSurfaceNextAction } from "../semantic-transition-guidance.js";
4
- import type { PersistedLocalActivityItem } from "../persisted-local-history.js";
5
- import type { ToolDefinition, ToolHandler } from "../context.js";
6
-
7
- const limitSchema = z.number().int().positive().max(50).optional();
8
-
9
- type ActivityGroupKind = "transition" | "stage" | "continuity" | "read";
10
-
11
- const GROUP_ORDER: readonly ActivityGroupKind[] = [
12
- "transition",
13
- "stage",
14
- "continuity",
15
- "read",
16
- ];
17
-
18
- function classifyActivityItem(item: PersistedLocalActivityItem): ActivityGroupKind {
19
- if ("itemKind" in item) {
20
- return "continuity";
21
- }
22
- if (item.eventKind === "transition") {
23
- return "transition";
24
- }
25
- if (item.eventKind === "stage") {
26
- return "stage";
27
- }
28
- return "read";
29
- }
30
-
31
- function groupLabel(kind: ActivityGroupKind): string {
32
- switch (kind) {
33
- case "transition":
34
- return "semantic transitions";
35
- case "stage":
36
- return "staged activity";
37
- case "continuity":
38
- return "workspace continuity";
39
- case "read":
40
- return "read activity";
41
- }
42
- }
43
-
44
- function buildAnchor(workspaceBound: boolean, headRef: string | null, headSha: string | null) {
45
- if (!workspaceBound) {
46
- return {
47
- posture: "unknown" as const,
48
- headRef: null,
49
- headSha: null,
50
- reason: "workspace_unbound" as const,
51
- };
52
- }
53
- if (headSha === null) {
54
- return {
55
- posture: "unknown" as const,
56
- headRef,
57
- headSha: null,
58
- reason: "missing_head_commit" as const,
59
- };
60
- }
61
- return {
62
- posture: "head_commit" as const,
63
- headRef,
64
- headSha,
65
- };
66
- }
67
-
68
- function unique(values: readonly string[]): string[] {
69
- return [...new Set(values)];
70
- }
71
-
72
- function pluralize(count: number, singular: string, plural = `${singular}s`): string {
73
- return count === 1 ? singular : plural;
74
- }
75
-
76
- function countText(count: number): string {
77
- return String(count);
78
- }
79
-
80
- function shortSha(sha: string | null): string {
81
- return sha === null ? "unknown" : sha.slice(0, 7);
82
- }
83
-
84
- function describeAnchor(anchor: ReturnType<typeof buildAnchor>): string {
85
- if (anchor.posture === "unknown") {
86
- return anchor.reason === "workspace_unbound"
87
- ? "Anchor to the current Git commit is unavailable because no workspace is bound."
88
- : "Anchor to the current Git commit is unavailable because HEAD could not be resolved.";
89
- }
90
-
91
- const refLabel = anchor.headRef ?? "HEAD";
92
- return `Current commit anchor is ${refLabel} @ ${shortSha(anchor.headSha)}. This view summarizes recent bounded local artifact history for the active checkout epoch, not a complete since-commit ledger.`;
93
- }
94
-
95
- function describeStagedTarget(
96
- stagedTarget: ReturnType<typeof buildRuntimeStagedTarget>,
97
- ): string {
98
- switch (stagedTarget.availability) {
99
- case "none":
100
- return "No staged target is active.";
101
- case "full_file":
102
- return `Staged target is a full-file selection across ${countText(stagedTarget.target.selectionEntries.length)} ${pluralize(
103
- stagedTarget.target.selectionEntries.length,
104
- "path",
105
- )}.`;
106
- case "ambiguous":
107
- return `Staged target is ambiguous across ${countText(stagedTarget.observedStagedPaths)} staged ${pluralize(
108
- stagedTarget.observedStagedPaths,
109
- "path",
110
- )}.`;
111
- }
112
- }
113
-
114
- function describeWorkspace(
115
- repoConcurrency: { posture: string; summary: string } | null,
116
- semanticTransitionSummary: string | null,
117
- stagedTarget: ReturnType<typeof buildRuntimeStagedTarget>,
118
- ): string {
119
- return [
120
- repoConcurrency === null
121
- ? "Repo concurrency posture is unknown."
122
- : `Repo concurrency posture is ${repoConcurrency.posture}. ${repoConcurrency.summary}`,
123
- semanticTransitionSummary ?? "No active semantic transition is recorded.",
124
- describeStagedTarget(stagedTarget),
125
- ].join(" ");
126
- }
127
-
128
- function summarizeTransitionGroup(items: PersistedLocalActivityItem[]): string {
129
- const transitionItems = items.filter((item) => "eventKind" in item && item.eventKind === "transition");
130
- const latest = transitionItems[0];
131
- if (latest === undefined) {
132
- return "No semantic transitions are recorded.";
133
- }
134
- if (transitionItems.length === 1) {
135
- return `1 semantic transition recorded: ${latest.payload.summary}.`;
136
- }
137
- return `${countText(transitionItems.length)} semantic transitions recorded, latest: ${latest.payload.summary}.`;
138
- }
139
-
140
- function summarizeStageGroup(items: PersistedLocalActivityItem[]): string {
141
- const stageItems = items.filter((item) => "eventKind" in item && item.eventKind === "stage");
142
- const uniquePaths = new Set<string>();
143
- for (const item of stageItems) {
144
- for (const path of item.footprint.paths) {
145
- uniquePaths.add(path);
146
- }
147
- }
148
- return `${countText(stageItems.length)} staging ${pluralize(stageItems.length, "event")} across ${countText(uniquePaths.size)} ${pluralize(
149
- uniquePaths.size,
150
- "path",
151
- )}.`;
152
- }
153
-
154
- function summarizeContinuityGroup(items: PersistedLocalActivityItem[]): string {
155
- const continuityItems = items.filter((item) => "itemKind" in item);
156
- const operations = unique(continuityItems.map((item) => item.operation));
157
- return `${countText(continuityItems.length)} continuity ${pluralize(continuityItems.length, "change")} (${operations.join(", ")}).`;
158
- }
159
-
160
- function summarizeReadGroup(items: PersistedLocalActivityItem[]): string {
161
- const readItems = items.filter((item) => "eventKind" in item && item.eventKind === "read");
162
- const uniquePaths = new Set<string>();
163
- for (const item of readItems) {
164
- for (const path of item.footprint.paths) {
165
- uniquePaths.add(path);
166
- }
167
- }
168
- const latest = readItems[0];
169
- if (latest === undefined) {
170
- return "No read activity is recorded.";
171
- }
172
- return `${countText(readItems.length)} reads across ${countText(uniquePaths.size)} ${pluralize(
173
- uniquePaths.size,
174
- "path",
175
- )}, latest via ${latest.payload.surface}.`;
176
- }
177
-
178
- function summarizeGroup(
179
- kind: ActivityGroupKind,
180
- items: PersistedLocalActivityItem[],
181
- ): string {
182
- switch (kind) {
183
- case "transition":
184
- return summarizeTransitionGroup(items);
185
- case "stage":
186
- return summarizeStageGroup(items);
187
- case "continuity":
188
- return summarizeContinuityGroup(items);
189
- case "read":
190
- return summarizeReadGroup(items);
191
- }
192
- }
193
-
194
- function buildHeadline(
195
- returned: number,
196
- truncated: boolean,
197
- ): string {
198
- const headline = `Showing ${countText(returned)} recent ${pluralize(returned, "activity item")} from bounded local artifact history for the active line of work.`;
199
- return truncated ? `${headline} Results are truncated to the requested window.` : headline;
200
- }
201
-
202
- export const activityViewTool: ToolDefinition = {
203
- name: "activity_view",
204
- description:
205
- "Inspect recent bounded local artifact history for the active workspace, anchored to the current commit when possible.",
206
- schema: {
207
- limit: limitSchema,
208
- },
209
- createHandler(): ToolHandler {
210
- return async (args, ctx) => {
211
- const limit = limitSchema.parse(args["limit"]) ?? 20;
212
- const workspaceStatus = ctx.getWorkspaceStatus();
213
-
214
- if (workspaceStatus.bindState === "unbound") {
215
- return ctx.respond("activity_view", {
216
- ...workspaceStatus,
217
- truthClass: "artifact_history",
218
- anchor: buildAnchor(false, null, null),
219
- summary: {
220
- headline: buildHeadline(0, false),
221
- anchor: "Anchor to the current Git commit is unavailable because no workspace is bound.",
222
- workspace: "No active causal workspace is available until a workspace is bound.",
223
- groups: [],
224
- },
225
- activeCausalWorkspace: null,
226
- activityWindow: {
227
- historyPath: null,
228
- limit,
229
- returned: 0,
230
- totalMatchingItems: 0,
231
- truncated: false,
232
- missingSignalKinds: ["write_events_not_captured"],
233
- groups: [],
234
- },
235
- degradedReasons: ["workspace_unbound", "anchor_unknown"],
236
- nextAction: "bind_workspace_to_begin_local_history",
237
- });
238
- }
239
-
240
- const repoState = ctx.getRepoState();
241
- const causalContext = ctx.getCausalContext();
242
- const persistedLocalHistory = await ctx.getPersistedLocalHistorySummary();
243
- const activityWindow = await ctx.getPersistedLocalActivityWindow(limit);
244
- const workspaceOverlayFooting = await ctx.getWorkspaceOverlayFooting();
245
- const repoConcurrency = await ctx.getRepoConcurrencySummary();
246
- const nextAction = deriveCausalSurfaceNextAction(
247
- persistedLocalHistory.nextAction,
248
- repoState.semanticTransition,
249
- repoConcurrency,
250
- );
251
- const stagedTarget = buildRuntimeStagedTarget(
252
- workspaceStatus,
253
- causalContext,
254
- repoState,
255
- persistedLocalHistory.attribution,
256
- );
257
- const anchor = buildAnchor(true, repoState.headRef, repoState.headSha);
258
- const workspaceOverlayDegradedReason = workspaceOverlayFooting?.degradedReason ?? null;
259
-
260
- const groups = GROUP_ORDER.map((groupKind) => {
261
- const items = activityWindow.items.filter((item) => classifyActivityItem(item) === groupKind);
262
- if (items.length === 0) {
263
- return null;
264
- }
265
- return {
266
- groupKind,
267
- label: groupLabel(groupKind),
268
- summary: summarizeGroup(groupKind, items),
269
- count: items.length,
270
- items,
271
- };
272
- }).filter((group) => group !== null);
273
-
274
- const degradedReasons = unique([
275
- ...(anchor.posture === "unknown" ? ["anchor_unknown"] : []),
276
- ...(workspaceOverlayDegradedReason === null ? [] : [workspaceOverlayDegradedReason]),
277
- ...(stagedTarget.availability === "ambiguous" ? ["staged_target_ambiguous"] : []),
278
- ...(repoConcurrency !== null && repoConcurrency.posture !== "exclusive"
279
- ? [repoConcurrency.posture]
280
- : []),
281
- ]);
282
-
283
- return ctx.respond("activity_view", {
284
- ...workspaceStatus,
285
- truthClass: "artifact_history",
286
- anchor,
287
- summary: {
288
- headline: buildHeadline(activityWindow.items.length, activityWindow.truncated),
289
- anchor: describeAnchor(anchor),
290
- workspace: describeWorkspace(
291
- repoConcurrency === null
292
- ? null
293
- : { posture: repoConcurrency.posture, summary: repoConcurrency.summary },
294
- repoState.semanticTransition?.summary ?? null,
295
- stagedTarget,
296
- ),
297
- groups: groups.map((group) => group.summary),
298
- },
299
- activeCausalWorkspace: {
300
- causalContext,
301
- attribution: persistedLocalHistory.attribution,
302
- repoConcurrency,
303
- checkoutEpoch: repoState.checkoutEpoch,
304
- lastTransition: repoState.lastTransition,
305
- semanticTransition: repoState.semanticTransition,
306
- workspaceOverlayId: repoState.workspaceOverlayId,
307
- workspaceOverlay: repoState.workspaceOverlay,
308
- workspaceOverlayFooting,
309
- stagedTarget,
310
- },
311
- activityWindow: {
312
- historyPath: activityWindow.historyPath,
313
- limit: activityWindow.limit,
314
- returned: activityWindow.items.length,
315
- totalMatchingItems: activityWindow.totalMatchingItems,
316
- truncated: activityWindow.truncated,
317
- missingSignalKinds: ["write_events_not_captured"],
318
- groups,
319
- },
320
- degradedReasons,
321
- nextAction,
322
- });
323
- };
324
- },
325
- };