@flyingrobots/graft 0.5.0 → 0.6.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 (996) hide show
  1. package/{docs/ADVANCED_GUIDE.md → ADVANCED_GUIDE.md} +10 -7
  2. package/ARCHITECTURE.md +130 -377
  3. package/CHANGELOG.md +101 -13
  4. package/GUIDE.md +53 -0
  5. package/README.md +107 -269
  6. package/bin/graft.js +5 -3
  7. package/dist/adapters/canonical-json.d.ts +6 -0
  8. package/dist/adapters/canonical-json.d.ts.map +1 -0
  9. package/dist/adapters/canonical-json.js +52 -0
  10. package/dist/adapters/canonical-json.js.map +1 -0
  11. package/dist/adapters/node-fs.d.ts +3 -0
  12. package/dist/adapters/node-fs.d.ts.map +1 -0
  13. package/dist/adapters/node-fs.js +33 -0
  14. package/dist/adapters/node-fs.js.map +1 -0
  15. package/dist/adapters/node-git.d.ts +3 -0
  16. package/dist/adapters/node-git.d.ts.map +1 -0
  17. package/dist/adapters/node-git.js +44 -0
  18. package/dist/adapters/node-git.js.map +1 -0
  19. package/dist/adapters/node-process-runner.d.ts +3 -0
  20. package/dist/adapters/node-process-runner.d.ts.map +1 -0
  21. package/dist/adapters/node-process-runner.js +23 -0
  22. package/dist/adapters/node-process-runner.js.map +1 -0
  23. package/dist/adapters/repo-paths.d.ts +3 -0
  24. package/dist/adapters/repo-paths.d.ts.map +1 -0
  25. package/dist/adapters/repo-paths.js +22 -0
  26. package/dist/adapters/repo-paths.js.map +1 -0
  27. package/dist/adapters/rotating-ndjson-log.d.ts +18 -0
  28. package/dist/adapters/rotating-ndjson-log.d.ts.map +1 -0
  29. package/dist/adapters/rotating-ndjson-log.js +48 -0
  30. package/dist/adapters/rotating-ndjson-log.js.map +1 -0
  31. package/dist/api/index.d.ts +27 -0
  32. package/dist/api/index.d.ts.map +1 -0
  33. package/dist/api/index.js +25 -0
  34. package/dist/api/index.js.map +1 -0
  35. package/dist/api/repo-local-graft.d.ts +7 -0
  36. package/dist/api/repo-local-graft.d.ts.map +1 -0
  37. package/dist/api/repo-local-graft.js +12 -0
  38. package/dist/api/repo-local-graft.js.map +1 -0
  39. package/dist/api/repo-workspace.d.ts +15 -0
  40. package/dist/api/repo-workspace.d.ts.map +1 -0
  41. package/dist/api/repo-workspace.js +23 -0
  42. package/dist/api/repo-workspace.js.map +1 -0
  43. package/dist/api/tool-bridge.d.ts +7 -0
  44. package/dist/api/tool-bridge.d.ts.map +1 -0
  45. package/dist/api/tool-bridge.js +14 -0
  46. package/dist/api/tool-bridge.js.map +1 -0
  47. package/dist/cli/activity-render.d.ts +2 -0
  48. package/dist/cli/activity-render.d.ts.map +1 -0
  49. package/dist/cli/activity-render.js +90 -0
  50. package/dist/cli/activity-render.js.map +1 -0
  51. package/dist/cli/cli-error.d.ts +10 -0
  52. package/dist/cli/cli-error.d.ts.map +1 -0
  53. package/dist/cli/cli-error.js +130 -0
  54. package/dist/cli/cli-error.js.map +1 -0
  55. package/dist/cli/command-parser.d.ts +17 -0
  56. package/dist/cli/command-parser.d.ts.map +1 -0
  57. package/dist/cli/command-parser.js +255 -0
  58. package/dist/cli/command-parser.js.map +1 -0
  59. package/dist/cli/entrypoint.d.ts +7 -0
  60. package/dist/cli/entrypoint.d.ts.map +1 -0
  61. package/dist/cli/entrypoint.js +8 -0
  62. package/dist/cli/entrypoint.js.map +1 -0
  63. package/dist/cli/index-cmd.d.ts +12 -0
  64. package/dist/cli/index-cmd.d.ts.map +1 -0
  65. package/dist/cli/index-cmd.js +73 -0
  66. package/dist/cli/index-cmd.js.map +1 -0
  67. package/dist/cli/index-model.d.ts +33 -0
  68. package/dist/cli/index-model.d.ts.map +1 -0
  69. package/dist/cli/index-model.js +55 -0
  70. package/dist/cli/index-model.js.map +1 -0
  71. package/dist/cli/init-bootstrap.d.ts +6 -0
  72. package/dist/cli/init-bootstrap.d.ts.map +1 -0
  73. package/dist/cli/init-bootstrap.js +27 -0
  74. package/dist/cli/init-bootstrap.js.map +1 -0
  75. package/dist/cli/init-client-config.d.ts +13 -0
  76. package/dist/cli/init-client-config.d.ts.map +1 -0
  77. package/dist/cli/init-client-config.js +215 -0
  78. package/dist/cli/init-client-config.js.map +1 -0
  79. package/dist/cli/init-model.d.ts +80 -0
  80. package/dist/cli/init-model.d.ts.map +1 -0
  81. package/dist/cli/init-model.js +202 -0
  82. package/dist/cli/init-model.js.map +1 -0
  83. package/dist/cli/init-render.d.ts +8 -0
  84. package/dist/cli/init-render.d.ts.map +1 -0
  85. package/dist/cli/init-render.js +43 -0
  86. package/dist/cli/init-render.js.map +1 -0
  87. package/dist/cli/init-target-hooks.d.ts +3 -0
  88. package/dist/cli/init-target-hooks.d.ts.map +1 -0
  89. package/dist/cli/init-target-hooks.js +75 -0
  90. package/dist/cli/init-target-hooks.js.map +1 -0
  91. package/dist/cli/init.d.ts +12 -0
  92. package/dist/cli/init.d.ts.map +1 -0
  93. package/dist/cli/init.js +96 -0
  94. package/dist/cli/init.js.map +1 -0
  95. package/dist/cli/json-document.d.ts +35 -0
  96. package/dist/cli/json-document.d.ts.map +1 -0
  97. package/dist/cli/json-document.js +107 -0
  98. package/dist/cli/json-document.js.map +1 -0
  99. package/dist/cli/local-history-dag-model.d.ts +43 -0
  100. package/dist/cli/local-history-dag-model.d.ts.map +1 -0
  101. package/dist/cli/local-history-dag-model.js +344 -0
  102. package/dist/cli/local-history-dag-model.js.map +1 -0
  103. package/dist/cli/local-history-dag-render.d.ts +3 -0
  104. package/dist/cli/local-history-dag-render.d.ts.map +1 -0
  105. package/dist/cli/local-history-dag-render.js +126 -0
  106. package/dist/cli/local-history-dag-render.js.map +1 -0
  107. package/dist/cli/local-history-dag.d.ts +13 -0
  108. package/dist/cli/local-history-dag.d.ts.map +1 -0
  109. package/dist/cli/local-history-dag.js +60 -0
  110. package/dist/cli/local-history-dag.js.map +1 -0
  111. package/dist/cli/main.d.ts +15 -0
  112. package/dist/cli/main.d.ts.map +1 -0
  113. package/dist/cli/main.js +126 -0
  114. package/dist/cli/main.js.map +1 -0
  115. package/dist/cli/migrate-local-history.d.ts +12 -0
  116. package/dist/cli/migrate-local-history.d.ts.map +1 -0
  117. package/dist/cli/migrate-local-history.js +82 -0
  118. package/dist/cli/migrate-local-history.js.map +1 -0
  119. package/dist/cli/peer-command.d.ts +9 -0
  120. package/dist/cli/peer-command.d.ts.map +1 -0
  121. package/dist/cli/peer-command.js +38 -0
  122. package/dist/cli/peer-command.js.map +1 -0
  123. package/dist/contracts/capabilities.d.ts +44 -0
  124. package/dist/contracts/capabilities.d.ts.map +1 -0
  125. package/dist/contracts/capabilities.js +382 -0
  126. package/dist/contracts/capabilities.js.map +1 -0
  127. package/dist/contracts/causal-ontology.d.ts +1937 -0
  128. package/dist/contracts/causal-ontology.d.ts.map +1 -0
  129. package/dist/contracts/causal-ontology.js +506 -0
  130. package/dist/contracts/causal-ontology.js.map +1 -0
  131. package/dist/contracts/causal-surface-next-action.d.ts +17 -0
  132. package/dist/contracts/causal-surface-next-action.d.ts.map +1 -0
  133. package/dist/contracts/causal-surface-next-action.js +16 -0
  134. package/dist/contracts/causal-surface-next-action.js.map +1 -0
  135. package/dist/contracts/json-object.d.ts +7 -0
  136. package/dist/contracts/json-object.d.ts.map +1 -0
  137. package/dist/contracts/json-object.js +24 -0
  138. package/dist/contracts/json-object.js.map +1 -0
  139. package/dist/contracts/mcp-runtime.d.ts +4 -0
  140. package/dist/contracts/mcp-runtime.d.ts.map +1 -0
  141. package/dist/contracts/mcp-runtime.js +11 -0
  142. package/dist/contracts/mcp-runtime.js.map +1 -0
  143. package/dist/contracts/output-schema-cli.d.ts +2716 -0
  144. package/dist/contracts/output-schema-cli.d.ts.map +1 -0
  145. package/dist/contracts/output-schema-cli.js +68 -0
  146. package/dist/contracts/output-schema-cli.js.map +1 -0
  147. package/dist/contracts/output-schema-fragments.d.ts +10819 -0
  148. package/dist/contracts/output-schema-fragments.d.ts.map +1 -0
  149. package/dist/contracts/output-schema-fragments.js +753 -0
  150. package/dist/contracts/output-schema-fragments.js.map +1 -0
  151. package/dist/contracts/output-schema-mcp.d.ts +5926 -0
  152. package/dist/contracts/output-schema-mcp.d.ts.map +1 -0
  153. package/dist/contracts/output-schema-mcp.js +231 -0
  154. package/dist/contracts/output-schema-mcp.js.map +1 -0
  155. package/dist/contracts/output-schema-meta.d.ts +30 -0
  156. package/dist/contracts/output-schema-meta.d.ts.map +1 -0
  157. package/dist/contracts/output-schema-meta.js +51 -0
  158. package/dist/contracts/output-schema-meta.js.map +1 -0
  159. package/dist/contracts/output-schemas.d.ts +1072 -0
  160. package/dist/contracts/output-schemas.d.ts.map +1 -0
  161. package/dist/contracts/output-schemas.js +1089 -0
  162. package/dist/contracts/output-schemas.js.map +1 -0
  163. package/dist/git/diff.d.ts +32 -0
  164. package/dist/git/diff.d.ts.map +1 -0
  165. package/dist/git/diff.js +82 -0
  166. package/dist/git/diff.js.map +1 -0
  167. package/dist/git/target-git-hook-bootstrap.d.ts +7 -0
  168. package/dist/git/target-git-hook-bootstrap.d.ts.map +1 -0
  169. package/dist/git/target-git-hook-bootstrap.js +40 -0
  170. package/dist/git/target-git-hook-bootstrap.js.map +1 -0
  171. package/dist/guards/stream-boundary.d.ts +41 -0
  172. package/dist/guards/stream-boundary.d.ts.map +1 -0
  173. package/dist/guards/stream-boundary.js +97 -0
  174. package/dist/guards/stream-boundary.js.map +1 -0
  175. package/dist/hooks/posttooluse-read.d.ts +4 -0
  176. package/dist/hooks/posttooluse-read.d.ts.map +1 -0
  177. package/dist/hooks/posttooluse-read.js +41 -0
  178. package/dist/hooks/posttooluse-read.js.map +1 -0
  179. package/dist/hooks/pretooluse-read.d.ts +4 -0
  180. package/dist/hooks/pretooluse-read.d.ts.map +1 -0
  181. package/dist/hooks/pretooluse-read.js +41 -0
  182. package/dist/hooks/pretooluse-read.js.map +1 -0
  183. package/dist/hooks/read-governor.d.ts +24 -0
  184. package/dist/hooks/read-governor.d.ts.map +1 -0
  185. package/dist/hooks/read-governor.js +76 -0
  186. package/dist/hooks/read-governor.js.map +1 -0
  187. package/dist/hooks/read-messages.d.ts +6 -0
  188. package/dist/hooks/read-messages.d.ts.map +1 -0
  189. package/dist/hooks/read-messages.js +45 -0
  190. package/dist/hooks/read-messages.js.map +1 -0
  191. package/dist/hooks/shared.d.ts +52 -0
  192. package/dist/hooks/shared.d.ts.map +1 -0
  193. package/dist/hooks/shared.js +137 -0
  194. package/dist/hooks/shared.js.map +1 -0
  195. package/dist/index.d.ts +2 -0
  196. package/dist/index.d.ts.map +1 -0
  197. package/dist/index.js +2 -0
  198. package/dist/index.js.map +1 -0
  199. package/dist/mcp/burden.d.ts +21 -0
  200. package/dist/mcp/burden.d.ts.map +1 -0
  201. package/dist/mcp/burden.js +96 -0
  202. package/dist/mcp/burden.js.map +1 -0
  203. package/dist/mcp/cache.d.ts +2 -0
  204. package/dist/mcp/cache.d.ts.map +1 -0
  205. package/dist/mcp/cache.js +2 -0
  206. package/dist/mcp/cache.js.map +1 -0
  207. package/dist/mcp/cached-file.d.ts +2 -0
  208. package/dist/mcp/cached-file.d.ts.map +1 -0
  209. package/dist/mcp/cached-file.js +2 -0
  210. package/dist/mcp/cached-file.js.map +1 -0
  211. package/dist/mcp/context.d.ts +84 -0
  212. package/dist/mcp/context.d.ts.map +1 -0
  213. package/dist/mcp/context.js +79 -0
  214. package/dist/mcp/context.js.map +1 -0
  215. package/dist/mcp/control-plane/authz-storage.d.ts +35 -0
  216. package/dist/mcp/control-plane/authz-storage.d.ts.map +1 -0
  217. package/dist/mcp/control-plane/authz-storage.js +85 -0
  218. package/dist/mcp/control-plane/authz-storage.js.map +1 -0
  219. package/dist/mcp/control-plane/session-registry.d.ts +12 -0
  220. package/dist/mcp/control-plane/session-registry.d.ts.map +1 -0
  221. package/dist/mcp/control-plane/session-registry.js +88 -0
  222. package/dist/mcp/control-plane/session-registry.js.map +1 -0
  223. package/dist/mcp/control-plane/status-projection.d.ts +8 -0
  224. package/dist/mcp/control-plane/status-projection.d.ts.map +1 -0
  225. package/dist/mcp/control-plane/status-projection.js +49 -0
  226. package/dist/mcp/control-plane/status-projection.js.map +1 -0
  227. package/dist/mcp/control-plane/types.d.ts +107 -0
  228. package/dist/mcp/control-plane/types.d.ts.map +1 -0
  229. package/dist/mcp/control-plane/types.js +2 -0
  230. package/dist/mcp/control-plane/types.js.map +1 -0
  231. package/dist/mcp/daemon-bootstrap.d.ts +9 -0
  232. package/dist/mcp/daemon-bootstrap.d.ts.map +1 -0
  233. package/dist/mcp/daemon-bootstrap.js +96 -0
  234. package/dist/mcp/daemon-bootstrap.js.map +1 -0
  235. package/dist/mcp/daemon-control-plane.d.ts +37 -0
  236. package/dist/mcp/daemon-control-plane.d.ts.map +1 -0
  237. package/dist/mcp/daemon-control-plane.js +200 -0
  238. package/dist/mcp/daemon-control-plane.js.map +1 -0
  239. package/dist/mcp/daemon-job-scheduler.d.ts +60 -0
  240. package/dist/mcp/daemon-job-scheduler.d.ts.map +1 -0
  241. package/dist/mcp/daemon-job-scheduler.js +203 -0
  242. package/dist/mcp/daemon-job-scheduler.js.map +1 -0
  243. package/dist/mcp/daemon-repos.d.ts +9 -0
  244. package/dist/mcp/daemon-repos.d.ts.map +1 -0
  245. package/dist/mcp/daemon-repos.js +73 -0
  246. package/dist/mcp/daemon-repos.js.map +1 -0
  247. package/dist/mcp/daemon-server.d.ts +23 -0
  248. package/dist/mcp/daemon-server.d.ts.map +1 -0
  249. package/dist/mcp/daemon-server.js +128 -0
  250. package/dist/mcp/daemon-server.js.map +1 -0
  251. package/dist/mcp/daemon-session-host.d.ts +31 -0
  252. package/dist/mcp/daemon-session-host.d.ts.map +1 -0
  253. package/dist/mcp/daemon-session-host.js +173 -0
  254. package/dist/mcp/daemon-session-host.js.map +1 -0
  255. package/dist/mcp/daemon-stdio-bridge.d.ts +17 -0
  256. package/dist/mcp/daemon-stdio-bridge.d.ts.map +1 -0
  257. package/dist/mcp/daemon-stdio-bridge.js +207 -0
  258. package/dist/mcp/daemon-stdio-bridge.js.map +1 -0
  259. package/dist/mcp/daemon-worker-child-pool.d.ts +22 -0
  260. package/dist/mcp/daemon-worker-child-pool.d.ts.map +1 -0
  261. package/dist/mcp/daemon-worker-child-pool.js +193 -0
  262. package/dist/mcp/daemon-worker-child-pool.js.map +1 -0
  263. package/dist/mcp/daemon-worker-inline-pool.d.ts +12 -0
  264. package/dist/mcp/daemon-worker-inline-pool.d.ts.map +1 -0
  265. package/dist/mcp/daemon-worker-inline-pool.js +43 -0
  266. package/dist/mcp/daemon-worker-inline-pool.js.map +1 -0
  267. package/dist/mcp/daemon-worker-pool.d.ts +4 -0
  268. package/dist/mcp/daemon-worker-pool.d.ts.map +1 -0
  269. package/dist/mcp/daemon-worker-pool.js +3 -0
  270. package/dist/mcp/daemon-worker-pool.js.map +1 -0
  271. package/dist/mcp/daemon-worker-process.d.ts +2 -0
  272. package/dist/mcp/daemon-worker-process.d.ts.map +1 -0
  273. package/dist/mcp/daemon-worker-process.js +26 -0
  274. package/dist/mcp/daemon-worker-process.js.map +1 -0
  275. package/dist/mcp/daemon-worker-types.d.ts +56 -0
  276. package/dist/mcp/daemon-worker-types.d.ts.map +1 -0
  277. package/dist/mcp/daemon-worker-types.js +2 -0
  278. package/dist/mcp/daemon-worker-types.js.map +1 -0
  279. package/dist/mcp/metrics.d.ts +57 -0
  280. package/dist/mcp/metrics.d.ts.map +1 -0
  281. package/dist/mcp/metrics.js +133 -0
  282. package/dist/mcp/metrics.js.map +1 -0
  283. package/dist/mcp/monitor-health.d.ts +29 -0
  284. package/dist/mcp/monitor-health.d.ts.map +1 -0
  285. package/dist/mcp/monitor-health.js +70 -0
  286. package/dist/mcp/monitor-health.js.map +1 -0
  287. package/dist/mcp/monitor-persistence.d.ts +17 -0
  288. package/dist/mcp/monitor-persistence.d.ts.map +1 -0
  289. package/dist/mcp/monitor-persistence.js +38 -0
  290. package/dist/mcp/monitor-persistence.js.map +1 -0
  291. package/dist/mcp/monitor-tick-job.d.ts +22 -0
  292. package/dist/mcp/monitor-tick-job.d.ts.map +1 -0
  293. package/dist/mcp/monitor-tick-job.js +65 -0
  294. package/dist/mcp/monitor-tick-job.js.map +1 -0
  295. package/dist/mcp/monitor-types.d.ts +123 -0
  296. package/dist/mcp/monitor-types.d.ts.map +1 -0
  297. package/dist/mcp/monitor-types.js +29 -0
  298. package/dist/mcp/monitor-types.js.map +1 -0
  299. package/dist/mcp/persisted-local-history-graph.d.ts +40 -0
  300. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -0
  301. package/dist/mcp/persisted-local-history-graph.js +388 -0
  302. package/dist/mcp/persisted-local-history-graph.js.map +1 -0
  303. package/dist/mcp/persisted-local-history-policy.d.ts +43 -0
  304. package/dist/mcp/persisted-local-history-policy.d.ts.map +1 -0
  305. package/dist/mcp/persisted-local-history-policy.js +372 -0
  306. package/dist/mcp/persisted-local-history-policy.js.map +1 -0
  307. package/dist/mcp/persisted-local-history-views.d.ts +24 -0
  308. package/dist/mcp/persisted-local-history-views.d.ts.map +1 -0
  309. package/dist/mcp/persisted-local-history-views.js +201 -0
  310. package/dist/mcp/persisted-local-history-views.js.map +1 -0
  311. package/dist/mcp/persisted-local-history.d.ts +795 -0
  312. package/dist/mcp/persisted-local-history.d.ts.map +1 -0
  313. package/dist/mcp/persisted-local-history.js +1076 -0
  314. package/dist/mcp/persisted-local-history.js.map +1 -0
  315. package/dist/mcp/persistent-monitor-runtime.d.ts +33 -0
  316. package/dist/mcp/persistent-monitor-runtime.d.ts.map +1 -0
  317. package/dist/mcp/persistent-monitor-runtime.js +356 -0
  318. package/dist/mcp/persistent-monitor-runtime.js.map +1 -0
  319. package/dist/mcp/policy.d.ts +29 -0
  320. package/dist/mcp/policy.d.ts.map +1 -0
  321. package/dist/mcp/policy.js +40 -0
  322. package/dist/mcp/policy.js.map +1 -0
  323. package/dist/mcp/receipt.d.ts +64 -0
  324. package/dist/mcp/receipt.d.ts.map +1 -0
  325. package/dist/mcp/receipt.js +99 -0
  326. package/dist/mcp/receipt.js.map +1 -0
  327. package/dist/mcp/repo-concurrency.d.ts +62 -0
  328. package/dist/mcp/repo-concurrency.d.ts.map +1 -0
  329. package/dist/mcp/repo-concurrency.js +195 -0
  330. package/dist/mcp/repo-concurrency.js.map +1 -0
  331. package/dist/mcp/repo-overview/filter.d.ts +6 -0
  332. package/dist/mcp/repo-overview/filter.d.ts.map +1 -0
  333. package/dist/mcp/repo-overview/filter.js +32 -0
  334. package/dist/mcp/repo-overview/filter.js.map +1 -0
  335. package/dist/mcp/repo-overview/types.d.ts +41 -0
  336. package/dist/mcp/repo-overview/types.d.ts.map +1 -0
  337. package/dist/mcp/repo-overview/types.js +2 -0
  338. package/dist/mcp/repo-overview/types.js.map +1 -0
  339. package/dist/mcp/repo-overview/view-projection.d.ts +8 -0
  340. package/dist/mcp/repo-overview/view-projection.d.ts.map +1 -0
  341. package/dist/mcp/repo-overview/view-projection.js +73 -0
  342. package/dist/mcp/repo-overview/view-projection.js.map +1 -0
  343. package/dist/mcp/repo-state-git.d.ts +8 -0
  344. package/dist/mcp/repo-state-git.d.ts.map +1 -0
  345. package/dist/mcp/repo-state-git.js +203 -0
  346. package/dist/mcp/repo-state-git.js.map +1 -0
  347. package/dist/mcp/repo-state-observation.d.ts +4 -0
  348. package/dist/mcp/repo-state-observation.d.ts.map +1 -0
  349. package/dist/mcp/repo-state-observation.js +171 -0
  350. package/dist/mcp/repo-state-observation.js.map +1 -0
  351. package/dist/mcp/repo-state-transition.d.ts +4 -0
  352. package/dist/mcp/repo-state-transition.d.ts.map +1 -0
  353. package/dist/mcp/repo-state-transition.js +124 -0
  354. package/dist/mcp/repo-state-transition.js.map +1 -0
  355. package/dist/mcp/repo-state-types.d.ts +88 -0
  356. package/dist/mcp/repo-state-types.d.ts.map +1 -0
  357. package/dist/mcp/repo-state-types.js +2 -0
  358. package/dist/mcp/repo-state-types.js.map +1 -0
  359. package/dist/mcp/repo-state.d.ts +37 -0
  360. package/dist/mcp/repo-state.d.ts.map +1 -0
  361. package/dist/mcp/repo-state.js +101 -0
  362. package/dist/mcp/repo-state.js.map +1 -0
  363. package/dist/mcp/repo-tool-job.d.ts +55 -0
  364. package/dist/mcp/repo-tool-job.d.ts.map +1 -0
  365. package/dist/mcp/repo-tool-job.js +50 -0
  366. package/dist/mcp/repo-tool-job.js.map +1 -0
  367. package/dist/mcp/repo-tool-worker-context.d.ts +8 -0
  368. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -0
  369. package/dist/mcp/repo-tool-worker-context.js +199 -0
  370. package/dist/mcp/repo-tool-worker-context.js.map +1 -0
  371. package/dist/mcp/repo-workspace.d.ts +4 -0
  372. package/dist/mcp/repo-workspace.d.ts.map +1 -0
  373. package/dist/mcp/repo-workspace.js +15 -0
  374. package/dist/mcp/repo-workspace.js.map +1 -0
  375. package/dist/mcp/run-capture-config.d.ts +11 -0
  376. package/dist/mcp/run-capture-config.d.ts.map +1 -0
  377. package/dist/mcp/run-capture-config.js +23 -0
  378. package/dist/mcp/run-capture-config.js.map +1 -0
  379. package/dist/mcp/runtime-causal-context.d.ts +22 -0
  380. package/dist/mcp/runtime-causal-context.d.ts.map +1 -0
  381. package/dist/mcp/runtime-causal-context.js +28 -0
  382. package/dist/mcp/runtime-causal-context.js.map +1 -0
  383. package/dist/mcp/runtime-observability.d.ts +102 -0
  384. package/dist/mcp/runtime-observability.d.ts.map +1 -0
  385. package/dist/mcp/runtime-observability.js +95 -0
  386. package/dist/mcp/runtime-observability.js.map +1 -0
  387. package/dist/mcp/runtime-staged-target.d.ts +28 -0
  388. package/dist/mcp/runtime-staged-target.d.ts.map +1 -0
  389. package/dist/mcp/runtime-staged-target.js +101 -0
  390. package/dist/mcp/runtime-staged-target.js.map +1 -0
  391. package/dist/mcp/runtime-workspace-overlay.d.ts +45 -0
  392. package/dist/mcp/runtime-workspace-overlay.d.ts.map +1 -0
  393. package/dist/mcp/runtime-workspace-overlay.js +153 -0
  394. package/dist/mcp/runtime-workspace-overlay.js.map +1 -0
  395. package/dist/mcp/secret-scrub.d.ts +17 -0
  396. package/dist/mcp/secret-scrub.d.ts.map +1 -0
  397. package/dist/mcp/secret-scrub.js +82 -0
  398. package/dist/mcp/secret-scrub.js.map +1 -0
  399. package/dist/mcp/semantic-transition-guidance.d.ts +6 -0
  400. package/dist/mcp/semantic-transition-guidance.d.ts.map +1 -0
  401. package/dist/mcp/semantic-transition-guidance.js +47 -0
  402. package/dist/mcp/semantic-transition-guidance.js.map +1 -0
  403. package/dist/mcp/semantic-transition-summary.d.ts +23 -0
  404. package/dist/mcp/semantic-transition-summary.d.ts.map +1 -0
  405. package/dist/mcp/semantic-transition-summary.js +82 -0
  406. package/dist/mcp/semantic-transition-summary.js.map +1 -0
  407. package/dist/mcp/server-context.d.ts +46 -0
  408. package/dist/mcp/server-context.d.ts.map +1 -0
  409. package/dist/mcp/server-context.js +163 -0
  410. package/dist/mcp/server-context.js.map +1 -0
  411. package/dist/mcp/server-invocation.d.ts +73 -0
  412. package/dist/mcp/server-invocation.d.ts.map +1 -0
  413. package/dist/mcp/server-invocation.js +265 -0
  414. package/dist/mcp/server-invocation.js.map +1 -0
  415. package/dist/mcp/server-tool-access.d.ts +18 -0
  416. package/dist/mcp/server-tool-access.d.ts.map +1 -0
  417. package/dist/mcp/server-tool-access.js +123 -0
  418. package/dist/mcp/server-tool-access.js.map +1 -0
  419. package/dist/mcp/server.d.ts +41 -0
  420. package/dist/mcp/server.d.ts.map +1 -0
  421. package/dist/mcp/server.js +215 -0
  422. package/dist/mcp/server.js.map +1 -0
  423. package/dist/mcp/stdio-server.d.ts +6 -0
  424. package/dist/mcp/stdio-server.d.ts.map +1 -0
  425. package/dist/mcp/stdio-server.js +20 -0
  426. package/dist/mcp/stdio-server.js.map +1 -0
  427. package/dist/mcp/stdio.d.ts +2 -0
  428. package/dist/mcp/stdio.d.ts.map +1 -0
  429. package/dist/mcp/stdio.js +3 -0
  430. package/dist/mcp/stdio.js.map +1 -0
  431. package/dist/mcp/tool-registry.d.ts +5 -0
  432. package/dist/mcp/tool-registry.d.ts.map +1 -0
  433. package/dist/mcp/tool-registry.js +76 -0
  434. package/dist/mcp/tool-registry.js.map +1 -0
  435. package/dist/mcp/tools/activity-view.d.ts +3 -0
  436. package/dist/mcp/tools/activity-view.d.ts.map +1 -0
  437. package/dist/mcp/tools/activity-view.js +259 -0
  438. package/dist/mcp/tools/activity-view.js.map +1 -0
  439. package/dist/mcp/tools/budget.d.ts +3 -0
  440. package/dist/mcp/tools/budget.d.ts.map +1 -0
  441. package/dist/mcp/tools/budget.js +20 -0
  442. package/dist/mcp/tools/budget.js.map +1 -0
  443. package/dist/mcp/tools/causal-attach.d.ts +3 -0
  444. package/dist/mcp/tools/causal-attach.d.ts.map +1 -0
  445. package/dist/mcp/tools/causal-attach.js +53 -0
  446. package/dist/mcp/tools/causal-attach.js.map +1 -0
  447. package/dist/mcp/tools/causal-status.d.ts +3 -0
  448. package/dist/mcp/tools/causal-status.d.ts.map +1 -0
  449. package/dist/mcp/tools/causal-status.js +46 -0
  450. package/dist/mcp/tools/causal-status.js.map +1 -0
  451. package/dist/mcp/tools/changed-since.d.ts +3 -0
  452. package/dist/mcp/tools/changed-since.d.ts.map +1 -0
  453. package/dist/mcp/tools/changed-since.js +57 -0
  454. package/dist/mcp/tools/changed-since.js.map +1 -0
  455. package/dist/mcp/tools/code-find.d.ts +104 -0
  456. package/dist/mcp/tools/code-find.d.ts.map +1 -0
  457. package/dist/mcp/tools/code-find.js +125 -0
  458. package/dist/mcp/tools/code-find.js.map +1 -0
  459. package/dist/mcp/tools/code-refs.d.ts +3 -0
  460. package/dist/mcp/tools/code-refs.d.ts.map +1 -0
  461. package/dist/mcp/tools/code-refs.js +370 -0
  462. package/dist/mcp/tools/code-refs.js.map +1 -0
  463. package/dist/mcp/tools/code-show.d.ts +104 -0
  464. package/dist/mcp/tools/code-show.d.ts.map +1 -0
  465. package/dist/mcp/tools/code-show.js +202 -0
  466. package/dist/mcp/tools/code-show.js.map +1 -0
  467. package/dist/mcp/tools/daemon-monitors.d.ts +3 -0
  468. package/dist/mcp/tools/daemon-monitors.d.ts.map +1 -0
  469. package/dist/mcp/tools/daemon-monitors.js +12 -0
  470. package/dist/mcp/tools/daemon-monitors.js.map +1 -0
  471. package/dist/mcp/tools/daemon-repos.d.ts +3 -0
  472. package/dist/mcp/tools/daemon-repos.d.ts.map +1 -0
  473. package/dist/mcp/tools/daemon-repos.js +20 -0
  474. package/dist/mcp/tools/daemon-repos.js.map +1 -0
  475. package/dist/mcp/tools/daemon-sessions.d.ts +3 -0
  476. package/dist/mcp/tools/daemon-sessions.d.ts.map +1 -0
  477. package/dist/mcp/tools/daemon-sessions.js +12 -0
  478. package/dist/mcp/tools/daemon-sessions.js.map +1 -0
  479. package/dist/mcp/tools/daemon-status.d.ts +3 -0
  480. package/dist/mcp/tools/daemon-status.d.ts.map +1 -0
  481. package/dist/mcp/tools/daemon-status.js +10 -0
  482. package/dist/mcp/tools/daemon-status.js.map +1 -0
  483. package/dist/mcp/tools/diagnostic-models.d.ts +85 -0
  484. package/dist/mcp/tools/diagnostic-models.d.ts.map +1 -0
  485. package/dist/mcp/tools/diagnostic-models.js +5 -0
  486. package/dist/mcp/tools/diagnostic-models.js.map +1 -0
  487. package/dist/mcp/tools/doctor.d.ts +3 -0
  488. package/dist/mcp/tools/doctor.d.ts.map +1 -0
  489. package/dist/mcp/tools/doctor.js +54 -0
  490. package/dist/mcp/tools/doctor.js.map +1 -0
  491. package/dist/mcp/tools/explain.d.ts +3 -0
  492. package/dist/mcp/tools/explain.d.ts.map +1 -0
  493. package/dist/mcp/tools/explain.js +81 -0
  494. package/dist/mcp/tools/explain.js.map +1 -0
  495. package/dist/mcp/tools/file-outline.d.ts +3 -0
  496. package/dist/mcp/tools/file-outline.d.ts.map +1 -0
  497. package/dist/mcp/tools/file-outline.js +54 -0
  498. package/dist/mcp/tools/file-outline.js.map +1 -0
  499. package/dist/mcp/tools/git-files.d.ts +24 -0
  500. package/dist/mcp/tools/git-files.d.ts.map +1 -0
  501. package/dist/mcp/tools/git-files.js +57 -0
  502. package/dist/mcp/tools/git-files.js.map +1 -0
  503. package/dist/mcp/tools/graft-diff.d.ts +3 -0
  504. package/dist/mcp/tools/graft-diff.d.ts.map +1 -0
  505. package/dist/mcp/tools/graft-diff.js +33 -0
  506. package/dist/mcp/tools/graft-diff.js.map +1 -0
  507. package/dist/mcp/tools/map-collector.d.ts +85 -0
  508. package/dist/mcp/tools/map-collector.d.ts.map +1 -0
  509. package/dist/mcp/tools/map-collector.js +249 -0
  510. package/dist/mcp/tools/map-collector.js.map +1 -0
  511. package/dist/mcp/tools/map.d.ts +7 -0
  512. package/dist/mcp/tools/map.d.ts.map +1 -0
  513. package/dist/mcp/tools/map.js +154 -0
  514. package/dist/mcp/tools/map.js.map +1 -0
  515. package/dist/mcp/tools/monitor-pause.d.ts +3 -0
  516. package/dist/mcp/tools/monitor-pause.d.ts.map +1 -0
  517. package/dist/mcp/tools/monitor-pause.js +16 -0
  518. package/dist/mcp/tools/monitor-pause.js.map +1 -0
  519. package/dist/mcp/tools/monitor-resume.d.ts +3 -0
  520. package/dist/mcp/tools/monitor-resume.d.ts.map +1 -0
  521. package/dist/mcp/tools/monitor-resume.js +16 -0
  522. package/dist/mcp/tools/monitor-resume.js.map +1 -0
  523. package/dist/mcp/tools/monitor-start.d.ts +3 -0
  524. package/dist/mcp/tools/monitor-start.d.ts.map +1 -0
  525. package/dist/mcp/tools/monitor-start.js +18 -0
  526. package/dist/mcp/tools/monitor-start.js.map +1 -0
  527. package/dist/mcp/tools/monitor-stop.d.ts +3 -0
  528. package/dist/mcp/tools/monitor-stop.d.ts.map +1 -0
  529. package/dist/mcp/tools/monitor-stop.js +16 -0
  530. package/dist/mcp/tools/monitor-stop.js.map +1 -0
  531. package/dist/mcp/tools/precision-live.d.ts +20 -0
  532. package/dist/mcp/tools/precision-live.d.ts.map +1 -0
  533. package/dist/mcp/tools/precision-live.js +105 -0
  534. package/dist/mcp/tools/precision-live.js.map +1 -0
  535. package/dist/mcp/tools/precision-match.d.ts +21 -0
  536. package/dist/mcp/tools/precision-match.d.ts.map +1 -0
  537. package/dist/mcp/tools/precision-match.js +46 -0
  538. package/dist/mcp/tools/precision-match.js.map +1 -0
  539. package/dist/mcp/tools/precision-paths.d.ts +7 -0
  540. package/dist/mcp/tools/precision-paths.d.ts.map +1 -0
  541. package/dist/mcp/tools/precision-paths.js +53 -0
  542. package/dist/mcp/tools/precision-paths.js.map +1 -0
  543. package/dist/mcp/tools/precision-query.d.ts +38 -0
  544. package/dist/mcp/tools/precision-query.d.ts.map +1 -0
  545. package/dist/mcp/tools/precision-query.js +116 -0
  546. package/dist/mcp/tools/precision-query.js.map +1 -0
  547. package/dist/mcp/tools/precision-show.d.ts +15 -0
  548. package/dist/mcp/tools/precision-show.d.ts.map +1 -0
  549. package/dist/mcp/tools/precision-show.js +46 -0
  550. package/dist/mcp/tools/precision-show.js.map +1 -0
  551. package/dist/mcp/tools/precision-visibility.d.ts +10 -0
  552. package/dist/mcp/tools/precision-visibility.d.ts.map +1 -0
  553. package/dist/mcp/tools/precision-visibility.js +24 -0
  554. package/dist/mcp/tools/precision-visibility.js.map +1 -0
  555. package/dist/mcp/tools/precision-warp.d.ts +6 -0
  556. package/dist/mcp/tools/precision-warp.d.ts.map +1 -0
  557. package/dist/mcp/tools/precision-warp.js +76 -0
  558. package/dist/mcp/tools/precision-warp.js.map +1 -0
  559. package/dist/mcp/tools/precision.d.ts +7 -0
  560. package/dist/mcp/tools/precision.d.ts.map +1 -0
  561. package/dist/mcp/tools/precision.js +6 -0
  562. package/dist/mcp/tools/precision.js.map +1 -0
  563. package/dist/mcp/tools/read-range.d.ts +3 -0
  564. package/dist/mcp/tools/read-range.d.ts.map +1 -0
  565. package/dist/mcp/tools/read-range.js +26 -0
  566. package/dist/mcp/tools/read-range.js.map +1 -0
  567. package/dist/mcp/tools/run-capture.d.ts +3 -0
  568. package/dist/mcp/tools/run-capture.d.ts.map +1 -0
  569. package/dist/mcp/tools/run-capture.js +125 -0
  570. package/dist/mcp/tools/run-capture.js.map +1 -0
  571. package/dist/mcp/tools/safe-read.d.ts +3 -0
  572. package/dist/mcp/tools/safe-read.d.ts.map +1 -0
  573. package/dist/mcp/tools/safe-read.js +133 -0
  574. package/dist/mcp/tools/safe-read.js.map +1 -0
  575. package/dist/mcp/tools/since.d.ts +3 -0
  576. package/dist/mcp/tools/since.d.ts.map +1 -0
  577. package/dist/mcp/tools/since.js +46 -0
  578. package/dist/mcp/tools/since.js.map +1 -0
  579. package/dist/mcp/tools/state.d.ts +4 -0
  580. package/dist/mcp/tools/state.d.ts.map +1 -0
  581. package/dist/mcp/tools/state.js +35 -0
  582. package/dist/mcp/tools/state.js.map +1 -0
  583. package/dist/mcp/tools/stats.d.ts +3 -0
  584. package/dist/mcp/tools/stats.d.ts.map +1 -0
  585. package/dist/mcp/tools/stats.js +22 -0
  586. package/dist/mcp/tools/stats.js.map +1 -0
  587. package/dist/mcp/tools/workspace-authorizations.d.ts +3 -0
  588. package/dist/mcp/tools/workspace-authorizations.d.ts.map +1 -0
  589. package/dist/mcp/tools/workspace-authorizations.js +12 -0
  590. package/dist/mcp/tools/workspace-authorizations.js.map +1 -0
  591. package/dist/mcp/tools/workspace-authorize.d.ts +3 -0
  592. package/dist/mcp/tools/workspace-authorize.d.ts.map +1 -0
  593. package/dist/mcp/tools/workspace-authorize.js +18 -0
  594. package/dist/mcp/tools/workspace-authorize.js.map +1 -0
  595. package/dist/mcp/tools/workspace-bind.d.ts +3 -0
  596. package/dist/mcp/tools/workspace-bind.d.ts.map +1 -0
  597. package/dist/mcp/tools/workspace-bind.js +23 -0
  598. package/dist/mcp/tools/workspace-bind.js.map +1 -0
  599. package/dist/mcp/tools/workspace-rebind.d.ts +3 -0
  600. package/dist/mcp/tools/workspace-rebind.d.ts.map +1 -0
  601. package/dist/mcp/tools/workspace-rebind.js +23 -0
  602. package/dist/mcp/tools/workspace-rebind.js.map +1 -0
  603. package/dist/mcp/tools/workspace-revoke.d.ts +3 -0
  604. package/dist/mcp/tools/workspace-revoke.d.ts.map +1 -0
  605. package/dist/mcp/tools/workspace-revoke.js +16 -0
  606. package/dist/mcp/tools/workspace-revoke.js.map +1 -0
  607. package/dist/mcp/tools/workspace-status.d.ts +3 -0
  608. package/dist/mcp/tools/workspace-status.d.ts.map +1 -0
  609. package/dist/mcp/tools/workspace-status.js +10 -0
  610. package/dist/mcp/tools/workspace-status.js.map +1 -0
  611. package/dist/mcp/warp-pool.d.ts +13 -0
  612. package/dist/mcp/warp-pool.d.ts.map +1 -0
  613. package/dist/mcp/warp-pool.js +30 -0
  614. package/dist/mcp/warp-pool.js.map +1 -0
  615. package/dist/mcp/workspace-read-observation-model.d.ts +34 -0
  616. package/dist/mcp/workspace-read-observation-model.d.ts.map +1 -0
  617. package/dist/mcp/workspace-read-observation-model.js +35 -0
  618. package/dist/mcp/workspace-read-observation-model.js.map +1 -0
  619. package/dist/mcp/workspace-read-observation.d.ts +19 -0
  620. package/dist/mcp/workspace-read-observation.d.ts.map +1 -0
  621. package/dist/mcp/workspace-read-observation.js +71 -0
  622. package/dist/mcp/workspace-read-observation.js.map +1 -0
  623. package/dist/mcp/workspace-router-capability.d.ts +14 -0
  624. package/dist/mcp/workspace-router-capability.d.ts.map +1 -0
  625. package/dist/mcp/workspace-router-capability.js +22 -0
  626. package/dist/mcp/workspace-router-capability.js.map +1 -0
  627. package/dist/mcp/workspace-router-history.d.ts +65 -0
  628. package/dist/mcp/workspace-router-history.d.ts.map +1 -0
  629. package/dist/mcp/workspace-router-history.js +142 -0
  630. package/dist/mcp/workspace-router-history.js.map +1 -0
  631. package/dist/mcp/workspace-router-model.d.ts +96 -0
  632. package/dist/mcp/workspace-router-model.d.ts.map +1 -0
  633. package/dist/mcp/workspace-router-model.js +31 -0
  634. package/dist/mcp/workspace-router-model.js.map +1 -0
  635. package/dist/mcp/workspace-router-resolution.d.ts +10 -0
  636. package/dist/mcp/workspace-router-resolution.d.ts.map +1 -0
  637. package/dist/mcp/workspace-router-resolution.js +56 -0
  638. package/dist/mcp/workspace-router-resolution.js.map +1 -0
  639. package/dist/mcp/workspace-router-runtime.d.ts +79 -0
  640. package/dist/mcp/workspace-router-runtime.d.ts.map +1 -0
  641. package/dist/mcp/workspace-router-runtime.js +126 -0
  642. package/dist/mcp/workspace-router-runtime.js.map +1 -0
  643. package/dist/mcp/workspace-router.d.ts +72 -0
  644. package/dist/mcp/workspace-router.d.ts.map +1 -0
  645. package/dist/mcp/workspace-router.js +494 -0
  646. package/dist/mcp/workspace-router.js.map +1 -0
  647. package/dist/metrics/logger.d.ts +14 -0
  648. package/dist/metrics/logger.d.ts.map +1 -0
  649. package/dist/metrics/logger.js +30 -0
  650. package/dist/metrics/logger.js.map +1 -0
  651. package/dist/metrics/types.d.ts +25 -0
  652. package/dist/metrics/types.d.ts.map +1 -0
  653. package/dist/metrics/types.js +28 -0
  654. package/dist/metrics/types.js.map +1 -0
  655. package/dist/operations/cached-file.d.ts +24 -0
  656. package/dist/operations/cached-file.d.ts.map +1 -0
  657. package/dist/operations/cached-file.js +37 -0
  658. package/dist/operations/cached-file.js.map +1 -0
  659. package/dist/operations/diff-identity.d.ts +32 -0
  660. package/dist/operations/diff-identity.d.ts.map +1 -0
  661. package/dist/operations/diff-identity.js +93 -0
  662. package/dist/operations/diff-identity.js.map +1 -0
  663. package/dist/operations/file-outline.d.ts +15 -0
  664. package/dist/operations/file-outline.d.ts.map +1 -0
  665. package/dist/operations/file-outline.js +32 -0
  666. package/dist/operations/file-outline.js.map +1 -0
  667. package/dist/operations/graft-diff.d.ts +43 -0
  668. package/dist/operations/graft-diff.d.ts.map +1 -0
  669. package/dist/operations/graft-diff.js +115 -0
  670. package/dist/operations/graft-diff.js.map +1 -0
  671. package/dist/operations/observation-cache.d.ts +64 -0
  672. package/dist/operations/observation-cache.d.ts.map +1 -0
  673. package/dist/operations/observation-cache.js +104 -0
  674. package/dist/operations/observation-cache.js.map +1 -0
  675. package/dist/operations/read-range.d.ts +14 -0
  676. package/dist/operations/read-range.d.ts.map +1 -0
  677. package/dist/operations/read-range.js +41 -0
  678. package/dist/operations/read-range.js.map +1 -0
  679. package/dist/operations/repo-workspace.d.ts +114 -0
  680. package/dist/operations/repo-workspace.d.ts.map +1 -0
  681. package/dist/operations/repo-workspace.js +228 -0
  682. package/dist/operations/repo-workspace.js.map +1 -0
  683. package/dist/operations/result-dto.d.ts +10 -0
  684. package/dist/operations/result-dto.d.ts.map +1 -0
  685. package/dist/operations/result-dto.js +21 -0
  686. package/dist/operations/result-dto.js.map +1 -0
  687. package/dist/operations/safe-read.d.ts +35 -0
  688. package/dist/operations/safe-read.d.ts.map +1 -0
  689. package/dist/operations/safe-read.js +75 -0
  690. package/dist/operations/safe-read.js.map +1 -0
  691. package/dist/operations/state.d.ts +25 -0
  692. package/dist/operations/state.d.ts.map +1 -0
  693. package/dist/operations/state.js +47 -0
  694. package/dist/operations/state.js.map +1 -0
  695. package/dist/operations/structured-buffer-compare.d.ts +5 -0
  696. package/dist/operations/structured-buffer-compare.d.ts.map +1 -0
  697. package/dist/operations/structured-buffer-compare.js +392 -0
  698. package/dist/operations/structured-buffer-compare.js.map +1 -0
  699. package/dist/operations/structured-buffer-model.d.ts +232 -0
  700. package/dist/operations/structured-buffer-model.d.ts.map +1 -0
  701. package/dist/operations/structured-buffer-model.js +175 -0
  702. package/dist/operations/structured-buffer-model.js.map +1 -0
  703. package/dist/operations/structured-buffer-query.d.ts +24 -0
  704. package/dist/operations/structured-buffer-query.d.ts.map +1 -0
  705. package/dist/operations/structured-buffer-query.js +690 -0
  706. package/dist/operations/structured-buffer-query.js.map +1 -0
  707. package/dist/operations/structured-buffer.d.ts +43 -0
  708. package/dist/operations/structured-buffer.d.ts.map +1 -0
  709. package/dist/operations/structured-buffer.js +96 -0
  710. package/dist/operations/structured-buffer.js.map +1 -0
  711. package/dist/parser/diff.d.ts +63 -0
  712. package/dist/parser/diff.d.ts.map +1 -0
  713. package/dist/parser/diff.js +259 -0
  714. package/dist/parser/diff.js.map +1 -0
  715. package/dist/parser/lang.d.ts +17 -0
  716. package/dist/parser/lang.d.ts.map +1 -0
  717. package/dist/parser/lang.js +51 -0
  718. package/dist/parser/lang.js.map +1 -0
  719. package/dist/parser/markdown.d.ts +3 -0
  720. package/dist/parser/markdown.d.ts.map +1 -0
  721. package/dist/parser/markdown.js +168 -0
  722. package/dist/parser/markdown.js.map +1 -0
  723. package/dist/parser/outline.d.ts +12 -0
  724. package/dist/parser/outline.d.ts.map +1 -0
  725. package/dist/parser/outline.js +251 -0
  726. package/dist/parser/outline.js.map +1 -0
  727. package/dist/parser/runtime.d.ts +13 -0
  728. package/dist/parser/runtime.d.ts.map +1 -0
  729. package/dist/parser/runtime.js +43 -0
  730. package/dist/parser/runtime.js.map +1 -0
  731. package/dist/parser/types.d.ts +41 -0
  732. package/dist/parser/types.d.ts.map +1 -0
  733. package/dist/parser/types.js +46 -0
  734. package/dist/parser/types.js.map +1 -0
  735. package/dist/policy/evaluate.d.ts +8 -0
  736. package/dist/policy/evaluate.d.ts.map +1 -0
  737. package/dist/policy/evaluate.js +153 -0
  738. package/dist/policy/evaluate.js.map +1 -0
  739. package/dist/policy/graftignore.d.ts +2 -0
  740. package/dist/policy/graftignore.d.ts.map +1 -0
  741. package/dist/policy/graftignore.js +7 -0
  742. package/dist/policy/graftignore.js.map +1 -0
  743. package/dist/policy/types.d.ts +104 -0
  744. package/dist/policy/types.d.ts.map +1 -0
  745. package/dist/policy/types.js +49 -0
  746. package/dist/policy/types.js.map +1 -0
  747. package/dist/ports/codec.d.ts +10 -0
  748. package/dist/ports/codec.d.ts.map +1 -0
  749. package/dist/ports/codec.js +5 -0
  750. package/dist/ports/codec.js.map +1 -0
  751. package/dist/ports/filesystem.d.ts +19 -0
  752. package/dist/ports/filesystem.d.ts.map +1 -0
  753. package/dist/ports/filesystem.js +5 -0
  754. package/dist/ports/filesystem.js.map +1 -0
  755. package/dist/ports/git.d.ts +11 -0
  756. package/dist/ports/git.d.ts.map +1 -0
  757. package/dist/ports/git.js +5 -0
  758. package/dist/ports/git.js.map +1 -0
  759. package/dist/ports/guards.d.ts +15 -0
  760. package/dist/ports/guards.d.ts.map +1 -0
  761. package/dist/ports/guards.js +43 -0
  762. package/dist/ports/guards.js.map +1 -0
  763. package/dist/ports/process-runner.d.ts +17 -0
  764. package/dist/ports/process-runner.d.ts.map +1 -0
  765. package/dist/ports/process-runner.js +5 -0
  766. package/dist/ports/process-runner.js.map +1 -0
  767. package/dist/ports/warp.d.ts +45 -0
  768. package/dist/ports/warp.d.ts.map +1 -0
  769. package/dist/ports/warp.js +5 -0
  770. package/dist/ports/warp.js.map +1 -0
  771. package/dist/release/security-gate.d.ts +24 -0
  772. package/dist/release/security-gate.d.ts.map +1 -0
  773. package/dist/release/security-gate.js +69 -0
  774. package/dist/release/security-gate.js.map +1 -0
  775. package/dist/session/tracker.d.ts +36 -0
  776. package/dist/session/tracker.d.ts.map +1 -0
  777. package/dist/session/tracker.js +113 -0
  778. package/dist/session/tracker.js.map +1 -0
  779. package/dist/session/types.d.ts +14 -0
  780. package/dist/session/types.d.ts.map +1 -0
  781. package/dist/session/types.js +18 -0
  782. package/dist/session/types.js.map +1 -0
  783. package/dist/version.d.ts +2 -0
  784. package/dist/version.d.ts.map +1 -0
  785. package/dist/version.js +3 -0
  786. package/dist/version.js.map +1 -0
  787. package/dist/warp/identity-resolver.d.ts +14 -0
  788. package/dist/warp/identity-resolver.d.ts.map +1 -0
  789. package/dist/warp/identity-resolver.js +31 -0
  790. package/dist/warp/identity-resolver.js.map +1 -0
  791. package/dist/warp/indexer-git.d.ts +22 -0
  792. package/dist/warp/indexer-git.d.ts.map +1 -0
  793. package/dist/warp/indexer-git.js +148 -0
  794. package/dist/warp/indexer-git.js.map +1 -0
  795. package/dist/warp/indexer-graph.d.ts +17 -0
  796. package/dist/warp/indexer-graph.d.ts.map +1 -0
  797. package/dist/warp/indexer-graph.js +179 -0
  798. package/dist/warp/indexer-graph.js.map +1 -0
  799. package/dist/warp/indexer-model.d.ts +51 -0
  800. package/dist/warp/indexer-model.d.ts.map +1 -0
  801. package/dist/warp/indexer-model.js +21 -0
  802. package/dist/warp/indexer-model.js.map +1 -0
  803. package/dist/warp/indexer.d.ts +9 -0
  804. package/dist/warp/indexer.d.ts.map +1 -0
  805. package/dist/warp/indexer.js +112 -0
  806. package/dist/warp/indexer.js.map +1 -0
  807. package/dist/warp/observers.d.ts +54 -0
  808. package/dist/warp/observers.d.ts.map +1 -0
  809. package/dist/warp/observers.js +88 -0
  810. package/dist/warp/observers.js.map +1 -0
  811. package/dist/warp/open.d.ts +15 -0
  812. package/dist/warp/open.d.ts.map +1 -0
  813. package/dist/warp/open.js +67 -0
  814. package/dist/warp/open.js.map +1 -0
  815. package/dist/warp/symbol-identity.d.ts +11 -0
  816. package/dist/warp/symbol-identity.d.ts.map +1 -0
  817. package/dist/warp/symbol-identity.js +67 -0
  818. package/dist/warp/symbol-identity.js.map +1 -0
  819. package/dist/warp/writer-id.d.ts +5 -0
  820. package/dist/warp/writer-id.d.ts.map +1 -0
  821. package/dist/warp/writer-id.js +25 -0
  822. package/dist/warp/writer-id.js.map +1 -0
  823. package/docs/CLI.md +37 -15
  824. package/docs/MCP.md +44 -25
  825. package/docs/{GUIDE.md → SETUP.md} +21 -0
  826. package/package.json +24 -7
  827. package/src/adapters/repo-paths.ts +22 -0
  828. package/src/adapters/rotating-ndjson-log.ts +66 -0
  829. package/src/api/index.ts +107 -0
  830. package/src/api/repo-local-graft.ts +21 -0
  831. package/src/api/repo-workspace.ts +34 -0
  832. package/src/api/tool-bridge.ts +21 -0
  833. package/src/cli/activity-render.ts +112 -0
  834. package/src/cli/cli-error.ts +153 -0
  835. package/src/cli/command-parser.ts +302 -0
  836. package/src/cli/entrypoint.ts +18 -0
  837. package/src/cli/index-cmd.ts +31 -23
  838. package/src/cli/index-model.ts +76 -0
  839. package/src/cli/init-bootstrap.ts +47 -0
  840. package/src/cli/init-client-config.ts +299 -0
  841. package/src/cli/init-model.ts +229 -0
  842. package/src/cli/init-render.ts +54 -0
  843. package/src/cli/init-target-hooks.ts +93 -0
  844. package/src/cli/init.ts +16 -757
  845. package/src/cli/json-document.ts +144 -0
  846. package/src/cli/local-history-dag-model.ts +437 -0
  847. package/src/cli/local-history-dag-render.ts +133 -0
  848. package/src/cli/local-history-dag.ts +103 -0
  849. package/src/cli/main.ts +46 -333
  850. package/src/cli/migrate-local-history.ts +118 -0
  851. package/src/cli/peer-command.ts +59 -0
  852. package/src/contracts/capabilities.ts +218 -109
  853. package/src/contracts/causal-ontology.ts +5 -0
  854. package/src/contracts/json-object.ts +28 -0
  855. package/src/contracts/mcp-runtime.ts +16 -0
  856. package/src/contracts/output-schema-cli.ts +70 -0
  857. package/src/contracts/output-schema-fragments.ts +831 -0
  858. package/src/contracts/output-schema-mcp.ts +282 -0
  859. package/src/contracts/output-schema-meta.ts +119 -0
  860. package/src/contracts/output-schemas.ts +62 -1
  861. package/src/index.ts +1 -0
  862. package/src/mcp/cache.ts +7 -145
  863. package/src/mcp/cached-file.ts +1 -40
  864. package/src/mcp/context.ts +83 -13
  865. package/src/mcp/control-plane/authz-storage.ts +129 -0
  866. package/src/mcp/control-plane/session-registry.ts +115 -0
  867. package/src/mcp/control-plane/status-projection.ts +76 -0
  868. package/src/mcp/control-plane/types.ts +144 -0
  869. package/src/mcp/daemon-bootstrap.ts +100 -0
  870. package/src/mcp/daemon-control-plane.ts +93 -337
  871. package/src/mcp/daemon-repos.ts +27 -144
  872. package/src/mcp/daemon-server.ts +31 -262
  873. package/src/mcp/daemon-session-host.ts +230 -0
  874. package/src/mcp/daemon-stdio-bridge.ts +260 -0
  875. package/src/mcp/daemon-worker-child-pool.ts +213 -0
  876. package/src/mcp/daemon-worker-inline-pool.ts +46 -0
  877. package/src/mcp/daemon-worker-pool.ts +7 -310
  878. package/src/mcp/daemon-worker-types.ts +66 -0
  879. package/src/mcp/metrics.ts +68 -52
  880. package/src/mcp/monitor-health.ts +83 -0
  881. package/src/mcp/monitor-persistence.ts +54 -0
  882. package/src/mcp/monitor-tick-job.ts +3 -0
  883. package/src/mcp/monitor-types.ts +103 -0
  884. package/src/mcp/persisted-local-history-graph.ts +591 -0
  885. package/src/mcp/persisted-local-history-policy.ts +501 -0
  886. package/src/mcp/persisted-local-history-views.ts +250 -0
  887. package/src/mcp/persisted-local-history.ts +1137 -762
  888. package/src/mcp/persistent-monitor-runtime.ts +71 -175
  889. package/src/mcp/policy.ts +11 -20
  890. package/src/mcp/receipt.ts +67 -19
  891. package/src/mcp/repo-concurrency.ts +81 -7
  892. package/src/mcp/repo-overview/filter.ts +44 -0
  893. package/src/mcp/repo-overview/types.ts +63 -0
  894. package/src/mcp/repo-overview/view-projection.ts +90 -0
  895. package/src/mcp/repo-state-git.ts +247 -0
  896. package/src/mcp/repo-state-observation.ts +203 -0
  897. package/src/mcp/repo-state-transition.ts +151 -0
  898. package/src/mcp/repo-state-types.ts +107 -0
  899. package/src/mcp/repo-state.ts +90 -721
  900. package/src/mcp/repo-tool-job.ts +16 -216
  901. package/src/mcp/repo-tool-worker-context.ts +212 -0
  902. package/src/mcp/repo-workspace.ts +21 -0
  903. package/src/mcp/runtime-observability.ts +41 -43
  904. package/src/mcp/secret-scrub.ts +89 -0
  905. package/src/mcp/server-context.ts +223 -0
  906. package/src/mcp/server-invocation.ts +388 -0
  907. package/src/mcp/server-tool-access.ts +145 -0
  908. package/src/mcp/server.ts +46 -606
  909. package/src/mcp/stdio-server.ts +16 -2
  910. package/src/mcp/tool-registry.ts +80 -0
  911. package/src/mcp/tools/activity-view.ts +3 -3
  912. package/src/mcp/tools/budget.ts +10 -7
  913. package/src/mcp/tools/causal-attach.ts +3 -3
  914. package/src/mcp/tools/causal-status.ts +3 -3
  915. package/src/mcp/tools/changed-since.ts +4 -3
  916. package/src/mcp/tools/code-find.ts +7 -2
  917. package/src/mcp/tools/code-refs.ts +7 -3
  918. package/src/mcp/tools/code-show.ts +12 -2
  919. package/src/mcp/tools/daemon-monitors.ts +3 -3
  920. package/src/mcp/tools/daemon-repos.ts +3 -3
  921. package/src/mcp/tools/daemon-sessions.ts +3 -3
  922. package/src/mcp/tools/daemon-status.ts +3 -3
  923. package/src/mcp/tools/diagnostic-models.ts +95 -0
  924. package/src/mcp/tools/doctor.ts +10 -7
  925. package/src/mcp/tools/explain.ts +3 -3
  926. package/src/mcp/tools/file-outline.ts +10 -4
  927. package/src/mcp/tools/graft-diff.ts +6 -3
  928. package/src/mcp/tools/map-collector.ts +338 -0
  929. package/src/mcp/tools/map.ts +52 -3
  930. package/src/mcp/tools/monitor-pause.ts +3 -3
  931. package/src/mcp/tools/monitor-resume.ts +3 -3
  932. package/src/mcp/tools/monitor-start.ts +3 -3
  933. package/src/mcp/tools/monitor-stop.ts +3 -3
  934. package/src/mcp/tools/precision-live.ts +158 -0
  935. package/src/mcp/tools/precision-match.ts +3 -0
  936. package/src/mcp/tools/precision-paths.ts +59 -0
  937. package/src/mcp/tools/precision-show.ts +86 -0
  938. package/src/mcp/tools/precision-visibility.ts +44 -0
  939. package/src/mcp/tools/precision-warp.ts +90 -0
  940. package/src/mcp/tools/precision.ts +19 -310
  941. package/src/mcp/tools/read-range.ts +12 -5
  942. package/src/mcp/tools/run-capture.ts +2 -2
  943. package/src/mcp/tools/safe-read.ts +21 -10
  944. package/src/mcp/tools/since.ts +7 -3
  945. package/src/mcp/tools/state.ts +8 -7
  946. package/src/mcp/tools/stats.ts +3 -3
  947. package/src/mcp/tools/workspace-authorizations.ts +3 -3
  948. package/src/mcp/tools/workspace-authorize.ts +3 -3
  949. package/src/mcp/tools/workspace-bind.ts +3 -3
  950. package/src/mcp/tools/workspace-rebind.ts +3 -3
  951. package/src/mcp/tools/workspace-revoke.ts +3 -3
  952. package/src/mcp/tools/workspace-status.ts +3 -3
  953. package/src/mcp/warp-pool.ts +6 -6
  954. package/src/mcp/workspace-read-observation-model.ts +48 -0
  955. package/src/mcp/workspace-read-observation.ts +103 -0
  956. package/src/mcp/workspace-router-capability.ts +32 -0
  957. package/src/mcp/workspace-router-history.ts +233 -0
  958. package/src/mcp/workspace-router-model.ts +131 -0
  959. package/src/mcp/workspace-router-resolution.ts +71 -0
  960. package/src/mcp/workspace-router-runtime.ts +243 -0
  961. package/src/mcp/workspace-router.ts +151 -454
  962. package/src/metrics/logger.ts +22 -51
  963. package/src/metrics/types.ts +32 -4
  964. package/src/operations/cached-file.ts +40 -0
  965. package/src/operations/diff-identity.ts +127 -0
  966. package/src/operations/file-outline.ts +1 -1
  967. package/src/operations/graft-diff.ts +0 -1
  968. package/src/operations/observation-cache.ts +149 -0
  969. package/src/operations/read-range.ts +0 -1
  970. package/src/operations/repo-workspace.ts +339 -0
  971. package/src/operations/result-dto.ts +23 -0
  972. package/src/operations/safe-read.ts +3 -4
  973. package/src/operations/state.ts +42 -6
  974. package/src/operations/structured-buffer-compare.ts +429 -0
  975. package/src/operations/structured-buffer-model.ts +456 -0
  976. package/src/operations/structured-buffer-query.ts +794 -0
  977. package/src/operations/structured-buffer.ts +181 -0
  978. package/src/parser/diff.ts +172 -1
  979. package/src/parser/lang.ts +58 -15
  980. package/src/parser/markdown.ts +197 -0
  981. package/src/parser/outline.ts +8 -208
  982. package/src/parser/runtime.ts +71 -0
  983. package/src/policy/evaluate.ts +2 -2
  984. package/src/policy/types.ts +9 -9
  985. package/src/ports/guards.ts +68 -0
  986. package/src/ports/warp.ts +55 -0
  987. package/src/session/tracker.ts +7 -7
  988. package/src/session/types.ts +4 -1
  989. package/src/warp/identity-resolver.ts +35 -0
  990. package/src/warp/indexer-git.ts +182 -0
  991. package/src/warp/indexer-graph.ts +276 -0
  992. package/src/warp/indexer-model.ts +69 -0
  993. package/src/warp/indexer.ts +122 -449
  994. package/src/warp/observers.ts +7 -12
  995. package/src/warp/open.ts +66 -4
  996. package/src/warp/symbol-identity.ts +100 -0
package/src/mcp/server.ts CHANGED
@@ -1,135 +1,48 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
1
  import * as crypto from "node:crypto";
3
2
  import * as path from "node:path";
4
3
  import { z } from "zod";
5
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- import { buildReceiptResult } from "./receipt.js";
7
- import type { ToolHandler, ToolContext, ToolDefinition } from "./context.js";
5
+ import type { JsonObject } from "../contracts/json-object.js";
6
+ import type { ToolHandler, ToolContext } from "./context.js";
8
7
  import type { McpToolResult } from "./receipt.js";
9
- import { evaluateMcpPolicy } from "./policy.js";
10
8
  import { nodeFs } from "../adapters/node-fs.js";
11
9
  import { CanonicalJsonCodec } from "../adapters/canonical-json.js";
12
10
  import { nodeProcessRunner } from "../adapters/node-process-runner.js";
13
11
  import type { ProcessRunner } from "../ports/process-runner.js";
14
12
  import { nodeGit } from "../adapters/node-git.js";
15
- import { RefusedResult } from "../policy/types.js";
16
- import type WarpApp from "@git-stunts/git-warp";
17
13
  import { openWarp } from "../warp/open.js";
18
14
  import type { RunCaptureConfig } from "./run-capture-config.js";
19
15
  import { resolveRunCaptureConfig } from "./run-capture-config.js";
20
16
  import {
21
- WorkspaceBindingRequiredError,
22
- WorkspaceCapabilityDeniedError,
23
17
  WorkspaceRouter,
24
- type WorkspaceExecutionContext,
25
- type WorkspaceSessionMode,
18
+ type WorkspaceMode,
26
19
  } from "./workspace-router.js";
27
20
  import { DaemonControlPlane, type DaemonRuntimeDescriptor } from "./daemon-control-plane.js";
28
21
  import { DaemonRepoOverview } from "./daemon-repos.js";
29
22
  import { DaemonJobScheduler } from "./daemon-job-scheduler.js";
30
23
  import { InlineDaemonWorkerPool, type DaemonWorkerPool } from "./daemon-worker-pool.js";
31
24
  import { PersistentMonitorRuntime } from "./persistent-monitor-runtime.js";
32
- import { mergeRepoConcurrencySummaryWithLiveSessions } from "./repo-concurrency.js";
33
- import { OFFLOADED_DAEMON_REPO_TOOL_NAMES, type OffloadedRepoToolName } from "./repo-tool-job.js";
34
25
  import {
35
26
  RuntimeEventLogger,
36
- classifyRuntimeFailure,
37
27
  ensureGraftDirExcluded,
38
28
  resolveRuntimeObservabilityState,
39
- sanitizeArgKeys,
40
29
  type RuntimeObservabilityState,
41
30
  } from "./runtime-observability.js";
42
31
  import { InMemoryWarpPool, type WarpPool } from "./warp-pool.js";
43
32
  import { buildSessionWarpWriterId } from "../warp/writer-id.js";
44
33
  import { PersistedLocalHistoryStore } from "./persisted-local-history.js";
45
34
  import { GRAFT_VERSION } from "../version.js";
46
-
47
- // Tool definitions each file exports a ToolDefinition object
48
- import { safeReadTool } from "./tools/safe-read.js";
49
- import { fileOutlineTool } from "./tools/file-outline.js";
50
- import { readRangeTool } from "./tools/read-range.js";
51
- import { changedSinceTool } from "./tools/changed-since.js";
52
- import { graftDiffTool } from "./tools/graft-diff.js";
53
- import { runCaptureTool } from "./tools/run-capture.js";
54
- import { stateSaveTool, stateLoadTool } from "./tools/state.js";
55
- import { doctorTool } from "./tools/doctor.js";
56
- import { statsTool } from "./tools/stats.js";
57
- import { explainTool } from "./tools/explain.js";
58
- import { setBudgetTool } from "./tools/budget.js";
59
- import { sinceTool } from "./tools/since.js";
60
- import { mapTool } from "./tools/map.js";
61
- import { codeShowTool } from "./tools/code-show.js";
62
- import { codeFindTool } from "./tools/code-find.js";
63
- import { codeRefsTool } from "./tools/code-refs.js";
64
- import { daemonMonitorsTool } from "./tools/daemon-monitors.js";
65
- import { daemonReposTool } from "./tools/daemon-repos.js";
66
- import { daemonSessionsTool } from "./tools/daemon-sessions.js";
67
- import { daemonStatusTool } from "./tools/daemon-status.js";
68
- import { monitorPauseTool } from "./tools/monitor-pause.js";
69
- import { monitorResumeTool } from "./tools/monitor-resume.js";
70
- import { monitorStartTool } from "./tools/monitor-start.js";
71
- import { monitorStopTool } from "./tools/monitor-stop.js";
72
- import { activityViewTool } from "./tools/activity-view.js";
73
- import { causalStatusTool } from "./tools/causal-status.js";
74
- import { causalAttachTool } from "./tools/causal-attach.js";
75
- import { workspaceAuthorizeTool } from "./tools/workspace-authorize.js";
76
- import { workspaceAuthorizationsTool } from "./tools/workspace-authorizations.js";
77
- import { workspaceBindTool } from "./tools/workspace-bind.js";
78
- import { workspaceRevokeTool } from "./tools/workspace-revoke.js";
79
- import { workspaceStatusTool } from "./tools/workspace-status.js";
80
- import { workspaceRebindTool } from "./tools/workspace-rebind.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";
81
39
 
82
40
  export type { McpToolResult, ToolHandler, ToolContext };
83
-
84
- /** All registered tool definitions. Add new tools here. */
85
- export const TOOL_REGISTRY: readonly ToolDefinition[] = [
86
- safeReadTool,
87
- fileOutlineTool,
88
- readRangeTool,
89
- changedSinceTool,
90
- graftDiffTool,
91
- runCaptureTool,
92
- stateSaveTool,
93
- stateLoadTool,
94
- doctorTool,
95
- activityViewTool,
96
- causalStatusTool,
97
- causalAttachTool,
98
- statsTool,
99
- explainTool,
100
- setBudgetTool,
101
- sinceTool,
102
- mapTool,
103
- codeShowTool,
104
- codeFindTool,
105
- codeRefsTool,
106
- ];
107
-
108
- export const DAEMON_TOOL_REGISTRY: readonly ToolDefinition[] = [
109
- daemonReposTool,
110
- daemonStatusTool,
111
- daemonSessionsTool,
112
- daemonMonitorsTool,
113
- monitorStartTool,
114
- monitorPauseTool,
115
- monitorResumeTool,
116
- monitorStopTool,
117
- workspaceAuthorizeTool,
118
- workspaceAuthorizationsTool,
119
- workspaceRevokeTool,
120
- workspaceBindTool,
121
- workspaceStatusTool,
122
- workspaceRebindTool,
123
- ];
124
-
125
- export const ALL_TOOL_REGISTRY: readonly ToolDefinition[] = [
126
- ...TOOL_REGISTRY,
127
- ...DAEMON_TOOL_REGISTRY,
128
- ];
41
+ export { ALL_TOOL_REGISTRY, TOOL_REGISTRY } from "./tool-registry.js";
129
42
 
130
43
  export interface GraftServer {
131
44
  getRegisteredTools(): string[];
132
- callTool(name: string, args: Record<string, unknown>): Promise<McpToolResult>;
45
+ callTool(name: string, args: JsonObject): Promise<McpToolResult>;
133
46
  injectSessionMessages(count: number): void;
134
47
  getWorkspaceStatus(): import("./workspace-router.js").WorkspaceStatus;
135
48
  getRuntimeCausalContext(): import("./runtime-causal-context.js").RuntimeCausalContext | null;
@@ -137,7 +50,7 @@ export interface GraftServer {
137
50
  }
138
51
 
139
52
  export interface CreateGraftServerOptions {
140
- mode?: WorkspaceSessionMode;
53
+ mode?: WorkspaceMode;
141
54
  sessionId?: string;
142
55
  projectRoot?: string;
143
56
  graftDir?: string;
@@ -158,7 +71,8 @@ export function createGraftServer(options: CreateGraftServerOptions = {}): Graft
158
71
  const sessionId = options.sessionId ?? crypto.randomUUID();
159
72
  const mode = options.mode ?? "repo_local";
160
73
  const sessionWarpWriterId = mode === "daemon" ? buildSessionWarpWriterId(sessionId) : undefined;
161
- const projectRoot = mode === "repo_local" ? (options.projectRoot ?? process.cwd()) : options.projectRoot;
74
+ const env = options.env ?? process.env;
75
+ const projectRoot = mode === "repo_local" ? (options.projectRoot ?? env["GRAFT_PROJECT_ROOT"]?.trim() ?? process.cwd()) : options.projectRoot;
162
76
  const graftDir = options.graftDir
163
77
  ?? (mode === "repo_local" && projectRoot !== undefined ? path.join(projectRoot, ".graft") : undefined);
164
78
  if (graftDir === undefined) {
@@ -222,13 +136,6 @@ export function createGraftServer(options: CreateGraftServerOptions = {}): Graft
222
136
  });
223
137
  const handlers = new Map<string, ToolHandler>();
224
138
  const schemas = new Map<string, z.ZodObject>();
225
- const executionContextStorage = new AsyncLocalStorage<WorkspaceExecutionContext>();
226
- const invocationStorage = new AsyncLocalStorage<{
227
- readonly traceId: string;
228
- readonly startedAtMs: number;
229
- response?: { readonly receipt: import("./receipt.js").McpToolReceipt; readonly tripwireSignals: readonly string[] };
230
- }>();
231
- let seq = 0;
232
139
  const workspaceRouter = new WorkspaceRouter({
233
140
  mode,
234
141
  fs: nodeFs,
@@ -259,514 +166,47 @@ export function createGraftServer(options: CreateGraftServerOptions = {}): Graft
259
166
  ]);
260
167
  })().then(() => undefined);
261
168
 
262
- async function emitRuntimeEvent(event: Parameters<RuntimeEventLogger["log"]>[0]): Promise<void> {
263
- try {
264
- await runtimeReady;
265
- await runtimeLogger.log(event);
266
- } catch {
267
- // Observability must never become the reason a tool call fails.
268
- }
269
- }
169
+ // --- Invocation engine: AsyncLocalStorage, respond(), invokeTool() ---
270
170
 
271
- function getActiveExecutionContext(): WorkspaceExecutionContext | null {
272
- return executionContextStorage.getStore() ?? null;
273
- }
171
+ const engine = createInvocationEngine({
172
+ sessionId,
173
+ mode,
174
+ codec,
175
+ observability,
176
+ runtimeLogger,
177
+ workspaceRouter,
178
+ daemonScheduler,
179
+ daemonWorkerPool,
180
+ runtimeReady,
181
+ });
274
182
 
275
- function respond(tool: ToolDefinition["name"], data: Record<string, unknown>): McpToolResult {
276
- const invocation = invocationStorage.getStore();
277
- if (invocation === undefined) {
278
- throw new Error("MCP respond() called outside an active invocation");
279
- }
280
- seq++;
281
- const execution = getActiveExecutionContext();
282
- const session = execution?.session ?? workspaceRouter.session;
283
- const metrics = execution?.metrics ?? workspaceRouter.metrics;
284
- const tripwires = session.checkTripwires();
285
- const { result, textBytes, receipt } = buildReceiptResult(tool, data, {
286
- sessionId,
287
- traceId: invocation.traceId,
288
- seq,
289
- latencyMs: Date.now() - invocation.startedAtMs,
290
- codec,
291
- metrics: metrics.snapshot(),
292
- tripwires,
293
- budget: session.getBudget(),
294
- });
295
- invocation.response = {
296
- receipt,
297
- tripwireSignals: tripwires.map((wire) => wire.signal),
298
- };
299
- metrics.recordToolResult(tool, textBytes);
300
- session.recordBytesConsumed(textBytes);
301
- return result;
302
- }
183
+ // --- ToolContext: lazy-getter facade over workspace router + execution context ---
303
184
 
304
- const ctx: ToolContext = {
305
- get projectRoot(): string {
306
- return getActiveExecutionContext()?.projectRoot ?? workspaceRouter.getProjectRoot();
307
- },
308
- get graftDir(): string {
309
- return getActiveExecutionContext()?.graftDir ?? workspaceRouter.graftDir;
310
- },
311
- get graftignorePatterns(): readonly string[] {
312
- return getActiveExecutionContext()?.graftignorePatterns ?? workspaceRouter.getGraftignorePatterns();
313
- },
314
- get session() {
315
- return getActiveExecutionContext()?.session ?? workspaceRouter.session;
316
- },
317
- get cache() {
318
- return getActiveExecutionContext()?.cache ?? workspaceRouter.cache;
319
- },
320
- get metrics() {
321
- return getActiveExecutionContext()?.metrics ?? workspaceRouter.metrics;
322
- },
323
- respond,
324
- resolvePath(relative: string): string {
325
- return getActiveExecutionContext()?.resolvePath(relative) ?? workspaceRouter.getPathResolver()(relative);
326
- },
185
+ const ctx: ToolContext = buildToolContext({
186
+ workspaceRouter,
327
187
  fs: nodeFs,
328
188
  codec,
329
- process: processRunner,
189
+ processRunner,
330
190
  git: nodeGit,
331
191
  runCapture,
332
192
  observability,
333
- getWarp(): Promise<WarpApp> {
334
- return getActiveExecutionContext()?.getWarp() ?? workspaceRouter.getWarp();
335
- },
336
- getRepoState() {
337
- return getActiveExecutionContext()?.repoState.getState() ?? workspaceRouter.getRepoState();
338
- },
339
- getCausalContext() {
340
- return getActiveExecutionContext()?.getCausalContext() ?? workspaceRouter.captureExecutionContext().getCausalContext();
341
- },
342
- getWorkspaceOverlayFooting() {
343
- return workspaceRouter.getWorkspaceOverlayFooting();
344
- },
345
- getPersistedLocalHistorySummary() {
346
- return workspaceRouter.getPersistedLocalHistorySummary();
347
- },
348
- getPersistedLocalActivityWindow(limit) {
349
- return workspaceRouter.getPersistedLocalActivityWindow(limit);
350
- },
351
- getRepoConcurrencySummary() {
352
- return (async () => {
353
- const summary = await workspaceRouter.getRepoConcurrencySummary();
354
- if (summary === null || daemonControlPlane === null) {
355
- return summary;
356
- }
357
- const status = workspaceRouter.getStatus();
358
- if (status.bindState !== "bound" || status.repoId === null || status.worktreeId === null) {
359
- return summary;
360
- }
361
- const causalContext = workspaceRouter.captureExecutionContext().getCausalContext();
362
- return mergeRepoConcurrencySummaryWithLiveSessions({
363
- currentSummary: summary,
364
- currentRepoId: status.repoId,
365
- currentWorktreeId: status.worktreeId,
366
- currentCheckoutEpochId: causalContext.checkoutEpochId,
367
- sessions: daemonControlPlane.listSessions(),
368
- });
369
- })();
370
- },
371
- declareCausalAttach(request) {
372
- return workspaceRouter.declareAttach(request);
373
- },
374
- getWorkspaceStatus() {
375
- return getActiveExecutionContext()?.status ?? workspaceRouter.getStatus();
376
- },
377
- bindWorkspace(request, actionName) {
378
- return workspaceRouter.bind(request, actionName);
379
- },
380
- rebindWorkspace(request, actionName) {
381
- return workspaceRouter.rebind(request, actionName);
382
- },
383
- getDaemonStatus() {
384
- if (daemonControlPlane === null) {
385
- throw new Error("daemon_status is only available in daemon mode");
386
- }
387
- if (daemonScheduler === null) {
388
- throw new Error("daemon_status is only available in daemon mode");
389
- }
390
- if (daemonWorkerPool === null) {
391
- throw new Error("daemon_status is only available in daemon mode");
392
- }
393
- return Promise.resolve(daemonControlPlane.getStatus(
394
- daemonRuntime(),
395
- monitorRuntime?.getCounts(),
396
- daemonScheduler.getCounts(),
397
- daemonWorkerPool.getCounts(),
398
- ));
399
- },
400
- listDaemonRepos(filter) {
401
- if (daemonRepoOverview === null) {
402
- throw new Error("daemon_repos is only available in daemon mode");
403
- }
404
- return daemonRepoOverview.list(filter);
405
- },
406
- listDaemonSessions() {
407
- if (daemonControlPlane === null) {
408
- throw new Error("daemon_sessions is only available in daemon mode");
409
- }
410
- return Promise.resolve(daemonControlPlane.listSessions());
411
- },
412
- listDaemonMonitors() {
413
- if (monitorRuntime === null) {
414
- throw new Error("daemon_monitors is only available in daemon mode");
415
- }
416
- return monitorRuntime.listStatuses();
417
- },
418
- startMonitor(request) {
419
- if (monitorRuntime === null) {
420
- throw new Error("monitor_start is only available in daemon mode");
421
- }
422
- return monitorRuntime.startMonitor(request);
423
- },
424
- pauseMonitor(request) {
425
- if (monitorRuntime === null) {
426
- throw new Error("monitor_pause is only available in daemon mode");
427
- }
428
- return monitorRuntime.pauseMonitor(request);
429
- },
430
- resumeMonitor(request) {
431
- if (monitorRuntime === null) {
432
- throw new Error("monitor_resume is only available in daemon mode");
433
- }
434
- return monitorRuntime.resumeMonitor(request);
435
- },
436
- stopMonitor(request) {
437
- if (monitorRuntime === null) {
438
- throw new Error("monitor_stop is only available in daemon mode");
439
- }
440
- return monitorRuntime.stopMonitor(request);
441
- },
442
- listWorkspaceAuthorizations() {
443
- if (daemonControlPlane === null) {
444
- throw new Error("workspace_authorizations is only available in daemon mode");
445
- }
446
- return daemonControlPlane.listAuthorizedWorkspaces();
447
- },
448
- authorizeWorkspace(request) {
449
- if (daemonControlPlane === null) {
450
- throw new Error("workspace_authorize is only available in daemon mode");
451
- }
452
- return daemonControlPlane.authorizeWorkspace(request);
453
- },
454
- revokeWorkspace(request) {
455
- if (daemonControlPlane === null) {
456
- throw new Error("workspace_revoke is only available in daemon mode");
457
- }
458
- return daemonControlPlane.revokeWorkspace(request);
459
- },
460
- };
461
-
462
- const daemonAlwaysAvailableTools = new Set<string>([
463
- "daemon_repos",
464
- "daemon_status",
465
- "daemon_sessions",
466
- "daemon_monitors",
467
- "monitor_start",
468
- "monitor_pause",
469
- "monitor_resume",
470
- "monitor_stop",
471
- "workspace_authorize",
472
- "workspace_authorizations",
473
- "workspace_revoke",
474
- "workspace_bind",
475
- "workspace_status",
476
- "causal_status",
477
- "workspace_rebind",
478
- "explain",
479
- ]);
480
-
481
- const repoStateOptionalTools = new Set<string>([
482
- "daemon_repos",
483
- "daemon_status",
484
- "daemon_sessions",
485
- "daemon_monitors",
486
- "monitor_start",
487
- "monitor_pause",
488
- "monitor_resume",
489
- "monitor_stop",
490
- "workspace_authorize",
491
- "workspace_authorizations",
492
- "workspace_revoke",
493
- "workspace_bind",
494
- "workspace_status",
495
- "workspace_rebind",
496
- "explain",
497
- ]);
498
-
499
- function enforceDaemonToolAccess(name: string): void {
500
- if (mode !== "daemon") return;
501
- if (daemonAlwaysAvailableTools.has(name)) {
502
- return;
503
- }
504
- if (!workspaceRouter.isBound()) {
505
- throw new WorkspaceBindingRequiredError(name);
506
- }
507
- if (name === "run_capture" && workspaceRouter.getStatus().capabilityProfile?.runCapture !== true) {
508
- throw new WorkspaceCapabilityDeniedError(name);
509
- }
510
- }
511
-
512
- const daemonScheduledRepoTools = new Set<string>([
513
- "safe_read",
514
- "file_outline",
515
- "changed_since",
516
- "graft_diff",
517
- "graft_since",
518
- "graft_map",
519
- "code_show",
520
- "code_find",
521
- "code_refs",
522
- ]);
523
- const daemonOffloadedRepoTools = new Set<string>(OFFLOADED_DAEMON_REPO_TOOL_NAMES);
524
- const attributedReadTools = new Set<string>([
525
- "safe_read",
526
- "file_outline",
527
- "read_range",
528
- ]);
529
-
530
- function isOffloadedRepoTool(name: string): name is OffloadedRepoToolName {
531
- return daemonOffloadedRepoTools.has(name);
532
- }
533
-
534
- function resolveDaemonOffloadedRepoTool(
535
- name: string,
536
- parsed: Record<string, unknown>,
537
- dirty: boolean,
538
- ): OffloadedRepoToolName | null {
539
- if (name === "code_find") {
540
- return dirty ? "code_find_live" : null;
541
- }
542
- if (name === "code_show") {
543
- return parsed["ref"] === undefined ? "code_show_live" : null;
544
- }
545
- return isOffloadedRepoTool(name) ? name : null;
546
- }
547
-
548
- function parseToolPayload(result: McpToolResult): Record<string, unknown> | null {
549
- const textBlock = result.content.find((entry) => entry.type === "text");
550
- if (textBlock === undefined) {
551
- return null;
552
- }
553
- try {
554
- return JSON.parse(textBlock.text) as Record<string, unknown>;
555
- } catch {
556
- return null;
557
- }
558
- }
559
-
560
- async function invokeTool(
561
- name: string,
562
- handler: ToolHandler,
563
- args: Record<string, unknown>,
564
- schema?: z.ZodObject,
565
- ): Promise<McpToolResult> {
566
- await runtimeReady;
567
- workspaceRouter.session.recordMessage();
568
- workspaceRouter.session.recordToolCall(name);
569
- const traceId = crypto.randomUUID();
570
- const startedAtMs = Date.now();
571
- const argKeys = sanitizeArgKeys(args);
572
-
573
- if (observability.enabled) {
574
- await emitRuntimeEvent({
575
- event: "tool_call_started",
576
- sessionId,
577
- traceId,
578
- tool: name,
579
- argKeys,
580
- sessionDepth: workspaceRouter.session.getSessionDepth(),
581
- });
582
- }
583
-
584
- const invocation = { traceId, startedAtMs } as {
585
- readonly traceId: string;
586
- readonly startedAtMs: number;
587
- response?: { readonly receipt: import("./receipt.js").McpToolReceipt; readonly tripwireSignals: readonly string[] };
588
- };
589
- let execution: WorkspaceExecutionContext | null = null;
590
-
591
- try {
592
- const parsed: Record<string, unknown> = schema !== undefined ? schema.parse(args) : args;
593
- enforceDaemonToolAccess(name);
594
-
595
- execution = daemonScheduler !== null
596
- && workspaceRouter.isBound()
597
- && daemonScheduledRepoTools.has(name)
598
- ? workspaceRouter.captureExecutionContext()
599
- : null;
600
-
601
- const executeHandler = async (): Promise<McpToolResult> => {
602
- return invocationStorage.run(invocation, async () => {
603
- if (execution !== null) {
604
- const activeExecution = execution;
605
- return executionContextStorage.run(activeExecution, async () => {
606
- if (!repoStateOptionalTools.has(name)) {
607
- await activeExecution.repoState.observe();
608
- }
609
- return handler(parsed);
610
- });
611
- }
612
- if (workspaceRouter.isBound() && !repoStateOptionalTools.has(name)) {
613
- await workspaceRouter.observeRepoState();
614
- }
615
- return handler(parsed);
616
- });
617
- };
618
-
619
- const result = execution !== null && daemonScheduler !== null
620
- ? await daemonScheduler.enqueue({
621
- sessionId,
622
- sliceId: execution.sliceId,
623
- repoId: execution.repoId,
624
- worktreeId: execution.worktreeId,
625
- tool: name,
626
- kind: "repo_tool",
627
- priority: "interactive",
628
- writerId: execution.warpWriterId,
629
- }, async () => {
630
- const activeExecution = execution;
631
- if (activeExecution !== null && daemonWorkerPool !== null) {
632
- await activeExecution.repoState.observe();
633
- const offloadedTool = resolveDaemonOffloadedRepoTool(
634
- name,
635
- parsed,
636
- activeExecution.repoState.getState().dirty,
637
- );
638
- if (offloadedTool === null) {
639
- return executeHandler();
640
- }
641
- const cacheSnapshots = typeof parsed["path"] === "string"
642
- ? (() => {
643
- const filePath = activeExecution.resolvePath(parsed["path"]);
644
- const snapshot = activeExecution.cache.snapshotEntry(filePath);
645
- return snapshot === null ? {} : { [filePath]: snapshot };
646
- })()
647
- : undefined;
648
- const workerResult = await daemonWorkerPool.runRepoTool({
649
- sessionId,
650
- workspaceSliceId: activeExecution.sliceId,
651
- traceId,
652
- seq: ++seq,
653
- startedAtMs,
654
- tool: offloadedTool,
655
- args: parsed,
656
- projectRoot: activeExecution.projectRoot,
657
- graftDir: activeExecution.graftDir,
658
- graftignorePatterns: activeExecution.graftignorePatterns,
659
- repoId: activeExecution.repoId,
660
- worktreeId: activeExecution.worktreeId,
661
- gitCommonDir: activeExecution.gitCommonDir,
662
- writerId: activeExecution.warpWriterId,
663
- capabilityProfile: activeExecution.capabilityProfile,
664
- repoState: activeExecution.repoState.getState(),
665
- sessionSnapshot: activeExecution.session.snapshot(),
666
- metricsSnapshot: activeExecution.metrics.snapshot(),
667
- ...(cacheSnapshots !== undefined ? { cacheSnapshots } : {}),
668
- });
669
- for (const update of workerResult.cacheUpdates) {
670
- activeExecution.cache.applySnapshot(update.path, update.observation);
671
- }
672
- activeExecution.metrics.applyDelta(workerResult.metricsDelta);
673
- activeExecution.metrics.recordToolResult(name as ToolDefinition["name"], workerResult.textBytes);
674
- activeExecution.session.recordBytesConsumed(workerResult.textBytes);
675
- invocation.response = {
676
- receipt: workerResult.receipt,
677
- tripwireSignals: workerResult.tripwireSignals,
678
- };
679
- return workerResult.result;
680
- }
681
- return executeHandler();
682
- })
683
- : await executeHandler();
684
-
685
- if (observability.enabled && invocation.response !== undefined) {
686
- await emitRuntimeEvent({
687
- event: "tool_call_completed",
688
- sessionId,
689
- traceId,
690
- seq: invocation.response.receipt.seq,
691
- tool: name,
692
- latencyMs: invocation.response.receipt.latencyMs,
693
- projection: invocation.response.receipt.projection,
694
- reason: invocation.response.receipt.reason,
695
- burdenKind: invocation.response.receipt.burden.kind,
696
- nonReadBurden: invocation.response.receipt.burden.nonRead,
697
- returnedBytes: invocation.response.receipt.returnedBytes,
698
- fileBytes: invocation.response.receipt.fileBytes,
699
- sessionDepth: execution?.session.getSessionDepth() ?? workspaceRouter.session.getSessionDepth(),
700
- tripwireSignals: invocation.response.tripwireSignals,
701
- metrics: invocation.response.receipt.cumulative,
702
- });
703
- }
704
-
705
- if (workspaceRouter.isBound() && attributedReadTools.has(name)) {
706
- const payload = parseToolPayload(result);
707
- if (payload !== null) {
708
- await workspaceRouter.noteReadObservation(
709
- name as "safe_read" | "file_outline" | "read_range",
710
- parsed,
711
- payload,
712
- execution,
713
- );
714
- }
715
- }
716
-
717
- return result;
718
- } catch (error) {
719
- if (observability.enabled) {
720
- const failure = classifyRuntimeFailure(error);
721
- await emitRuntimeEvent({
722
- event: "tool_call_failed",
723
- sessionId,
724
- traceId,
725
- tool: name,
726
- latencyMs: Date.now() - startedAtMs,
727
- sessionDepth: execution?.session.getSessionDepth() ?? workspaceRouter.session.getSessionDepth(),
728
- argKeys,
729
- errorKind: failure.kind,
730
- errorName: failure.name,
731
- });
732
- }
733
- throw error;
734
- }
735
- }
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
+ });
736
203
 
737
- function wrapWithPolicyCheck(toolName: ToolDefinition["name"], inner: ToolHandler): ToolHandler {
738
- return async (args: Record<string, unknown>) => {
739
- const rawPath = args["path"] as string | undefined;
740
- if (rawPath === undefined) return inner(args);
741
- const filePath = ctx.resolvePath(rawPath);
742
- let content: string;
743
- try {
744
- content = await ctx.fs.readFile(filePath, "utf-8");
745
- } catch {
746
- // File unreadable — let the inner handler deal with the error
747
- return inner(args);
748
- }
749
- const actual = { lines: content.split("\n").length, bytes: Buffer.byteLength(content) };
750
- const policy = evaluateMcpPolicy(ctx, filePath, actual);
751
- if (policy instanceof RefusedResult) {
752
- ctx.metrics.recordRefusal();
753
- return respond(toolName, {
754
- path: filePath,
755
- projection: "refused",
756
- reason: policy.reason,
757
- reasonDetail: policy.reasonDetail,
758
- next: [...policy.next],
759
- actual,
760
- });
761
- }
762
- return inner(args);
763
- };
764
- }
204
+ // --- Tool registration ---
765
205
 
766
206
  const activeToolRegistry = mode === "daemon" ? ALL_TOOL_REGISTRY : TOOL_REGISTRY;
767
207
 
768
208
  for (const def of activeToolRegistry) {
769
- const rawHandler = def.createHandler(ctx);
209
+ const rawHandler = def.createHandler();
770
210
  const handler = def.policyCheck === true ? wrapWithPolicyCheck(def.name, rawHandler) : rawHandler;
771
211
  handlers.set(def.name, handler);
772
212
 
@@ -774,17 +214,17 @@ export function createGraftServer(options: CreateGraftServerOptions = {}): Graft
774
214
  const zodSchema = z.object(def.schema).strict();
775
215
  schemas.set(def.name, zodSchema);
776
216
  mcpServer.registerTool(def.name, { description: def.description, inputSchema: def.schema }, async (args) => {
777
- return invokeTool(def.name, handler, args, zodSchema);
217
+ return engine.invokeTool(def.name, handler, args, ctx, zodSchema);
778
218
  });
779
219
  } else {
780
220
  mcpServer.registerTool(def.name, { description: def.description }, async () => {
781
- return invokeTool(def.name, handler, {});
221
+ return engine.invokeTool(def.name, handler, {}, ctx);
782
222
  });
783
223
  }
784
224
  }
785
225
 
786
226
  if (observability.enabled) {
787
- void emitRuntimeEvent({
227
+ void engine.emitRuntimeEvent({
788
228
  event: "session_started",
789
229
  sessionId,
790
230
  logPath: observability.logPath,
@@ -796,17 +236,17 @@ export function createGraftServer(options: CreateGraftServerOptions = {}): Graft
796
236
  getRegisteredTools(): string[] {
797
237
  return [...handlers.keys()];
798
238
  },
799
- async callTool(name: string, args: Record<string, unknown>): Promise<McpToolResult> {
239
+ async callTool(name: string, args: JsonObject): Promise<McpToolResult> {
800
240
  const handler = handlers.get(name);
801
241
  if (handler === undefined) {
802
242
  throw new Error(`Unknown tool: ${name}`);
803
243
  }
804
244
  const schema = schemas.get(name);
805
- return invokeTool(name, handler, args, schema);
245
+ return engine.invokeTool(name, handler, args, ctx, schema);
806
246
  },
807
247
  injectSessionMessages(count: number): void {
808
248
  for (let i = 0; i < count; i++) {
809
- workspaceRouter.session.recordMessage();
249
+ workspaceRouter.governor.recordMessage();
810
250
  }
811
251
  },
812
252
  getWorkspaceStatus() {