@flyingrobots/graft 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/ARCHITECTURE.md +130 -377
  2. package/CHANGELOG.md +94 -13
  3. package/README.md +107 -269
  4. package/bin/graft.js +5 -3
  5. package/dist/adapters/canonical-json.d.ts +6 -0
  6. package/dist/adapters/canonical-json.d.ts.map +1 -0
  7. package/dist/adapters/canonical-json.js +52 -0
  8. package/dist/adapters/canonical-json.js.map +1 -0
  9. package/dist/adapters/node-fs.d.ts +3 -0
  10. package/dist/adapters/node-fs.d.ts.map +1 -0
  11. package/dist/adapters/node-fs.js +33 -0
  12. package/dist/adapters/node-fs.js.map +1 -0
  13. package/dist/adapters/node-git.d.ts +3 -0
  14. package/dist/adapters/node-git.d.ts.map +1 -0
  15. package/dist/adapters/node-git.js +44 -0
  16. package/dist/adapters/node-git.js.map +1 -0
  17. package/dist/adapters/node-process-runner.d.ts +3 -0
  18. package/dist/adapters/node-process-runner.d.ts.map +1 -0
  19. package/dist/adapters/node-process-runner.js +23 -0
  20. package/dist/adapters/node-process-runner.js.map +1 -0
  21. package/dist/adapters/repo-paths.d.ts +3 -0
  22. package/dist/adapters/repo-paths.d.ts.map +1 -0
  23. package/dist/adapters/repo-paths.js +22 -0
  24. package/dist/adapters/repo-paths.js.map +1 -0
  25. package/dist/adapters/rotating-ndjson-log.d.ts +18 -0
  26. package/dist/adapters/rotating-ndjson-log.d.ts.map +1 -0
  27. package/dist/adapters/rotating-ndjson-log.js +48 -0
  28. package/dist/adapters/rotating-ndjson-log.js.map +1 -0
  29. package/dist/api/index.d.ts +27 -0
  30. package/dist/api/index.d.ts.map +1 -0
  31. package/dist/api/index.js +25 -0
  32. package/dist/api/index.js.map +1 -0
  33. package/dist/api/repo-local-graft.d.ts +7 -0
  34. package/dist/api/repo-local-graft.d.ts.map +1 -0
  35. package/dist/api/repo-local-graft.js +12 -0
  36. package/dist/api/repo-local-graft.js.map +1 -0
  37. package/dist/api/repo-workspace.d.ts +15 -0
  38. package/dist/api/repo-workspace.d.ts.map +1 -0
  39. package/dist/api/repo-workspace.js +23 -0
  40. package/dist/api/repo-workspace.js.map +1 -0
  41. package/dist/api/tool-bridge.d.ts +7 -0
  42. package/dist/api/tool-bridge.d.ts.map +1 -0
  43. package/dist/api/tool-bridge.js +14 -0
  44. package/dist/api/tool-bridge.js.map +1 -0
  45. package/dist/cli/activity-render.d.ts +2 -0
  46. package/dist/cli/activity-render.d.ts.map +1 -0
  47. package/dist/cli/activity-render.js +90 -0
  48. package/dist/cli/activity-render.js.map +1 -0
  49. package/dist/cli/cli-error.d.ts +10 -0
  50. package/dist/cli/cli-error.d.ts.map +1 -0
  51. package/dist/cli/cli-error.js +130 -0
  52. package/dist/cli/cli-error.js.map +1 -0
  53. package/dist/cli/command-parser.d.ts +17 -0
  54. package/dist/cli/command-parser.d.ts.map +1 -0
  55. package/dist/cli/command-parser.js +255 -0
  56. package/dist/cli/command-parser.js.map +1 -0
  57. package/dist/cli/entrypoint.d.ts +7 -0
  58. package/dist/cli/entrypoint.d.ts.map +1 -0
  59. package/dist/cli/entrypoint.js +8 -0
  60. package/dist/cli/entrypoint.js.map +1 -0
  61. package/dist/cli/index-cmd.d.ts +12 -0
  62. package/dist/cli/index-cmd.d.ts.map +1 -0
  63. package/dist/cli/index-cmd.js +73 -0
  64. package/dist/cli/index-cmd.js.map +1 -0
  65. package/dist/cli/index-model.d.ts +33 -0
  66. package/dist/cli/index-model.d.ts.map +1 -0
  67. package/dist/cli/index-model.js +55 -0
  68. package/dist/cli/index-model.js.map +1 -0
  69. package/dist/cli/init-bootstrap.d.ts +6 -0
  70. package/dist/cli/init-bootstrap.d.ts.map +1 -0
  71. package/dist/cli/init-bootstrap.js +27 -0
  72. package/dist/cli/init-bootstrap.js.map +1 -0
  73. package/dist/cli/init-client-config.d.ts +13 -0
  74. package/dist/cli/init-client-config.d.ts.map +1 -0
  75. package/dist/cli/init-client-config.js +215 -0
  76. package/dist/cli/init-client-config.js.map +1 -0
  77. package/dist/cli/init-model.d.ts +80 -0
  78. package/dist/cli/init-model.d.ts.map +1 -0
  79. package/dist/cli/init-model.js +202 -0
  80. package/dist/cli/init-model.js.map +1 -0
  81. package/dist/cli/init-render.d.ts +8 -0
  82. package/dist/cli/init-render.d.ts.map +1 -0
  83. package/dist/cli/init-render.js +43 -0
  84. package/dist/cli/init-render.js.map +1 -0
  85. package/dist/cli/init-target-hooks.d.ts +3 -0
  86. package/dist/cli/init-target-hooks.d.ts.map +1 -0
  87. package/dist/cli/init-target-hooks.js +75 -0
  88. package/dist/cli/init-target-hooks.js.map +1 -0
  89. package/dist/cli/init.d.ts +12 -0
  90. package/dist/cli/init.d.ts.map +1 -0
  91. package/dist/cli/init.js +96 -0
  92. package/dist/cli/init.js.map +1 -0
  93. package/dist/cli/json-document.d.ts +35 -0
  94. package/dist/cli/json-document.d.ts.map +1 -0
  95. package/dist/cli/json-document.js +107 -0
  96. package/dist/cli/json-document.js.map +1 -0
  97. package/dist/cli/local-history-dag-model.d.ts +43 -0
  98. package/dist/cli/local-history-dag-model.d.ts.map +1 -0
  99. package/dist/cli/local-history-dag-model.js +344 -0
  100. package/dist/cli/local-history-dag-model.js.map +1 -0
  101. package/dist/cli/local-history-dag-render.d.ts +3 -0
  102. package/dist/cli/local-history-dag-render.d.ts.map +1 -0
  103. package/dist/cli/local-history-dag-render.js +126 -0
  104. package/dist/cli/local-history-dag-render.js.map +1 -0
  105. package/dist/cli/local-history-dag.d.ts +13 -0
  106. package/dist/cli/local-history-dag.d.ts.map +1 -0
  107. package/dist/cli/local-history-dag.js +60 -0
  108. package/dist/cli/local-history-dag.js.map +1 -0
  109. package/dist/cli/main.d.ts +15 -0
  110. package/dist/cli/main.d.ts.map +1 -0
  111. package/dist/cli/main.js +126 -0
  112. package/dist/cli/main.js.map +1 -0
  113. package/dist/cli/migrate-local-history.d.ts +12 -0
  114. package/dist/cli/migrate-local-history.d.ts.map +1 -0
  115. package/dist/cli/migrate-local-history.js +82 -0
  116. package/dist/cli/migrate-local-history.js.map +1 -0
  117. package/dist/cli/peer-command.d.ts +9 -0
  118. package/dist/cli/peer-command.d.ts.map +1 -0
  119. package/dist/cli/peer-command.js +38 -0
  120. package/dist/cli/peer-command.js.map +1 -0
  121. package/dist/contracts/capabilities.d.ts +44 -0
  122. package/dist/contracts/capabilities.d.ts.map +1 -0
  123. package/dist/contracts/capabilities.js +382 -0
  124. package/dist/contracts/capabilities.js.map +1 -0
  125. package/dist/contracts/causal-ontology.d.ts +1937 -0
  126. package/dist/contracts/causal-ontology.d.ts.map +1 -0
  127. package/dist/contracts/causal-ontology.js +506 -0
  128. package/dist/contracts/causal-ontology.js.map +1 -0
  129. package/dist/contracts/causal-surface-next-action.d.ts +17 -0
  130. package/dist/contracts/causal-surface-next-action.d.ts.map +1 -0
  131. package/dist/contracts/causal-surface-next-action.js +16 -0
  132. package/dist/contracts/causal-surface-next-action.js.map +1 -0
  133. package/dist/contracts/json-object.d.ts +7 -0
  134. package/dist/contracts/json-object.d.ts.map +1 -0
  135. package/dist/contracts/json-object.js +24 -0
  136. package/dist/contracts/json-object.js.map +1 -0
  137. package/dist/contracts/mcp-runtime.d.ts +4 -0
  138. package/dist/contracts/mcp-runtime.d.ts.map +1 -0
  139. package/dist/contracts/mcp-runtime.js +11 -0
  140. package/dist/contracts/mcp-runtime.js.map +1 -0
  141. package/dist/contracts/output-schema-cli.d.ts +2716 -0
  142. package/dist/contracts/output-schema-cli.d.ts.map +1 -0
  143. package/dist/contracts/output-schema-cli.js +68 -0
  144. package/dist/contracts/output-schema-cli.js.map +1 -0
  145. package/dist/contracts/output-schema-fragments.d.ts +10819 -0
  146. package/dist/contracts/output-schema-fragments.d.ts.map +1 -0
  147. package/dist/contracts/output-schema-fragments.js +753 -0
  148. package/dist/contracts/output-schema-fragments.js.map +1 -0
  149. package/dist/contracts/output-schema-mcp.d.ts +5926 -0
  150. package/dist/contracts/output-schema-mcp.d.ts.map +1 -0
  151. package/dist/contracts/output-schema-mcp.js +231 -0
  152. package/dist/contracts/output-schema-mcp.js.map +1 -0
  153. package/dist/contracts/output-schema-meta.d.ts +30 -0
  154. package/dist/contracts/output-schema-meta.d.ts.map +1 -0
  155. package/dist/contracts/output-schema-meta.js +51 -0
  156. package/dist/contracts/output-schema-meta.js.map +1 -0
  157. package/dist/contracts/output-schemas.d.ts +1072 -0
  158. package/dist/contracts/output-schemas.d.ts.map +1 -0
  159. package/dist/contracts/output-schemas.js +1089 -0
  160. package/dist/contracts/output-schemas.js.map +1 -0
  161. package/dist/git/diff.d.ts +32 -0
  162. package/dist/git/diff.d.ts.map +1 -0
  163. package/dist/git/diff.js +82 -0
  164. package/dist/git/diff.js.map +1 -0
  165. package/dist/git/target-git-hook-bootstrap.d.ts +7 -0
  166. package/dist/git/target-git-hook-bootstrap.d.ts.map +1 -0
  167. package/dist/git/target-git-hook-bootstrap.js +40 -0
  168. package/dist/git/target-git-hook-bootstrap.js.map +1 -0
  169. package/dist/guards/stream-boundary.d.ts +41 -0
  170. package/dist/guards/stream-boundary.d.ts.map +1 -0
  171. package/dist/guards/stream-boundary.js +97 -0
  172. package/dist/guards/stream-boundary.js.map +1 -0
  173. package/dist/hooks/posttooluse-read.d.ts +4 -0
  174. package/dist/hooks/posttooluse-read.d.ts.map +1 -0
  175. package/dist/hooks/posttooluse-read.js +41 -0
  176. package/dist/hooks/posttooluse-read.js.map +1 -0
  177. package/dist/hooks/pretooluse-read.d.ts +4 -0
  178. package/dist/hooks/pretooluse-read.d.ts.map +1 -0
  179. package/dist/hooks/pretooluse-read.js +41 -0
  180. package/dist/hooks/pretooluse-read.js.map +1 -0
  181. package/dist/hooks/read-governor.d.ts +24 -0
  182. package/dist/hooks/read-governor.d.ts.map +1 -0
  183. package/dist/hooks/read-governor.js +76 -0
  184. package/dist/hooks/read-governor.js.map +1 -0
  185. package/dist/hooks/read-messages.d.ts +6 -0
  186. package/dist/hooks/read-messages.d.ts.map +1 -0
  187. package/dist/hooks/read-messages.js +45 -0
  188. package/dist/hooks/read-messages.js.map +1 -0
  189. package/dist/hooks/shared.d.ts +52 -0
  190. package/dist/hooks/shared.d.ts.map +1 -0
  191. package/dist/hooks/shared.js +137 -0
  192. package/dist/hooks/shared.js.map +1 -0
  193. package/dist/index.d.ts +2 -0
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +2 -0
  196. package/dist/index.js.map +1 -0
  197. package/dist/mcp/burden.d.ts +21 -0
  198. package/dist/mcp/burden.d.ts.map +1 -0
  199. package/dist/mcp/burden.js +96 -0
  200. package/dist/mcp/burden.js.map +1 -0
  201. package/dist/mcp/cache.d.ts +2 -0
  202. package/dist/mcp/cache.d.ts.map +1 -0
  203. package/dist/mcp/cache.js +2 -0
  204. package/dist/mcp/cache.js.map +1 -0
  205. package/dist/mcp/cached-file.d.ts +2 -0
  206. package/dist/mcp/cached-file.d.ts.map +1 -0
  207. package/dist/mcp/cached-file.js +2 -0
  208. package/dist/mcp/cached-file.js.map +1 -0
  209. package/dist/mcp/context.d.ts +84 -0
  210. package/dist/mcp/context.d.ts.map +1 -0
  211. package/dist/mcp/context.js +79 -0
  212. package/dist/mcp/context.js.map +1 -0
  213. package/dist/mcp/control-plane/authz-storage.d.ts +35 -0
  214. package/dist/mcp/control-plane/authz-storage.d.ts.map +1 -0
  215. package/dist/mcp/control-plane/authz-storage.js +85 -0
  216. package/dist/mcp/control-plane/authz-storage.js.map +1 -0
  217. package/dist/mcp/control-plane/session-registry.d.ts +12 -0
  218. package/dist/mcp/control-plane/session-registry.d.ts.map +1 -0
  219. package/dist/mcp/control-plane/session-registry.js +88 -0
  220. package/dist/mcp/control-plane/session-registry.js.map +1 -0
  221. package/dist/mcp/control-plane/status-projection.d.ts +8 -0
  222. package/dist/mcp/control-plane/status-projection.d.ts.map +1 -0
  223. package/dist/mcp/control-plane/status-projection.js +49 -0
  224. package/dist/mcp/control-plane/status-projection.js.map +1 -0
  225. package/dist/mcp/control-plane/types.d.ts +107 -0
  226. package/dist/mcp/control-plane/types.d.ts.map +1 -0
  227. package/dist/mcp/control-plane/types.js +2 -0
  228. package/dist/mcp/control-plane/types.js.map +1 -0
  229. package/dist/mcp/daemon-bootstrap.d.ts +9 -0
  230. package/dist/mcp/daemon-bootstrap.d.ts.map +1 -0
  231. package/dist/mcp/daemon-bootstrap.js +96 -0
  232. package/dist/mcp/daemon-bootstrap.js.map +1 -0
  233. package/dist/mcp/daemon-control-plane.d.ts +37 -0
  234. package/dist/mcp/daemon-control-plane.d.ts.map +1 -0
  235. package/dist/mcp/daemon-control-plane.js +200 -0
  236. package/dist/mcp/daemon-control-plane.js.map +1 -0
  237. package/dist/mcp/daemon-job-scheduler.d.ts +60 -0
  238. package/dist/mcp/daemon-job-scheduler.d.ts.map +1 -0
  239. package/dist/mcp/daemon-job-scheduler.js +203 -0
  240. package/dist/mcp/daemon-job-scheduler.js.map +1 -0
  241. package/dist/mcp/daemon-repos.d.ts +9 -0
  242. package/dist/mcp/daemon-repos.d.ts.map +1 -0
  243. package/dist/mcp/daemon-repos.js +73 -0
  244. package/dist/mcp/daemon-repos.js.map +1 -0
  245. package/dist/mcp/daemon-server.d.ts +23 -0
  246. package/dist/mcp/daemon-server.d.ts.map +1 -0
  247. package/dist/mcp/daemon-server.js +128 -0
  248. package/dist/mcp/daemon-server.js.map +1 -0
  249. package/dist/mcp/daemon-session-host.d.ts +31 -0
  250. package/dist/mcp/daemon-session-host.d.ts.map +1 -0
  251. package/dist/mcp/daemon-session-host.js +173 -0
  252. package/dist/mcp/daemon-session-host.js.map +1 -0
  253. package/dist/mcp/daemon-stdio-bridge.d.ts +17 -0
  254. package/dist/mcp/daemon-stdio-bridge.d.ts.map +1 -0
  255. package/dist/mcp/daemon-stdio-bridge.js +207 -0
  256. package/dist/mcp/daemon-stdio-bridge.js.map +1 -0
  257. package/dist/mcp/daemon-worker-child-pool.d.ts +22 -0
  258. package/dist/mcp/daemon-worker-child-pool.d.ts.map +1 -0
  259. package/dist/mcp/daemon-worker-child-pool.js +193 -0
  260. package/dist/mcp/daemon-worker-child-pool.js.map +1 -0
  261. package/dist/mcp/daemon-worker-inline-pool.d.ts +12 -0
  262. package/dist/mcp/daemon-worker-inline-pool.d.ts.map +1 -0
  263. package/dist/mcp/daemon-worker-inline-pool.js +43 -0
  264. package/dist/mcp/daemon-worker-inline-pool.js.map +1 -0
  265. package/dist/mcp/daemon-worker-pool.d.ts +4 -0
  266. package/dist/mcp/daemon-worker-pool.d.ts.map +1 -0
  267. package/dist/mcp/daemon-worker-pool.js +3 -0
  268. package/dist/mcp/daemon-worker-pool.js.map +1 -0
  269. package/dist/mcp/daemon-worker-process.d.ts +2 -0
  270. package/dist/mcp/daemon-worker-process.d.ts.map +1 -0
  271. package/dist/mcp/daemon-worker-process.js +26 -0
  272. package/dist/mcp/daemon-worker-process.js.map +1 -0
  273. package/dist/mcp/daemon-worker-types.d.ts +56 -0
  274. package/dist/mcp/daemon-worker-types.d.ts.map +1 -0
  275. package/dist/mcp/daemon-worker-types.js +2 -0
  276. package/dist/mcp/daemon-worker-types.js.map +1 -0
  277. package/dist/mcp/metrics.d.ts +57 -0
  278. package/dist/mcp/metrics.d.ts.map +1 -0
  279. package/dist/mcp/metrics.js +133 -0
  280. package/dist/mcp/metrics.js.map +1 -0
  281. package/dist/mcp/monitor-health.d.ts +29 -0
  282. package/dist/mcp/monitor-health.d.ts.map +1 -0
  283. package/dist/mcp/monitor-health.js +70 -0
  284. package/dist/mcp/monitor-health.js.map +1 -0
  285. package/dist/mcp/monitor-persistence.d.ts +17 -0
  286. package/dist/mcp/monitor-persistence.d.ts.map +1 -0
  287. package/dist/mcp/monitor-persistence.js +38 -0
  288. package/dist/mcp/monitor-persistence.js.map +1 -0
  289. package/dist/mcp/monitor-tick-job.d.ts +22 -0
  290. package/dist/mcp/monitor-tick-job.d.ts.map +1 -0
  291. package/dist/mcp/monitor-tick-job.js +65 -0
  292. package/dist/mcp/monitor-tick-job.js.map +1 -0
  293. package/dist/mcp/monitor-types.d.ts +123 -0
  294. package/dist/mcp/monitor-types.d.ts.map +1 -0
  295. package/dist/mcp/monitor-types.js +29 -0
  296. package/dist/mcp/monitor-types.js.map +1 -0
  297. package/dist/mcp/persisted-local-history-graph.d.ts +40 -0
  298. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -0
  299. package/dist/mcp/persisted-local-history-graph.js +388 -0
  300. package/dist/mcp/persisted-local-history-graph.js.map +1 -0
  301. package/dist/mcp/persisted-local-history-policy.d.ts +43 -0
  302. package/dist/mcp/persisted-local-history-policy.d.ts.map +1 -0
  303. package/dist/mcp/persisted-local-history-policy.js +372 -0
  304. package/dist/mcp/persisted-local-history-policy.js.map +1 -0
  305. package/dist/mcp/persisted-local-history-views.d.ts +24 -0
  306. package/dist/mcp/persisted-local-history-views.d.ts.map +1 -0
  307. package/dist/mcp/persisted-local-history-views.js +201 -0
  308. package/dist/mcp/persisted-local-history-views.js.map +1 -0
  309. package/dist/mcp/persisted-local-history.d.ts +795 -0
  310. package/dist/mcp/persisted-local-history.d.ts.map +1 -0
  311. package/dist/mcp/persisted-local-history.js +1076 -0
  312. package/dist/mcp/persisted-local-history.js.map +1 -0
  313. package/dist/mcp/persistent-monitor-runtime.d.ts +33 -0
  314. package/dist/mcp/persistent-monitor-runtime.d.ts.map +1 -0
  315. package/dist/mcp/persistent-monitor-runtime.js +356 -0
  316. package/dist/mcp/persistent-monitor-runtime.js.map +1 -0
  317. package/dist/mcp/policy.d.ts +29 -0
  318. package/dist/mcp/policy.d.ts.map +1 -0
  319. package/dist/mcp/policy.js +40 -0
  320. package/dist/mcp/policy.js.map +1 -0
  321. package/dist/mcp/receipt.d.ts +64 -0
  322. package/dist/mcp/receipt.d.ts.map +1 -0
  323. package/dist/mcp/receipt.js +99 -0
  324. package/dist/mcp/receipt.js.map +1 -0
  325. package/dist/mcp/repo-concurrency.d.ts +62 -0
  326. package/dist/mcp/repo-concurrency.d.ts.map +1 -0
  327. package/dist/mcp/repo-concurrency.js +195 -0
  328. package/dist/mcp/repo-concurrency.js.map +1 -0
  329. package/dist/mcp/repo-overview/filter.d.ts +6 -0
  330. package/dist/mcp/repo-overview/filter.d.ts.map +1 -0
  331. package/dist/mcp/repo-overview/filter.js +32 -0
  332. package/dist/mcp/repo-overview/filter.js.map +1 -0
  333. package/dist/mcp/repo-overview/types.d.ts +41 -0
  334. package/dist/mcp/repo-overview/types.d.ts.map +1 -0
  335. package/dist/mcp/repo-overview/types.js +2 -0
  336. package/dist/mcp/repo-overview/types.js.map +1 -0
  337. package/dist/mcp/repo-overview/view-projection.d.ts +8 -0
  338. package/dist/mcp/repo-overview/view-projection.d.ts.map +1 -0
  339. package/dist/mcp/repo-overview/view-projection.js +73 -0
  340. package/dist/mcp/repo-overview/view-projection.js.map +1 -0
  341. package/dist/mcp/repo-state-git.d.ts +8 -0
  342. package/dist/mcp/repo-state-git.d.ts.map +1 -0
  343. package/dist/mcp/repo-state-git.js +203 -0
  344. package/dist/mcp/repo-state-git.js.map +1 -0
  345. package/dist/mcp/repo-state-observation.d.ts +4 -0
  346. package/dist/mcp/repo-state-observation.d.ts.map +1 -0
  347. package/dist/mcp/repo-state-observation.js +171 -0
  348. package/dist/mcp/repo-state-observation.js.map +1 -0
  349. package/dist/mcp/repo-state-transition.d.ts +4 -0
  350. package/dist/mcp/repo-state-transition.d.ts.map +1 -0
  351. package/dist/mcp/repo-state-transition.js +124 -0
  352. package/dist/mcp/repo-state-transition.js.map +1 -0
  353. package/dist/mcp/repo-state-types.d.ts +88 -0
  354. package/dist/mcp/repo-state-types.d.ts.map +1 -0
  355. package/dist/mcp/repo-state-types.js +2 -0
  356. package/dist/mcp/repo-state-types.js.map +1 -0
  357. package/dist/mcp/repo-state.d.ts +37 -0
  358. package/dist/mcp/repo-state.d.ts.map +1 -0
  359. package/dist/mcp/repo-state.js +101 -0
  360. package/dist/mcp/repo-state.js.map +1 -0
  361. package/dist/mcp/repo-tool-job.d.ts +55 -0
  362. package/dist/mcp/repo-tool-job.d.ts.map +1 -0
  363. package/dist/mcp/repo-tool-job.js +50 -0
  364. package/dist/mcp/repo-tool-job.js.map +1 -0
  365. package/dist/mcp/repo-tool-worker-context.d.ts +8 -0
  366. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -0
  367. package/dist/mcp/repo-tool-worker-context.js +199 -0
  368. package/dist/mcp/repo-tool-worker-context.js.map +1 -0
  369. package/dist/mcp/repo-workspace.d.ts +4 -0
  370. package/dist/mcp/repo-workspace.d.ts.map +1 -0
  371. package/dist/mcp/repo-workspace.js +15 -0
  372. package/dist/mcp/repo-workspace.js.map +1 -0
  373. package/dist/mcp/run-capture-config.d.ts +11 -0
  374. package/dist/mcp/run-capture-config.d.ts.map +1 -0
  375. package/dist/mcp/run-capture-config.js +23 -0
  376. package/dist/mcp/run-capture-config.js.map +1 -0
  377. package/dist/mcp/runtime-causal-context.d.ts +22 -0
  378. package/dist/mcp/runtime-causal-context.d.ts.map +1 -0
  379. package/dist/mcp/runtime-causal-context.js +28 -0
  380. package/dist/mcp/runtime-causal-context.js.map +1 -0
  381. package/dist/mcp/runtime-observability.d.ts +102 -0
  382. package/dist/mcp/runtime-observability.d.ts.map +1 -0
  383. package/dist/mcp/runtime-observability.js +95 -0
  384. package/dist/mcp/runtime-observability.js.map +1 -0
  385. package/dist/mcp/runtime-staged-target.d.ts +28 -0
  386. package/dist/mcp/runtime-staged-target.d.ts.map +1 -0
  387. package/dist/mcp/runtime-staged-target.js +101 -0
  388. package/dist/mcp/runtime-staged-target.js.map +1 -0
  389. package/dist/mcp/runtime-workspace-overlay.d.ts +45 -0
  390. package/dist/mcp/runtime-workspace-overlay.d.ts.map +1 -0
  391. package/dist/mcp/runtime-workspace-overlay.js +153 -0
  392. package/dist/mcp/runtime-workspace-overlay.js.map +1 -0
  393. package/dist/mcp/secret-scrub.d.ts +17 -0
  394. package/dist/mcp/secret-scrub.d.ts.map +1 -0
  395. package/dist/mcp/secret-scrub.js +82 -0
  396. package/dist/mcp/secret-scrub.js.map +1 -0
  397. package/dist/mcp/semantic-transition-guidance.d.ts +6 -0
  398. package/dist/mcp/semantic-transition-guidance.d.ts.map +1 -0
  399. package/dist/mcp/semantic-transition-guidance.js +47 -0
  400. package/dist/mcp/semantic-transition-guidance.js.map +1 -0
  401. package/dist/mcp/semantic-transition-summary.d.ts +23 -0
  402. package/dist/mcp/semantic-transition-summary.d.ts.map +1 -0
  403. package/dist/mcp/semantic-transition-summary.js +82 -0
  404. package/dist/mcp/semantic-transition-summary.js.map +1 -0
  405. package/dist/mcp/server-context.d.ts +46 -0
  406. package/dist/mcp/server-context.d.ts.map +1 -0
  407. package/dist/mcp/server-context.js +163 -0
  408. package/dist/mcp/server-context.js.map +1 -0
  409. package/dist/mcp/server-invocation.d.ts +73 -0
  410. package/dist/mcp/server-invocation.d.ts.map +1 -0
  411. package/dist/mcp/server-invocation.js +265 -0
  412. package/dist/mcp/server-invocation.js.map +1 -0
  413. package/dist/mcp/server-tool-access.d.ts +18 -0
  414. package/dist/mcp/server-tool-access.d.ts.map +1 -0
  415. package/dist/mcp/server-tool-access.js +123 -0
  416. package/dist/mcp/server-tool-access.js.map +1 -0
  417. package/dist/mcp/server.d.ts +41 -0
  418. package/dist/mcp/server.d.ts.map +1 -0
  419. package/dist/mcp/server.js +215 -0
  420. package/dist/mcp/server.js.map +1 -0
  421. package/dist/mcp/stdio-server.d.ts +6 -0
  422. package/dist/mcp/stdio-server.d.ts.map +1 -0
  423. package/dist/mcp/stdio-server.js +20 -0
  424. package/dist/mcp/stdio-server.js.map +1 -0
  425. package/dist/mcp/stdio.d.ts +2 -0
  426. package/dist/mcp/stdio.d.ts.map +1 -0
  427. package/dist/mcp/stdio.js +3 -0
  428. package/dist/mcp/stdio.js.map +1 -0
  429. package/dist/mcp/tool-registry.d.ts +5 -0
  430. package/dist/mcp/tool-registry.d.ts.map +1 -0
  431. package/dist/mcp/tool-registry.js +76 -0
  432. package/dist/mcp/tool-registry.js.map +1 -0
  433. package/dist/mcp/tools/activity-view.d.ts +3 -0
  434. package/dist/mcp/tools/activity-view.d.ts.map +1 -0
  435. package/dist/mcp/tools/activity-view.js +259 -0
  436. package/dist/mcp/tools/activity-view.js.map +1 -0
  437. package/dist/mcp/tools/budget.d.ts +3 -0
  438. package/dist/mcp/tools/budget.d.ts.map +1 -0
  439. package/dist/mcp/tools/budget.js +20 -0
  440. package/dist/mcp/tools/budget.js.map +1 -0
  441. package/dist/mcp/tools/causal-attach.d.ts +3 -0
  442. package/dist/mcp/tools/causal-attach.d.ts.map +1 -0
  443. package/dist/mcp/tools/causal-attach.js +53 -0
  444. package/dist/mcp/tools/causal-attach.js.map +1 -0
  445. package/dist/mcp/tools/causal-status.d.ts +3 -0
  446. package/dist/mcp/tools/causal-status.d.ts.map +1 -0
  447. package/dist/mcp/tools/causal-status.js +46 -0
  448. package/dist/mcp/tools/causal-status.js.map +1 -0
  449. package/dist/mcp/tools/changed-since.d.ts +3 -0
  450. package/dist/mcp/tools/changed-since.d.ts.map +1 -0
  451. package/dist/mcp/tools/changed-since.js +57 -0
  452. package/dist/mcp/tools/changed-since.js.map +1 -0
  453. package/dist/mcp/tools/code-find.d.ts +104 -0
  454. package/dist/mcp/tools/code-find.d.ts.map +1 -0
  455. package/dist/mcp/tools/code-find.js +125 -0
  456. package/dist/mcp/tools/code-find.js.map +1 -0
  457. package/dist/mcp/tools/code-refs.d.ts +3 -0
  458. package/dist/mcp/tools/code-refs.d.ts.map +1 -0
  459. package/dist/mcp/tools/code-refs.js +370 -0
  460. package/dist/mcp/tools/code-refs.js.map +1 -0
  461. package/dist/mcp/tools/code-show.d.ts +104 -0
  462. package/dist/mcp/tools/code-show.d.ts.map +1 -0
  463. package/dist/mcp/tools/code-show.js +202 -0
  464. package/dist/mcp/tools/code-show.js.map +1 -0
  465. package/dist/mcp/tools/daemon-monitors.d.ts +3 -0
  466. package/dist/mcp/tools/daemon-monitors.d.ts.map +1 -0
  467. package/dist/mcp/tools/daemon-monitors.js +12 -0
  468. package/dist/mcp/tools/daemon-monitors.js.map +1 -0
  469. package/dist/mcp/tools/daemon-repos.d.ts +3 -0
  470. package/dist/mcp/tools/daemon-repos.d.ts.map +1 -0
  471. package/dist/mcp/tools/daemon-repos.js +20 -0
  472. package/dist/mcp/tools/daemon-repos.js.map +1 -0
  473. package/dist/mcp/tools/daemon-sessions.d.ts +3 -0
  474. package/dist/mcp/tools/daemon-sessions.d.ts.map +1 -0
  475. package/dist/mcp/tools/daemon-sessions.js +12 -0
  476. package/dist/mcp/tools/daemon-sessions.js.map +1 -0
  477. package/dist/mcp/tools/daemon-status.d.ts +3 -0
  478. package/dist/mcp/tools/daemon-status.d.ts.map +1 -0
  479. package/dist/mcp/tools/daemon-status.js +10 -0
  480. package/dist/mcp/tools/daemon-status.js.map +1 -0
  481. package/dist/mcp/tools/diagnostic-models.d.ts +85 -0
  482. package/dist/mcp/tools/diagnostic-models.d.ts.map +1 -0
  483. package/dist/mcp/tools/diagnostic-models.js +5 -0
  484. package/dist/mcp/tools/diagnostic-models.js.map +1 -0
  485. package/dist/mcp/tools/doctor.d.ts +3 -0
  486. package/dist/mcp/tools/doctor.d.ts.map +1 -0
  487. package/dist/mcp/tools/doctor.js +54 -0
  488. package/dist/mcp/tools/doctor.js.map +1 -0
  489. package/dist/mcp/tools/explain.d.ts +3 -0
  490. package/dist/mcp/tools/explain.d.ts.map +1 -0
  491. package/dist/mcp/tools/explain.js +81 -0
  492. package/dist/mcp/tools/explain.js.map +1 -0
  493. package/dist/mcp/tools/file-outline.d.ts +3 -0
  494. package/dist/mcp/tools/file-outline.d.ts.map +1 -0
  495. package/dist/mcp/tools/file-outline.js +54 -0
  496. package/dist/mcp/tools/file-outline.js.map +1 -0
  497. package/dist/mcp/tools/git-files.d.ts +24 -0
  498. package/dist/mcp/tools/git-files.d.ts.map +1 -0
  499. package/dist/mcp/tools/git-files.js +57 -0
  500. package/dist/mcp/tools/git-files.js.map +1 -0
  501. package/dist/mcp/tools/graft-diff.d.ts +3 -0
  502. package/dist/mcp/tools/graft-diff.d.ts.map +1 -0
  503. package/dist/mcp/tools/graft-diff.js +33 -0
  504. package/dist/mcp/tools/graft-diff.js.map +1 -0
  505. package/dist/mcp/tools/map-collector.d.ts +85 -0
  506. package/dist/mcp/tools/map-collector.d.ts.map +1 -0
  507. package/dist/mcp/tools/map-collector.js +249 -0
  508. package/dist/mcp/tools/map-collector.js.map +1 -0
  509. package/dist/mcp/tools/map.d.ts +7 -0
  510. package/dist/mcp/tools/map.d.ts.map +1 -0
  511. package/dist/mcp/tools/map.js +154 -0
  512. package/dist/mcp/tools/map.js.map +1 -0
  513. package/dist/mcp/tools/monitor-pause.d.ts +3 -0
  514. package/dist/mcp/tools/monitor-pause.d.ts.map +1 -0
  515. package/dist/mcp/tools/monitor-pause.js +16 -0
  516. package/dist/mcp/tools/monitor-pause.js.map +1 -0
  517. package/dist/mcp/tools/monitor-resume.d.ts +3 -0
  518. package/dist/mcp/tools/monitor-resume.d.ts.map +1 -0
  519. package/dist/mcp/tools/monitor-resume.js +16 -0
  520. package/dist/mcp/tools/monitor-resume.js.map +1 -0
  521. package/dist/mcp/tools/monitor-start.d.ts +3 -0
  522. package/dist/mcp/tools/monitor-start.d.ts.map +1 -0
  523. package/dist/mcp/tools/monitor-start.js +18 -0
  524. package/dist/mcp/tools/monitor-start.js.map +1 -0
  525. package/dist/mcp/tools/monitor-stop.d.ts +3 -0
  526. package/dist/mcp/tools/monitor-stop.d.ts.map +1 -0
  527. package/dist/mcp/tools/monitor-stop.js +16 -0
  528. package/dist/mcp/tools/monitor-stop.js.map +1 -0
  529. package/dist/mcp/tools/precision-live.d.ts +20 -0
  530. package/dist/mcp/tools/precision-live.d.ts.map +1 -0
  531. package/dist/mcp/tools/precision-live.js +105 -0
  532. package/dist/mcp/tools/precision-live.js.map +1 -0
  533. package/dist/mcp/tools/precision-match.d.ts +21 -0
  534. package/dist/mcp/tools/precision-match.d.ts.map +1 -0
  535. package/dist/mcp/tools/precision-match.js +46 -0
  536. package/dist/mcp/tools/precision-match.js.map +1 -0
  537. package/dist/mcp/tools/precision-paths.d.ts +7 -0
  538. package/dist/mcp/tools/precision-paths.d.ts.map +1 -0
  539. package/dist/mcp/tools/precision-paths.js +53 -0
  540. package/dist/mcp/tools/precision-paths.js.map +1 -0
  541. package/dist/mcp/tools/precision-query.d.ts +38 -0
  542. package/dist/mcp/tools/precision-query.d.ts.map +1 -0
  543. package/dist/mcp/tools/precision-query.js +116 -0
  544. package/dist/mcp/tools/precision-query.js.map +1 -0
  545. package/dist/mcp/tools/precision-show.d.ts +15 -0
  546. package/dist/mcp/tools/precision-show.d.ts.map +1 -0
  547. package/dist/mcp/tools/precision-show.js +46 -0
  548. package/dist/mcp/tools/precision-show.js.map +1 -0
  549. package/dist/mcp/tools/precision-visibility.d.ts +10 -0
  550. package/dist/mcp/tools/precision-visibility.d.ts.map +1 -0
  551. package/dist/mcp/tools/precision-visibility.js +24 -0
  552. package/dist/mcp/tools/precision-visibility.js.map +1 -0
  553. package/dist/mcp/tools/precision-warp.d.ts +6 -0
  554. package/dist/mcp/tools/precision-warp.d.ts.map +1 -0
  555. package/dist/mcp/tools/precision-warp.js +76 -0
  556. package/dist/mcp/tools/precision-warp.js.map +1 -0
  557. package/dist/mcp/tools/precision.d.ts +7 -0
  558. package/dist/mcp/tools/precision.d.ts.map +1 -0
  559. package/dist/mcp/tools/precision.js +6 -0
  560. package/dist/mcp/tools/precision.js.map +1 -0
  561. package/dist/mcp/tools/read-range.d.ts +3 -0
  562. package/dist/mcp/tools/read-range.d.ts.map +1 -0
  563. package/dist/mcp/tools/read-range.js +26 -0
  564. package/dist/mcp/tools/read-range.js.map +1 -0
  565. package/dist/mcp/tools/run-capture.d.ts +3 -0
  566. package/dist/mcp/tools/run-capture.d.ts.map +1 -0
  567. package/dist/mcp/tools/run-capture.js +125 -0
  568. package/dist/mcp/tools/run-capture.js.map +1 -0
  569. package/dist/mcp/tools/safe-read.d.ts +3 -0
  570. package/dist/mcp/tools/safe-read.d.ts.map +1 -0
  571. package/dist/mcp/tools/safe-read.js +133 -0
  572. package/dist/mcp/tools/safe-read.js.map +1 -0
  573. package/dist/mcp/tools/since.d.ts +3 -0
  574. package/dist/mcp/tools/since.d.ts.map +1 -0
  575. package/dist/mcp/tools/since.js +46 -0
  576. package/dist/mcp/tools/since.js.map +1 -0
  577. package/dist/mcp/tools/state.d.ts +4 -0
  578. package/dist/mcp/tools/state.d.ts.map +1 -0
  579. package/dist/mcp/tools/state.js +35 -0
  580. package/dist/mcp/tools/state.js.map +1 -0
  581. package/dist/mcp/tools/stats.d.ts +3 -0
  582. package/dist/mcp/tools/stats.d.ts.map +1 -0
  583. package/dist/mcp/tools/stats.js +22 -0
  584. package/dist/mcp/tools/stats.js.map +1 -0
  585. package/dist/mcp/tools/workspace-authorizations.d.ts +3 -0
  586. package/dist/mcp/tools/workspace-authorizations.d.ts.map +1 -0
  587. package/dist/mcp/tools/workspace-authorizations.js +12 -0
  588. package/dist/mcp/tools/workspace-authorizations.js.map +1 -0
  589. package/dist/mcp/tools/workspace-authorize.d.ts +3 -0
  590. package/dist/mcp/tools/workspace-authorize.d.ts.map +1 -0
  591. package/dist/mcp/tools/workspace-authorize.js +18 -0
  592. package/dist/mcp/tools/workspace-authorize.js.map +1 -0
  593. package/dist/mcp/tools/workspace-bind.d.ts +3 -0
  594. package/dist/mcp/tools/workspace-bind.d.ts.map +1 -0
  595. package/dist/mcp/tools/workspace-bind.js +23 -0
  596. package/dist/mcp/tools/workspace-bind.js.map +1 -0
  597. package/dist/mcp/tools/workspace-rebind.d.ts +3 -0
  598. package/dist/mcp/tools/workspace-rebind.d.ts.map +1 -0
  599. package/dist/mcp/tools/workspace-rebind.js +23 -0
  600. package/dist/mcp/tools/workspace-rebind.js.map +1 -0
  601. package/dist/mcp/tools/workspace-revoke.d.ts +3 -0
  602. package/dist/mcp/tools/workspace-revoke.d.ts.map +1 -0
  603. package/dist/mcp/tools/workspace-revoke.js +16 -0
  604. package/dist/mcp/tools/workspace-revoke.js.map +1 -0
  605. package/dist/mcp/tools/workspace-status.d.ts +3 -0
  606. package/dist/mcp/tools/workspace-status.d.ts.map +1 -0
  607. package/dist/mcp/tools/workspace-status.js +10 -0
  608. package/dist/mcp/tools/workspace-status.js.map +1 -0
  609. package/dist/mcp/warp-pool.d.ts +13 -0
  610. package/dist/mcp/warp-pool.d.ts.map +1 -0
  611. package/dist/mcp/warp-pool.js +30 -0
  612. package/dist/mcp/warp-pool.js.map +1 -0
  613. package/dist/mcp/workspace-read-observation-model.d.ts +34 -0
  614. package/dist/mcp/workspace-read-observation-model.d.ts.map +1 -0
  615. package/dist/mcp/workspace-read-observation-model.js +35 -0
  616. package/dist/mcp/workspace-read-observation-model.js.map +1 -0
  617. package/dist/mcp/workspace-read-observation.d.ts +19 -0
  618. package/dist/mcp/workspace-read-observation.d.ts.map +1 -0
  619. package/dist/mcp/workspace-read-observation.js +71 -0
  620. package/dist/mcp/workspace-read-observation.js.map +1 -0
  621. package/dist/mcp/workspace-router-capability.d.ts +14 -0
  622. package/dist/mcp/workspace-router-capability.d.ts.map +1 -0
  623. package/dist/mcp/workspace-router-capability.js +22 -0
  624. package/dist/mcp/workspace-router-capability.js.map +1 -0
  625. package/dist/mcp/workspace-router-history.d.ts +65 -0
  626. package/dist/mcp/workspace-router-history.d.ts.map +1 -0
  627. package/dist/mcp/workspace-router-history.js +142 -0
  628. package/dist/mcp/workspace-router-history.js.map +1 -0
  629. package/dist/mcp/workspace-router-model.d.ts +96 -0
  630. package/dist/mcp/workspace-router-model.d.ts.map +1 -0
  631. package/dist/mcp/workspace-router-model.js +31 -0
  632. package/dist/mcp/workspace-router-model.js.map +1 -0
  633. package/dist/mcp/workspace-router-resolution.d.ts +10 -0
  634. package/dist/mcp/workspace-router-resolution.d.ts.map +1 -0
  635. package/dist/mcp/workspace-router-resolution.js +56 -0
  636. package/dist/mcp/workspace-router-resolution.js.map +1 -0
  637. package/dist/mcp/workspace-router-runtime.d.ts +79 -0
  638. package/dist/mcp/workspace-router-runtime.d.ts.map +1 -0
  639. package/dist/mcp/workspace-router-runtime.js +126 -0
  640. package/dist/mcp/workspace-router-runtime.js.map +1 -0
  641. package/dist/mcp/workspace-router.d.ts +72 -0
  642. package/dist/mcp/workspace-router.d.ts.map +1 -0
  643. package/dist/mcp/workspace-router.js +494 -0
  644. package/dist/mcp/workspace-router.js.map +1 -0
  645. package/dist/metrics/logger.d.ts +14 -0
  646. package/dist/metrics/logger.d.ts.map +1 -0
  647. package/dist/metrics/logger.js +30 -0
  648. package/dist/metrics/logger.js.map +1 -0
  649. package/dist/metrics/types.d.ts +25 -0
  650. package/dist/metrics/types.d.ts.map +1 -0
  651. package/dist/metrics/types.js +28 -0
  652. package/dist/metrics/types.js.map +1 -0
  653. package/dist/operations/cached-file.d.ts +24 -0
  654. package/dist/operations/cached-file.d.ts.map +1 -0
  655. package/dist/operations/cached-file.js +37 -0
  656. package/dist/operations/cached-file.js.map +1 -0
  657. package/dist/operations/diff-identity.d.ts +32 -0
  658. package/dist/operations/diff-identity.d.ts.map +1 -0
  659. package/dist/operations/diff-identity.js +93 -0
  660. package/dist/operations/diff-identity.js.map +1 -0
  661. package/dist/operations/file-outline.d.ts +15 -0
  662. package/dist/operations/file-outline.d.ts.map +1 -0
  663. package/dist/operations/file-outline.js +32 -0
  664. package/dist/operations/file-outline.js.map +1 -0
  665. package/dist/operations/graft-diff.d.ts +43 -0
  666. package/dist/operations/graft-diff.d.ts.map +1 -0
  667. package/dist/operations/graft-diff.js +115 -0
  668. package/dist/operations/graft-diff.js.map +1 -0
  669. package/dist/operations/observation-cache.d.ts +64 -0
  670. package/dist/operations/observation-cache.d.ts.map +1 -0
  671. package/dist/operations/observation-cache.js +104 -0
  672. package/dist/operations/observation-cache.js.map +1 -0
  673. package/dist/operations/read-range.d.ts +14 -0
  674. package/dist/operations/read-range.d.ts.map +1 -0
  675. package/dist/operations/read-range.js +41 -0
  676. package/dist/operations/read-range.js.map +1 -0
  677. package/dist/operations/repo-workspace.d.ts +114 -0
  678. package/dist/operations/repo-workspace.d.ts.map +1 -0
  679. package/dist/operations/repo-workspace.js +228 -0
  680. package/dist/operations/repo-workspace.js.map +1 -0
  681. package/dist/operations/result-dto.d.ts +10 -0
  682. package/dist/operations/result-dto.d.ts.map +1 -0
  683. package/dist/operations/result-dto.js +21 -0
  684. package/dist/operations/result-dto.js.map +1 -0
  685. package/dist/operations/safe-read.d.ts +35 -0
  686. package/dist/operations/safe-read.d.ts.map +1 -0
  687. package/dist/operations/safe-read.js +75 -0
  688. package/dist/operations/safe-read.js.map +1 -0
  689. package/dist/operations/state.d.ts +25 -0
  690. package/dist/operations/state.d.ts.map +1 -0
  691. package/dist/operations/state.js +47 -0
  692. package/dist/operations/state.js.map +1 -0
  693. package/dist/operations/structured-buffer-compare.d.ts +5 -0
  694. package/dist/operations/structured-buffer-compare.d.ts.map +1 -0
  695. package/dist/operations/structured-buffer-compare.js +392 -0
  696. package/dist/operations/structured-buffer-compare.js.map +1 -0
  697. package/dist/operations/structured-buffer-model.d.ts +232 -0
  698. package/dist/operations/structured-buffer-model.d.ts.map +1 -0
  699. package/dist/operations/structured-buffer-model.js +175 -0
  700. package/dist/operations/structured-buffer-model.js.map +1 -0
  701. package/dist/operations/structured-buffer-query.d.ts +24 -0
  702. package/dist/operations/structured-buffer-query.d.ts.map +1 -0
  703. package/dist/operations/structured-buffer-query.js +690 -0
  704. package/dist/operations/structured-buffer-query.js.map +1 -0
  705. package/dist/operations/structured-buffer.d.ts +43 -0
  706. package/dist/operations/structured-buffer.d.ts.map +1 -0
  707. package/dist/operations/structured-buffer.js +96 -0
  708. package/dist/operations/structured-buffer.js.map +1 -0
  709. package/dist/parser/diff.d.ts +63 -0
  710. package/dist/parser/diff.d.ts.map +1 -0
  711. package/dist/parser/diff.js +259 -0
  712. package/dist/parser/diff.js.map +1 -0
  713. package/dist/parser/lang.d.ts +17 -0
  714. package/dist/parser/lang.d.ts.map +1 -0
  715. package/dist/parser/lang.js +51 -0
  716. package/dist/parser/lang.js.map +1 -0
  717. package/dist/parser/markdown.d.ts +3 -0
  718. package/dist/parser/markdown.d.ts.map +1 -0
  719. package/dist/parser/markdown.js +168 -0
  720. package/dist/parser/markdown.js.map +1 -0
  721. package/dist/parser/outline.d.ts +12 -0
  722. package/dist/parser/outline.d.ts.map +1 -0
  723. package/dist/parser/outline.js +251 -0
  724. package/dist/parser/outline.js.map +1 -0
  725. package/dist/parser/runtime.d.ts +13 -0
  726. package/dist/parser/runtime.d.ts.map +1 -0
  727. package/dist/parser/runtime.js +43 -0
  728. package/dist/parser/runtime.js.map +1 -0
  729. package/dist/parser/types.d.ts +41 -0
  730. package/dist/parser/types.d.ts.map +1 -0
  731. package/dist/parser/types.js +46 -0
  732. package/dist/parser/types.js.map +1 -0
  733. package/dist/policy/evaluate.d.ts +8 -0
  734. package/dist/policy/evaluate.d.ts.map +1 -0
  735. package/dist/policy/evaluate.js +153 -0
  736. package/dist/policy/evaluate.js.map +1 -0
  737. package/dist/policy/graftignore.d.ts +2 -0
  738. package/dist/policy/graftignore.d.ts.map +1 -0
  739. package/dist/policy/graftignore.js +7 -0
  740. package/dist/policy/graftignore.js.map +1 -0
  741. package/dist/policy/types.d.ts +104 -0
  742. package/dist/policy/types.d.ts.map +1 -0
  743. package/dist/policy/types.js +49 -0
  744. package/dist/policy/types.js.map +1 -0
  745. package/dist/ports/codec.d.ts +10 -0
  746. package/dist/ports/codec.d.ts.map +1 -0
  747. package/dist/ports/codec.js +5 -0
  748. package/dist/ports/codec.js.map +1 -0
  749. package/dist/ports/filesystem.d.ts +19 -0
  750. package/dist/ports/filesystem.d.ts.map +1 -0
  751. package/dist/ports/filesystem.js +5 -0
  752. package/dist/ports/filesystem.js.map +1 -0
  753. package/dist/ports/git.d.ts +11 -0
  754. package/dist/ports/git.d.ts.map +1 -0
  755. package/dist/ports/git.js +5 -0
  756. package/dist/ports/git.js.map +1 -0
  757. package/dist/ports/guards.d.ts +15 -0
  758. package/dist/ports/guards.d.ts.map +1 -0
  759. package/dist/ports/guards.js +43 -0
  760. package/dist/ports/guards.js.map +1 -0
  761. package/dist/ports/process-runner.d.ts +17 -0
  762. package/dist/ports/process-runner.d.ts.map +1 -0
  763. package/dist/ports/process-runner.js +5 -0
  764. package/dist/ports/process-runner.js.map +1 -0
  765. package/dist/ports/warp.d.ts +45 -0
  766. package/dist/ports/warp.d.ts.map +1 -0
  767. package/dist/ports/warp.js +5 -0
  768. package/dist/ports/warp.js.map +1 -0
  769. package/dist/release/security-gate.d.ts +24 -0
  770. package/dist/release/security-gate.d.ts.map +1 -0
  771. package/dist/release/security-gate.js +69 -0
  772. package/dist/release/security-gate.js.map +1 -0
  773. package/dist/session/tracker.d.ts +36 -0
  774. package/dist/session/tracker.d.ts.map +1 -0
  775. package/dist/session/tracker.js +113 -0
  776. package/dist/session/tracker.js.map +1 -0
  777. package/dist/session/types.d.ts +14 -0
  778. package/dist/session/types.d.ts.map +1 -0
  779. package/dist/session/types.js +18 -0
  780. package/dist/session/types.js.map +1 -0
  781. package/dist/version.d.ts +2 -0
  782. package/dist/version.d.ts.map +1 -0
  783. package/dist/version.js +3 -0
  784. package/dist/version.js.map +1 -0
  785. package/dist/warp/identity-resolver.d.ts +14 -0
  786. package/dist/warp/identity-resolver.d.ts.map +1 -0
  787. package/dist/warp/identity-resolver.js +31 -0
  788. package/dist/warp/identity-resolver.js.map +1 -0
  789. package/dist/warp/indexer-git.d.ts +22 -0
  790. package/dist/warp/indexer-git.d.ts.map +1 -0
  791. package/dist/warp/indexer-git.js +148 -0
  792. package/dist/warp/indexer-git.js.map +1 -0
  793. package/dist/warp/indexer-graph.d.ts +17 -0
  794. package/dist/warp/indexer-graph.d.ts.map +1 -0
  795. package/dist/warp/indexer-graph.js +179 -0
  796. package/dist/warp/indexer-graph.js.map +1 -0
  797. package/dist/warp/indexer-model.d.ts +51 -0
  798. package/dist/warp/indexer-model.d.ts.map +1 -0
  799. package/dist/warp/indexer-model.js +21 -0
  800. package/dist/warp/indexer-model.js.map +1 -0
  801. package/dist/warp/indexer.d.ts +9 -0
  802. package/dist/warp/indexer.d.ts.map +1 -0
  803. package/dist/warp/indexer.js +112 -0
  804. package/dist/warp/indexer.js.map +1 -0
  805. package/dist/warp/observers.d.ts +54 -0
  806. package/dist/warp/observers.d.ts.map +1 -0
  807. package/dist/warp/observers.js +88 -0
  808. package/dist/warp/observers.js.map +1 -0
  809. package/dist/warp/open.d.ts +15 -0
  810. package/dist/warp/open.d.ts.map +1 -0
  811. package/dist/warp/open.js +67 -0
  812. package/dist/warp/open.js.map +1 -0
  813. package/dist/warp/symbol-identity.d.ts +11 -0
  814. package/dist/warp/symbol-identity.d.ts.map +1 -0
  815. package/dist/warp/symbol-identity.js +67 -0
  816. package/dist/warp/symbol-identity.js.map +1 -0
  817. package/dist/warp/writer-id.d.ts +5 -0
  818. package/dist/warp/writer-id.d.ts.map +1 -0
  819. package/dist/warp/writer-id.js +25 -0
  820. package/dist/warp/writer-id.js.map +1 -0
  821. package/docs/CLI.md +37 -15
  822. package/docs/MCP.md +44 -25
  823. package/package.json +19 -3
  824. package/src/adapters/repo-paths.ts +22 -0
  825. package/src/adapters/rotating-ndjson-log.ts +66 -0
  826. package/src/api/index.ts +107 -0
  827. package/src/api/repo-local-graft.ts +21 -0
  828. package/src/api/repo-workspace.ts +34 -0
  829. package/src/api/tool-bridge.ts +21 -0
  830. package/src/cli/activity-render.ts +112 -0
  831. package/src/cli/cli-error.ts +153 -0
  832. package/src/cli/command-parser.ts +302 -0
  833. package/src/cli/entrypoint.ts +18 -0
  834. package/src/cli/index-cmd.ts +31 -23
  835. package/src/cli/index-model.ts +76 -0
  836. package/src/cli/init-bootstrap.ts +47 -0
  837. package/src/cli/init-client-config.ts +299 -0
  838. package/src/cli/init-model.ts +229 -0
  839. package/src/cli/init-render.ts +54 -0
  840. package/src/cli/init-target-hooks.ts +93 -0
  841. package/src/cli/init.ts +16 -757
  842. package/src/cli/json-document.ts +144 -0
  843. package/src/cli/local-history-dag-model.ts +437 -0
  844. package/src/cli/local-history-dag-render.ts +133 -0
  845. package/src/cli/local-history-dag.ts +103 -0
  846. package/src/cli/main.ts +46 -333
  847. package/src/cli/migrate-local-history.ts +118 -0
  848. package/src/cli/peer-command.ts +59 -0
  849. package/src/contracts/capabilities.ts +218 -109
  850. package/src/contracts/causal-ontology.ts +5 -0
  851. package/src/contracts/json-object.ts +28 -0
  852. package/src/contracts/mcp-runtime.ts +16 -0
  853. package/src/contracts/output-schema-cli.ts +70 -0
  854. package/src/contracts/output-schema-fragments.ts +831 -0
  855. package/src/contracts/output-schema-mcp.ts +282 -0
  856. package/src/contracts/output-schema-meta.ts +119 -0
  857. package/src/contracts/output-schemas.ts +62 -1
  858. package/src/index.ts +1 -0
  859. package/src/mcp/cache.ts +7 -145
  860. package/src/mcp/cached-file.ts +1 -40
  861. package/src/mcp/context.ts +83 -13
  862. package/src/mcp/control-plane/authz-storage.ts +129 -0
  863. package/src/mcp/control-plane/session-registry.ts +115 -0
  864. package/src/mcp/control-plane/status-projection.ts +76 -0
  865. package/src/mcp/control-plane/types.ts +144 -0
  866. package/src/mcp/daemon-bootstrap.ts +100 -0
  867. package/src/mcp/daemon-control-plane.ts +93 -337
  868. package/src/mcp/daemon-repos.ts +27 -144
  869. package/src/mcp/daemon-server.ts +31 -262
  870. package/src/mcp/daemon-session-host.ts +230 -0
  871. package/src/mcp/daemon-stdio-bridge.ts +260 -0
  872. package/src/mcp/daemon-worker-child-pool.ts +213 -0
  873. package/src/mcp/daemon-worker-inline-pool.ts +46 -0
  874. package/src/mcp/daemon-worker-pool.ts +7 -310
  875. package/src/mcp/daemon-worker-types.ts +66 -0
  876. package/src/mcp/metrics.ts +68 -52
  877. package/src/mcp/monitor-health.ts +83 -0
  878. package/src/mcp/monitor-persistence.ts +54 -0
  879. package/src/mcp/monitor-tick-job.ts +3 -0
  880. package/src/mcp/monitor-types.ts +103 -0
  881. package/src/mcp/persisted-local-history-graph.ts +591 -0
  882. package/src/mcp/persisted-local-history-policy.ts +501 -0
  883. package/src/mcp/persisted-local-history-views.ts +250 -0
  884. package/src/mcp/persisted-local-history.ts +1137 -762
  885. package/src/mcp/persistent-monitor-runtime.ts +71 -175
  886. package/src/mcp/policy.ts +11 -20
  887. package/src/mcp/receipt.ts +67 -19
  888. package/src/mcp/repo-concurrency.ts +81 -7
  889. package/src/mcp/repo-overview/filter.ts +44 -0
  890. package/src/mcp/repo-overview/types.ts +63 -0
  891. package/src/mcp/repo-overview/view-projection.ts +90 -0
  892. package/src/mcp/repo-state-git.ts +247 -0
  893. package/src/mcp/repo-state-observation.ts +203 -0
  894. package/src/mcp/repo-state-transition.ts +151 -0
  895. package/src/mcp/repo-state-types.ts +107 -0
  896. package/src/mcp/repo-state.ts +90 -721
  897. package/src/mcp/repo-tool-job.ts +16 -216
  898. package/src/mcp/repo-tool-worker-context.ts +212 -0
  899. package/src/mcp/repo-workspace.ts +21 -0
  900. package/src/mcp/runtime-observability.ts +41 -43
  901. package/src/mcp/secret-scrub.ts +89 -0
  902. package/src/mcp/server-context.ts +223 -0
  903. package/src/mcp/server-invocation.ts +388 -0
  904. package/src/mcp/server-tool-access.ts +145 -0
  905. package/src/mcp/server.ts +46 -606
  906. package/src/mcp/stdio-server.ts +16 -2
  907. package/src/mcp/tool-registry.ts +80 -0
  908. package/src/mcp/tools/activity-view.ts +3 -3
  909. package/src/mcp/tools/budget.ts +10 -7
  910. package/src/mcp/tools/causal-attach.ts +3 -3
  911. package/src/mcp/tools/causal-status.ts +3 -3
  912. package/src/mcp/tools/changed-since.ts +4 -3
  913. package/src/mcp/tools/code-find.ts +7 -2
  914. package/src/mcp/tools/code-refs.ts +7 -3
  915. package/src/mcp/tools/code-show.ts +12 -2
  916. package/src/mcp/tools/daemon-monitors.ts +3 -3
  917. package/src/mcp/tools/daemon-repos.ts +3 -3
  918. package/src/mcp/tools/daemon-sessions.ts +3 -3
  919. package/src/mcp/tools/daemon-status.ts +3 -3
  920. package/src/mcp/tools/diagnostic-models.ts +95 -0
  921. package/src/mcp/tools/doctor.ts +10 -7
  922. package/src/mcp/tools/explain.ts +3 -3
  923. package/src/mcp/tools/file-outline.ts +10 -4
  924. package/src/mcp/tools/graft-diff.ts +6 -3
  925. package/src/mcp/tools/map-collector.ts +338 -0
  926. package/src/mcp/tools/map.ts +52 -3
  927. package/src/mcp/tools/monitor-pause.ts +3 -3
  928. package/src/mcp/tools/monitor-resume.ts +3 -3
  929. package/src/mcp/tools/monitor-start.ts +3 -3
  930. package/src/mcp/tools/monitor-stop.ts +3 -3
  931. package/src/mcp/tools/precision-live.ts +158 -0
  932. package/src/mcp/tools/precision-match.ts +3 -0
  933. package/src/mcp/tools/precision-paths.ts +59 -0
  934. package/src/mcp/tools/precision-show.ts +86 -0
  935. package/src/mcp/tools/precision-visibility.ts +44 -0
  936. package/src/mcp/tools/precision-warp.ts +90 -0
  937. package/src/mcp/tools/precision.ts +19 -310
  938. package/src/mcp/tools/read-range.ts +12 -5
  939. package/src/mcp/tools/run-capture.ts +2 -2
  940. package/src/mcp/tools/safe-read.ts +21 -10
  941. package/src/mcp/tools/since.ts +7 -3
  942. package/src/mcp/tools/state.ts +8 -7
  943. package/src/mcp/tools/stats.ts +3 -3
  944. package/src/mcp/tools/workspace-authorizations.ts +3 -3
  945. package/src/mcp/tools/workspace-authorize.ts +3 -3
  946. package/src/mcp/tools/workspace-bind.ts +3 -3
  947. package/src/mcp/tools/workspace-rebind.ts +3 -3
  948. package/src/mcp/tools/workspace-revoke.ts +3 -3
  949. package/src/mcp/tools/workspace-status.ts +3 -3
  950. package/src/mcp/warp-pool.ts +6 -6
  951. package/src/mcp/workspace-read-observation-model.ts +48 -0
  952. package/src/mcp/workspace-read-observation.ts +103 -0
  953. package/src/mcp/workspace-router-capability.ts +32 -0
  954. package/src/mcp/workspace-router-history.ts +233 -0
  955. package/src/mcp/workspace-router-model.ts +131 -0
  956. package/src/mcp/workspace-router-resolution.ts +71 -0
  957. package/src/mcp/workspace-router-runtime.ts +243 -0
  958. package/src/mcp/workspace-router.ts +151 -454
  959. package/src/metrics/logger.ts +22 -51
  960. package/src/metrics/types.ts +32 -4
  961. package/src/operations/cached-file.ts +40 -0
  962. package/src/operations/diff-identity.ts +127 -0
  963. package/src/operations/file-outline.ts +1 -1
  964. package/src/operations/graft-diff.ts +0 -1
  965. package/src/operations/observation-cache.ts +149 -0
  966. package/src/operations/read-range.ts +0 -1
  967. package/src/operations/repo-workspace.ts +339 -0
  968. package/src/operations/result-dto.ts +23 -0
  969. package/src/operations/safe-read.ts +3 -4
  970. package/src/operations/state.ts +42 -6
  971. package/src/operations/structured-buffer-compare.ts +429 -0
  972. package/src/operations/structured-buffer-model.ts +456 -0
  973. package/src/operations/structured-buffer-query.ts +794 -0
  974. package/src/operations/structured-buffer.ts +181 -0
  975. package/src/parser/diff.ts +172 -1
  976. package/src/parser/lang.ts +58 -15
  977. package/src/parser/markdown.ts +197 -0
  978. package/src/parser/outline.ts +8 -208
  979. package/src/parser/runtime.ts +71 -0
  980. package/src/policy/evaluate.ts +2 -2
  981. package/src/policy/types.ts +9 -9
  982. package/src/ports/guards.ts +68 -0
  983. package/src/ports/warp.ts +55 -0
  984. package/src/session/tracker.ts +7 -7
  985. package/src/session/types.ts +4 -1
  986. package/src/warp/identity-resolver.ts +35 -0
  987. package/src/warp/indexer-git.ts +182 -0
  988. package/src/warp/indexer-graph.ts +276 -0
  989. package/src/warp/indexer-model.ts +69 -0
  990. package/src/warp/indexer.ts +122 -449
  991. package/src/warp/observers.ts +7 -12
  992. package/src/warp/open.ts +66 -4
  993. package/src/warp/symbol-identity.ts +100 -0
  994. package/docs/ADVANCED_GUIDE.md +0 -49
  995. package/docs/GUIDE.md +0 -677
@@ -1,172 +1,82 @@
1
- import * as crypto from "node:crypto";
2
1
  import * as path from "node:path";
3
- import type WarpApp from "@git-stunts/git-warp";
4
2
  import { ObservationCache } from "./cache.js";
5
- import { createPathResolver } from "./context.js";
6
3
  import { Metrics } from "./metrics.js";
7
- import { loadProjectGraftignore } from "./policy.js";
8
4
  import {
9
5
  type PersistedLocalActivityWindow,
10
6
  PersistedLocalHistoryAttachUnavailableError,
11
7
  PersistedLocalHistoryStore,
12
8
  type PersistedLocalHistoryAttachDeclaration,
13
9
  type PersistedLocalHistoryContext,
14
- type PersistedLocalHistorySharedAttachSource,
15
10
  type RepoConcurrencySummary,
16
11
  type PersistedLocalHistorySummary,
17
12
  } from "./persisted-local-history.js";
18
- import { RepoStateTracker } from "./repo-state.js";
19
- import { buildRuntimeCausalContext, type RuntimeCausalContext } from "./runtime-causal-context.js";
13
+ import { type PersistedLocalHistoryGraphContext } from "./persisted-local-history-graph.js";
14
+ import { RepoStateTracker, type RepoObservation } from "./repo-state.js";
15
+ import type { RuntimeCausalContext } from "./runtime-causal-context.js";
20
16
  import { buildRuntimeStagedTarget } from "./runtime-staged-target.js";
21
17
  import {
22
18
  buildRuntimeWorkspaceOverlayFooting,
23
- type GitTransitionHookEvent,
24
19
  type RuntimeWorkspaceOverlayFooting,
25
20
  } from "./runtime-workspace-overlay.js";
26
- import { SessionTracker } from "../session/tracker.js";
21
+ import { buildWorkspaceReadObservation, type AttributedReadToolName } from "./workspace-read-observation.js";
22
+ import {
23
+ DEFAULT_REPO_LOCAL_CAPABILITY_PROFILE,
24
+ WorkspaceBindingRequiredError,
25
+ type CausalAttachResult,
26
+ type ResolvedWorkspace,
27
+ type WorkspaceActionResult,
28
+ type WorkspaceAuthorizationPolicy,
29
+ type WorkspaceBindAction,
30
+ type WorkspaceBindRequest,
31
+ type WorkspaceCapabilityProfile,
32
+ type WorkspaceExecutionContext,
33
+ type WorkspaceMode,
34
+ type WorkspaceSharedAttachPolicy,
35
+ type WorkspaceStatus,
36
+ } from "./workspace-router-model.js";
37
+ import { resolveWorkspaceRequest, stableWorkspaceId } from "./workspace-router-resolution.js";
27
38
  import type { FileSystem } from "../ports/filesystem.js";
28
39
  import type { GitClient } from "../ports/git.js";
40
+ import type { WarpHandle } from "../ports/warp.js";
41
+ import type { JsonObject } from "../contracts/json-object.js";
29
42
  import type { WarpPool } from "./warp-pool.js";
30
43
  import { DEFAULT_WARP_WRITER_ID } from "../warp/writer-id.js";
31
-
32
- export type WorkspaceSessionMode = "repo_local" | "daemon";
33
- export type WorkspaceBindState = "bound" | "unbound";
34
- export type WorkspaceBindAction = "bind" | "rebind";
35
-
36
- export interface WorkspaceCapabilityProfile {
37
- readonly boundedReads: boolean;
38
- readonly structuralTools: boolean;
39
- readonly precisionTools: boolean;
40
- readonly stateBookmarks: boolean;
41
- readonly runtimeLogs: "session_local_only";
42
- readonly runCapture: boolean;
43
- }
44
-
45
- export interface WorkspaceStatus {
46
- readonly sessionMode: WorkspaceSessionMode;
47
- readonly bindState: WorkspaceBindState;
48
- readonly repoId: string | null;
49
- readonly worktreeId: string | null;
50
- readonly worktreeRoot: string | null;
51
- readonly gitCommonDir: string | null;
52
- readonly graftDir: string | null;
53
- readonly capabilityProfile: WorkspaceCapabilityProfile | null;
54
- }
55
-
56
- export interface WorkspaceActionResult extends WorkspaceStatus {
57
- readonly ok: boolean;
58
- readonly action: WorkspaceBindAction;
59
- readonly freshSessionSlice: boolean;
60
- readonly errorCode?: string;
61
- readonly error?: string;
62
- }
63
-
64
- export interface CausalAttachResult extends WorkspaceStatus {
65
- readonly ok: boolean;
66
- readonly action: "attach";
67
- readonly persistedLocalHistory: PersistedLocalHistorySummary;
68
- readonly errorCode?: string;
69
- readonly error?: string;
70
- }
71
-
72
- export interface WorkspaceBindRequest {
73
- readonly cwd: string;
74
- readonly worktreeRoot?: string | undefined;
75
- readonly gitCommonDir?: string | undefined;
76
- readonly repoId?: string | undefined;
77
- }
78
-
79
- export class WorkspaceBindingRequiredError extends Error {
80
- readonly code = "UNBOUND_SESSION";
81
-
82
- constructor(toolName: string) {
83
- super(`Tool ${toolName} requires an active workspace binding. Call workspace_bind first.`);
84
- this.name = "WorkspaceBindingRequiredError";
85
- }
86
- }
87
-
88
- export class WorkspaceCapabilityDeniedError extends Error {
89
- readonly code = "CAPABILITY_DENIED";
90
-
91
- constructor(toolName: string) {
92
- super(`Tool ${toolName} is not enabled in the daemon default capability profile.`);
93
- this.name = "WorkspaceCapabilityDeniedError";
94
- }
95
- }
96
-
97
- interface WorkspaceBindError {
98
- readonly code: string;
99
- readonly message: string;
100
- }
101
-
102
- interface WorkspaceSlice {
103
- readonly sliceId: string;
104
- readonly session: SessionTracker;
105
- readonly cache: ObservationCache;
106
- readonly metrics: Metrics;
107
- readonly graftDir: string;
108
- readonly repoState: RepoStateTracker | null;
109
- }
110
-
111
- interface BoundWorkspace {
112
- readonly repoId: string;
113
- readonly worktreeId: string;
114
- readonly worktreeRoot: string;
115
- readonly gitCommonDir: string;
116
- readonly graftignorePatterns: readonly string[];
117
- readonly resolvePath: (input: string) => string;
118
- readonly capabilityProfile: WorkspaceCapabilityProfile;
119
- readonly warpWriterId: string;
120
- readonly transportSessionId: string;
121
- readonly slice: WorkspaceSlice;
122
- readonly getWarp: () => Promise<WarpApp>;
123
- }
124
-
125
- export interface WorkspaceExecutionContext {
126
- readonly sliceId: string;
127
- readonly repoId: string;
128
- readonly worktreeId: string;
129
- readonly projectRoot: string;
130
- readonly worktreeRoot: string;
131
- readonly gitCommonDir: string;
132
- readonly graftignorePatterns: readonly string[];
133
- readonly resolvePath: (input: string) => string;
134
- readonly capabilityProfile: WorkspaceCapabilityProfile;
135
- readonly warpWriterId: string;
136
- getCausalContext(): RuntimeCausalContext;
137
- readonly status: WorkspaceStatus;
138
- readonly session: SessionTracker;
139
- readonly cache: ObservationCache;
140
- readonly metrics: Metrics;
141
- readonly graftDir: string;
142
- readonly repoState: RepoStateTracker;
143
- readonly getWarp: () => Promise<WarpApp>;
144
- }
145
-
146
- type AttributedReadToolName = "safe_read" | "file_outline" | "read_range";
147
-
148
- export interface ResolvedWorkspace {
149
- readonly repoId: string;
150
- readonly worktreeId: string;
151
- readonly worktreeRoot: string;
152
- readonly gitCommonDir: string;
153
- }
154
-
155
- export interface WorkspaceAuthorizationPolicy {
156
- getCapabilityProfile(resolved: ResolvedWorkspace): Promise<WorkspaceCapabilityProfile | null>;
157
- noteBound(resolved: ResolvedWorkspace): Promise<void>;
158
- }
159
-
160
- export interface WorkspaceSharedAttachPolicy {
161
- resolveSharedAttachSource(input: {
162
- readonly sessionId: string;
163
- readonly repoId: string;
164
- readonly worktreeId: string;
165
- }): PersistedLocalHistorySharedAttachSource | null;
166
- }
44
+ import { GovernorTracker } from "../session/tracker.js";
45
+ import {
46
+ type BoundWorkspace,
47
+ type WorkspaceSlice,
48
+ boundWorkspaceStatus,
49
+ buildPersistedLocalHistoryContext,
50
+ buildPersistedLocalHistoryContextFromExecution,
51
+ buildPersistedLocalHistoryGraphContext,
52
+ buildWorkspaceCausalContext,
53
+ createBoundWorkspace,
54
+ createWorkspaceSlice,
55
+ nextBindingSliceDir,
56
+ resolveCheckoutBoundaryHookEvent,
57
+ unboundWorkspaceStatus,
58
+ } from "./workspace-router-runtime.js";
59
+ export {
60
+ DEFAULT_DAEMON_CAPABILITY_PROFILE,
61
+ DEFAULT_REPO_LOCAL_CAPABILITY_PROFILE,
62
+ WorkspaceBindingRequiredError,
63
+ WorkspaceCapabilityDeniedError,
64
+ type CausalAttachResult,
65
+ type ResolvedWorkspace,
66
+ type WorkspaceActionResult,
67
+ type WorkspaceAuthorizationPolicy,
68
+ type WorkspaceBindAction,
69
+ type WorkspaceBindRequest,
70
+ type WorkspaceCapabilityProfile,
71
+ type WorkspaceExecutionContext,
72
+ type WorkspaceMode,
73
+ type WorkspaceSharedAttachPolicy,
74
+ type WorkspaceStatus,
75
+ } from "./workspace-router-model.js";
76
+ export { resolveWorkspaceRequest } from "./workspace-router-resolution.js";
167
77
 
168
78
  interface WorkspaceRouterOptions {
169
- readonly mode: WorkspaceSessionMode;
79
+ readonly mode: WorkspaceMode;
170
80
  readonly fs: FileSystem;
171
81
  readonly git: GitClient;
172
82
  readonly graftDir: string;
@@ -179,71 +89,6 @@ interface WorkspaceRouterOptions {
179
89
  readonly persistedLocalHistory: PersistedLocalHistoryStore;
180
90
  }
181
91
 
182
- export const DEFAULT_DAEMON_CAPABILITY_PROFILE: WorkspaceCapabilityProfile = Object.freeze({
183
- boundedReads: true,
184
- structuralTools: true,
185
- precisionTools: true,
186
- stateBookmarks: true,
187
- runtimeLogs: "session_local_only",
188
- runCapture: false,
189
- });
190
-
191
- export const DEFAULT_REPO_LOCAL_CAPABILITY_PROFILE: WorkspaceCapabilityProfile = Object.freeze({
192
- boundedReads: true,
193
- structuralTools: true,
194
- precisionTools: true,
195
- stateBookmarks: true,
196
- runtimeLogs: "session_local_only",
197
- runCapture: true,
198
- });
199
-
200
- function stableId(prefix: string, input: string): string {
201
- return `${prefix}:${crypto.createHash("sha256").update(input).digest("hex").slice(0, 16)}`;
202
- }
203
-
204
- async function readGitValue(git: GitClient, cwd: string, args: readonly string[]): Promise<string | null> {
205
- const result = await git.run({ args, cwd });
206
- if (result.error !== undefined || result.status !== 0) {
207
- return null;
208
- }
209
- const trimmed = result.stdout.trim();
210
- return trimmed.length > 0 ? trimmed : null;
211
- }
212
-
213
- function toAbsolutePath(base: string, value: string): string {
214
- return path.isAbsolute(value) ? value : path.resolve(base, value);
215
- }
216
-
217
- export async function resolveWorkspaceRequest(
218
- git: GitClient,
219
- request: WorkspaceBindRequest,
220
- ): Promise<ResolvedWorkspace | WorkspaceBindError> {
221
- const cwd = path.resolve(request.cwd);
222
- const worktreeRoot = await readGitValue(git, cwd, ["rev-parse", "--path-format=absolute", "--show-toplevel"]);
223
- if (worktreeRoot === null) {
224
- return {
225
- code: "NOT_A_GIT_REPO",
226
- message: `cwd is not inside a git worktree: ${cwd}`,
227
- };
228
- }
229
-
230
- const rawGitCommonDir = await readGitValue(git, cwd, ["rev-parse", "--path-format=absolute", "--git-common-dir"]);
231
- if (rawGitCommonDir === null) {
232
- return {
233
- code: "WORKSPACE_RESOLUTION_FAILED",
234
- message: `Unable to resolve git common dir from ${cwd}`,
235
- };
236
- }
237
-
238
- const gitCommonDir = toAbsolutePath(worktreeRoot, rawGitCommonDir);
239
- return {
240
- repoId: stableId("repo", gitCommonDir),
241
- worktreeId: stableId("worktree", worktreeRoot),
242
- worktreeRoot,
243
- gitCommonDir,
244
- };
245
- }
246
-
247
92
  export class WorkspaceRouter {
248
93
  private bindingCounter = 0;
249
94
  private sliceIdCounter = 0;
@@ -253,10 +98,13 @@ export class WorkspaceRouter {
253
98
 
254
99
  constructor(private readonly options: WorkspaceRouterOptions) {
255
100
  const initialProjectRoot = options.mode === "repo_local" ? options.projectRoot : undefined;
256
- this.currentSlice = this.createSlice(
257
- options.mode === "repo_local" ? options.graftDir : path.join(options.graftDir, "unbound"),
258
- initialProjectRoot,
259
- );
101
+ this.currentSlice = createWorkspaceSlice({
102
+ graftDir: options.mode === "repo_local" ? options.graftDir : path.join(options.graftDir, "unbound"),
103
+ fs: options.fs,
104
+ git: options.git,
105
+ nextSliceId: `slice-${String(++this.sliceIdCounter).padStart(4, "0")}`,
106
+ ...(initialProjectRoot !== undefined ? { projectRoot: initialProjectRoot } : {}),
107
+ });
260
108
  }
261
109
 
262
110
  async initialize(): Promise<void> {
@@ -280,18 +128,18 @@ export class WorkspaceRouter {
280
128
  const resolved = await resolveWorkspaceRequest(this.options.git, { cwd: projectRoot });
281
129
  const initialWorkspace = "code" in resolved
282
130
  ? {
283
- repoId: stableId("repo", projectRoot),
284
- worktreeId: stableId("worktree", projectRoot),
131
+ repoId: stableWorkspaceId("repo", projectRoot),
132
+ worktreeId: stableWorkspaceId("worktree", projectRoot),
285
133
  worktreeRoot: projectRoot,
286
134
  gitCommonDir: projectRoot,
287
135
  }
288
136
  : {
289
137
  repoId: resolved.repoId,
290
- worktreeId: stableId("worktree", projectRoot),
138
+ worktreeId: stableWorkspaceId("worktree", projectRoot),
291
139
  worktreeRoot: projectRoot,
292
140
  gitCommonDir: resolved.gitCommonDir,
293
141
  };
294
- const currentBinding = this.createBoundWorkspace(
142
+ const currentBinding = await this.createBoundWorkspace(
295
143
  initialWorkspace,
296
144
  this.options.graftDir,
297
145
  DEFAULT_REPO_LOCAL_CAPABILITY_PROFILE,
@@ -305,6 +153,7 @@ export class WorkspaceRouter {
305
153
  await currentRepoState.initialize();
306
154
  await this.options.persistedLocalHistory.noteBinding({
307
155
  current: this.buildPersistedLocalHistoryContext(currentBinding, currentRepoState.getState()),
156
+ currentGraph: await this.buildPersistedLocalHistoryGraphContext(currentBinding),
308
157
  });
309
158
  this.currentBinding = currentBinding;
310
159
  })();
@@ -312,12 +161,12 @@ export class WorkspaceRouter {
312
161
  await this.initialization;
313
162
  }
314
163
 
315
- get mode(): WorkspaceSessionMode {
164
+ get mode(): WorkspaceMode {
316
165
  return this.options.mode;
317
166
  }
318
167
 
319
- get session(): SessionTracker {
320
- return this.currentSlice.session;
168
+ get governor(): GovernorTracker {
169
+ return this.currentSlice.governor;
321
170
  }
322
171
 
323
172
  get cache(): ObservationCache {
@@ -348,7 +197,7 @@ export class WorkspaceRouter {
348
197
  return this.requireBinding().resolvePath;
349
198
  }
350
199
 
351
- getWarp(): Promise<WarpApp> {
200
+ getWarp(): Promise<WarpHandle> {
352
201
  return this.requireBinding().getWarp();
353
202
  }
354
203
 
@@ -370,6 +219,7 @@ export class WorkspaceRouter {
370
219
  await this.options.persistedLocalHistory.noteCheckoutBoundary({
371
220
  previous: previousContext,
372
221
  current: nextContext,
222
+ graph: await this.buildPersistedLocalHistoryGraphContext(binding),
373
223
  });
374
224
  }
375
225
  }
@@ -380,28 +230,9 @@ export class WorkspaceRouter {
380
230
 
381
231
  getStatus(): WorkspaceStatus {
382
232
  if (this.currentBinding === null) {
383
- return {
384
- sessionMode: this.options.mode,
385
- bindState: "unbound",
386
- repoId: null,
387
- worktreeId: null,
388
- worktreeRoot: null,
389
- gitCommonDir: null,
390
- graftDir: null,
391
- capabilityProfile: null,
392
- };
233
+ return unboundWorkspaceStatus(this.options.mode);
393
234
  }
394
-
395
- return {
396
- sessionMode: this.options.mode,
397
- bindState: "bound",
398
- repoId: this.currentBinding.repoId,
399
- worktreeId: this.currentBinding.worktreeId,
400
- worktreeRoot: this.currentBinding.worktreeRoot,
401
- gitCommonDir: this.currentBinding.gitCommonDir,
402
- graftDir: this.currentBinding.slice.graftDir,
403
- capabilityProfile: this.currentBinding.capabilityProfile,
404
- };
235
+ return boundWorkspaceStatus(this.options.mode, this.currentBinding);
405
236
  }
406
237
 
407
238
  async getPersistedLocalHistorySummary(): Promise<PersistedLocalHistorySummary> {
@@ -457,7 +288,8 @@ export class WorkspaceRouter {
457
288
  const status = this.getStatus();
458
289
  const repoState = binding.slice.repoState.getState();
459
290
  const causalContext = this.buildCausalContext(binding, repoState);
460
- let summary = await this.options.persistedLocalHistory.summarize(status, causalContext);
291
+ const graph = await this.buildPersistedLocalHistoryGraphContext(binding);
292
+ let summary = await this.options.persistedLocalHistory.summarize(status, causalContext, graph);
461
293
 
462
294
  if (repoState.semanticTransition !== null) {
463
295
  await this.options.persistedLocalHistory.noteSemanticTransitionObservation({
@@ -465,8 +297,9 @@ export class WorkspaceRouter {
465
297
  semanticTransition: repoState.semanticTransition,
466
298
  transition: repoState.lastTransition,
467
299
  attribution: summary.attribution,
300
+ graph,
468
301
  });
469
- summary = await this.options.persistedLocalHistory.summarize(status, causalContext);
302
+ summary = await this.options.persistedLocalHistory.summarize(status, causalContext, graph);
470
303
  }
471
304
 
472
305
  const stagedTarget = buildRuntimeStagedTarget(status, causalContext, repoState, summary.attribution);
@@ -476,8 +309,9 @@ export class WorkspaceRouter {
476
309
  current: this.buildPersistedLocalHistoryContext(binding, repoState),
477
310
  stagedTarget,
478
311
  attribution: summary.attribution,
312
+ graph,
479
313
  });
480
- return this.options.persistedLocalHistory.summarize(status, causalContext);
314
+ return this.options.persistedLocalHistory.summarize(status, causalContext, graph);
481
315
  }
482
316
 
483
317
  return summary;
@@ -488,7 +322,10 @@ export class WorkspaceRouter {
488
322
  if (binding?.slice.repoState === null || binding === null) {
489
323
  return null;
490
324
  }
491
- return this.options.persistedLocalHistory.summarizeRepoConcurrency(this.getStatus());
325
+ return this.options.persistedLocalHistory.summarizeRepoConcurrency(
326
+ this.getStatus(),
327
+ await this.buildPersistedLocalHistoryGraphContext(binding),
328
+ );
492
329
  }
493
330
 
494
331
  async getPersistedLocalActivityWindow(limit: number): Promise<PersistedLocalActivityWindow> {
@@ -508,17 +345,19 @@ export class WorkspaceRouter {
508
345
  const status = this.getStatus();
509
346
  const repoState = binding.slice.repoState.getState();
510
347
  const causalContext = this.buildCausalContext(binding, repoState);
348
+ const graph = await this.buildPersistedLocalHistoryGraphContext(binding);
511
349
  return this.options.persistedLocalHistory.listRecentActivity(
512
350
  status,
513
351
  causalContext,
514
352
  limit,
353
+ graph,
515
354
  );
516
355
  }
517
356
 
518
- async getWorkspaceOverlayFooting(): Promise<RuntimeWorkspaceOverlayFooting | null> {
357
+ getWorkspaceOverlayFooting(): Promise<RuntimeWorkspaceOverlayFooting | null> {
519
358
  const binding = this.currentBinding;
520
359
  if (binding?.slice.repoState === null || binding === null) {
521
- return null;
360
+ return Promise.resolve(null);
522
361
  }
523
362
  return buildRuntimeWorkspaceOverlayFooting(
524
363
  this.options.fs,
@@ -531,8 +370,8 @@ export class WorkspaceRouter {
531
370
 
532
371
  async noteReadObservation(
533
372
  toolName: AttributedReadToolName,
534
- args: Record<string, unknown>,
535
- result: Record<string, unknown>,
373
+ args: JsonObject,
374
+ result: JsonObject,
536
375
  execution?: WorkspaceExecutionContext | null,
537
376
  ): Promise<void> {
538
377
  const active = execution ?? this.captureCurrentExecutionContext();
@@ -540,7 +379,7 @@ export class WorkspaceRouter {
540
379
  return;
541
380
  }
542
381
 
543
- const readObservation = this.buildReadObservation(active, toolName, args, result);
382
+ const readObservation = buildWorkspaceReadObservation(active, toolName, args, result);
544
383
  if (readObservation === null) {
545
384
  return;
546
385
  }
@@ -548,11 +387,13 @@ export class WorkspaceRouter {
548
387
  const summary = await this.options.persistedLocalHistory.summarize(
549
388
  active.status,
550
389
  active.getCausalContext(),
390
+ await this.buildPersistedLocalHistoryGraphContextFromExecution(active),
551
391
  );
552
392
 
553
393
  await this.options.persistedLocalHistory.noteReadObservation({
554
394
  current: this.buildPersistedLocalHistoryContextFromExecution(active, active.repoState.getState()),
555
395
  attribution: summary.attribution,
396
+ graph: await this.buildPersistedLocalHistoryGraphContextFromExecution(active),
556
397
  ...readObservation,
557
398
  });
558
399
  }
@@ -575,17 +416,8 @@ export class WorkspaceRouter {
575
416
  capabilityProfile: binding.capabilityProfile,
576
417
  warpWriterId: binding.warpWriterId,
577
418
  getCausalContext: () => this.buildCausalContext(binding, repoState.getState()),
578
- status: {
579
- sessionMode: this.options.mode,
580
- bindState: "bound",
581
- repoId: binding.repoId,
582
- worktreeId: binding.worktreeId,
583
- worktreeRoot: binding.worktreeRoot,
584
- gitCommonDir: binding.gitCommonDir,
585
- graftDir: binding.slice.graftDir,
586
- capabilityProfile: binding.capabilityProfile,
587
- },
588
- session: binding.slice.session,
419
+ status: boundWorkspaceStatus(this.options.mode, binding),
420
+ governor: binding.slice.governor,
589
421
  cache: binding.slice.cache,
590
422
  metrics: binding.slice.metrics,
591
423
  graftDir: binding.slice.graftDir,
@@ -631,6 +463,7 @@ export class WorkspaceRouter {
631
463
  await this.options.persistedLocalHistory.declareAttach({
632
464
  current: this.buildPersistedLocalHistoryContext(binding, binding.slice.repoState.getState()),
633
465
  declaration,
466
+ graph: await this.buildPersistedLocalHistoryGraphContext(binding),
634
467
  });
635
468
  } catch (error) {
636
469
  if (error instanceof PersistedLocalHistoryAttachUnavailableError) {
@@ -644,6 +477,7 @@ export class WorkspaceRouter {
644
477
  current: this.buildPersistedLocalHistoryContext(binding, binding.slice.repoState.getState()),
645
478
  declaration,
646
479
  source: sharedAttachSource,
480
+ graph: await this.buildPersistedLocalHistoryGraphContext(binding),
647
481
  });
648
482
  return {
649
483
  ok: true,
@@ -689,11 +523,7 @@ export class WorkspaceRouter {
689
523
  };
690
524
  }
691
525
 
692
- const sliceDir = path.join(
693
- this.options.graftDir,
694
- "bindings",
695
- `slice-${String(++this.bindingCounter).padStart(4, "0")}`,
696
- );
526
+ const sliceDir = nextBindingSliceDir(this.options.graftDir, ++this.bindingCounter);
697
527
  await this.options.fs.mkdir(sliceDir, { recursive: true });
698
528
 
699
529
  const capabilityProfile = this.options.mode === "repo_local"
@@ -710,7 +540,7 @@ export class WorkspaceRouter {
710
540
  };
711
541
  }
712
542
 
713
- const nextBinding = this.createBoundWorkspace(resolved, sliceDir, capabilityProfile, actionName);
543
+ const nextBinding = await this.createBoundWorkspace(resolved, sliceDir, capabilityProfile, actionName);
714
544
  const nextRepoState = nextBinding.slice.repoState;
715
545
  if (nextRepoState === null) {
716
546
  throw new WorkspaceBindingRequiredError("workspace");
@@ -723,6 +553,10 @@ export class WorkspaceRouter {
723
553
  previous: previousBinding === null || previousRepoState == null
724
554
  ? null
725
555
  : this.buildPersistedLocalHistoryContext(previousBinding, previousRepoState.getState()),
556
+ currentGraph: await this.buildPersistedLocalHistoryGraphContext(nextBinding),
557
+ previousGraph: previousBinding === null
558
+ ? null
559
+ : await this.buildPersistedLocalHistoryGraphContext(previousBinding),
726
560
  });
727
561
  if (this.options.mode === "daemon") {
728
562
  await this.options.authorizationPolicy?.noteBound(resolved);
@@ -738,44 +572,31 @@ export class WorkspaceRouter {
738
572
  };
739
573
  }
740
574
 
741
- private createBoundWorkspace(
575
+ private async createBoundWorkspace(
742
576
  resolved: ResolvedWorkspace,
743
577
  graftDir: string,
744
578
  capabilityProfile: WorkspaceCapabilityProfile,
745
579
  actionName: string | undefined,
746
580
  sliceOverride?: WorkspaceSlice,
747
- ): BoundWorkspace {
748
- const slice = sliceOverride ?? this.createSlice(graftDir, resolved.worktreeRoot);
749
- if (actionName !== undefined) {
750
- slice.session.recordMessage();
751
- slice.session.recordToolCall(actionName);
752
- }
753
-
754
- return {
755
- ...resolved,
756
- graftignorePatterns: loadProjectGraftignore(this.options.fs, resolved.worktreeRoot),
757
- resolvePath: createPathResolver(resolved.worktreeRoot),
581
+ ): Promise<BoundWorkspace> {
582
+ const slice = sliceOverride ?? createWorkspaceSlice({
583
+ graftDir,
584
+ projectRoot: resolved.worktreeRoot,
585
+ fs: this.options.fs,
586
+ git: this.options.git,
587
+ nextSliceId: `slice-${String(++this.sliceIdCounter).padStart(4, "0")}`,
588
+ });
589
+ return createBoundWorkspace({
590
+ resolved,
591
+ graftDir,
758
592
  capabilityProfile,
593
+ ...(actionName !== undefined ? { actionName } : {}),
594
+ slice,
595
+ fs: this.options.fs,
759
596
  transportSessionId: this.options.transportSessionId,
760
597
  warpWriterId: this.options.warpWriterId ?? DEFAULT_WARP_WRITER_ID,
761
- slice,
762
- getWarp: () => this.options.warpPool.getOrOpen(
763
- resolved.repoId,
764
- resolved.worktreeRoot,
765
- this.options.warpWriterId ?? DEFAULT_WARP_WRITER_ID,
766
- ),
767
- };
768
- }
769
-
770
- private createSlice(graftDir: string, projectRoot?: string): WorkspaceSlice {
771
- return {
772
- sliceId: `slice-${String(++this.sliceIdCounter).padStart(4, "0")}`,
773
- session: new SessionTracker(),
774
- cache: new ObservationCache(),
775
- metrics: new Metrics(),
776
- graftDir,
777
- repoState: projectRoot !== undefined ? new RepoStateTracker(projectRoot, this.options.fs, this.options.git) : null,
778
- };
598
+ warpPool: this.options.warpPool,
599
+ });
779
600
  }
780
601
 
781
602
  private requireBinding(): BoundWorkspace {
@@ -797,84 +618,46 @@ export class WorkspaceRouter {
797
618
  binding: BoundWorkspace,
798
619
  observation: { readonly checkoutEpoch: number },
799
620
  ): RuntimeCausalContext {
800
- return buildRuntimeCausalContext({
801
- transportSessionId: binding.transportSessionId,
802
- workspaceSliceId: binding.slice.sliceId,
803
- repoId: binding.repoId,
804
- worktreeId: binding.worktreeId,
805
- checkoutEpoch: observation.checkoutEpoch,
806
- warpWriterId: binding.warpWriterId,
807
- });
621
+ return buildWorkspaceCausalContext(binding, observation);
808
622
  }
809
623
 
810
624
  private buildPersistedLocalHistoryContext(
811
625
  binding: BoundWorkspace,
812
- observation: import("./repo-state.js").RepoObservation,
813
- hookEvent: GitTransitionHookEvent | null = null,
626
+ observation: RepoObservation,
627
+ hookEvent: import("./runtime-workspace-overlay.js").GitTransitionHookEvent | null = null,
814
628
  ): PersistedLocalHistoryContext {
815
- const context = this.options.persistedLocalHistory.buildContext(
816
- {
817
- sessionMode: this.options.mode,
818
- bindState: "bound",
819
- repoId: binding.repoId,
820
- worktreeId: binding.worktreeId,
821
- worktreeRoot: binding.worktreeRoot,
822
- gitCommonDir: binding.gitCommonDir,
823
- graftDir: binding.slice.graftDir,
824
- capabilityProfile: binding.capabilityProfile,
825
- },
826
- this.buildCausalContext(binding, observation),
629
+ return buildPersistedLocalHistoryContext({
630
+ persistedLocalHistory: this.options.persistedLocalHistory,
631
+ mode: this.options.mode,
632
+ binding,
827
633
  observation,
828
634
  hookEvent,
829
- );
830
- if (context === null) {
831
- throw new WorkspaceBindingRequiredError("workspace");
832
- }
833
- return context;
635
+ });
834
636
  }
835
637
 
836
638
  private buildPersistedLocalHistoryContextFromExecution(
837
639
  execution: WorkspaceExecutionContext,
838
- observation: import("./repo-state.js").RepoObservation,
640
+ observation: RepoObservation,
839
641
  ): PersistedLocalHistoryContext {
840
- const context = this.options.persistedLocalHistory.buildContext(
841
- execution.status,
842
- execution.getCausalContext(),
642
+ return buildPersistedLocalHistoryContextFromExecution({
643
+ persistedLocalHistory: this.options.persistedLocalHistory,
644
+ execution,
843
645
  observation,
844
- );
845
- if (context === null) {
846
- throw new WorkspaceBindingRequiredError("workspace");
847
- }
848
- return context;
646
+ });
849
647
  }
850
648
 
851
649
  private async resolveCheckoutBoundaryHookEvent(
852
650
  binding: BoundWorkspace,
853
651
  previousObservedAt: string,
854
- observation: import("./repo-state.js").RepoObservation,
855
- ): Promise<GitTransitionHookEvent | null> {
856
- const footing = await buildRuntimeWorkspaceOverlayFooting(
857
- this.options.fs,
858
- this.options.git,
859
- binding.worktreeRoot,
860
- binding.gitCommonDir,
652
+ observation: RepoObservation,
653
+ ): Promise<import("./runtime-workspace-overlay.js").GitTransitionHookEvent | null> {
654
+ return resolveCheckoutBoundaryHookEvent({
655
+ fs: this.options.fs,
656
+ git: this.options.git,
657
+ binding,
658
+ previousObservedAt,
861
659
  observation,
862
- );
863
- const latestHookEvent = footing.latestHookEvent;
864
- if (latestHookEvent === null) {
865
- return null;
866
- }
867
-
868
- const previousObservedAtMs = Date.parse(previousObservedAt);
869
- const hookObservedAtMs = Date.parse(latestHookEvent.observedAt);
870
- if (
871
- Number.isFinite(previousObservedAtMs) &&
872
- Number.isFinite(hookObservedAtMs) &&
873
- hookObservedAtMs < previousObservedAtMs
874
- ) {
875
- return null;
876
- }
877
- return latestHookEvent;
660
+ });
878
661
  }
879
662
 
880
663
  private captureCurrentExecutionContext(): WorkspaceExecutionContext | null {
@@ -884,101 +667,15 @@ export class WorkspaceRouter {
884
667
  return this.captureExecutionContext();
885
668
  }
886
669
 
887
- private buildReadObservation(
888
- execution: WorkspaceExecutionContext,
889
- toolName: AttributedReadToolName,
890
- args: Record<string, unknown>,
891
- result: Record<string, unknown>,
892
- ): {
893
- readonly surface: string;
894
- readonly projection: string;
895
- readonly sourceLayer: "canonical_structural_truth" | "workspace_overlay";
896
- readonly reason: string;
897
- readonly footprint: {
898
- readonly paths: string[];
899
- readonly symbols: string[];
900
- readonly regions: {
901
- readonly path: string;
902
- readonly startLine: number;
903
- readonly endLine: number;
904
- }[];
905
- };
906
- } | null {
907
- const rawPath = args["path"];
908
- if (typeof rawPath !== "string") {
909
- return null;
910
- }
911
-
912
- const absolutePath = execution.resolvePath(rawPath);
913
- const relativePath = path.relative(execution.worktreeRoot, absolutePath);
914
- const footprintPath = relativePath.startsWith("..") ? absolutePath : relativePath;
915
- const sourceLayer = execution.repoState.getState().workspaceOverlayId === null
916
- ? "canonical_structural_truth"
917
- : "workspace_overlay";
918
-
919
- if (toolName === "safe_read") {
920
- const projection = result["projection"];
921
- if (
922
- projection !== "content" &&
923
- projection !== "outline" &&
924
- projection !== "cache_hit" &&
925
- projection !== "diff"
926
- ) {
927
- return null;
928
- }
929
- return {
930
- surface: "safe_read",
931
- projection,
932
- sourceLayer,
933
- reason: typeof result["reason"] === "string" ? result["reason"] : "SAFE_READ",
934
- footprint: {
935
- paths: [footprintPath],
936
- symbols: [],
937
- regions: [],
938
- },
939
- };
940
- }
941
-
942
- if (toolName === "file_outline") {
943
- if (typeof result["error"] === "string" || result["reason"] === "UNSUPPORTED_LANGUAGE") {
944
- return null;
945
- }
946
- return {
947
- surface: "file_outline",
948
- projection: "outline",
949
- sourceLayer,
950
- reason: typeof result["reason"] === "string" ? result["reason"] : "FILE_OUTLINE",
951
- footprint: {
952
- paths: [footprintPath],
953
- symbols: [],
954
- regions: [],
955
- },
956
- };
957
- }
670
+ private async buildPersistedLocalHistoryGraphContext(
671
+ binding: BoundWorkspace,
672
+ ): Promise<PersistedLocalHistoryGraphContext | null> {
673
+ return buildPersistedLocalHistoryGraphContext(binding.worktreeRoot, binding.getWarp);
674
+ }
958
675
 
959
- const startLine = result["startLine"];
960
- const endLine = result["endLine"];
961
- if (
962
- typeof result["content"] !== "string" ||
963
- typeof startLine !== "number" ||
964
- typeof endLine !== "number"
965
- ) {
966
- return null;
967
- }
968
- return {
969
- surface: "read_range",
970
- projection: "content",
971
- sourceLayer,
972
- reason: typeof result["reason"] === "string" ? result["reason"] : "READ_RANGE",
973
- footprint: {
974
- paths: [footprintPath],
975
- symbols: [],
976
- regions: [{
977
- path: footprintPath,
978
- startLine,
979
- endLine,
980
- }],
981
- },
982
- };
676
+ private async buildPersistedLocalHistoryGraphContextFromExecution(
677
+ execution: WorkspaceExecutionContext,
678
+ ): Promise<PersistedLocalHistoryGraphContext | null> {
679
+ return buildPersistedLocalHistoryGraphContext(execution.worktreeRoot, execution.getWarp);
983
680
  }
984
681
  }