@flyingrobots/graft 0.7.1 → 0.9.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 (366) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/GUIDE.md +8 -3
  3. package/README.md +128 -85
  4. package/dist/adapters/fake-echo-kernel-transport.d.ts +33 -0
  5. package/dist/adapters/fake-echo-kernel-transport.d.ts.map +1 -0
  6. package/dist/adapters/fake-echo-kernel-transport.js +208 -0
  7. package/dist/adapters/fake-echo-kernel-transport.js.map +1 -0
  8. package/dist/api/index.d.ts +3 -0
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/cli/cli-error.d.ts.map +1 -1
  13. package/dist/cli/cli-error.js +22 -3
  14. package/dist/cli/cli-error.js.map +1 -1
  15. package/dist/cli/command-parser.d.ts.map +1 -1
  16. package/dist/cli/command-parser.js +62 -6
  17. package/dist/cli/command-parser.js.map +1 -1
  18. package/dist/cli/dead-symbols-render.d.ts +2 -0
  19. package/dist/cli/dead-symbols-render.d.ts.map +1 -0
  20. package/dist/cli/dead-symbols-render.js +23 -0
  21. package/dist/cli/dead-symbols-render.js.map +1 -0
  22. package/dist/cli/doctor-render.d.ts +2 -0
  23. package/dist/cli/doctor-render.d.ts.map +1 -0
  24. package/dist/cli/doctor-render.js +80 -0
  25. package/dist/cli/doctor-render.js.map +1 -0
  26. package/dist/cli/entrypoint.d.ts +1 -0
  27. package/dist/cli/entrypoint.d.ts.map +1 -1
  28. package/dist/cli/entrypoint.js +1 -0
  29. package/dist/cli/entrypoint.js.map +1 -1
  30. package/dist/cli/git-graft-enhance-model.d.ts +33 -3
  31. package/dist/cli/git-graft-enhance-model.d.ts.map +1 -1
  32. package/dist/cli/git-graft-enhance-model.js +38 -0
  33. package/dist/cli/git-graft-enhance-model.js.map +1 -1
  34. package/dist/cli/git-graft-enhance-render.d.ts.map +1 -1
  35. package/dist/cli/git-graft-enhance-render.js +13 -0
  36. package/dist/cli/git-graft-enhance-render.js.map +1 -1
  37. package/dist/cli/git-graft-enhance.d.ts.map +1 -1
  38. package/dist/cli/git-graft-enhance.js +44 -1
  39. package/dist/cli/git-graft-enhance.js.map +1 -1
  40. package/dist/cli/index-cmd.d.ts +1 -0
  41. package/dist/cli/index-cmd.d.ts.map +1 -1
  42. package/dist/cli/index-cmd.js +3 -0
  43. package/dist/cli/index-cmd.js.map +1 -1
  44. package/dist/cli/main.d.ts +2 -0
  45. package/dist/cli/main.d.ts.map +1 -1
  46. package/dist/cli/main.js +24 -2
  47. package/dist/cli/main.js.map +1 -1
  48. package/dist/cli/peer-command.d.ts.map +1 -1
  49. package/dist/cli/peer-command.js +25 -0
  50. package/dist/cli/peer-command.js.map +1 -1
  51. package/dist/cli/review-cooldown.d.ts +15 -0
  52. package/dist/cli/review-cooldown.d.ts.map +1 -0
  53. package/dist/cli/review-cooldown.js +136 -0
  54. package/dist/cli/review-cooldown.js.map +1 -0
  55. package/dist/cli/structural-blame-render.d.ts +2 -0
  56. package/dist/cli/structural-blame-render.d.ts.map +1 -0
  57. package/dist/cli/structural-blame-render.js +42 -0
  58. package/dist/cli/structural-blame-render.js.map +1 -0
  59. package/dist/cli/structural-review-render.d.ts +2 -0
  60. package/dist/cli/structural-review-render.d.ts.map +1 -0
  61. package/dist/cli/structural-review-render.js +56 -0
  62. package/dist/cli/structural-review-render.js.map +1 -0
  63. package/dist/cli/structural-test-coverage-render.d.ts +2 -0
  64. package/dist/cli/structural-test-coverage-render.d.ts.map +1 -0
  65. package/dist/cli/structural-test-coverage-render.js +46 -0
  66. package/dist/cli/structural-test-coverage-render.js.map +1 -0
  67. package/dist/contracts/capabilities.d.ts +9 -6
  68. package/dist/contracts/capabilities.d.ts.map +1 -1
  69. package/dist/contracts/capabilities.js +54 -1
  70. package/dist/contracts/capabilities.js.map +1 -1
  71. package/dist/contracts/causal-ontology.d.ts +17 -17
  72. package/dist/contracts/output-schema-cli.d.ts +106 -41
  73. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  74. package/dist/contracts/output-schema-cli.js +29 -0
  75. package/dist/contracts/output-schema-cli.js.map +1 -1
  76. package/dist/contracts/output-schema-fragments.d.ts +238 -76
  77. package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
  78. package/dist/contracts/output-schema-fragments.js +27 -0
  79. package/dist/contracts/output-schema-fragments.js.map +1 -1
  80. package/dist/contracts/output-schema-mcp.d.ts +171 -62
  81. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  82. package/dist/contracts/output-schema-mcp.js +49 -22
  83. package/dist/contracts/output-schema-mcp.js.map +1 -1
  84. package/dist/contracts/output-schema-meta.d.ts +2 -2
  85. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  86. package/dist/contracts/output-schemas.d.ts +7 -7
  87. package/dist/contracts/output-schemas.d.ts.map +1 -1
  88. package/dist/contracts/output-schemas.js +101 -1
  89. package/dist/contracts/output-schemas.js.map +1 -1
  90. package/dist/echo/canonical-cbor.d.ts +10 -0
  91. package/dist/echo/canonical-cbor.d.ts.map +1 -0
  92. package/dist/echo/canonical-cbor.js +213 -0
  93. package/dist/echo/canonical-cbor.js.map +1 -0
  94. package/dist/echo/codec-runtime.d.ts +72 -0
  95. package/dist/echo/codec-runtime.d.ts.map +1 -0
  96. package/dist/echo/codec-runtime.js +259 -0
  97. package/dist/echo/codec-runtime.js.map +1 -0
  98. package/dist/echo/structural-history-client.d.ts +68 -0
  99. package/dist/echo/structural-history-client.d.ts.map +1 -0
  100. package/dist/echo/structural-history-client.js +149 -0
  101. package/dist/echo/structural-history-client.js.map +1 -0
  102. package/dist/echo/structural-history-envelope-codec.d.ts +46 -0
  103. package/dist/echo/structural-history-envelope-codec.d.ts.map +1 -0
  104. package/dist/echo/structural-history-envelope-codec.js +121 -0
  105. package/dist/echo/structural-history-envelope-codec.js.map +1 -0
  106. package/dist/echo/structural-reading-adapter.d.ts +13 -0
  107. package/dist/echo/structural-reading-adapter.d.ts.map +1 -0
  108. package/dist/echo/structural-reading-adapter.js +120 -0
  109. package/dist/echo/structural-reading-adapter.js.map +1 -0
  110. package/dist/generated/graft-structural-history.codec.generated.d.ts +135 -0
  111. package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -0
  112. package/dist/generated/graft-structural-history.codec.generated.js +545 -0
  113. package/dist/generated/graft-structural-history.codec.generated.js.map +1 -0
  114. package/dist/generated/graft-structural-history.d.ts +331 -0
  115. package/dist/generated/graft-structural-history.d.ts.map +1 -0
  116. package/dist/generated/graft-structural-history.js +47 -0
  117. package/dist/generated/graft-structural-history.js.map +1 -0
  118. package/dist/git/version-guard.d.ts +17 -0
  119. package/dist/git/version-guard.d.ts.map +1 -0
  120. package/dist/git/version-guard.js +51 -0
  121. package/dist/git/version-guard.js.map +1 -0
  122. package/dist/hooks/posttooluse-read.js +2 -2
  123. package/dist/hooks/posttooluse-read.js.map +1 -1
  124. package/dist/mcp/burden.d.ts.map +1 -1
  125. package/dist/mcp/burden.js +4 -0
  126. package/dist/mcp/burden.js.map +1 -1
  127. package/dist/mcp/context.d.ts +5 -1
  128. package/dist/mcp/context.d.ts.map +1 -1
  129. package/dist/mcp/context.js +11 -1
  130. package/dist/mcp/context.js.map +1 -1
  131. package/dist/mcp/daemon-server.d.ts.map +1 -1
  132. package/dist/mcp/daemon-server.js +2 -0
  133. package/dist/mcp/daemon-server.js.map +1 -1
  134. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -1
  135. package/dist/mcp/persisted-local-history-graph.js +2 -1
  136. package/dist/mcp/persisted-local-history-graph.js.map +1 -1
  137. package/dist/mcp/persisted-local-history.d.ts +5 -5
  138. package/dist/mcp/repo-tool-job.d.ts.map +1 -1
  139. package/dist/mcp/repo-tool-job.js +2 -0
  140. package/dist/mcp/repo-tool-job.js.map +1 -1
  141. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -1
  142. package/dist/mcp/repo-tool-worker-context.js +19 -0
  143. package/dist/mcp/repo-tool-worker-context.js.map +1 -1
  144. package/dist/mcp/server-context.d.ts.map +1 -1
  145. package/dist/mcp/server-context.js +17 -0
  146. package/dist/mcp/server-context.js.map +1 -1
  147. package/dist/mcp/server-invocation.d.ts.map +1 -1
  148. package/dist/mcp/server-invocation.js +206 -147
  149. package/dist/mcp/server-invocation.js.map +1 -1
  150. package/dist/mcp/server-tool-access.d.ts.map +1 -1
  151. package/dist/mcp/server-tool-access.js +4 -0
  152. package/dist/mcp/server-tool-access.js.map +1 -1
  153. package/dist/mcp/server.d.ts.map +1 -1
  154. package/dist/mcp/server.js +184 -116
  155. package/dist/mcp/server.js.map +1 -1
  156. package/dist/mcp/stdio-server.d.ts.map +1 -1
  157. package/dist/mcp/stdio-server.js +2 -0
  158. package/dist/mcp/stdio-server.js.map +1 -1
  159. package/dist/mcp/tool-registry.d.ts.map +1 -1
  160. package/dist/mcp/tool-registry.js +9 -1
  161. package/dist/mcp/tool-registry.js.map +1 -1
  162. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  163. package/dist/mcp/tools/changed-since.js +10 -3
  164. package/dist/mcp/tools/changed-since.js.map +1 -1
  165. package/dist/mcp/tools/dead-symbols.d.ts +3 -0
  166. package/dist/mcp/tools/dead-symbols.d.ts.map +1 -0
  167. package/dist/mcp/tools/dead-symbols.js +32 -0
  168. package/dist/mcp/tools/dead-symbols.js.map +1 -0
  169. package/dist/mcp/tools/map.d.ts.map +1 -1
  170. package/dist/mcp/tools/map.js +2 -0
  171. package/dist/mcp/tools/map.js.map +1 -1
  172. package/dist/mcp/tools/precision-warp.d.ts.map +1 -1
  173. package/dist/mcp/tools/precision-warp.js +2 -6
  174. package/dist/mcp/tools/precision-warp.js.map +1 -1
  175. package/dist/mcp/tools/refactor-difficulty.d.ts.map +1 -1
  176. package/dist/mcp/tools/refactor-difficulty.js +2 -0
  177. package/dist/mcp/tools/refactor-difficulty.js.map +1 -1
  178. package/dist/mcp/tools/safe-read.d.ts.map +1 -1
  179. package/dist/mcp/tools/safe-read.js +10 -105
  180. package/dist/mcp/tools/safe-read.js.map +1 -1
  181. package/dist/mcp/tools/structural-blame.d.ts.map +1 -1
  182. package/dist/mcp/tools/structural-blame.js +3 -0
  183. package/dist/mcp/tools/structural-blame.js.map +1 -1
  184. package/dist/mcp/tools/structural-review.d.ts.map +1 -1
  185. package/dist/mcp/tools/structural-review.js +9 -22
  186. package/dist/mcp/tools/structural-review.js.map +1 -1
  187. package/dist/mcp/tools/structural-test-coverage.d.ts +3 -0
  188. package/dist/mcp/tools/structural-test-coverage.d.ts.map +1 -0
  189. package/dist/mcp/tools/structural-test-coverage.js +35 -0
  190. package/dist/mcp/tools/structural-test-coverage.js.map +1 -0
  191. package/dist/mcp/tools/workspace-list-opened.d.ts +3 -0
  192. package/dist/mcp/tools/workspace-list-opened.d.ts.map +1 -0
  193. package/dist/mcp/tools/workspace-list-opened.js +10 -0
  194. package/dist/mcp/tools/workspace-list-opened.js.map +1 -0
  195. package/dist/mcp/tools/workspace-open.d.ts +3 -0
  196. package/dist/mcp/tools/workspace-open.d.ts.map +1 -0
  197. package/dist/mcp/tools/workspace-open.js +34 -0
  198. package/dist/mcp/tools/workspace-open.js.map +1 -0
  199. package/dist/mcp/workspace-router-model.d.ts +27 -0
  200. package/dist/mcp/workspace-router-model.d.ts.map +1 -1
  201. package/dist/mcp/workspace-router-model.js.map +1 -1
  202. package/dist/mcp/workspace-router.d.ts +9 -2
  203. package/dist/mcp/workspace-router.d.ts.map +1 -1
  204. package/dist/mcp/workspace-router.js +145 -1
  205. package/dist/mcp/workspace-router.js.map +1 -1
  206. package/dist/operations/cached-file.d.ts +6 -2
  207. package/dist/operations/cached-file.d.ts.map +1 -1
  208. package/dist/operations/cached-file.js +30 -6
  209. package/dist/operations/cached-file.js.map +1 -1
  210. package/dist/operations/export-surface-diff.d.ts.map +1 -1
  211. package/dist/operations/export-surface-diff.js +2 -0
  212. package/dist/operations/export-surface-diff.js.map +1 -1
  213. package/dist/operations/file-outline.js +2 -2
  214. package/dist/operations/file-outline.js.map +1 -1
  215. package/dist/operations/graft-diff.d.ts.map +1 -1
  216. package/dist/operations/graft-diff.js +2 -0
  217. package/dist/operations/graft-diff.js.map +1 -1
  218. package/dist/operations/projection-safety.d.ts.map +1 -1
  219. package/dist/operations/projection-safety.js +2 -0
  220. package/dist/operations/projection-safety.js.map +1 -1
  221. package/dist/operations/repo-workspace.d.ts.map +1 -1
  222. package/dist/operations/repo-workspace.js +26 -8
  223. package/dist/operations/repo-workspace.js.map +1 -1
  224. package/dist/operations/review-cooldown-status.d.ts +27 -0
  225. package/dist/operations/review-cooldown-status.d.ts.map +1 -0
  226. package/dist/operations/review-cooldown-status.js +115 -0
  227. package/dist/operations/review-cooldown-status.js.map +1 -0
  228. package/dist/operations/safe-read.js +2 -2
  229. package/dist/operations/safe-read.js.map +1 -1
  230. package/dist/operations/sludge-detector.d.ts.map +1 -1
  231. package/dist/operations/sludge-detector.js +2 -1
  232. package/dist/operations/sludge-detector.js.map +1 -1
  233. package/dist/operations/structural-review.js +8 -8
  234. package/dist/operations/structural-review.js.map +1 -1
  235. package/dist/operations/structural-test-coverage-map.d.ts +44 -0
  236. package/dist/operations/structural-test-coverage-map.d.ts.map +1 -0
  237. package/dist/operations/structural-test-coverage-map.js +331 -0
  238. package/dist/operations/structural-test-coverage-map.js.map +1 -0
  239. package/dist/operations/structured-buffer-compare.d.ts.map +1 -1
  240. package/dist/operations/structured-buffer-compare.js +4 -1
  241. package/dist/operations/structured-buffer-compare.js.map +1 -1
  242. package/dist/operations/structured-buffer-model.d.ts +15 -13
  243. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  244. package/dist/operations/structured-buffer-model.js +24 -5
  245. package/dist/operations/structured-buffer-model.js.map +1 -1
  246. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  247. package/dist/operations/structured-buffer-query.js +21 -12
  248. package/dist/operations/structured-buffer-query.js.map +1 -1
  249. package/dist/parser/extractors/common.d.ts +16 -0
  250. package/dist/parser/extractors/common.d.ts.map +1 -0
  251. package/dist/parser/extractors/common.js +23 -0
  252. package/dist/parser/extractors/common.js.map +1 -0
  253. package/dist/parser/extractors/go.d.ts +18 -0
  254. package/dist/parser/extractors/go.d.ts.map +1 -0
  255. package/dist/parser/extractors/go.js +200 -0
  256. package/dist/parser/extractors/go.js.map +1 -0
  257. package/dist/parser/extractors/graphql.d.ts +26 -0
  258. package/dist/parser/extractors/graphql.d.ts.map +1 -0
  259. package/dist/parser/extractors/graphql.js +239 -0
  260. package/dist/parser/extractors/graphql.js.map +1 -0
  261. package/dist/parser/extractors/index.d.ts +4 -0
  262. package/dist/parser/extractors/index.d.ts.map +1 -0
  263. package/dist/parser/extractors/index.js +26 -0
  264. package/dist/parser/extractors/index.js.map +1 -0
  265. package/dist/parser/extractors/json.d.ts +10 -0
  266. package/dist/parser/extractors/json.d.ts.map +1 -0
  267. package/dist/parser/extractors/json.js +75 -0
  268. package/dist/parser/extractors/json.js.map +1 -0
  269. package/dist/parser/extractors/python.d.ts +16 -0
  270. package/dist/parser/extractors/python.d.ts.map +1 -0
  271. package/dist/parser/extractors/python.js +145 -0
  272. package/dist/parser/extractors/python.js.map +1 -0
  273. package/dist/parser/extractors/rust.d.ts +12 -0
  274. package/dist/parser/extractors/rust.d.ts.map +1 -0
  275. package/dist/parser/extractors/rust.js +122 -0
  276. package/dist/parser/extractors/rust.js.map +1 -0
  277. package/dist/parser/extractors/toml.d.ts +10 -0
  278. package/dist/parser/extractors/toml.d.ts.map +1 -0
  279. package/dist/parser/extractors/toml.js +74 -0
  280. package/dist/parser/extractors/toml.js.map +1 -0
  281. package/dist/parser/extractors/typescript.d.ts +13 -0
  282. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  283. package/dist/parser/extractors/typescript.js +179 -0
  284. package/dist/parser/extractors/typescript.js.map +1 -0
  285. package/dist/parser/extractors/yaml.d.ts +13 -0
  286. package/dist/parser/extractors/yaml.d.ts.map +1 -0
  287. package/dist/parser/extractors/yaml.js +93 -0
  288. package/dist/parser/extractors/yaml.js.map +1 -0
  289. package/dist/parser/lang.d.ts +2 -2
  290. package/dist/parser/lang.d.ts.map +1 -1
  291. package/dist/parser/lang.js +19 -1
  292. package/dist/parser/lang.js.map +1 -1
  293. package/dist/parser/outline.d.ts +4 -0
  294. package/dist/parser/outline.d.ts.map +1 -1
  295. package/dist/parser/outline.js +32 -221
  296. package/dist/parser/outline.js.map +1 -1
  297. package/dist/parser/runtime.d.ts +7 -0
  298. package/dist/parser/runtime.d.ts.map +1 -1
  299. package/dist/parser/runtime.js +99 -10
  300. package/dist/parser/runtime.js.map +1 -1
  301. package/dist/parser/types.d.ts +1 -1
  302. package/dist/parser/types.d.ts.map +1 -1
  303. package/dist/parser/types.js.map +1 -1
  304. package/dist/ports/echo-kernel-transport.d.ts +12 -0
  305. package/dist/ports/echo-kernel-transport.d.ts.map +1 -0
  306. package/dist/ports/echo-kernel-transport.js +13 -0
  307. package/dist/ports/echo-kernel-transport.js.map +1 -0
  308. package/dist/ports/provenance-timeline.d.ts +10 -0
  309. package/dist/ports/provenance-timeline.d.ts.map +1 -0
  310. package/dist/ports/provenance-timeline.js +17 -0
  311. package/dist/ports/provenance-timeline.js.map +1 -0
  312. package/dist/ports/semantic-enrichment.d.ts +47 -0
  313. package/dist/ports/semantic-enrichment.d.ts.map +1 -0
  314. package/dist/ports/semantic-enrichment.js +2 -0
  315. package/dist/ports/semantic-enrichment.js.map +1 -0
  316. package/dist/ports/structural-reading.d.ts +100 -0
  317. package/dist/ports/structural-reading.d.ts.map +1 -0
  318. package/dist/ports/structural-reading.js +41 -0
  319. package/dist/ports/structural-reading.js.map +1 -0
  320. package/dist/warp/ast-import-resolver.d.ts.map +1 -1
  321. package/dist/warp/ast-import-resolver.js +2 -1
  322. package/dist/warp/ast-import-resolver.js.map +1 -1
  323. package/dist/warp/dead-symbols.d.ts.map +1 -1
  324. package/dist/warp/dead-symbols.js +4 -7
  325. package/dist/warp/dead-symbols.js.map +1 -1
  326. package/dist/warp/index-head.d.ts +4 -0
  327. package/dist/warp/index-head.d.ts.map +1 -1
  328. package/dist/warp/index-head.js +255 -22
  329. package/dist/warp/index-head.js.map +1 -1
  330. package/dist/warp/observers.d.ts.map +1 -1
  331. package/dist/warp/observers.js +3 -2
  332. package/dist/warp/observers.js.map +1 -1
  333. package/dist/warp/refactor-difficulty.d.ts.map +1 -1
  334. package/dist/warp/refactor-difficulty.js +4 -9
  335. package/dist/warp/refactor-difficulty.js.map +1 -1
  336. package/dist/warp/references.d.ts.map +1 -1
  337. package/dist/warp/references.js +2 -1
  338. package/dist/warp/references.js.map +1 -1
  339. package/dist/warp/semantic-enrichment.d.ts +14 -0
  340. package/dist/warp/semantic-enrichment.d.ts.map +1 -0
  341. package/dist/warp/semantic-enrichment.js +55 -0
  342. package/dist/warp/semantic-enrichment.js.map +1 -0
  343. package/dist/warp/structural-queries.d.ts.map +1 -1
  344. package/dist/warp/structural-queries.js +7 -14
  345. package/dist/warp/structural-queries.js.map +1 -1
  346. package/dist/warp/structural-reading-adapter.d.ts +28 -0
  347. package/dist/warp/structural-reading-adapter.d.ts.map +1 -0
  348. package/dist/warp/structural-reading-adapter.js +94 -0
  349. package/dist/warp/structural-reading-adapter.js.map +1 -0
  350. package/dist/warp/sym-id-codec.d.ts +14 -0
  351. package/dist/warp/sym-id-codec.d.ts.map +1 -0
  352. package/dist/warp/sym-id-codec.js +47 -0
  353. package/dist/warp/sym-id-codec.js.map +1 -0
  354. package/dist/warp/symbol-timeline.d.ts.map +1 -1
  355. package/dist/warp/symbol-timeline.js +6 -14
  356. package/dist/warp/symbol-timeline.js.map +1 -1
  357. package/dist/warp/warp-structural-churn.d.ts.map +1 -1
  358. package/dist/warp/warp-structural-churn.js +6 -10
  359. package/dist/warp/warp-structural-churn.js.map +1 -1
  360. package/dist/warp/warp-structural-log.d.ts.map +1 -1
  361. package/dist/warp/warp-structural-log.js +8 -10
  362. package/dist/warp/warp-structural-log.js.map +1 -1
  363. package/docs/CLI.md +63 -5
  364. package/docs/MCP.md +12 -6
  365. package/docs/SETUP.md +12 -6
  366. package/package.json +13 -4
@@ -0,0 +1,239 @@
1
+ import { OutlineEntry } from "../types.js";
2
+ import { boundSignature, buildJumpEntry, } from "./common.js";
3
+ const DECLARATION_NODE_TYPES = new Set([
4
+ "schema_definition",
5
+ "schema_extension",
6
+ "object_type_definition",
7
+ "object_type_extension",
8
+ "interface_type_definition",
9
+ "interface_type_extension",
10
+ "input_object_type_definition",
11
+ "input_object_type_extension",
12
+ "enum_type_definition",
13
+ "enum_type_extension",
14
+ "scalar_type_definition",
15
+ "scalar_type_extension",
16
+ "union_type_definition",
17
+ "union_type_extension",
18
+ "directive_definition",
19
+ "operation_definition",
20
+ "fragment_definition",
21
+ ]);
22
+ export class GraphqlExtractor {
23
+ extract(root) {
24
+ const entries = [];
25
+ const jumpTable = [];
26
+ for (const definition of this.documentDefinitions(root)) {
27
+ const declaration = this.findDeclaration(definition);
28
+ if (declaration === undefined) {
29
+ continue;
30
+ }
31
+ const entry = this.processDeclaration(declaration);
32
+ if (entry === undefined) {
33
+ continue;
34
+ }
35
+ entries.push(entry);
36
+ jumpTable.push(buildJumpEntry(entry.name, entry.kind, declaration));
37
+ }
38
+ return { entries, jumpTable };
39
+ }
40
+ documentDefinitions(root) {
41
+ const document = root.namedChildren.find((child) => child.type === "document");
42
+ if (document === undefined) {
43
+ return root.namedChildren.filter((child) => child.type === "definition");
44
+ }
45
+ return document.namedChildren.filter((child) => child.type === "definition");
46
+ }
47
+ findDeclaration(node) {
48
+ if (DECLARATION_NODE_TYPES.has(node.type)) {
49
+ return node;
50
+ }
51
+ for (const child of node.namedChildren) {
52
+ const declaration = this.findDeclaration(child);
53
+ if (declaration !== undefined) {
54
+ return declaration;
55
+ }
56
+ }
57
+ return undefined;
58
+ }
59
+ processDeclaration(node) {
60
+ switch (node.type) {
61
+ case "schema_definition":
62
+ case "schema_extension":
63
+ return new OutlineEntry({
64
+ kind: "schema",
65
+ name: node.type === "schema_extension" ? "extend schema" : "schema",
66
+ exported: true,
67
+ signature: this.headerSignature(node),
68
+ });
69
+ case "object_type_definition":
70
+ case "object_type_extension":
71
+ return this.processObjectType(node);
72
+ case "interface_type_definition":
73
+ case "interface_type_extension":
74
+ return this.processInterfaceType(node);
75
+ case "input_object_type_definition":
76
+ case "input_object_type_extension":
77
+ return this.processInputObjectType(node);
78
+ case "enum_type_definition":
79
+ case "enum_type_extension":
80
+ return this.processEnumType(node);
81
+ case "scalar_type_definition":
82
+ case "scalar_type_extension":
83
+ return this.processNamedType(node, "scalar");
84
+ case "union_type_definition":
85
+ case "union_type_extension":
86
+ return this.processNamedType(node, "union");
87
+ case "directive_definition":
88
+ return this.processDirective(node);
89
+ case "operation_definition":
90
+ return this.processOperation(node);
91
+ case "fragment_definition":
92
+ return this.processFragment(node);
93
+ default:
94
+ return undefined;
95
+ }
96
+ }
97
+ processObjectType(node) {
98
+ return this.processNamedType(node, "object", this.fieldChildren(node));
99
+ }
100
+ processInterfaceType(node) {
101
+ return this.processNamedType(node, "interface", this.fieldChildren(node));
102
+ }
103
+ processInputObjectType(node) {
104
+ return this.processNamedType(node, "input", this.inputFieldChildren(node));
105
+ }
106
+ processEnumType(node) {
107
+ return this.processNamedType(node, "enum", this.enumValueChildren(node));
108
+ }
109
+ processNamedType(node, kind = "type", children = []) {
110
+ const name = this.nameText(node);
111
+ if (name === undefined) {
112
+ return undefined;
113
+ }
114
+ return new OutlineEntry({
115
+ kind,
116
+ name: this.extensionName(node, name),
117
+ exported: true,
118
+ signature: this.headerSignature(node),
119
+ ...(children.length > 0 ? { children } : {}),
120
+ });
121
+ }
122
+ processDirective(node) {
123
+ const name = this.nameText(node);
124
+ if (name === undefined) {
125
+ return undefined;
126
+ }
127
+ return new OutlineEntry({
128
+ kind: "directive",
129
+ name: `@${name}`,
130
+ exported: true,
131
+ signature: this.headerSignature(node),
132
+ });
133
+ }
134
+ processOperation(node) {
135
+ const operationType = this.childText(node, "operation_type") ?? "query";
136
+ const name = this.nameText(node) ?? `<anonymous ${operationType}>`;
137
+ const variables = this.childText(node, "variable_definitions") ?? "";
138
+ return new OutlineEntry({
139
+ kind: "operation",
140
+ name,
141
+ exported: true,
142
+ signature: boundSignature(`${operationType} ${name}${variables}`),
143
+ });
144
+ }
145
+ processFragment(node) {
146
+ const name = this.childText(node, "fragment_name");
147
+ if (name === undefined) {
148
+ return undefined;
149
+ }
150
+ const typeCondition = this.childText(node, "type_condition");
151
+ const signature = typeCondition === undefined
152
+ ? `fragment ${name}`
153
+ : `fragment ${name} ${typeCondition}`;
154
+ return new OutlineEntry({
155
+ kind: "fragment",
156
+ name,
157
+ exported: true,
158
+ signature: boundSignature(signature),
159
+ });
160
+ }
161
+ fieldChildren(node) {
162
+ const fields = this.child(node, "fields_definition");
163
+ if (fields === undefined) {
164
+ return [];
165
+ }
166
+ return fields.namedChildren
167
+ .filter((child) => child.type === "field_definition")
168
+ .flatMap((field) => this.fieldEntry(field));
169
+ }
170
+ inputFieldChildren(node) {
171
+ const fields = this.child(node, "input_fields_definition");
172
+ if (fields === undefined) {
173
+ return [];
174
+ }
175
+ return fields.namedChildren
176
+ .filter((child) => child.type === "input_value_definition")
177
+ .flatMap((field) => this.fieldEntry(field));
178
+ }
179
+ enumValueChildren(node) {
180
+ const values = this.child(node, "enum_values_definition");
181
+ if (values === undefined) {
182
+ return [];
183
+ }
184
+ return values.namedChildren
185
+ .filter((child) => child.type === "enum_value_definition")
186
+ .flatMap((value) => {
187
+ const enumValue = this.childText(value, "enum_value");
188
+ if (enumValue === undefined) {
189
+ return [];
190
+ }
191
+ return [new OutlineEntry({
192
+ kind: "enum_value",
193
+ name: enumValue,
194
+ exported: true,
195
+ })];
196
+ });
197
+ }
198
+ fieldEntry(node) {
199
+ const name = this.nameText(node);
200
+ if (name === undefined) {
201
+ return [];
202
+ }
203
+ const args = this.childText(node, "arguments_definition") ?? "";
204
+ const type = this.childText(node, "type");
205
+ const signature = type === undefined
206
+ ? `${name}${args}`
207
+ : `${name}${args}: ${type}`;
208
+ return [new OutlineEntry({
209
+ kind: node.type === "input_value_definition" ? "input_field" : "field",
210
+ name,
211
+ exported: true,
212
+ signature: boundSignature(signature),
213
+ })];
214
+ }
215
+ extensionName(node, name) {
216
+ return node.type.endsWith("_extension") ? `extend ${name}` : name;
217
+ }
218
+ headerSignature(node) {
219
+ const body = node.namedChildren.find((child) => child.type === "fields_definition"
220
+ || child.type === "input_fields_definition"
221
+ || child.type === "enum_values_definition"
222
+ || child.type === "root_operation_type_definition"
223
+ || child.type === "selection_set");
224
+ const raw = body === undefined
225
+ ? node.text
226
+ : node.text.slice(0, Math.max(0, body.startIndex - node.startIndex)).trim();
227
+ return boundSignature(raw.replace(/\s*\{\s*$/, "").replace(/\s+/g, " "));
228
+ }
229
+ nameText(node) {
230
+ return this.childText(node, "name");
231
+ }
232
+ childText(node, childType) {
233
+ return this.child(node, childType)?.text;
234
+ }
235
+ child(node, childType) {
236
+ return node.namedChildren.find((child) => child.type === childType);
237
+ }
238
+ }
239
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/parser/extractors/graphql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SupportedLang } from "../lang.js";
2
+ import { type LanguageExtractor } from "./common.js";
3
+ export declare function getExtractor(lang: SupportedLang): LanguageExtractor;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parser/extractors/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAyBrD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAEnE"}
@@ -0,0 +1,26 @@
1
+ import {} from "./common.js";
2
+ import { TypescriptExtractor } from "./typescript.js";
3
+ import { RustExtractor } from "./rust.js";
4
+ import { GraphqlExtractor } from "./graphql.js";
5
+ import { PythonExtractor } from "./python.js";
6
+ import { GoExtractor } from "./go.js";
7
+ import { JsonExtractor } from "./json.js";
8
+ import { TomlExtractor } from "./toml.js";
9
+ import { YamlExtractor } from "./yaml.js";
10
+ const typescriptExtractor = new TypescriptExtractor();
11
+ const EXTRACTORS = {
12
+ ts: typescriptExtractor,
13
+ tsx: typescriptExtractor,
14
+ js: typescriptExtractor,
15
+ rust: new RustExtractor(),
16
+ graphql: new GraphqlExtractor(),
17
+ python: new PythonExtractor(),
18
+ go: new GoExtractor(),
19
+ json: new JsonExtractor(),
20
+ toml: new TomlExtractor(),
21
+ yaml: new YamlExtractor(),
22
+ };
23
+ export function getExtractor(lang) {
24
+ return EXTRACTORS[lang];
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parser/extractors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEtD,MAAM,UAAU,GAA6C;IAC3D,EAAE,EAAE,mBAAmB;IACvB,GAAG,EAAE,mBAAmB;IACxB,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,OAAO,EAAE,IAAI,gBAAgB,EAAE;IAC/B,MAAM,EAAE,IAAI,eAAe,EAAE;IAC7B,EAAE,EAAE,IAAI,WAAW,EAAE;IACrB,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,IAAI,EAAE,IAAI,aAAa,EAAE;CAC1B,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SyntaxNode as TSNode } from "web-tree-sitter";
2
+ import { type ExtractorResult, type LanguageExtractor } from "./common.js";
3
+ export declare class JsonExtractor implements LanguageExtractor {
4
+ extract(root: TSNode): ExtractorResult;
5
+ private objectPairs;
6
+ private processPair;
7
+ private keyName;
8
+ private valueShape;
9
+ }
10
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/parser/extractors/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAGvB,MAAM,aAAa,CAAC;AAIrB,qBAAa,aAAc,YAAW,iBAAiB;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAmBtC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,UAAU;CAmBnB"}
@@ -0,0 +1,75 @@
1
+ import { OutlineEntry } from "../types.js";
2
+ import { boundSignature, buildJumpEntry, } from "./common.js";
3
+ const MAX_JSON_CHILDREN = 32;
4
+ export class JsonExtractor {
5
+ extract(root) {
6
+ const entries = [];
7
+ const jumpTable = [];
8
+ const value = root.namedChildren[0];
9
+ if (value?.type !== "object") {
10
+ return { entries, jumpTable };
11
+ }
12
+ for (const pair of this.objectPairs(value)) {
13
+ const entry = this.processPair(pair);
14
+ if (!entry)
15
+ continue;
16
+ entries.push(entry);
17
+ jumpTable.push(buildJumpEntry(entry.name, entry.kind, pair));
18
+ }
19
+ return { entries, jumpTable };
20
+ }
21
+ objectPairs(node) {
22
+ return node.namedChildren.filter((child) => child.type === "pair");
23
+ }
24
+ processPair(node) {
25
+ const key = this.keyName(node);
26
+ const value = node.childForFieldName("value");
27
+ if (!key || value === null)
28
+ return undefined;
29
+ const children = value.type === "object"
30
+ ? this.objectPairs(value)
31
+ .slice(0, MAX_JSON_CHILDREN)
32
+ .map((pair) => this.processPair(pair))
33
+ .filter((entry) => entry !== undefined)
34
+ : [];
35
+ return new OutlineEntry({
36
+ kind: "field",
37
+ name: key,
38
+ exported: true,
39
+ signature: boundSignature(`${key}: ${this.valueShape(value)}`),
40
+ ...(children.length > 0 ? { children } : {}),
41
+ });
42
+ }
43
+ keyName(node) {
44
+ const key = node.childForFieldName("key");
45
+ if (key === null)
46
+ return undefined;
47
+ try {
48
+ const parsed = JSON.parse(key.text);
49
+ return typeof parsed === "string" ? parsed : undefined;
50
+ }
51
+ catch {
52
+ return key.namedChildren.find((child) => child.type === "string_content")?.text;
53
+ }
54
+ }
55
+ valueShape(node) {
56
+ switch (node.type) {
57
+ case "object":
58
+ return `object (${String(this.objectPairs(node).length)} keys)`;
59
+ case "array":
60
+ return `array (${String(node.namedChildren.length)} items)`;
61
+ case "string":
62
+ return "string";
63
+ case "number":
64
+ return "number";
65
+ case "true":
66
+ case "false":
67
+ return "boolean";
68
+ case "null":
69
+ return "null";
70
+ default:
71
+ return node.type;
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/parser/extractors/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SyntaxNode as TSNode } from "web-tree-sitter";
2
+ import { type ExtractorResult, type LanguageExtractor } from "./common.js";
3
+ export declare class PythonExtractor implements LanguageExtractor {
4
+ extract(root: TSNode): ExtractorResult;
5
+ private processTopLevelStatement;
6
+ private unwrapDecoratedDefinition;
7
+ private processDeclaration;
8
+ private processClass;
9
+ private processFunction;
10
+ private extractName;
11
+ private extractFunctionSignature;
12
+ private extractClassSignature;
13
+ private extractClassChildren;
14
+ private extractAssignment;
15
+ }
16
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/parser/extractors/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAGvB,MAAM,aAAa,CAAC;AAarB,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAetC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,iBAAiB;CAuB1B"}
@@ -0,0 +1,145 @@
1
+ import { OutlineEntry } from "../types.js";
2
+ import { boundSignature, buildJumpEntry, } from "./common.js";
3
+ function isPublicPythonName(name) {
4
+ if (name.startsWith("__") && name.endsWith("__") && name.length > 4) {
5
+ return true;
6
+ }
7
+ return !name.startsWith("_");
8
+ }
9
+ function isUppercaseConstantName(name) {
10
+ return /^[A-Z][A-Z0-9_]*$/u.test(name);
11
+ }
12
+ export class PythonExtractor {
13
+ extract(root) {
14
+ const entries = [];
15
+ const jumpTable = [];
16
+ for (const child of root.namedChildren) {
17
+ const entry = this.processTopLevelStatement(child);
18
+ if (entry) {
19
+ entries.push(entry);
20
+ jumpTable.push(buildJumpEntry(entry.name, entry.kind, child));
21
+ }
22
+ }
23
+ return { entries, jumpTable };
24
+ }
25
+ processTopLevelStatement(node) {
26
+ const declaration = this.unwrapDecoratedDefinition(node);
27
+ if (declaration) {
28
+ return this.processDeclaration(declaration);
29
+ }
30
+ const constant = this.extractAssignment(node);
31
+ if (constant && isUppercaseConstantName(constant.name)) {
32
+ return new OutlineEntry({
33
+ kind: "constant",
34
+ name: constant.name,
35
+ exported: true,
36
+ signature: constant.signature,
37
+ });
38
+ }
39
+ return undefined;
40
+ }
41
+ unwrapDecoratedDefinition(node) {
42
+ if (node.type === "function_definition" || node.type === "class_definition") {
43
+ return node;
44
+ }
45
+ if (node.type !== "decorated_definition") {
46
+ return undefined;
47
+ }
48
+ return node.namedChildren.find((child) => child.type === "function_definition" || child.type === "class_definition");
49
+ }
50
+ processDeclaration(node) {
51
+ if (node.type === "function_definition") {
52
+ return this.processFunction(node, "function");
53
+ }
54
+ if (node.type === "class_definition") {
55
+ return this.processClass(node);
56
+ }
57
+ return undefined;
58
+ }
59
+ processClass(node) {
60
+ const name = this.extractName(node);
61
+ if (!name)
62
+ return undefined;
63
+ const children = this.extractClassChildren(node);
64
+ return new OutlineEntry({
65
+ kind: "class",
66
+ name,
67
+ exported: isPublicPythonName(name),
68
+ signature: this.extractClassSignature(node, name),
69
+ ...(children.length > 0 ? { children } : {}),
70
+ });
71
+ }
72
+ processFunction(node, kind) {
73
+ const name = this.extractName(node);
74
+ if (!name)
75
+ return undefined;
76
+ return new OutlineEntry({
77
+ kind,
78
+ name,
79
+ exported: isPublicPythonName(name),
80
+ signature: this.extractFunctionSignature(node, name),
81
+ });
82
+ }
83
+ extractName(node) {
84
+ return node.childForFieldName("name")?.text;
85
+ }
86
+ extractFunctionSignature(node, name) {
87
+ const params = node.childForFieldName("parameters");
88
+ const returnType = node.childForFieldName("return_type");
89
+ const asyncPrefix = node.children.some((child) => child.type === "async") ? "async " : "";
90
+ let sig = `${asyncPrefix}${name}`;
91
+ if (params)
92
+ sig += params.text;
93
+ if (returnType)
94
+ sig += `: ${returnType.text}`;
95
+ return boundSignature(sig);
96
+ }
97
+ extractClassSignature(node, name) {
98
+ const superclasses = node.childForFieldName("superclasses");
99
+ return boundSignature(`class ${name}${superclasses?.text ?? ""}`);
100
+ }
101
+ extractClassChildren(node) {
102
+ const body = node.childForFieldName("body");
103
+ if (!body)
104
+ return [];
105
+ const children = [];
106
+ for (const child of body.namedChildren) {
107
+ const declaration = this.unwrapDecoratedDefinition(child);
108
+ if (declaration?.type === "function_definition") {
109
+ const method = this.processFunction(declaration, "method");
110
+ if (method)
111
+ children.push(method);
112
+ continue;
113
+ }
114
+ const field = this.extractAssignment(child);
115
+ if (field && isPublicPythonName(field.name)) {
116
+ children.push(new OutlineEntry({
117
+ kind: "field",
118
+ name: field.name,
119
+ exported: true,
120
+ signature: field.signature,
121
+ }));
122
+ }
123
+ }
124
+ return children;
125
+ }
126
+ extractAssignment(node) {
127
+ if (node.type !== "expression_statement") {
128
+ return undefined;
129
+ }
130
+ const assignment = node.namedChildren.find((child) => child.type === "assignment");
131
+ const left = assignment?.childForFieldName("left");
132
+ if (!assignment || left?.type !== "identifier") {
133
+ return undefined;
134
+ }
135
+ const typeNode = assignment.childForFieldName("type");
136
+ const signature = typeNode
137
+ ? `${left.text}: ${typeNode.text}`
138
+ : assignment.text;
139
+ return {
140
+ name: left.text,
141
+ signature: boundSignature(signature),
142
+ };
143
+ }
144
+ }
145
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/parser/extractors/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SyntaxNode as TSNode } from "web-tree-sitter";
2
+ import { type LanguageExtractor, type ExtractorResult } from "./common.js";
3
+ export declare class RustExtractor implements LanguageExtractor {
4
+ extract(root: TSNode): ExtractorResult;
5
+ private nodeKind;
6
+ private extractName;
7
+ private isPublic;
8
+ private extractFunctionSignature;
9
+ private extractClassChildren;
10
+ private processDeclaration;
11
+ }
12
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/parser/extractors/rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAc,YAAW,iBAAiB;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAkBtC,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,kBAAkB;CAsB3B"}