@flyingrobots/graft 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/README.md +33 -17
  3. package/bin/graft.js +26 -26
  4. package/dist/api/index.d.ts +3 -0
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +2 -0
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/cli/cli-error.d.ts.map +1 -1
  9. package/dist/cli/cli-error.js +22 -3
  10. package/dist/cli/cli-error.js.map +1 -1
  11. package/dist/cli/command-parser.d.ts.map +1 -1
  12. package/dist/cli/command-parser.js +62 -6
  13. package/dist/cli/command-parser.js.map +1 -1
  14. package/dist/cli/dead-symbols-render.d.ts +2 -0
  15. package/dist/cli/dead-symbols-render.d.ts.map +1 -0
  16. package/dist/cli/dead-symbols-render.js +23 -0
  17. package/dist/cli/dead-symbols-render.js.map +1 -0
  18. package/dist/cli/doctor-render.d.ts +2 -0
  19. package/dist/cli/doctor-render.d.ts.map +1 -0
  20. package/dist/cli/doctor-render.js +80 -0
  21. package/dist/cli/doctor-render.js.map +1 -0
  22. package/dist/cli/entrypoint.d.ts +1 -0
  23. package/dist/cli/entrypoint.d.ts.map +1 -1
  24. package/dist/cli/entrypoint.js +1 -0
  25. package/dist/cli/entrypoint.js.map +1 -1
  26. package/dist/cli/git-graft-enhance-model.d.ts +33 -3
  27. package/dist/cli/git-graft-enhance-model.d.ts.map +1 -1
  28. package/dist/cli/git-graft-enhance-model.js +38 -0
  29. package/dist/cli/git-graft-enhance-model.js.map +1 -1
  30. package/dist/cli/git-graft-enhance-render.d.ts.map +1 -1
  31. package/dist/cli/git-graft-enhance-render.js +13 -0
  32. package/dist/cli/git-graft-enhance-render.js.map +1 -1
  33. package/dist/cli/git-graft-enhance.d.ts.map +1 -1
  34. package/dist/cli/git-graft-enhance.js +44 -1
  35. package/dist/cli/git-graft-enhance.js.map +1 -1
  36. package/dist/cli/index-cmd.d.ts +1 -0
  37. package/dist/cli/index-cmd.d.ts.map +1 -1
  38. package/dist/cli/index-cmd.js +3 -0
  39. package/dist/cli/index-cmd.js.map +1 -1
  40. package/dist/cli/init-client-config.d.ts.map +1 -1
  41. package/dist/cli/init-client-config.js +40 -4
  42. package/dist/cli/init-client-config.js.map +1 -1
  43. package/dist/cli/init-model.js +2 -2
  44. package/dist/cli/init-model.js.map +1 -1
  45. package/dist/cli/json-document.d.ts +1 -0
  46. package/dist/cli/json-document.d.ts.map +1 -1
  47. package/dist/cli/json-document.js +3 -0
  48. package/dist/cli/json-document.js.map +1 -1
  49. package/dist/cli/main.d.ts +2 -0
  50. package/dist/cli/main.d.ts.map +1 -1
  51. package/dist/cli/main.js +24 -2
  52. package/dist/cli/main.js.map +1 -1
  53. package/dist/cli/peer-command.d.ts.map +1 -1
  54. package/dist/cli/peer-command.js +25 -0
  55. package/dist/cli/peer-command.js.map +1 -1
  56. package/dist/cli/review-cooldown.d.ts +15 -0
  57. package/dist/cli/review-cooldown.d.ts.map +1 -0
  58. package/dist/cli/review-cooldown.js +136 -0
  59. package/dist/cli/review-cooldown.js.map +1 -0
  60. package/dist/cli/structural-blame-render.d.ts +2 -0
  61. package/dist/cli/structural-blame-render.d.ts.map +1 -0
  62. package/dist/cli/structural-blame-render.js +39 -0
  63. package/dist/cli/structural-blame-render.js.map +1 -0
  64. package/dist/cli/structural-review-render.d.ts +2 -0
  65. package/dist/cli/structural-review-render.d.ts.map +1 -0
  66. package/dist/cli/structural-review-render.js +56 -0
  67. package/dist/cli/structural-review-render.js.map +1 -0
  68. package/dist/cli/structural-test-coverage-render.d.ts +2 -0
  69. package/dist/cli/structural-test-coverage-render.d.ts.map +1 -0
  70. package/dist/cli/structural-test-coverage-render.js +46 -0
  71. package/dist/cli/structural-test-coverage-render.js.map +1 -0
  72. package/dist/contracts/capabilities.d.ts +9 -6
  73. package/dist/contracts/capabilities.d.ts.map +1 -1
  74. package/dist/contracts/capabilities.js +40 -1
  75. package/dist/contracts/capabilities.js.map +1 -1
  76. package/dist/contracts/causal-ontology.d.ts +17 -17
  77. package/dist/contracts/output-schema-cli.d.ts +103 -41
  78. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  79. package/dist/contracts/output-schema-cli.js +29 -0
  80. package/dist/contracts/output-schema-cli.js.map +1 -1
  81. package/dist/contracts/output-schema-fragments.d.ts +76 -76
  82. package/dist/contracts/output-schema-mcp.d.ts +87 -62
  83. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  84. package/dist/contracts/output-schema-mcp.js +43 -21
  85. package/dist/contracts/output-schema-mcp.js.map +1 -1
  86. package/dist/contracts/output-schema-meta.d.ts +2 -2
  87. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  88. package/dist/contracts/output-schemas.d.ts +7 -7
  89. package/dist/contracts/output-schemas.d.ts.map +1 -1
  90. package/dist/contracts/output-schemas.js +69 -1
  91. package/dist/contracts/output-schemas.js.map +1 -1
  92. package/dist/git/version-guard.d.ts +17 -0
  93. package/dist/git/version-guard.d.ts.map +1 -0
  94. package/dist/git/version-guard.js +51 -0
  95. package/dist/git/version-guard.js.map +1 -0
  96. package/dist/hooks/posttooluse-read.js +3 -3
  97. package/dist/hooks/posttooluse-read.js.map +1 -1
  98. package/dist/hooks/pretooluse-read.js +1 -1
  99. package/dist/hooks/pretooluse-read.js.map +1 -1
  100. package/dist/mcp/burden.d.ts.map +1 -1
  101. package/dist/mcp/burden.js +2 -0
  102. package/dist/mcp/burden.js.map +1 -1
  103. package/dist/mcp/daemon-server.d.ts.map +1 -1
  104. package/dist/mcp/daemon-server.js +2 -0
  105. package/dist/mcp/daemon-server.js.map +1 -1
  106. package/dist/mcp/daemon-worker-child-pool.d.ts +2 -0
  107. package/dist/mcp/daemon-worker-child-pool.d.ts.map +1 -1
  108. package/dist/mcp/daemon-worker-child-pool.js +10 -3
  109. package/dist/mcp/daemon-worker-child-pool.js.map +1 -1
  110. package/dist/mcp/daemon-worker-pool.d.ts +1 -1
  111. package/dist/mcp/daemon-worker-pool.d.ts.map +1 -1
  112. package/dist/mcp/daemon-worker-pool.js +1 -1
  113. package/dist/mcp/daemon-worker-pool.js.map +1 -1
  114. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -1
  115. package/dist/mcp/persisted-local-history-graph.js +2 -1
  116. package/dist/mcp/persisted-local-history-graph.js.map +1 -1
  117. package/dist/mcp/persisted-local-history.d.ts +5 -5
  118. package/dist/mcp/repo-tool-job.d.ts.map +1 -1
  119. package/dist/mcp/repo-tool-job.js +2 -0
  120. package/dist/mcp/repo-tool-job.js.map +1 -1
  121. package/dist/mcp/server-invocation.d.ts.map +1 -1
  122. package/dist/mcp/server-invocation.js +206 -147
  123. package/dist/mcp/server-invocation.js.map +1 -1
  124. package/dist/mcp/server.d.ts.map +1 -1
  125. package/dist/mcp/server.js +184 -116
  126. package/dist/mcp/server.js.map +1 -1
  127. package/dist/mcp/stdio-server.d.ts.map +1 -1
  128. package/dist/mcp/stdio-server.js +2 -0
  129. package/dist/mcp/stdio-server.js.map +1 -1
  130. package/dist/mcp/tool-registry.d.ts.map +1 -1
  131. package/dist/mcp/tool-registry.js +4 -0
  132. package/dist/mcp/tool-registry.js.map +1 -1
  133. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  134. package/dist/mcp/tools/changed-since.js +10 -3
  135. package/dist/mcp/tools/changed-since.js.map +1 -1
  136. package/dist/mcp/tools/dead-symbols.d.ts +3 -0
  137. package/dist/mcp/tools/dead-symbols.d.ts.map +1 -0
  138. package/dist/mcp/tools/dead-symbols.js +33 -0
  139. package/dist/mcp/tools/dead-symbols.js.map +1 -0
  140. package/dist/mcp/tools/map.d.ts.map +1 -1
  141. package/dist/mcp/tools/map.js +2 -0
  142. package/dist/mcp/tools/map.js.map +1 -1
  143. package/dist/mcp/tools/precision-warp.d.ts.map +1 -1
  144. package/dist/mcp/tools/precision-warp.js +2 -6
  145. package/dist/mcp/tools/precision-warp.js.map +1 -1
  146. package/dist/mcp/tools/refactor-difficulty.d.ts.map +1 -1
  147. package/dist/mcp/tools/refactor-difficulty.js +2 -0
  148. package/dist/mcp/tools/refactor-difficulty.js.map +1 -1
  149. package/dist/mcp/tools/safe-read.d.ts.map +1 -1
  150. package/dist/mcp/tools/safe-read.js +10 -105
  151. package/dist/mcp/tools/safe-read.js.map +1 -1
  152. package/dist/mcp/tools/structural-test-coverage.d.ts +3 -0
  153. package/dist/mcp/tools/structural-test-coverage.d.ts.map +1 -0
  154. package/dist/mcp/tools/structural-test-coverage.js +35 -0
  155. package/dist/mcp/tools/structural-test-coverage.js.map +1 -0
  156. package/dist/operations/cached-file.d.ts +6 -2
  157. package/dist/operations/cached-file.d.ts.map +1 -1
  158. package/dist/operations/cached-file.js +30 -6
  159. package/dist/operations/cached-file.js.map +1 -1
  160. package/dist/operations/export-surface-diff.d.ts.map +1 -1
  161. package/dist/operations/export-surface-diff.js +2 -0
  162. package/dist/operations/export-surface-diff.js.map +1 -1
  163. package/dist/operations/file-outline.js +2 -2
  164. package/dist/operations/file-outline.js.map +1 -1
  165. package/dist/operations/graft-diff.d.ts.map +1 -1
  166. package/dist/operations/graft-diff.js +2 -0
  167. package/dist/operations/graft-diff.js.map +1 -1
  168. package/dist/operations/projection-safety.d.ts.map +1 -1
  169. package/dist/operations/projection-safety.js +2 -0
  170. package/dist/operations/projection-safety.js.map +1 -1
  171. package/dist/operations/repo-workspace.d.ts.map +1 -1
  172. package/dist/operations/repo-workspace.js +26 -8
  173. package/dist/operations/repo-workspace.js.map +1 -1
  174. package/dist/operations/review-cooldown-status.d.ts +27 -0
  175. package/dist/operations/review-cooldown-status.d.ts.map +1 -0
  176. package/dist/operations/review-cooldown-status.js +115 -0
  177. package/dist/operations/review-cooldown-status.js.map +1 -0
  178. package/dist/operations/safe-read.js +2 -2
  179. package/dist/operations/safe-read.js.map +1 -1
  180. package/dist/operations/sludge-detector.d.ts.map +1 -1
  181. package/dist/operations/sludge-detector.js +2 -1
  182. package/dist/operations/sludge-detector.js.map +1 -1
  183. package/dist/operations/structural-review.js +8 -8
  184. package/dist/operations/structural-review.js.map +1 -1
  185. package/dist/operations/structural-test-coverage-map.d.ts +44 -0
  186. package/dist/operations/structural-test-coverage-map.d.ts.map +1 -0
  187. package/dist/operations/structural-test-coverage-map.js +331 -0
  188. package/dist/operations/structural-test-coverage-map.js.map +1 -0
  189. package/dist/operations/structured-buffer-compare.d.ts.map +1 -1
  190. package/dist/operations/structured-buffer-compare.js +4 -1
  191. package/dist/operations/structured-buffer-compare.js.map +1 -1
  192. package/dist/operations/structured-buffer-model.d.ts +15 -13
  193. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  194. package/dist/operations/structured-buffer-model.js +24 -5
  195. package/dist/operations/structured-buffer-model.js.map +1 -1
  196. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  197. package/dist/operations/structured-buffer-query.js +21 -12
  198. package/dist/operations/structured-buffer-query.js.map +1 -1
  199. package/dist/parser/extractors/common.d.ts +16 -0
  200. package/dist/parser/extractors/common.d.ts.map +1 -0
  201. package/dist/parser/extractors/common.js +23 -0
  202. package/dist/parser/extractors/common.js.map +1 -0
  203. package/dist/parser/extractors/go.d.ts +18 -0
  204. package/dist/parser/extractors/go.d.ts.map +1 -0
  205. package/dist/parser/extractors/go.js +200 -0
  206. package/dist/parser/extractors/go.js.map +1 -0
  207. package/dist/parser/extractors/graphql.d.ts +26 -0
  208. package/dist/parser/extractors/graphql.d.ts.map +1 -0
  209. package/dist/parser/extractors/graphql.js +239 -0
  210. package/dist/parser/extractors/graphql.js.map +1 -0
  211. package/dist/parser/extractors/index.d.ts +4 -0
  212. package/dist/parser/extractors/index.d.ts.map +1 -0
  213. package/dist/parser/extractors/index.js +26 -0
  214. package/dist/parser/extractors/index.js.map +1 -0
  215. package/dist/parser/extractors/json.d.ts +10 -0
  216. package/dist/parser/extractors/json.d.ts.map +1 -0
  217. package/dist/parser/extractors/json.js +75 -0
  218. package/dist/parser/extractors/json.js.map +1 -0
  219. package/dist/parser/extractors/python.d.ts +16 -0
  220. package/dist/parser/extractors/python.d.ts.map +1 -0
  221. package/dist/parser/extractors/python.js +145 -0
  222. package/dist/parser/extractors/python.js.map +1 -0
  223. package/dist/parser/extractors/rust.d.ts +12 -0
  224. package/dist/parser/extractors/rust.d.ts.map +1 -0
  225. package/dist/parser/extractors/rust.js +122 -0
  226. package/dist/parser/extractors/rust.js.map +1 -0
  227. package/dist/parser/extractors/toml.d.ts +10 -0
  228. package/dist/parser/extractors/toml.d.ts.map +1 -0
  229. package/dist/parser/extractors/toml.js +74 -0
  230. package/dist/parser/extractors/toml.js.map +1 -0
  231. package/dist/parser/extractors/typescript.d.ts +13 -0
  232. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  233. package/dist/parser/extractors/typescript.js +179 -0
  234. package/dist/parser/extractors/typescript.js.map +1 -0
  235. package/dist/parser/extractors/yaml.d.ts +13 -0
  236. package/dist/parser/extractors/yaml.d.ts.map +1 -0
  237. package/dist/parser/extractors/yaml.js +93 -0
  238. package/dist/parser/extractors/yaml.js.map +1 -0
  239. package/dist/parser/lang.d.ts +2 -2
  240. package/dist/parser/lang.d.ts.map +1 -1
  241. package/dist/parser/lang.js +19 -1
  242. package/dist/parser/lang.js.map +1 -1
  243. package/dist/parser/outline.d.ts +4 -0
  244. package/dist/parser/outline.d.ts.map +1 -1
  245. package/dist/parser/outline.js +32 -221
  246. package/dist/parser/outline.js.map +1 -1
  247. package/dist/parser/runtime.d.ts +7 -0
  248. package/dist/parser/runtime.d.ts.map +1 -1
  249. package/dist/parser/runtime.js +99 -10
  250. package/dist/parser/runtime.js.map +1 -1
  251. package/dist/parser/types.d.ts +1 -1
  252. package/dist/parser/types.d.ts.map +1 -1
  253. package/dist/parser/types.js.map +1 -1
  254. package/dist/ports/provenance-timeline.d.ts +10 -0
  255. package/dist/ports/provenance-timeline.d.ts.map +1 -0
  256. package/dist/ports/provenance-timeline.js +17 -0
  257. package/dist/ports/provenance-timeline.js.map +1 -0
  258. package/dist/ports/semantic-enrichment.d.ts +47 -0
  259. package/dist/ports/semantic-enrichment.d.ts.map +1 -0
  260. package/dist/ports/semantic-enrichment.js +2 -0
  261. package/dist/ports/semantic-enrichment.js.map +1 -0
  262. package/dist/version.d.ts.map +1 -1
  263. package/dist/version.js +3 -1
  264. package/dist/version.js.map +1 -1
  265. package/dist/warp/ast-import-resolver.d.ts.map +1 -1
  266. package/dist/warp/ast-import-resolver.js +2 -1
  267. package/dist/warp/ast-import-resolver.js.map +1 -1
  268. package/dist/warp/dead-symbols.d.ts.map +1 -1
  269. package/dist/warp/dead-symbols.js +4 -7
  270. package/dist/warp/dead-symbols.js.map +1 -1
  271. package/dist/warp/index-head.d.ts +4 -0
  272. package/dist/warp/index-head.d.ts.map +1 -1
  273. package/dist/warp/index-head.js +255 -22
  274. package/dist/warp/index-head.js.map +1 -1
  275. package/dist/warp/observers.d.ts.map +1 -1
  276. package/dist/warp/observers.js +3 -2
  277. package/dist/warp/observers.js.map +1 -1
  278. package/dist/warp/refactor-difficulty.d.ts.map +1 -1
  279. package/dist/warp/refactor-difficulty.js +4 -9
  280. package/dist/warp/refactor-difficulty.js.map +1 -1
  281. package/dist/warp/references.d.ts.map +1 -1
  282. package/dist/warp/references.js +2 -1
  283. package/dist/warp/references.js.map +1 -1
  284. package/dist/warp/semantic-enrichment.d.ts +14 -0
  285. package/dist/warp/semantic-enrichment.d.ts.map +1 -0
  286. package/dist/warp/semantic-enrichment.js +55 -0
  287. package/dist/warp/semantic-enrichment.js.map +1 -0
  288. package/dist/warp/structural-queries.d.ts.map +1 -1
  289. package/dist/warp/structural-queries.js +7 -14
  290. package/dist/warp/structural-queries.js.map +1 -1
  291. package/dist/warp/sym-id-codec.d.ts +14 -0
  292. package/dist/warp/sym-id-codec.d.ts.map +1 -0
  293. package/dist/warp/sym-id-codec.js +47 -0
  294. package/dist/warp/sym-id-codec.js.map +1 -0
  295. package/dist/warp/symbol-timeline.d.ts.map +1 -1
  296. package/dist/warp/symbol-timeline.js +6 -14
  297. package/dist/warp/symbol-timeline.js.map +1 -1
  298. package/dist/warp/warp-structural-churn.d.ts.map +1 -1
  299. package/dist/warp/warp-structural-churn.js +6 -10
  300. package/dist/warp/warp-structural-churn.js.map +1 -1
  301. package/dist/warp/warp-structural-log.d.ts.map +1 -1
  302. package/dist/warp/warp-structural-log.js +8 -10
  303. package/dist/warp/warp-structural-log.js.map +1 -1
  304. package/docs/CLI.md +63 -5
  305. package/docs/MCP.md +2 -1
  306. package/docs/SETUP.md +11 -7
  307. package/package.json +12 -4
  308. package/src/adapters/canonical-json.ts +0 -56
  309. package/src/adapters/json-text-decoder.ts +0 -11
  310. package/src/adapters/node-fs.ts +0 -43
  311. package/src/adapters/node-git.ts +0 -47
  312. package/src/adapters/node-paths.ts +0 -35
  313. package/src/adapters/node-process-runner.ts +0 -27
  314. package/src/adapters/repo-paths.ts +0 -63
  315. package/src/adapters/rotating-ndjson-log.ts +0 -66
  316. package/src/api/index.ts +0 -107
  317. package/src/api/repo-local-graft.ts +0 -21
  318. package/src/api/repo-workspace.ts +0 -34
  319. package/src/api/tool-bridge.ts +0 -22
  320. package/src/cli/activity-render.ts +0 -112
  321. package/src/cli/cli-error.ts +0 -192
  322. package/src/cli/command-parser.ts +0 -484
  323. package/src/cli/daemon-status-model.ts +0 -238
  324. package/src/cli/daemon-status-render.ts +0 -102
  325. package/src/cli/daemon-status.ts +0 -100
  326. package/src/cli/entrypoint.ts +0 -18
  327. package/src/cli/git-graft-enhance-model.ts +0 -131
  328. package/src/cli/git-graft-enhance-render.ts +0 -33
  329. package/src/cli/git-graft-enhance.ts +0 -54
  330. package/src/cli/index-cmd.ts +0 -90
  331. package/src/cli/index-model.ts +0 -75
  332. package/src/cli/init-bootstrap.ts +0 -47
  333. package/src/cli/init-client-config.ts +0 -428
  334. package/src/cli/init-model.ts +0 -284
  335. package/src/cli/init-render.ts +0 -54
  336. package/src/cli/init-target-hooks.ts +0 -93
  337. package/src/cli/init.ts +0 -124
  338. package/src/cli/json-document.ts +0 -155
  339. package/src/cli/local-history-dag-model.ts +0 -437
  340. package/src/cli/local-history-dag-render.ts +0 -133
  341. package/src/cli/local-history-dag.ts +0 -103
  342. package/src/cli/main.ts +0 -197
  343. package/src/cli/migrate-local-history.ts +0 -119
  344. package/src/cli/peer-command.ts +0 -60
  345. package/src/contracts/capabilities.ts +0 -540
  346. package/src/contracts/causal-ontology.ts +0 -627
  347. package/src/contracts/causal-surface-next-action.ts +0 -18
  348. package/src/contracts/json-object.ts +0 -18
  349. package/src/contracts/mcp-runtime.ts +0 -16
  350. package/src/contracts/output-schema-cli.ts +0 -103
  351. package/src/contracts/output-schema-fragments.ts +0 -881
  352. package/src/contracts/output-schema-mcp.ts +0 -501
  353. package/src/contracts/output-schema-meta.ts +0 -119
  354. package/src/contracts/output-schemas.ts +0 -1524
  355. package/src/git/diff.ts +0 -161
  356. package/src/git/target-git-hook-bootstrap.ts +0 -56
  357. package/src/guards/stream-boundary.ts +0 -110
  358. package/src/hooks/posttooluse-read.ts +0 -54
  359. package/src/hooks/pretooluse-read.ts +0 -52
  360. package/src/hooks/read-governor.ts +0 -95
  361. package/src/hooks/read-messages.ts +0 -53
  362. package/src/hooks/shared.ts +0 -168
  363. package/src/index.ts +0 -1
  364. package/src/mcp/burden.ts +0 -132
  365. package/src/mcp/cache.ts +0 -7
  366. package/src/mcp/cached-file.ts +0 -1
  367. package/src/mcp/context.ts +0 -150
  368. package/src/mcp/control-plane/authz-storage.ts +0 -129
  369. package/src/mcp/control-plane/session-registry.ts +0 -115
  370. package/src/mcp/control-plane/status-projection.ts +0 -76
  371. package/src/mcp/control-plane/types.ts +0 -144
  372. package/src/mcp/daemon-bootstrap.ts +0 -100
  373. package/src/mcp/daemon-control-plane.ts +0 -310
  374. package/src/mcp/daemon-job-scheduler.ts +0 -279
  375. package/src/mcp/daemon-repos.ts +0 -99
  376. package/src/mcp/daemon-server.ts +0 -172
  377. package/src/mcp/daemon-session-host.ts +0 -234
  378. package/src/mcp/daemon-stdio-bridge.ts +0 -262
  379. package/src/mcp/daemon-worker-child-pool.ts +0 -213
  380. package/src/mcp/daemon-worker-inline-pool.ts +0 -46
  381. package/src/mcp/daemon-worker-pool.ts +0 -7
  382. package/src/mcp/daemon-worker-process.ts +0 -52
  383. package/src/mcp/daemon-worker-types.ts +0 -66
  384. package/src/mcp/metrics.ts +0 -176
  385. package/src/mcp/monitor-health.ts +0 -83
  386. package/src/mcp/monitor-persistence.ts +0 -54
  387. package/src/mcp/monitor-tick-job.ts +0 -153
  388. package/src/mcp/monitor-types.ts +0 -103
  389. package/src/mcp/persisted-local-history-graph.ts +0 -592
  390. package/src/mcp/persisted-local-history-policy.ts +0 -501
  391. package/src/mcp/persisted-local-history-views.ts +0 -250
  392. package/src/mcp/persisted-local-history.ts +0 -1621
  393. package/src/mcp/persistent-monitor-runtime.ts +0 -482
  394. package/src/mcp/policy.ts +0 -75
  395. package/src/mcp/receipt.ts +0 -201
  396. package/src/mcp/repo-concurrency.ts +0 -392
  397. package/src/mcp/repo-overview/filter.ts +0 -44
  398. package/src/mcp/repo-overview/types.ts +0 -63
  399. package/src/mcp/repo-overview/view-projection.ts +0 -90
  400. package/src/mcp/repo-state-git.ts +0 -247
  401. package/src/mcp/repo-state-observation.ts +0 -203
  402. package/src/mcp/repo-state-transition.ts +0 -151
  403. package/src/mcp/repo-state-types.ts +0 -107
  404. package/src/mcp/repo-state.ts +0 -146
  405. package/src/mcp/repo-tool-job.ts +0 -102
  406. package/src/mcp/repo-tool-worker-context.ts +0 -215
  407. package/src/mcp/repo-workspace.ts +0 -21
  408. package/src/mcp/run-capture-config.ts +0 -33
  409. package/src/mcp/runtime-causal-context.ts +0 -72
  410. package/src/mcp/runtime-observability.ts +0 -217
  411. package/src/mcp/runtime-staged-target.ts +0 -161
  412. package/src/mcp/runtime-workspace-overlay.ts +0 -255
  413. package/src/mcp/secret-scrub.ts +0 -89
  414. package/src/mcp/semantic-transition-guidance.ts +0 -60
  415. package/src/mcp/semantic-transition-summary.ts +0 -130
  416. package/src/mcp/server-context.ts +0 -236
  417. package/src/mcp/server-invocation.ts +0 -388
  418. package/src/mcp/server-tool-access.ts +0 -148
  419. package/src/mcp/server.ts +0 -270
  420. package/src/mcp/stdio-server.ts +0 -26
  421. package/src/mcp/stdio.ts +0 -3
  422. package/src/mcp/tool-registry.ts +0 -98
  423. package/src/mcp/tools/activity-view.ts +0 -325
  424. package/src/mcp/tools/budget.ts +0 -23
  425. package/src/mcp/tools/causal-attach.ts +0 -67
  426. package/src/mcp/tools/causal-status.ts +0 -58
  427. package/src/mcp/tools/changed-since.ts +0 -71
  428. package/src/mcp/tools/code-find.ts +0 -192
  429. package/src/mcp/tools/code-refs.ts +0 -470
  430. package/src/mcp/tools/code-show.ts +0 -289
  431. package/src/mcp/tools/daemon-monitors.ts +0 -14
  432. package/src/mcp/tools/daemon-repos.ts +0 -22
  433. package/src/mcp/tools/daemon-sessions.ts +0 -14
  434. package/src/mcp/tools/daemon-status.ts +0 -12
  435. package/src/mcp/tools/diagnostic-models.ts +0 -97
  436. package/src/mcp/tools/doctor.ts +0 -83
  437. package/src/mcp/tools/explain.ts +0 -84
  438. package/src/mcp/tools/export-surface-diff.ts +0 -26
  439. package/src/mcp/tools/file-outline.ts +0 -67
  440. package/src/mcp/tools/git-files.ts +0 -73
  441. package/src/mcp/tools/graft-diff.ts +0 -35
  442. package/src/mcp/tools/graft-edit.ts +0 -276
  443. package/src/mcp/tools/knowledge-map.ts +0 -34
  444. package/src/mcp/tools/map-collector.ts +0 -338
  445. package/src/mcp/tools/map.ts +0 -185
  446. package/src/mcp/tools/monitor-nudge.ts +0 -19
  447. package/src/mcp/tools/monitor-pause.ts +0 -18
  448. package/src/mcp/tools/monitor-resume.ts +0 -18
  449. package/src/mcp/tools/monitor-start.ts +0 -20
  450. package/src/mcp/tools/monitor-stop.ts +0 -18
  451. package/src/mcp/tools/precision-live.ts +0 -158
  452. package/src/mcp/tools/precision-match.ts +0 -54
  453. package/src/mcp/tools/precision-paths.ts +0 -59
  454. package/src/mcp/tools/precision-query.ts +0 -127
  455. package/src/mcp/tools/precision-show.ts +0 -86
  456. package/src/mcp/tools/precision-visibility.ts +0 -44
  457. package/src/mcp/tools/precision-warp.ts +0 -101
  458. package/src/mcp/tools/precision.ts +0 -21
  459. package/src/mcp/tools/read-range.ts +0 -28
  460. package/src/mcp/tools/refactor-difficulty.ts +0 -42
  461. package/src/mcp/tools/run-capture.ts +0 -149
  462. package/src/mcp/tools/safe-read.ts +0 -148
  463. package/src/mcp/tools/since.ts +0 -53
  464. package/src/mcp/tools/state.ts +0 -39
  465. package/src/mcp/tools/stats.ts +0 -24
  466. package/src/mcp/tools/structural-blame.ts +0 -55
  467. package/src/mcp/tools/structural-churn.ts +0 -28
  468. package/src/mcp/tools/structural-log.ts +0 -41
  469. package/src/mcp/tools/structural-review.ts +0 -63
  470. package/src/mcp/tools/workspace-authorizations.ts +0 -14
  471. package/src/mcp/tools/workspace-authorize.ts +0 -20
  472. package/src/mcp/tools/workspace-bind.ts +0 -25
  473. package/src/mcp/tools/workspace-rebind.ts +0 -25
  474. package/src/mcp/tools/workspace-revoke.ts +0 -18
  475. package/src/mcp/tools/workspace-status.ts +0 -12
  476. package/src/mcp/warp-pool.ts +0 -36
  477. package/src/mcp/workspace-read-observation-model.ts +0 -48
  478. package/src/mcp/workspace-read-observation.ts +0 -103
  479. package/src/mcp/workspace-router-capability.ts +0 -32
  480. package/src/mcp/workspace-router-history.ts +0 -233
  481. package/src/mcp/workspace-router-model.ts +0 -131
  482. package/src/mcp/workspace-router-resolution.ts +0 -71
  483. package/src/mcp/workspace-router-runtime.ts +0 -246
  484. package/src/mcp/workspace-router.ts +0 -688
  485. package/src/metrics/logger.ts +0 -40
  486. package/src/metrics/types.ts +0 -40
  487. package/src/operations/adaptive-projection.ts +0 -54
  488. package/src/operations/agent-handoff.ts +0 -59
  489. package/src/operations/cached-file.ts +0 -40
  490. package/src/operations/capture-range.ts +0 -64
  491. package/src/operations/conversation-primer.ts +0 -82
  492. package/src/operations/cross-session-resume.ts +0 -104
  493. package/src/operations/deterministic-replay.ts +0 -143
  494. package/src/operations/diff-identity.ts +0 -127
  495. package/src/operations/export-surface-diff.ts +0 -355
  496. package/src/operations/file-outline.ts +0 -48
  497. package/src/operations/footprint-parallelism.ts +0 -98
  498. package/src/operations/graft-diff.ts +0 -169
  499. package/src/operations/horizon-of-readability.ts +0 -60
  500. package/src/operations/import-reference-impact.ts +0 -143
  501. package/src/operations/knowledge-map.ts +0 -96
  502. package/src/operations/observation-cache.ts +0 -165
  503. package/src/operations/projection-safety.ts +0 -111
  504. package/src/operations/read-range.ts +0 -64
  505. package/src/operations/repo-workspace.ts +0 -339
  506. package/src/operations/result-dto.ts +0 -23
  507. package/src/operations/safe-read.ts +0 -118
  508. package/src/operations/semantic-drift.ts +0 -70
  509. package/src/operations/session-filtration.ts +0 -76
  510. package/src/operations/session-replay.ts +0 -73
  511. package/src/operations/sludge-detector.ts +0 -356
  512. package/src/operations/state.ts +0 -66
  513. package/src/operations/structural-blame.ts +0 -197
  514. package/src/operations/structural-review.ts +0 -317
  515. package/src/operations/structured-buffer-compare.ts +0 -429
  516. package/src/operations/structured-buffer-model.ts +0 -456
  517. package/src/operations/structured-buffer-query.ts +0 -794
  518. package/src/operations/structured-buffer.ts +0 -181
  519. package/src/operations/teaching-hints.ts +0 -52
  520. package/src/parser/diff.ts +0 -320
  521. package/src/parser/lang.ts +0 -71
  522. package/src/parser/markdown.ts +0 -197
  523. package/src/parser/outline.ts +0 -316
  524. package/src/parser/runtime.ts +0 -71
  525. package/src/parser/types.ts +0 -75
  526. package/src/policy/evaluate.ts +0 -178
  527. package/src/policy/graftignore.ts +0 -6
  528. package/src/policy/types.ts +0 -87
  529. package/src/ports/codec.ts +0 -13
  530. package/src/ports/filesystem.ts +0 -18
  531. package/src/ports/git.ts +0 -16
  532. package/src/ports/guards.ts +0 -68
  533. package/src/ports/paths.ts +0 -22
  534. package/src/ports/process-runner.ts +0 -22
  535. package/src/release/security-gate.ts +0 -102
  536. package/src/session/tracker.ts +0 -145
  537. package/src/session/types.ts +0 -23
  538. package/src/version.ts +0 -3
  539. package/src/warp/ast-emitter.ts +0 -133
  540. package/src/warp/ast-import-resolver.ts +0 -333
  541. package/src/warp/commit-meta.ts +0 -19
  542. package/src/warp/context.ts +0 -48
  543. package/src/warp/dead-symbols.ts +0 -174
  544. package/src/warp/drift-sentinel.ts +0 -101
  545. package/src/warp/index-head.ts +0 -348
  546. package/src/warp/observers.ts +0 -101
  547. package/src/warp/open.ts +0 -67
  548. package/src/warp/outline-diff-trailer.ts +0 -100
  549. package/src/warp/plumbing.d.ts +0 -24
  550. package/src/warp/refactor-difficulty.ts +0 -257
  551. package/src/warp/references.ts +0 -77
  552. package/src/warp/stale-docs.ts +0 -210
  553. package/src/warp/structural-drift-detection.ts +0 -97
  554. package/src/warp/structural-queries.ts +0 -258
  555. package/src/warp/symbol-timeline.ts +0 -209
  556. package/src/warp/traverse-hydrate.ts +0 -61
  557. package/src/warp/warp-reference-count.ts +0 -47
  558. package/src/warp/warp-structural-blame.ts +0 -65
  559. package/src/warp/warp-structural-churn.ts +0 -309
  560. package/src/warp/warp-structural-log.ts +0 -149
  561. package/src/warp/writer-id.ts +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"warp-structural-log.js","sourceRoot":"","sources":["../../src/warp/warp-structural-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warp-structural-log.js","sourceRoot":"","sources":["../../src/warp/warp-structural-log.ts"],"names":[],"mappings":"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"}
package/docs/CLI.md CHANGED
@@ -14,10 +14,12 @@ flowchart LR
14
14
  B --> B6[index]
15
15
  B --> B7[migrate local-history]
16
16
  B --> B8[enhance]
17
+ B --> B9[review]
17
18
  C --> C1[read]
18
19
  C --> C2[struct]
19
20
  C --> C3[symbol]
20
21
  C --> C4[diag]
22
+ C --> C5[review]
21
23
  ```
22
24
 
23
25
  ## What it is for
@@ -27,6 +29,10 @@ flowchart LR
27
29
  - read-only daemon status inspection via `graft daemon status`
28
30
  - bounded, lazy WARP refresh via `graft index --path <path>`
29
31
  - one-time legacy import via `graft migrate local-history`
32
+ - human-facing structural review summaries via `graft review`
33
+ - review-loop readiness via `graft review cooldown`
34
+ - structural/reference test coverage maps via `graft struct test-coverage`
35
+ - dead-symbol cleanup candidates via `graft struct dead-symbols`
30
36
  - Git-facing structural review summaries via `git graft enhance`
31
37
  - local debugging and dogfooding of MCP peer commands
32
38
  - human-facing inspection of bounded state such as:
@@ -35,12 +41,14 @@ flowchart LR
35
41
  - `graft diag doctor`
36
42
  - `graft doctor --sludge`
37
43
  - `graft diag stats`
44
+ - `graft symbol history`
38
45
  - `graft symbol difficulty`
39
46
 
40
47
  ## Core namespaces
41
48
  - `read` — bounded reads and change checks
42
- - `struct` — structural diff / since / map
43
- - `symbol` — precision show / find / blame / difficulty
49
+ - `struct` — structural diff / since / map / review / test-coverage / dead-symbols
50
+ - `symbol` — precision show / find / blame / history / difficulty
51
+ - `review` — structural review and review-loop readiness
44
52
  - `diag` — activity, local-history-dag, doctor, explain, stats, capture
45
53
 
46
54
  ## Release-facing commands
@@ -55,9 +63,18 @@ graft diag activity --json
55
63
  graft diag local-history-dag --json
56
64
  graft diag doctor --json
57
65
  graft doctor --sludge --json
66
+ graft review --base HEAD~1
67
+ graft review --base origin/main --head HEAD --json
68
+ graft review cooldown --pr 48
69
+ graft review cooldown --comments-file comments.json --now 2026-05-05T15:10:00.000Z --json
58
70
  graft symbol find 'create*' --json
71
+ graft symbol history createUser --path src/users.ts
59
72
  graft symbol difficulty createUser --path src/users.ts --json
60
73
  graft struct diff --json
74
+ graft struct test-coverage --src src --tests test
75
+ graft struct test-coverage --src src --tests test --json
76
+ graft struct dead-symbols --limit 20
77
+ graft struct dead-symbols --limit 20 --json
61
78
  git graft enhance --since HEAD~1
62
79
  git-graft enhance --since HEAD~1
63
80
  git-graft enhance --since HEAD~1 --json
@@ -73,14 +90,55 @@ pnpm graft diag activity
73
90
 
74
91
  Bare `graft ...` only works when the package is installed or linked onto your `PATH`.
75
92
 
93
+ `graft review --base <ref> [--head <ref>] [--json]` renders the
94
+ repo-local structural review summary backed by the same `graft_review`
95
+ model as MCP and `graft struct review`. Human output separates
96
+ structural files from formatting, test, docs, and config churn. JSON
97
+ output keeps the schema-validated `graft.cli.struct_review` payload for
98
+ agents. GitHub PR-number resolution and comment posting are intentionally
99
+ outside this first slice; check out or fetch the PR branch and compare
100
+ refs locally.
101
+
102
+ `graft review cooldown [--pr <number>] [--comments-file <path>] [--now
103
+ <iso>] [--json]` reads PR comments, detects CodeRabbit rate-limit
104
+ markers, and reports whether another automated review request is ready,
105
+ still cooling down, or unknown. Without `--comments-file` it shells out
106
+ to `gh pr view [<number>] --json comments`; fixtures can use
107
+ `--comments-file` to validate the same logic without network or GitHub
108
+ state. Human output includes local timestamps; JSON output keeps the
109
+ schema-validated `graft.cli.review_cooldown` payload.
110
+
111
+ `graft struct test-coverage [--src <path>] [--tests <path>] [--json]`
112
+ renders a structural/reference coverage map for exported source symbols.
113
+ The default paths are `src` and `test`. Human output lists summary
114
+ counts, limitations, and per-symbol `covered` / `uncovered` status.
115
+ JSON output keeps the schema-validated
116
+ `graft.cli.struct_test_coverage` payload. This command does not run
117
+ tests or claim line, branch, statement, or execution coverage; imports
118
+ and mentions in test files can count as structural references.
119
+
120
+ `graft struct dead-symbols [--limit <n>] [--json]` lists symbols removed
121
+ from indexed WARP history and not subsequently re-added. Human output is
122
+ intended for cleanup and API-surface shrinkage review; JSON output keeps
123
+ the schema-validated `graft.cli.struct_dead_symbols` payload backed by
124
+ the `graft_dead_symbols` MCP peer.
125
+
126
+ `graft symbol history <symbol> [--path <path>] [--json]` renders the
127
+ same provenance-backed history as `graft symbol blame`, with a
128
+ timeline-first human view over creation, signature-change, and reference
129
+ facts. JSON output remains the schema-validated `graft.cli.symbol_blame`
130
+ payload so the alias does not create a second wire shape for the same
131
+ WARP truth.
132
+
76
133
  `git graft enhance --since <ref> [--head <ref>] [--json]` is the
77
134
  installed Git external-command form for the release-facing structural
78
135
  review aggregator. `git-graft enhance --since <ref>` is the direct
79
136
  package binary form. Both route through the same top-level `enhance`
80
137
  parser path. The command composes the shipped structural-since and
81
- export-surface facts into a concise review summary; it does not wrap
82
- arbitrary Git subcommands or expand into provenance, blame, reference, or
83
- write-tool behavior.
138
+ export-surface facts into a concise review summary, plus bounded
139
+ provenance hints for changed symbols when WARP blame data is available.
140
+ It does not wrap arbitrary Git subcommands or expand into unbounded
141
+ reference traversal or write-tool behavior.
84
142
 
85
143
  `graft diag activity` is the current human-facing between-commit surface. It reports bounded local `artifact_history`, not canonical provenance, and now renders a textual operator summary by default. Use `--json` when you want the structured machine-readable form.
86
144
 
package/docs/MCP.md CHANGED
@@ -63,7 +63,8 @@ flow:
63
63
  ## Key Tool Groups
64
64
  - **Bounded Reads**: `safe_read`, `file_outline`, `read_range`, `changed_since`
65
65
  - **Governed Edits**: `graft_edit`
66
- - **Structural History**: `graft_diff`, `graft_since`, `graft_map`
66
+ - **Structural History**: `graft_diff`, `graft_since`, `graft_map`,
67
+ `graft_review`, `graft_test_coverage`, `graft_dead_symbols`
67
68
  - **Structural Metrics**: `graft_churn`, `graft_difficulty`
68
69
  - **Precision**: `code_show`, `code_find`, `code_refs`
69
70
  - **Activity & Footing**: `activity_view`, `causal_status`, `causal_attach`, `doctor`
package/docs/SETUP.md CHANGED
@@ -424,7 +424,7 @@ Add to `.claude/settings.json` in your project root:
424
424
  "hooks": [
425
425
  {
426
426
  "type": "command",
427
- "command": "node --import tsx node_modules/@flyingrobots/graft/src/hooks/pretooluse-read.ts"
427
+ "command": "node node_modules/@flyingrobots/graft/dist/hooks/pretooluse-read.js"
428
428
  }
429
429
  ]
430
430
  }
@@ -435,7 +435,7 @@ Add to `.claude/settings.json` in your project root:
435
435
  "hooks": [
436
436
  {
437
437
  "type": "command",
438
- "command": "node --import tsx node_modules/@flyingrobots/graft/src/hooks/posttooluse-read.ts"
438
+ "command": "node node_modules/@flyingrobots/graft/dist/hooks/posttooluse-read.js"
439
439
  }
440
440
  ]
441
441
  }
@@ -450,12 +450,16 @@ Project-local shortcut:
450
450
  npx @flyingrobots/graft init --write-claude-hooks
451
451
  ```
452
452
 
453
- If developing graft itself, replace the `node_modules/...` paths
454
- with local paths:
453
+ Rerunning this command also upgrades generated v0.7.0 hook commands
454
+ that pointed at `src/hooks/*.ts` to the published `dist/hooks/*.js`
455
+ entry points.
455
456
 
456
- ```
457
- src/hooks/pretooluse-read.ts (PreToolUse)
458
- src/hooks/posttooluse-read.ts (PostToolUse)
457
+ If developing graft itself, run `pnpm build` and replace the
458
+ `node_modules/...` paths with local paths:
459
+
460
+ ```text
461
+ dist/hooks/pretooluse-read.js (PreToolUse)
462
+ dist/hooks/posttooluse-read.js (PostToolUse)
459
463
  ```
460
464
 
461
465
  ### PreToolUse — ban enforcement
package/package.json CHANGED
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "name": "@flyingrobots/graft",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Context governor and between-commit activity surface for coding agents",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.30.0",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
+ "sideEffects": [
10
+ "dist/parser/runtime.js",
11
+ "dist/operations/structured-buffer-model.js"
12
+ ],
9
13
  "exports": {
10
14
  ".": {
11
15
  "types": "./dist/index.d.ts",
@@ -20,7 +24,6 @@
20
24
  "files": [
21
25
  "bin/",
22
26
  "dist/",
23
- "src/",
24
27
  "ADVANCED_GUIDE.md",
25
28
  "ARCHITECTURE.md",
26
29
  "CHANGELOG.md",
@@ -37,6 +40,7 @@
37
40
  "graft": "node ./bin/graft.js",
38
41
  "build": "tsc -p tsconfig.build.json",
39
42
  "prepack": "pnpm build",
43
+ "prepublishOnly": "pnpm release:check",
40
44
  "test": "tsx scripts/run-isolated-tests.ts",
41
45
  "test:local": "vitest run",
42
46
  "test:watch": "vitest",
@@ -86,8 +90,8 @@
86
90
  "@git-stunts/plumbing": "^2.8.0",
87
91
  "@modelcontextprotocol/sdk": "^1.29.0",
88
92
  "picomatch": "^4.0.4",
93
+ "tree-sitter-graphql-grammar-wasm": "1.0.1",
89
94
  "tree-sitter-wasms": "0.1.13",
90
- "tsx": "^4.21.0",
91
95
  "web-tree-sitter": "^0.20.8",
92
96
  "zod": "4.3.6"
93
97
  },
@@ -97,6 +101,7 @@
97
101
  "@types/picomatch": "^4.0.2",
98
102
  "eslint": "^10.1.0",
99
103
  "globals": "^17.4.0",
104
+ "tsx": "^4.21.0",
100
105
  "typescript": "^6.0.2",
101
106
  "typescript-eslint": "^8.58.0",
102
107
  "vite": "^8.0.5",
@@ -106,7 +111,10 @@
106
111
  "onlyBuiltDependencies": [],
107
112
  "overrides": {
108
113
  "vite": "^8.0.5",
109
- "hono": ">=4.12.14"
114
+ "hono": "4.12.18",
115
+ "fast-uri": "3.1.2",
116
+ "ip-address": "10.2.0",
117
+ "postcss": "8.5.12"
110
118
  }
111
119
  }
112
120
  }
@@ -1,56 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // CanonicalJsonCodec — deterministic JSON with sorted keys
3
- // ---------------------------------------------------------------------------
4
- //
5
- // Subset of RFC 8785 (JSON Canonicalization Scheme):
6
- // - Object keys sorted lexicographically at every nesting level
7
- // - Compact output (no whitespace)
8
- // - Deterministic: same data always produces the same string
9
- //
10
- // Enables stable hashes, diffable logs, reproducible receipts.
11
- // ---------------------------------------------------------------------------
12
-
13
- import type { JsonCodec } from "../ports/codec.js";
14
-
15
- function isPlainObject(value: unknown): value is Record<string, unknown> {
16
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
17
- return false;
18
- }
19
- const proto = Object.getPrototypeOf(value) as unknown;
20
- return proto === Object.prototype || proto === null;
21
- }
22
-
23
- function sortDeep(value: unknown, seen = new WeakSet()): unknown {
24
- if (value === null || typeof value !== "object") {
25
- return value;
26
- }
27
- if (!isPlainObject(value) && !Array.isArray(value)) {
28
- return value;
29
- }
30
- if (seen.has(value)) {
31
- throw new TypeError("Converting circular structure to JSON");
32
- }
33
- seen.add(value);
34
- try {
35
- if (Array.isArray(value)) {
36
- return value.map((v) => sortDeep(v, seen));
37
- }
38
- const sorted: Record<string, unknown> = {};
39
- for (const key of Object.keys(value).sort()) {
40
- sorted[key] = sortDeep(value[key], seen);
41
- }
42
- return sorted;
43
- } finally {
44
- seen.delete(value);
45
- }
46
- }
47
-
48
- export class CanonicalJsonCodec implements JsonCodec {
49
- encode(value: unknown): string {
50
- return JSON.stringify(sortDeep(value));
51
- }
52
-
53
- decode(data: string): unknown {
54
- return JSON.parse(data) as unknown;
55
- }
56
- }
@@ -1,11 +0,0 @@
1
- import { type JsonObject, parseJsonObject } from "../contracts/json-object.js";
2
-
3
- export function parseJsonTextObject(text: string, label: string): JsonObject {
4
- let parsed: unknown;
5
- try {
6
- parsed = JSON.parse(text) as unknown;
7
- } catch {
8
- throw new Error(`${label} was not valid JSON`);
9
- }
10
- return parseJsonObject(parsed, label);
11
- }
@@ -1,43 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Node.js filesystem adapter — implements the FileSystem port
3
- // ---------------------------------------------------------------------------
4
-
5
- import * as fs from "node:fs";
6
- import * as fsp from "node:fs/promises";
7
- import type { FileSystem } from "../ports/filesystem.js";
8
-
9
- class NodeFileSystem implements FileSystem {
10
- readFile(path: string, encoding: "utf-8"): Promise<string>;
11
- readFile(path: string): Promise<Buffer>;
12
- readFile(path: string, encoding?: "utf-8"): Promise<string | Buffer> {
13
- if (encoding !== undefined) return fsp.readFile(path, encoding);
14
- return fsp.readFile(path);
15
- }
16
-
17
- readdir(path: string): Promise<string[]> {
18
- return fsp.readdir(path);
19
- }
20
-
21
- writeFile(path: string, data: string, encoding: "utf-8"): Promise<void> {
22
- return fsp.writeFile(path, data, encoding);
23
- }
24
-
25
- appendFile(path: string, data: string, encoding: "utf-8"): Promise<void> {
26
- return fsp.appendFile(path, data, encoding);
27
- }
28
-
29
- async mkdir(path: string, options: { recursive: true }): Promise<void> {
30
- await fsp.mkdir(path, options);
31
- }
32
-
33
- async stat(path: string): Promise<{ size: number }> {
34
- const s = await fsp.stat(path);
35
- return { size: s.size };
36
- }
37
-
38
- readFileSync(path: string, encoding: "utf-8"): string {
39
- return fs.readFileSync(path, encoding);
40
- }
41
- }
42
-
43
- export const nodeFs: FileSystem = new NodeFileSystem();
@@ -1,47 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // NodeGitClient — implements the GitClient port via GitPlumbing
3
- // ---------------------------------------------------------------------------
4
-
5
- import GitPlumbing from "@git-stunts/plumbing";
6
- import type { GitClient, GitRunRequest } from "../ports/git.js";
7
-
8
- class NodeGitClient implements GitClient {
9
- private readonly clients = new Map<string, GitPlumbing>();
10
-
11
- private resolveClient(cwd: string): GitPlumbing {
12
- const cached = this.clients.get(cwd);
13
- if (cached !== undefined) return cached;
14
- const created = GitPlumbing.createDefault({ cwd });
15
- this.clients.set(cwd, created);
16
- return created;
17
- }
18
-
19
- async run(request: GitRunRequest) {
20
- try {
21
- const plumbing = this.resolveClient(request.cwd);
22
- const stream = await plumbing.executeStream({ args: [...request.args] });
23
- const stdout = await stream.collect({
24
- asString: true,
25
- ...(request.maxBufferBytes !== undefined ? { maxBytes: request.maxBufferBytes } : {}),
26
- });
27
- const finished = await stream.finished;
28
- const error = "error" in finished && finished.error instanceof Error ? finished.error : undefined;
29
- return {
30
- status: finished.code,
31
- stdout: typeof stdout === "string" ? stdout : new TextDecoder().decode(stdout),
32
- stderr: finished.stderr,
33
- ...(error !== undefined ? { error } : {}),
34
- };
35
- } catch (error: unknown) {
36
- const normalized = error instanceof Error ? error : new Error(String(error));
37
- return {
38
- status: 1,
39
- stdout: "",
40
- stderr: normalized.message,
41
- error: normalized,
42
- };
43
- }
44
- }
45
- }
46
-
47
- export const nodeGit: GitClient = new NodeGitClient();
@@ -1,35 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Node PathOps adapter — implements PathOps using node:path
3
- // ---------------------------------------------------------------------------
4
-
5
- import * as path from "node:path";
6
- import type { PathOps } from "../ports/paths.js";
7
-
8
- function toForwardSlash(p: string): string {
9
- return p.replaceAll("\\", "/");
10
- }
11
-
12
- function stripTrailingSlash(p: string): string {
13
- if (p === "/") return p;
14
- return p.endsWith("/") ? p.slice(0, -1) : p;
15
- }
16
-
17
- function normalizeImpl(p: string): string {
18
- return stripTrailingSlash(toForwardSlash(path.normalize(p)));
19
- }
20
-
21
- export const nodePathOps: PathOps = {
22
- normalize(p: string): string {
23
- return normalizeImpl(p);
24
- },
25
-
26
- isWithin(filePath: string, directory: string): boolean {
27
- const normFile = normalizeImpl(filePath);
28
- const normDir = normalizeImpl(directory);
29
- return normFile === normDir || normFile.startsWith(`${normDir}/`);
30
- },
31
-
32
- join(...segments: string[]): string {
33
- return normalizeImpl(path.join(...segments));
34
- },
35
- };
@@ -1,27 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // NodeProcessRunner — implements the ProcessRunner port
3
- // ---------------------------------------------------------------------------
4
-
5
- import { spawnSync } from "node:child_process";
6
- import type { ProcessRunRequest, ProcessRunResult, ProcessRunner } from "../ports/process-runner.js";
7
-
8
- class NodeProcessRunner implements ProcessRunner {
9
- run(request: ProcessRunRequest): ProcessRunResult {
10
- const result = spawnSync(request.command, [...request.args], {
11
- cwd: request.cwd,
12
- encoding: "utf-8",
13
- stdio: ["pipe", "pipe", "pipe"],
14
- ...(request.timeoutMs !== undefined ? { timeout: request.timeoutMs } : {}),
15
- ...(request.maxBufferBytes !== undefined ? { maxBuffer: request.maxBufferBytes } : {}),
16
- });
17
-
18
- return {
19
- status: result.status,
20
- stdout: typeof result.stdout === "string" ? result.stdout : "",
21
- stderr: typeof result.stderr === "string" ? result.stderr : "",
22
- ...(result.error !== undefined ? { error: result.error } : {}),
23
- };
24
- }
25
- }
26
-
27
- export const nodeProcessRunner: ProcessRunner = new NodeProcessRunner();
@@ -1,63 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
-
4
- function pathEscapesRoot(root: string, target: string): boolean {
5
- const relative = path.relative(root, target);
6
- return relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative);
7
- }
8
-
9
- function realPathOrSelf(target: string): string {
10
- try {
11
- return fs.realpathSync.native(target);
12
- } catch {
13
- return target;
14
- }
15
- }
16
-
17
- function nearestExistingAncestor(target: string): string {
18
- let current = target;
19
- while (current.length > 0) {
20
- try {
21
- fs.lstatSync(current);
22
- return current;
23
- } catch {
24
- const parent = path.dirname(current);
25
- if (parent === current) {
26
- return current;
27
- }
28
- current = parent;
29
- }
30
- }
31
- return target;
32
- }
33
-
34
- export function createRepoPathResolver(projectRoot: string): (input: string) => string {
35
- const normalizedRoot = path.resolve(projectRoot);
36
- const realProjectRoot = realPathOrSelf(normalizedRoot);
37
-
38
- return (input: string): string => {
39
- const resolved = path.isAbsolute(input)
40
- ? path.resolve(input)
41
- : path.resolve(normalizedRoot, input);
42
-
43
- if (pathEscapesRoot(normalizedRoot, resolved)) {
44
- throw new Error(`Path traversal blocked: ${input}`);
45
- }
46
-
47
- const realAncestor = realPathOrSelf(nearestExistingAncestor(resolved));
48
- if (pathEscapesRoot(realProjectRoot, realAncestor)) {
49
- throw new Error(`Path traversal blocked: ${input}`);
50
- }
51
-
52
- return resolved;
53
- };
54
- }
55
-
56
- export function toRepoPolicyPath(projectRoot: string, filePath: string): string {
57
- const absolutePath = path.isAbsolute(filePath) ? filePath : path.resolve(projectRoot, filePath);
58
- const relativePath = path.relative(projectRoot, absolutePath);
59
- if (relativePath.length === 0 || relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
60
- return absolutePath;
61
- }
62
- return relativePath.split(path.sep).join("/");
63
- }
@@ -1,66 +0,0 @@
1
- import * as path from "node:path";
2
- import type { JsonCodec } from "../ports/codec.js";
3
- import type { FileSystem } from "../ports/filesystem.js";
4
-
5
- export interface RotatingNdjsonLogOptions {
6
- readonly fs: FileSystem;
7
- readonly codec: JsonCodec;
8
- readonly logPath: string;
9
- readonly maxBytes?: number;
10
- }
11
-
12
- const DEFAULT_MAX_BYTES = 1_048_576;
13
-
14
- export class RotatingNdjsonLog {
15
- private readonly fs: FileSystem;
16
- private readonly codec: JsonCodec;
17
- private readonly logPath: string;
18
- private readonly maxBytes: number;
19
-
20
- constructor(options: RotatingNdjsonLogOptions) {
21
- this.fs = options.fs;
22
- this.codec = options.codec;
23
- this.logPath = options.logPath;
24
- this.maxBytes = options.maxBytes ?? DEFAULT_MAX_BYTES;
25
- }
26
-
27
- async append(entry: object): Promise<void> {
28
- const line = this.codec.encode(entry) + "\n";
29
- const dir = path.dirname(this.logPath);
30
- await this.fs.mkdir(dir, { recursive: true });
31
- await this.fs.appendFile(this.logPath, line, "utf-8");
32
- await this.rotateIfNeeded();
33
- }
34
-
35
- private async rotateIfNeeded(): Promise<void> {
36
- let stat: { size: number };
37
- try {
38
- stat = await this.fs.stat(this.logPath);
39
- } catch {
40
- return;
41
- }
42
-
43
- if (stat.size <= this.maxBytes) {
44
- return;
45
- }
46
-
47
- const content = await this.fs.readFile(this.logPath, "utf-8");
48
- const lines = content.trimEnd().split("\n");
49
- let kept = lines.slice(Math.ceil(lines.length / 2));
50
-
51
- // If slicing left nothing (e.g. a single oversized entry), skip rotation —
52
- // the file is already at minimum size (one entry).
53
- if (kept.length === 0) {
54
- return;
55
- }
56
-
57
- let result = kept.join("\n") + "\n";
58
-
59
- while (Buffer.byteLength(result, "utf-8") > this.maxBytes && kept.length > 1) {
60
- kept = kept.slice(Math.ceil(kept.length / 2));
61
- result = kept.join("\n") + "\n";
62
- }
63
-
64
- await this.fs.writeFile(this.logPath, result, "utf-8");
65
- }
66
- }