trail-code 0.0.0-stage → 0.28.0-semantic.3

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 (593) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +567 -2
  3. package/dist/ai/crux.d.ts +88 -0
  4. package/dist/ai/crux.d.ts.map +1 -0
  5. package/dist/ai/crux.js +219 -0
  6. package/dist/ai/crux.js.map +1 -0
  7. package/dist/ai/failure.d.ts +60 -0
  8. package/dist/ai/failure.d.ts.map +1 -0
  9. package/dist/ai/failure.js +86 -0
  10. package/dist/ai/failure.js.map +1 -0
  11. package/dist/ai/llm/anthropic.d.ts +37 -0
  12. package/dist/ai/llm/anthropic.d.ts.map +1 -0
  13. package/dist/ai/llm/anthropic.js +144 -0
  14. package/dist/ai/llm/anthropic.js.map +1 -0
  15. package/dist/ai/llm/factory.d.ts +28 -0
  16. package/dist/ai/llm/factory.d.ts.map +1 -0
  17. package/dist/ai/llm/factory.js +36 -0
  18. package/dist/ai/llm/factory.js.map +1 -0
  19. package/dist/ai/llm/litellm.d.ts +34 -0
  20. package/dist/ai/llm/litellm.d.ts.map +1 -0
  21. package/dist/ai/llm/litellm.js +45 -0
  22. package/dist/ai/llm/litellm.js.map +1 -0
  23. package/dist/ai/llm/openai.d.ts +145 -0
  24. package/dist/ai/llm/openai.d.ts.map +1 -0
  25. package/dist/ai/llm/openai.js +629 -0
  26. package/dist/ai/llm/openai.js.map +1 -0
  27. package/dist/ai/llm/orcarouter.d.ts +34 -0
  28. package/dist/ai/llm/orcarouter.d.ts.map +1 -0
  29. package/dist/ai/llm/orcarouter.js +45 -0
  30. package/dist/ai/llm/orcarouter.js.map +1 -0
  31. package/dist/ai/llm/recover-tool.d.ts +21 -0
  32. package/dist/ai/llm/recover-tool.d.ts.map +1 -0
  33. package/dist/ai/llm/recover-tool.js +109 -0
  34. package/dist/ai/llm/recover-tool.js.map +1 -0
  35. package/dist/ai/llm/types.d.ts +122 -0
  36. package/dist/ai/llm/types.d.ts.map +1 -0
  37. package/dist/ai/llm/types.js +33 -0
  38. package/dist/ai/llm/types.js.map +1 -0
  39. package/dist/ai/providers.d.ts +59 -0
  40. package/dist/ai/providers.d.ts.map +1 -0
  41. package/dist/ai/providers.js +54 -0
  42. package/dist/ai/providers.js.map +1 -0
  43. package/dist/ai/summarize.d.ts +25 -0
  44. package/dist/ai/summarize.d.ts.map +1 -0
  45. package/dist/ai/summarize.js +34 -0
  46. package/dist/ai/summarize.js.map +1 -0
  47. package/dist/ai/synthesize.d.ts +40 -0
  48. package/dist/ai/synthesize.d.ts.map +1 -0
  49. package/dist/ai/synthesize.js +230 -0
  50. package/dist/ai/synthesize.js.map +1 -0
  51. package/dist/ask/ask.d.ts +199 -0
  52. package/dist/ask/ask.d.ts.map +1 -0
  53. package/dist/ask/ask.js +1291 -0
  54. package/dist/ask/ask.js.map +1 -0
  55. package/dist/ask/file-rank.d.ts +72 -0
  56. package/dist/ask/file-rank.d.ts.map +1 -0
  57. package/dist/ask/file-rank.js +160 -0
  58. package/dist/ask/file-rank.js.map +1 -0
  59. package/dist/ask/file-selection.d.ts +22 -0
  60. package/dist/ask/file-selection.d.ts.map +1 -0
  61. package/dist/ask/file-selection.js +66 -0
  62. package/dist/ask/file-selection.js.map +1 -0
  63. package/dist/ask/fuse.d.ts +195 -0
  64. package/dist/ask/fuse.d.ts.map +1 -0
  65. package/dist/ask/fuse.js +344 -0
  66. package/dist/ask/fuse.js.map +1 -0
  67. package/dist/ask/graphrank.d.ts +61 -0
  68. package/dist/ask/graphrank.d.ts.map +1 -0
  69. package/dist/ask/graphrank.js +130 -0
  70. package/dist/ask/graphrank.js.map +1 -0
  71. package/dist/ask/index-file.d.ts +44 -0
  72. package/dist/ask/index-file.d.ts.map +1 -0
  73. package/dist/ask/index-file.js +128 -0
  74. package/dist/ask/index-file.js.map +1 -0
  75. package/dist/ask/semantic.d.ts +42 -0
  76. package/dist/ask/semantic.d.ts.map +1 -0
  77. package/dist/ask/semantic.js +293 -0
  78. package/dist/ask/semantic.js.map +1 -0
  79. package/dist/bin/graft.d.ts +3 -0
  80. package/dist/bin/graft.d.ts.map +1 -0
  81. package/dist/bin/graft.js +14 -0
  82. package/dist/bin/graft.js.map +1 -0
  83. package/dist/bin/trail.d.ts +3 -0
  84. package/dist/bin/trail.d.ts.map +1 -0
  85. package/dist/bin/trail.js +13 -0
  86. package/dist/bin/trail.js.map +1 -0
  87. package/dist/blast/blast-cli.d.ts +35 -0
  88. package/dist/blast/blast-cli.d.ts.map +1 -0
  89. package/dist/blast/blast-cli.js +155 -0
  90. package/dist/blast/blast-cli.js.map +1 -0
  91. package/dist/blast/blast.d.ts +128 -0
  92. package/dist/blast/blast.d.ts.map +1 -0
  93. package/dist/blast/blast.js +383 -0
  94. package/dist/blast/blast.js.map +1 -0
  95. package/dist/blast/diff.d.ts +53 -0
  96. package/dist/blast/diff.d.ts.map +1 -0
  97. package/dist/blast/diff.js +193 -0
  98. package/dist/blast/diff.js.map +1 -0
  99. package/dist/blast/evidence.d.ts +51 -0
  100. package/dist/blast/evidence.d.ts.map +1 -0
  101. package/dist/blast/evidence.js +162 -0
  102. package/dist/blast/evidence.js.map +1 -0
  103. package/dist/blast/modules.d.ts +33 -0
  104. package/dist/blast/modules.d.ts.map +1 -0
  105. package/dist/blast/modules.js +83 -0
  106. package/dist/blast/modules.js.map +1 -0
  107. package/dist/blast/name.d.ts +74 -0
  108. package/dist/blast/name.d.ts.map +1 -0
  109. package/dist/blast/name.js +269 -0
  110. package/dist/blast/name.js.map +1 -0
  111. package/dist/blast/owners.d.ts +85 -0
  112. package/dist/blast/owners.d.ts.map +1 -0
  113. package/dist/blast/owners.js +272 -0
  114. package/dist/blast/owners.js.map +1 -0
  115. package/dist/blast/render.d.ts +46 -0
  116. package/dist/blast/render.d.ts.map +1 -0
  117. package/dist/blast/render.js +422 -0
  118. package/dist/blast/render.js.map +1 -0
  119. package/dist/blast/viz.d.ts +37 -0
  120. package/dist/blast/viz.d.ts.map +1 -0
  121. package/dist/blast/viz.js +180 -0
  122. package/dist/blast/viz.js.map +1 -0
  123. package/dist/brand.d.ts +111 -0
  124. package/dist/brand.d.ts.map +1 -0
  125. package/dist/brand.js +282 -0
  126. package/dist/brand.js.map +1 -0
  127. package/dist/claude/build-progress.d.ts +30 -0
  128. package/dist/claude/build-progress.d.ts.map +1 -0
  129. package/dist/claude/build-progress.js +81 -0
  130. package/dist/claude/build-progress.js.map +1 -0
  131. package/dist/claude/hermes-skill-template.d.ts +16 -0
  132. package/dist/claude/hermes-skill-template.d.ts.map +1 -0
  133. package/dist/claude/hermes-skill-template.js +154 -0
  134. package/dist/claude/hermes-skill-template.js.map +1 -0
  135. package/dist/claude/init.d.ts +65 -0
  136. package/dist/claude/init.d.ts.map +1 -0
  137. package/dist/claude/init.js +258 -0
  138. package/dist/claude/init.js.map +1 -0
  139. package/dist/claude/paths.d.ts +9 -0
  140. package/dist/claude/paths.d.ts.map +1 -0
  141. package/dist/claude/paths.js +22 -0
  142. package/dist/claude/paths.js.map +1 -0
  143. package/dist/claude/session-metrics.d.ts +73 -0
  144. package/dist/claude/session-metrics.d.ts.map +1 -0
  145. package/dist/claude/session-metrics.js +209 -0
  146. package/dist/claude/session-metrics.js.map +1 -0
  147. package/dist/claude/settings-merge.d.ts +76 -0
  148. package/dist/claude/settings-merge.d.ts.map +1 -0
  149. package/dist/claude/settings-merge.js +283 -0
  150. package/dist/claude/settings-merge.js.map +1 -0
  151. package/dist/claude/skill-template.d.ts +13 -0
  152. package/dist/claude/skill-template.d.ts.map +1 -0
  153. package/dist/claude/skill-template.js +290 -0
  154. package/dist/claude/skill-template.js.map +1 -0
  155. package/dist/claude/state.d.ts +85 -0
  156. package/dist/claude/state.d.ts.map +1 -0
  157. package/dist/claude/state.js +88 -0
  158. package/dist/claude/state.js.map +1 -0
  159. package/dist/claude/stats.d.ts +5 -0
  160. package/dist/claude/stats.d.ts.map +1 -0
  161. package/dist/claude/stats.js +24 -0
  162. package/dist/claude/stats.js.map +1 -0
  163. package/dist/cli-epilogue.d.ts +12 -0
  164. package/dist/cli-epilogue.d.ts.map +1 -0
  165. package/dist/cli-epilogue.js +72 -0
  166. package/dist/cli-epilogue.js.map +1 -0
  167. package/dist/cli-meta.d.ts +82 -0
  168. package/dist/cli-meta.d.ts.map +1 -0
  169. package/dist/cli-meta.js +238 -0
  170. package/dist/cli-meta.js.map +1 -0
  171. package/dist/cli-picker.d.ts +139 -0
  172. package/dist/cli-picker.d.ts.map +1 -0
  173. package/dist/cli-picker.js +439 -0
  174. package/dist/cli-picker.js.map +1 -0
  175. package/dist/cli.d.ts +3 -0
  176. package/dist/cli.d.ts.map +1 -0
  177. package/dist/cli.js +1638 -0
  178. package/dist/cli.js.map +1 -0
  179. package/dist/context/batches.d.ts +29 -0
  180. package/dist/context/batches.d.ts.map +1 -0
  181. package/dist/context/batches.js +130 -0
  182. package/dist/context/batches.js.map +1 -0
  183. package/dist/context/build.d.ts +57 -0
  184. package/dist/context/build.d.ts.map +1 -0
  185. package/dist/context/build.js +396 -0
  186. package/dist/context/build.js.map +1 -0
  187. package/dist/context/check.d.ts +42 -0
  188. package/dist/context/check.d.ts.map +1 -0
  189. package/dist/context/check.js +162 -0
  190. package/dist/context/check.js.map +1 -0
  191. package/dist/context/map-dir.d.ts +13 -0
  192. package/dist/context/map-dir.d.ts.map +1 -0
  193. package/dist/context/map-dir.js +81 -0
  194. package/dist/context/map-dir.js.map +1 -0
  195. package/dist/context/node-file.d.ts +109 -0
  196. package/dist/context/node-file.d.ts.map +1 -0
  197. package/dist/context/node-file.js +390 -0
  198. package/dist/context/node-file.js.map +1 -0
  199. package/dist/context/price.d.ts +49 -0
  200. package/dist/context/price.d.ts.map +1 -0
  201. package/dist/context/price.js +83 -0
  202. package/dist/context/price.js.map +1 -0
  203. package/dist/context/savings.d.ts +67 -0
  204. package/dist/context/savings.d.ts.map +1 -0
  205. package/dist/context/savings.js +125 -0
  206. package/dist/context/savings.js.map +1 -0
  207. package/dist/engine.d.ts +85 -0
  208. package/dist/engine.d.ts.map +1 -0
  209. package/dist/engine.js +122 -0
  210. package/dist/engine.js.map +1 -0
  211. package/dist/graph/bindings.d.ts +64 -0
  212. package/dist/graph/bindings.d.ts.map +1 -0
  213. package/dist/graph/bindings.js +713 -0
  214. package/dist/graph/bindings.js.map +1 -0
  215. package/dist/graph/build-run.d.ts +25 -0
  216. package/dist/graph/build-run.d.ts.map +1 -0
  217. package/dist/graph/build-run.js +121 -0
  218. package/dist/graph/build-run.js.map +1 -0
  219. package/dist/graph/build.d.ts +88 -0
  220. package/dist/graph/build.d.ts.map +1 -0
  221. package/dist/graph/build.js +386 -0
  222. package/dist/graph/build.js.map +1 -0
  223. package/dist/graph/cards.d.ts +46 -0
  224. package/dist/graph/cards.d.ts.map +1 -0
  225. package/dist/graph/cards.js +280 -0
  226. package/dist/graph/cards.js.map +1 -0
  227. package/dist/graph/check.d.ts +25 -0
  228. package/dist/graph/check.d.ts.map +1 -0
  229. package/dist/graph/check.js +192 -0
  230. package/dist/graph/check.js.map +1 -0
  231. package/dist/graph/container.d.ts +63 -0
  232. package/dist/graph/container.d.ts.map +1 -0
  233. package/dist/graph/container.js +191 -0
  234. package/dist/graph/container.js.map +1 -0
  235. package/dist/graph/depth-parser.d.ts +61 -0
  236. package/dist/graph/depth-parser.d.ts.map +1 -0
  237. package/dist/graph/depth-parser.js +153 -0
  238. package/dist/graph/depth-parser.js.map +1 -0
  239. package/dist/graph/enrich.d.ts +62 -0
  240. package/dist/graph/enrich.d.ts.map +1 -0
  241. package/dist/graph/enrich.js +258 -0
  242. package/dist/graph/enrich.js.map +1 -0
  243. package/dist/graph/extract-cache.d.ts +101 -0
  244. package/dist/graph/extract-cache.d.ts.map +1 -0
  245. package/dist/graph/extract-cache.js +199 -0
  246. package/dist/graph/extract-cache.js.map +1 -0
  247. package/dist/graph/extract.d.ts +85 -0
  248. package/dist/graph/extract.d.ts.map +1 -0
  249. package/dist/graph/extract.js +2377 -0
  250. package/dist/graph/extract.js.map +1 -0
  251. package/dist/graph/fingerprint.d.ts +76 -0
  252. package/dist/graph/fingerprint.d.ts.map +1 -0
  253. package/dist/graph/fingerprint.js +160 -0
  254. package/dist/graph/fingerprint.js.map +1 -0
  255. package/dist/graph/generic.d.ts +74 -0
  256. package/dist/graph/generic.d.ts.map +1 -0
  257. package/dist/graph/generic.js +773 -0
  258. package/dist/graph/generic.js.map +1 -0
  259. package/dist/graph/invariants.d.ts +33 -0
  260. package/dist/graph/invariants.d.ts.map +1 -0
  261. package/dist/graph/invariants.js +52 -0
  262. package/dist/graph/invariants.js.map +1 -0
  263. package/dist/graph/load.d.ts +29 -0
  264. package/dist/graph/load.d.ts.map +1 -0
  265. package/dist/graph/load.js +97 -0
  266. package/dist/graph/load.js.map +1 -0
  267. package/dist/graph/lsp/client.d.ts +61 -0
  268. package/dist/graph/lsp/client.d.ts.map +1 -0
  269. package/dist/graph/lsp/client.js +217 -0
  270. package/dist/graph/lsp/client.js.map +1 -0
  271. package/dist/graph/lsp/enrich.d.ts +11 -0
  272. package/dist/graph/lsp/enrich.d.ts.map +1 -0
  273. package/dist/graph/lsp/enrich.js +163 -0
  274. package/dist/graph/lsp/enrich.js.map +1 -0
  275. package/dist/graph/lsp/registry.d.ts +22 -0
  276. package/dist/graph/lsp/registry.d.ts.map +1 -0
  277. package/dist/graph/lsp/registry.js +71 -0
  278. package/dist/graph/lsp/registry.js.map +1 -0
  279. package/dist/graph/map.d.ts +107 -0
  280. package/dist/graph/map.d.ts.map +1 -0
  281. package/dist/graph/map.js +239 -0
  282. package/dist/graph/map.js.map +1 -0
  283. package/dist/graph/markdown.d.ts +22 -0
  284. package/dist/graph/markdown.d.ts.map +1 -0
  285. package/dist/graph/markdown.js +143 -0
  286. package/dist/graph/markdown.js.map +1 -0
  287. package/dist/graph/native.d.ts +46 -0
  288. package/dist/graph/native.d.ts.map +1 -0
  289. package/dist/graph/native.js +169 -0
  290. package/dist/graph/native.js.map +1 -0
  291. package/dist/graph/queries/c.scm +13 -0
  292. package/dist/graph/queries/c_sharp.scm +19 -0
  293. package/dist/graph/queries/clojure.scm +58 -0
  294. package/dist/graph/queries/cpp.scm +23 -0
  295. package/dist/graph/queries/dart.scm +42 -0
  296. package/dist/graph/queries/elixir.scm +54 -0
  297. package/dist/graph/queries/gleam.scm +51 -0
  298. package/dist/graph/queries/java.scm +20 -0
  299. package/dist/graph/queries/kotlin.scm +43 -0
  300. package/dist/graph/queries/lua.scm +36 -0
  301. package/dist/graph/queries/nix.scm +32 -0
  302. package/dist/graph/queries/php.scm +40 -0
  303. package/dist/graph/queries/ruby.scm +65 -0
  304. package/dist/graph/queries/rust.scm +41 -0
  305. package/dist/graph/queries/scala.scm +66 -0
  306. package/dist/graph/queries/solidity.scm +43 -0
  307. package/dist/graph/queries/swift.scm +51 -0
  308. package/dist/graph/refresh.d.ts +106 -0
  309. package/dist/graph/refresh.d.ts.map +1 -0
  310. package/dist/graph/refresh.js +430 -0
  311. package/dist/graph/refresh.js.map +1 -0
  312. package/dist/graph/relations.d.ts +14 -0
  313. package/dist/graph/relations.d.ts.map +1 -0
  314. package/dist/graph/relations.js +8 -0
  315. package/dist/graph/relations.js.map +1 -0
  316. package/dist/graph/resolve.d.ts +17 -0
  317. package/dist/graph/resolve.d.ts.map +1 -0
  318. package/dist/graph/resolve.js +716 -0
  319. package/dist/graph/resolve.js.map +1 -0
  320. package/dist/graph/root.d.ts +11 -0
  321. package/dist/graph/root.d.ts.map +1 -0
  322. package/dist/graph/root.js +40 -0
  323. package/dist/graph/root.js.map +1 -0
  324. package/dist/graph/scopes.d.ts +40 -0
  325. package/dist/graph/scopes.d.ts.map +1 -0
  326. package/dist/graph/scopes.js +383 -0
  327. package/dist/graph/scopes.js.map +1 -0
  328. package/dist/graph/seed.d.ts +38 -0
  329. package/dist/graph/seed.d.ts.map +1 -0
  330. package/dist/graph/seed.js +229 -0
  331. package/dist/graph/seed.js.map +1 -0
  332. package/dist/graph/source-files.d.ts +46 -0
  333. package/dist/graph/source-files.d.ts.map +1 -0
  334. package/dist/graph/source-files.js +118 -0
  335. package/dist/graph/source-files.js.map +1 -0
  336. package/dist/graph/traverse-cli.d.ts +55 -0
  337. package/dist/graph/traverse-cli.d.ts.map +1 -0
  338. package/dist/graph/traverse-cli.js +189 -0
  339. package/dist/graph/traverse-cli.js.map +1 -0
  340. package/dist/graph/traverse.d.ts +112 -0
  341. package/dist/graph/traverse.d.ts.map +1 -0
  342. package/dist/graph/traverse.js +192 -0
  343. package/dist/graph/traverse.js.map +1 -0
  344. package/dist/graph/types.d.ts +78 -0
  345. package/dist/graph/types.d.ts.map +1 -0
  346. package/dist/graph/types.js +14 -0
  347. package/dist/graph/types.js.map +1 -0
  348. package/dist/graph/wasm-runtime.d.ts +19 -0
  349. package/dist/graph/wasm-runtime.d.ts.map +1 -0
  350. package/dist/graph/wasm-runtime.js +38 -0
  351. package/dist/graph/wasm-runtime.js.map +1 -0
  352. package/dist/graph/workspace-cli.d.ts +56 -0
  353. package/dist/graph/workspace-cli.d.ts.map +1 -0
  354. package/dist/graph/workspace-cli.js +111 -0
  355. package/dist/graph/workspace-cli.js.map +1 -0
  356. package/dist/graph/workspace.d.ts +172 -0
  357. package/dist/graph/workspace.d.ts.map +1 -0
  358. package/dist/graph/workspace.js +714 -0
  359. package/dist/graph/workspace.js.map +1 -0
  360. package/dist/graph/write.d.ts +13 -0
  361. package/dist/graph/write.d.ts.map +1 -0
  362. package/dist/graph/write.js +86 -0
  363. package/dist/graph/write.js.map +1 -0
  364. package/dist/hosts/antigravity.d.ts +14 -0
  365. package/dist/hosts/antigravity.d.ts.map +1 -0
  366. package/dist/hosts/antigravity.js +59 -0
  367. package/dist/hosts/antigravity.js.map +1 -0
  368. package/dist/hosts/auto.d.ts +37 -0
  369. package/dist/hosts/auto.d.ts.map +1 -0
  370. package/dist/hosts/auto.js +141 -0
  371. package/dist/hosts/auto.js.map +1 -0
  372. package/dist/hosts/claude-global.d.ts +72 -0
  373. package/dist/hosts/claude-global.d.ts.map +1 -0
  374. package/dist/hosts/claude-global.js +230 -0
  375. package/dist/hosts/claude-global.js.map +1 -0
  376. package/dist/hosts/config-write.d.ts +36 -0
  377. package/dist/hosts/config-write.d.ts.map +1 -0
  378. package/dist/hosts/config-write.js +64 -0
  379. package/dist/hosts/config-write.js.map +1 -0
  380. package/dist/hosts/init.d.ts +28 -0
  381. package/dist/hosts/init.d.ts.map +1 -0
  382. package/dist/hosts/init.js +89 -0
  383. package/dist/hosts/init.js.map +1 -0
  384. package/dist/hosts/instructions.d.ts +14 -0
  385. package/dist/hosts/instructions.d.ts.map +1 -0
  386. package/dist/hosts/instructions.js +95 -0
  387. package/dist/hosts/instructions.js.map +1 -0
  388. package/dist/hosts/mcp-config.d.ts +78 -0
  389. package/dist/hosts/mcp-config.d.ts.map +1 -0
  390. package/dist/hosts/mcp-config.js +251 -0
  391. package/dist/hosts/mcp-config.js.map +1 -0
  392. package/dist/hosts/plan.d.ts +32 -0
  393. package/dist/hosts/plan.d.ts.map +1 -0
  394. package/dist/hosts/plan.js +73 -0
  395. package/dist/hosts/plan.js.map +1 -0
  396. package/dist/hosts/registry.d.ts +41 -0
  397. package/dist/hosts/registry.d.ts.map +1 -0
  398. package/dist/hosts/registry.js +164 -0
  399. package/dist/hosts/registry.js.map +1 -0
  400. package/dist/hosts/retract.d.ts +47 -0
  401. package/dist/hosts/retract.d.ts.map +1 -0
  402. package/dist/hosts/retract.js +520 -0
  403. package/dist/hosts/retract.js.map +1 -0
  404. package/dist/hosts/sections.d.ts +47 -0
  405. package/dist/hosts/sections.d.ts.map +1 -0
  406. package/dist/hosts/sections.js +127 -0
  407. package/dist/hosts/sections.js.map +1 -0
  408. package/dist/index.d.ts +41 -0
  409. package/dist/index.d.ts.map +1 -0
  410. package/dist/index.js +32 -0
  411. package/dist/index.js.map +1 -0
  412. package/dist/ingest/fs.d.ts +79 -0
  413. package/dist/ingest/fs.d.ts.map +1 -0
  414. package/dist/ingest/fs.js +306 -0
  415. package/dist/ingest/fs.js.map +1 -0
  416. package/dist/init-guard.d.ts +16 -0
  417. package/dist/init-guard.d.ts.map +1 -0
  418. package/dist/init-guard.js +27 -0
  419. package/dist/init-guard.js.map +1 -0
  420. package/dist/mcp/instructions.d.ts +5 -0
  421. package/dist/mcp/instructions.d.ts.map +1 -0
  422. package/dist/mcp/instructions.js +64 -0
  423. package/dist/mcp/instructions.js.map +1 -0
  424. package/dist/mcp/kept-listing.d.ts +27 -0
  425. package/dist/mcp/kept-listing.d.ts.map +1 -0
  426. package/dist/mcp/kept-listing.js +63 -0
  427. package/dist/mcp/kept-listing.js.map +1 -0
  428. package/dist/mcp/server.d.ts +4 -0
  429. package/dist/mcp/server.d.ts.map +1 -0
  430. package/dist/mcp/server.js +147 -0
  431. package/dist/mcp/server.js.map +1 -0
  432. package/dist/mcp/tool-names.d.ts +27 -0
  433. package/dist/mcp/tool-names.d.ts.map +1 -0
  434. package/dist/mcp/tool-names.js +47 -0
  435. package/dist/mcp/tool-names.js.map +1 -0
  436. package/dist/mcp/tools.d.ts +22 -0
  437. package/dist/mcp/tools.d.ts.map +1 -0
  438. package/dist/mcp/tools.js +440 -0
  439. package/dist/mcp/tools.js.map +1 -0
  440. package/dist/node-version.d.ts +15 -0
  441. package/dist/node-version.d.ts.map +1 -0
  442. package/dist/node-version.js +23 -0
  443. package/dist/node-version.js.map +1 -0
  444. package/dist/search/grep-cli.d.ts +35 -0
  445. package/dist/search/grep-cli.d.ts.map +1 -0
  446. package/dist/search/grep-cli.js +115 -0
  447. package/dist/search/grep-cli.js.map +1 -0
  448. package/dist/search/grep.d.ts +60 -0
  449. package/dist/search/grep.d.ts.map +1 -0
  450. package/dist/search/grep.js +143 -0
  451. package/dist/search/grep.js.map +1 -0
  452. package/dist/search/ignored-code.d.ts +9 -0
  453. package/dist/search/ignored-code.d.ts.map +1 -0
  454. package/dist/search/ignored-code.js +73 -0
  455. package/dist/search/ignored-code.js.map +1 -0
  456. package/dist/search/user-regexp.d.ts +26 -0
  457. package/dist/search/user-regexp.d.ts.map +1 -0
  458. package/dist/search/user-regexp.js +150 -0
  459. package/dist/search/user-regexp.js.map +1 -0
  460. package/dist/telemetry/contract.d.ts +117 -0
  461. package/dist/telemetry/contract.d.ts.map +1 -0
  462. package/dist/telemetry/contract.js +341 -0
  463. package/dist/telemetry/contract.js.map +1 -0
  464. package/dist/telemetry/flush.d.ts +21 -0
  465. package/dist/telemetry/flush.d.ts.map +1 -0
  466. package/dist/telemetry/flush.js +85 -0
  467. package/dist/telemetry/flush.js.map +1 -0
  468. package/dist/telemetry/gate.d.ts +30 -0
  469. package/dist/telemetry/gate.d.ts.map +1 -0
  470. package/dist/telemetry/gate.js +81 -0
  471. package/dist/telemetry/gate.js.map +1 -0
  472. package/dist/telemetry/identity.d.ts +40 -0
  473. package/dist/telemetry/identity.d.ts.map +1 -0
  474. package/dist/telemetry/identity.js +80 -0
  475. package/dist/telemetry/identity.js.map +1 -0
  476. package/dist/telemetry/index.d.ts +18 -0
  477. package/dist/telemetry/index.d.ts.map +1 -0
  478. package/dist/telemetry/index.js +16 -0
  479. package/dist/telemetry/index.js.map +1 -0
  480. package/dist/telemetry/key.d.ts +21 -0
  481. package/dist/telemetry/key.d.ts.map +1 -0
  482. package/dist/telemetry/key.js +49 -0
  483. package/dist/telemetry/key.js.map +1 -0
  484. package/dist/telemetry/notice.d.ts +19 -0
  485. package/dist/telemetry/notice.d.ts.map +1 -0
  486. package/dist/telemetry/notice.js +93 -0
  487. package/dist/telemetry/notice.js.map +1 -0
  488. package/dist/telemetry/queue.d.ts +35 -0
  489. package/dist/telemetry/queue.d.ts.map +1 -0
  490. package/dist/telemetry/queue.js +162 -0
  491. package/dist/telemetry/queue.js.map +1 -0
  492. package/dist/telemetry/send.d.ts +19 -0
  493. package/dist/telemetry/send.d.ts.map +1 -0
  494. package/dist/telemetry/send.js +84 -0
  495. package/dist/telemetry/send.js.map +1 -0
  496. package/dist/telemetry/sessions.d.ts +25 -0
  497. package/dist/telemetry/sessions.d.ts.map +1 -0
  498. package/dist/telemetry/sessions.js +104 -0
  499. package/dist/telemetry/sessions.js.map +1 -0
  500. package/dist/telemetry/track.d.ts +62 -0
  501. package/dist/telemetry/track.d.ts.map +1 -0
  502. package/dist/telemetry/track.js +143 -0
  503. package/dist/telemetry/track.js.map +1 -0
  504. package/dist/upkeep-run.d.ts +22 -0
  505. package/dist/upkeep-run.d.ts.map +1 -0
  506. package/dist/upkeep-run.js +85 -0
  507. package/dist/upkeep-run.js.map +1 -0
  508. package/dist/upkeep.d.ts +127 -0
  509. package/dist/upkeep.d.ts.map +1 -0
  510. package/dist/upkeep.js +252 -0
  511. package/dist/upkeep.js.map +1 -0
  512. package/dist/util/actions-folder.d.ts +2 -0
  513. package/dist/util/actions-folder.d.ts.map +1 -0
  514. package/dist/util/actions-folder.js +9 -0
  515. package/dist/util/actions-folder.js.map +1 -0
  516. package/dist/util/browser.d.ts +3 -0
  517. package/dist/util/browser.d.ts.map +1 -0
  518. package/dist/util/browser.js +14 -0
  519. package/dist/util/browser.js.map +1 -0
  520. package/dist/util/child-process.d.ts +15 -0
  521. package/dist/util/child-process.d.ts.map +1 -0
  522. package/dist/util/child-process.js +15 -0
  523. package/dist/util/child-process.js.map +1 -0
  524. package/dist/util/front-matter.d.ts +46 -0
  525. package/dist/util/front-matter.d.ts.map +1 -0
  526. package/dist/util/front-matter.js +113 -0
  527. package/dist/util/front-matter.js.map +1 -0
  528. package/dist/util/id.d.ts +7 -0
  529. package/dist/util/id.d.ts.map +1 -0
  530. package/dist/util/id.js +14 -0
  531. package/dist/util/id.js.map +1 -0
  532. package/dist/util/paths.d.ts +29 -0
  533. package/dist/util/paths.d.ts.map +1 -0
  534. package/dist/util/paths.js +71 -0
  535. package/dist/util/paths.js.map +1 -0
  536. package/dist/util/private-file.d.ts +14 -0
  537. package/dist/util/private-file.d.ts.map +1 -0
  538. package/dist/util/private-file.js +82 -0
  539. package/dist/util/private-file.js.map +1 -0
  540. package/dist/util/source.d.ts +4 -0
  541. package/dist/util/source.d.ts.map +1 -0
  542. package/dist/util/source.js +12 -0
  543. package/dist/util/source.js.map +1 -0
  544. package/dist/util/spinner.d.ts +15 -0
  545. package/dist/util/spinner.d.ts.map +1 -0
  546. package/dist/util/spinner.js +52 -0
  547. package/dist/util/spinner.js.map +1 -0
  548. package/dist/util/state.d.ts +120 -0
  549. package/dist/util/state.d.ts.map +1 -0
  550. package/dist/util/state.js +264 -0
  551. package/dist/util/state.js.map +1 -0
  552. package/dist/vendor/grammars/tree-sitter-go.LICENSE +21 -0
  553. package/dist/vendor/grammars/tree-sitter-go.wasm +0 -0
  554. package/dist/vendor/grammars/tree-sitter-java.LICENSE +21 -0
  555. package/dist/vendor/grammars/tree-sitter-java.wasm +0 -0
  556. package/dist/vendor/grammars/tree-sitter-kotlin.LICENSE +9 -0
  557. package/dist/vendor/grammars/tree-sitter-kotlin.wasm +0 -0
  558. package/dist/vendor/grammars/tree-sitter-php.LICENSE +22 -0
  559. package/dist/vendor/grammars/tree-sitter-php.wasm +0 -0
  560. package/dist/vendor/grammars/tree-sitter-python.LICENSE +21 -0
  561. package/dist/vendor/grammars/tree-sitter-python.wasm +0 -0
  562. package/dist/vendor/grammars/tree-sitter-r.LICENSE +9 -0
  563. package/dist/vendor/grammars/tree-sitter-r.wasm +0 -0
  564. package/dist/vendor/grammars/tree-sitter-swift.LICENSE +21 -0
  565. package/dist/vendor/grammars/tree-sitter-swift.wasm +0 -0
  566. package/dist/vendor/grammars/tree-sitter-tsx.wasm +0 -0
  567. package/dist/vendor/grammars/tree-sitter-typescript.LICENSE +21 -0
  568. package/dist/vendor/grammars/tree-sitter-typescript.wasm +0 -0
  569. package/dist/viewer/app.js +2 -0
  570. package/dist/viewer/index.html +49 -0
  571. package/dist/viewer/style.css +154 -0
  572. package/dist/viz/assemble.d.ts +83 -0
  573. package/dist/viz/assemble.d.ts.map +1 -0
  574. package/dist/viz/assemble.js +101 -0
  575. package/dist/viz/assemble.js.map +1 -0
  576. package/dist/viz/export.d.ts +39 -0
  577. package/dist/viz/export.d.ts.map +1 -0
  578. package/dist/viz/export.js +98 -0
  579. package/dist/viz/export.js.map +1 -0
  580. package/dist/viz/serve.d.ts +13 -0
  581. package/dist/viz/serve.d.ts.map +1 -0
  582. package/dist/viz/serve.js +130 -0
  583. package/dist/viz/serve.js.map +1 -0
  584. package/package.json +115 -4
  585. package/scripts/build-grammar-wasm.mjs +112 -0
  586. package/scripts/build-viewer.mjs +44 -0
  587. package/scripts/graph-quality.mjs +117 -0
  588. package/scripts/pack-trail.mjs +53 -0
  589. package/scripts/postinstall.mjs +65 -0
  590. package/scripts/run-tests.mjs +72 -0
  591. package/scripts/stamp-telemetry-key.mjs +56 -0
  592. package/scripts/tally-audit.mjs +140 -0
  593. package/scripts/vendor-grammars.mjs +53 -0
@@ -0,0 +1,22 @@
1
+ import type { NodeV1 } from "./types.js";
2
+ export declare const MD_EXT = ".md";
3
+ /** Whether this file path is a markdown file. */
4
+ export declare function isMdFile(path: string): boolean;
5
+ export interface MdSection {
6
+ /** Heading text, e.g. "Reglas de negocio". */
7
+ name: string;
8
+ /** Heading level 1-6. */
9
+ level: number;
10
+ /** 1-based line number of the heading. */
11
+ line: number;
12
+ /** Text content of this section (not including the heading line). */
13
+ body: string;
14
+ }
15
+ /** Parse a markdown file into a list of sections (one per heading). */
16
+ export declare function parseMdSections(content: string): MdSection[];
17
+ /**
18
+ * Extract nodes from a markdown file. Returns one FileNode + one node per heading.
19
+ * Nodes have kind "section" and carry the section body as summary/body_text.
20
+ */
21
+ export declare function extractMd(absPath: string, relPath: string): NodeV1[];
22
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/graph/markdown.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAuBD,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAsC5D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAkEpE"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Markdown extraction tier — headings as symbols, sections as nodes.
3
+ *
4
+ * Opt-in via `trail build --include-md` (persisted in `.graft/config.json`).
5
+ * Produces one FileNode + one SectionNode per heading, so `trail ask` and
6
+ * `trail_search_semantic` can find content in `.md` files.
7
+ *
8
+ * No tree-sitter grammar needed: heading structure is simple enough for regex.
9
+ * Each heading becomes a node; its body is the text until the next same-or-higher
10
+ * heading. The file node's body is the preamble (text before the first heading).
11
+ */
12
+ import { readFileSync } from "node:fs";
13
+ import { contentHash } from "../util/id.js";
14
+ export const MD_EXT = ".md";
15
+ /** Whether this file path is a markdown file. */
16
+ export function isMdFile(path) {
17
+ return path.toLowerCase().endsWith(MD_EXT);
18
+ }
19
+ /** Heading level of a markdown line, or 0 if not a heading. */
20
+ function headingLevel(line) {
21
+ const m = /^(#{1,6})\s/.exec(line);
22
+ return m ? m[1].length : 0;
23
+ }
24
+ /** Strip markdown heading prefix and trim. */
25
+ function headingText(line) {
26
+ return line.replace(/^#{1,6}\s+/, "").trim();
27
+ }
28
+ /** Slugify a heading for use as a symbol name (lowercase, hyphens). */
29
+ function slugify(text) {
30
+ return text
31
+ .toLowerCase()
32
+ .replace(/[^a-z0-9\s-]/g, "")
33
+ .trim()
34
+ .replace(/\s+/g, "-")
35
+ .slice(0, 80);
36
+ }
37
+ /** Parse a markdown file into a list of sections (one per heading). */
38
+ export function parseMdSections(content) {
39
+ const lines = content.split("\n");
40
+ const sections = [];
41
+ let current = null;
42
+ let bodyLines = [];
43
+ let inFence = false;
44
+ for (let i = 0; i < lines.length; i++) {
45
+ const line = lines[i];
46
+ // Skip fenced code blocks — headings inside them are not real.
47
+ if (/^```/.test(line)) {
48
+ inFence = !inFence;
49
+ }
50
+ if (inFence) {
51
+ if (current)
52
+ bodyLines.push(line);
53
+ continue;
54
+ }
55
+ const level = headingLevel(line);
56
+ if (level > 0) {
57
+ // Close the previous section.
58
+ if (current) {
59
+ current.body = bodyLines.join("\n").trim();
60
+ sections.push(current);
61
+ }
62
+ current = { name: headingText(line), level, line: i + 1, body: "" };
63
+ bodyLines = [];
64
+ }
65
+ else {
66
+ if (current)
67
+ bodyLines.push(line);
68
+ }
69
+ }
70
+ // Close last section.
71
+ if (current) {
72
+ current.body = bodyLines.join("\n").trim();
73
+ sections.push(current);
74
+ }
75
+ return sections;
76
+ }
77
+ /**
78
+ * Extract nodes from a markdown file. Returns one FileNode + one node per heading.
79
+ * Nodes have kind "section" and carry the section body as summary/body_text.
80
+ */
81
+ export function extractMd(absPath, relPath) {
82
+ let content;
83
+ try {
84
+ content = readFileSync(absPath, "utf8");
85
+ }
86
+ catch {
87
+ return [];
88
+ }
89
+ const lines = content.split("\n");
90
+ const totalLines = lines.length;
91
+ const fileHash = contentHash(content);
92
+ const fileId = relPath;
93
+ const nodes = [];
94
+ const sections = parseMdSections(content);
95
+ // Preamble: text before the first heading.
96
+ const firstHeadingLine = sections[0]?.line ?? Infinity;
97
+ const preamble = content
98
+ .split("\n")
99
+ .slice(0, firstHeadingLine - 1)
100
+ .join("\n")
101
+ .trim();
102
+ // File node.
103
+ nodes.push({
104
+ id: fileId,
105
+ kind: "file",
106
+ name: relPath.split("/").pop() ?? relPath,
107
+ path: relPath,
108
+ span: `L1-L${totalLines}`,
109
+ signature: null,
110
+ exported: false,
111
+ origin: "generic",
112
+ body_hash: fileHash,
113
+ summary_state: "none",
114
+ summary: preamble.slice(0, 200) || undefined,
115
+ body_text: preamble || undefined,
116
+ children: [],
117
+ edges: [],
118
+ });
119
+ // One node per heading.
120
+ for (let i = 0; i < sections.length; i++) {
121
+ const section = sections[i];
122
+ const nextLine = sections[i + 1]?.line ?? totalLines + 1;
123
+ const symbolId = `${relPath}#${slugify(section.name)}`;
124
+ nodes.push({
125
+ id: symbolId,
126
+ kind: "section",
127
+ name: section.name,
128
+ path: relPath,
129
+ span: `L${section.line}-L${nextLine - 1}`,
130
+ signature: `${"#".repeat(section.level)} ${section.name}`,
131
+ exported: false,
132
+ origin: "generic",
133
+ body_hash: contentHash(section.body),
134
+ summary_state: "none",
135
+ summary: section.body.slice(0, 300) || undefined,
136
+ body_text: section.body || undefined,
137
+ children: [],
138
+ edges: [],
139
+ });
140
+ }
141
+ return nodes;
142
+ }
143
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/graph/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Language } from "./extract.js";
2
+ /**
3
+ * True when `lang`'s native grammar loads and the parser accepts it. The first call
4
+ * per language does the loading; the answer is cached for the life of the process.
5
+ * Never throws.
6
+ */
7
+ export declare function nativeReady(lang: Language): boolean;
8
+ /** What depth-parser.ts uses of a native parser. */
9
+ export interface NativeParser {
10
+ parse(input: (index: number) => string): {
11
+ rootNode: unknown;
12
+ };
13
+ }
14
+ /** The shared native parser, set to `lang`. Throws when that grammar is not
15
+ * available; callers ask {@link nativeReady} first and send the file elsewhere. */
16
+ export declare function nativeParser(lang: Language): NativeParser;
17
+ /**
18
+ * The npm packages whose missing binary keeps these languages off the native
19
+ * parser: what `npm install --allow-scripts=…` has to name. Empty when every one
20
+ * loaded, or when the ones that failed did load and were rejected by the parser
21
+ * (an ABI mismatch, which no install flag fixes).
22
+ */
23
+ export declare function missingNativePackages(langs: Iterable<Language>): string[];
24
+ /** The languages a build parsed with a breadth-tier stand-in because their own
25
+ * grammar didn't load, and the packages to allow so the next install builds them. */
26
+ export interface NativeFallback {
27
+ /** Display labels (`javascript`, not the `typescript` grammar that parses it). */
28
+ languages: string[];
29
+ packages: string[];
30
+ }
31
+ /**
32
+ * The one line a build prints when some languages fell back, or null when none did.
33
+ * One line on purpose: `graft init` passes on only the `⚠`/`✗` lines of the build
34
+ * it runs, so a second line holding the fix would be dropped there.
35
+ *
36
+ * With no packages to allow, the grammar that didn't load is one of the package's
37
+ * own WASM files, so reinstalling it is the fix.
38
+ */
39
+ export declare function nativeFallbackNotice(fallback: NativeFallback | undefined, packageName: string): string | null;
40
+ /** Test seam: replace how native modules are required (null restores the real
41
+ * `require`), and forget everything loaded so far. A missing binary is simulated by
42
+ * a function that throws for that module id, the way node-gyp-build does. */
43
+ export declare function setNativeRequireForTest(fn: ((id: string) => unknown) | null): void;
44
+ /** The real `require` the seam above wraps, for a test's pass-through. */
45
+ export declare function realNativeRequire(id: string): unknown;
46
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA0E7C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAmBnD;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAChE;AAED;mFACmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAUzE;AAED;qFACqF;AACrF,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7G;AAED;;6EAE6E;AAC7E,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAKlF;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * The depth tier's native grammars: node tree-sitter and the grammar addons,
3
+ * loaded on first use and never fatally.
4
+ *
5
+ * The depth tier parses on WASM now (depth-parser.ts), and these packages are dev
6
+ * dependencies only. As dependencies they made installing the package compile C:
7
+ * `tree-sitter-kotlin` ships no prebuilt binary at all, and `tree-sitter` and
8
+ * `tree-sitter-python` have none for linux-arm64. They stay for two uses, both
9
+ * behind depth-parser.ts: test/depth-parity.ts builds real repos on them and on
10
+ * WASM and diffs the graphs, and a language listed in `NATIVE_ONLY` there parses
11
+ * on its addon (none is).
12
+ *
13
+ * Each module is required the first time it is asked for, and a failure is
14
+ * remembered: that language's files go to its WASM stand-in in the breadth tier
15
+ * (`fallbackLangOf` in generic.ts), and the build says which languages fell back
16
+ * and how to fix it ({@link nativeFallbackNotice}).
17
+ */
18
+ import { createRequire } from "node:module";
19
+ const nodeRequire = createRequire(import.meta.url);
20
+ const CORE = "tree-sitter";
21
+ /** The module each depth-tier grammar comes from, and the export that is the
22
+ * grammar when the module ships more than one (typescript+tsx, php+php_only). */
23
+ const GRAMMAR_MODULES = {
24
+ typescript: { module: "tree-sitter-typescript", pick: "typescript" },
25
+ tsx: { module: "tree-sitter-typescript", pick: "tsx" },
26
+ python: { module: "tree-sitter-python" },
27
+ go: { module: "tree-sitter-go" },
28
+ r: { module: "tree-sitter-r" },
29
+ java: { module: "tree-sitter-java" },
30
+ kotlin: { module: "tree-sitter-kotlin" },
31
+ swift: { module: "tree-sitter-swift" },
32
+ php: { module: "tree-sitter-php", pick: "php" },
33
+ };
34
+ /** The name `npm --allow-scripts` needs, where it differs from the module name.
35
+ * `tree-sitter-r` is an npm alias, and npm matches an allow entry against the real
36
+ * package only: an alias as the key matches nothing. */
37
+ const NPM_NAME = {
38
+ "tree-sitter-r": "@davisvaughan/tree-sitter-r",
39
+ };
40
+ let requireModule = (id) => nodeRequire(id);
41
+ const modules = new Map();
42
+ const ready = new Map();
43
+ /** undefined: not tried yet. null: tried, and the core binding is unusable. */
44
+ let parser;
45
+ function message(err) {
46
+ return err instanceof Error ? err.message : String(err);
47
+ }
48
+ function load(id) {
49
+ let hit = modules.get(id);
50
+ if (!hit) {
51
+ try {
52
+ hit = { ok: true, value: requireModule(id) };
53
+ }
54
+ catch (err) {
55
+ hit = { ok: false, error: message(err) };
56
+ }
57
+ modules.set(id, hit);
58
+ }
59
+ return hit;
60
+ }
61
+ function coreParser() {
62
+ if (parser === undefined) {
63
+ const core = load(CORE);
64
+ parser = null;
65
+ if (core.ok) {
66
+ try {
67
+ parser = new core.value();
68
+ }
69
+ catch (err) {
70
+ modules.set(CORE, { ok: false, error: message(err) });
71
+ }
72
+ }
73
+ }
74
+ return parser;
75
+ }
76
+ function grammarOf(lang) {
77
+ const { module, pick } = GRAMMAR_MODULES[lang];
78
+ const m = load(module);
79
+ if (!m.ok)
80
+ return null;
81
+ return pick ? (m.value[pick] ?? null) : m.value;
82
+ }
83
+ /**
84
+ * True when `lang`'s native grammar loads and the parser accepts it. The first call
85
+ * per language does the loading; the answer is cached for the life of the process.
86
+ * Never throws.
87
+ */
88
+ export function nativeReady(lang) {
89
+ let ok = ready.get(lang);
90
+ if (ok === undefined) {
91
+ ok = false;
92
+ // Load the grammar even when the core binding failed, so the notice can name
93
+ // every package that is missing its binary, not only the first.
94
+ const grammar = grammarOf(lang);
95
+ const p = coreParser();
96
+ if (p && grammar) {
97
+ try {
98
+ p.setLanguage(grammar);
99
+ ok = true;
100
+ }
101
+ catch {
102
+ /* an addon built for another tree-sitter ABI: unusable, though it loaded */
103
+ }
104
+ }
105
+ ready.set(lang, ok);
106
+ }
107
+ return ok;
108
+ }
109
+ /** The shared native parser, set to `lang`. Throws when that grammar is not
110
+ * available; callers ask {@link nativeReady} first and send the file elsewhere. */
111
+ export function nativeParser(lang) {
112
+ if (!nativeReady(lang)) {
113
+ const { module } = GRAMMAR_MODULES[lang];
114
+ const why = [CORE, module].map((id) => modules.get(id)).find((m) => m && !m.ok);
115
+ throw new Error(`the native ${lang} parser is not available${why && !why.ok ? `: ${why.error}` : ""}`);
116
+ }
117
+ const p = parser;
118
+ p.setLanguage(grammarOf(lang));
119
+ return p;
120
+ }
121
+ /**
122
+ * The npm packages whose missing binary keeps these languages off the native
123
+ * parser: what `npm install --allow-scripts=…` has to name. Empty when every one
124
+ * loaded, or when the ones that failed did load and were rejected by the parser
125
+ * (an ABI mismatch, which no install flag fixes).
126
+ */
127
+ export function missingNativePackages(langs) {
128
+ const out = new Set();
129
+ for (const lang of langs) {
130
+ if (nativeReady(lang))
131
+ continue;
132
+ for (const id of [CORE, GRAMMAR_MODULES[lang].module]) {
133
+ const m = modules.get(id);
134
+ if (m && !m.ok)
135
+ out.add(NPM_NAME[id] ?? id);
136
+ }
137
+ }
138
+ return [...out].sort();
139
+ }
140
+ /**
141
+ * The one line a build prints when some languages fell back, or null when none did.
142
+ * One line on purpose: `graft init` passes on only the `⚠`/`✗` lines of the build
143
+ * it runs, so a second line holding the fix would be dropped there.
144
+ *
145
+ * With no packages to allow, the grammar that didn't load is one of the package's
146
+ * own WASM files, so reinstalling it is the fix.
147
+ */
148
+ export function nativeFallbackNotice(fallback, packageName) {
149
+ if (!fallback || fallback.languages.length === 0)
150
+ return null;
151
+ const langs = fallback.languages.join(", ");
152
+ const what = fallback.languages.length === 1 ? "its parser didn't load" : "their parsers didn't load";
153
+ const allow = fallback.packages.length > 0 ? `--allow-scripts=${fallback.packages.join(",")} ` : "";
154
+ return `⚠ ${langs}: basic parsing only, ${what}. To fix: npm install -g ${allow}${packageName}`;
155
+ }
156
+ /** Test seam: replace how native modules are required (null restores the real
157
+ * `require`), and forget everything loaded so far. A missing binary is simulated by
158
+ * a function that throws for that module id, the way node-gyp-build does. */
159
+ export function setNativeRequireForTest(fn) {
160
+ requireModule = fn ?? ((id) => nodeRequire(id));
161
+ modules.clear();
162
+ ready.clear();
163
+ parser = undefined;
164
+ }
165
+ /** The real `require` the seam above wraps, for a test's pass-through. */
166
+ export function realNativeRequire(id) {
167
+ return nodeRequire(id);
168
+ }
169
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ (struct_specifier name: (type_identifier) @name body:(_)) @definition.class
2
+
3
+ (declaration type: (union_specifier name: (type_identifier) @name)) @definition.class
4
+
5
+ (function_declarator declarator: (identifier) @name) @definition.function
6
+
7
+ (type_definition declarator: (type_identifier) @name) @definition.type
8
+
9
+ (enum_specifier name: (type_identifier) @name) @definition.type
10
+
11
+ ; graft: call sites (upstream c tags.scm is definition-only)
12
+ (call_expression
13
+ function: (identifier) @name) @reference.call
@@ -0,0 +1,19 @@
1
+ ; C# tags — minimal, matched to the tree-sitter-wasms c_sharp grammar node types.
2
+ ; (Upstream tree-sitter-c-sharp tags.scm references node types the bundled wasm
3
+ ; grammar version lacks — "Bad node name 'type'" — so graft ships this instead.)
4
+
5
+ (class_declaration name: (identifier) @name) @definition.class
6
+ (interface_declaration name: (identifier) @name) @definition.interface
7
+ (struct_declaration (identifier) @name) @definition.struct
8
+ (enum_declaration name: (identifier) @name) @definition.enum
9
+ (record_declaration (identifier) @name) @definition.class
10
+ (method_declaration name: (identifier) @name) @definition.method
11
+ (constructor_declaration (identifier) @name) @definition.method
12
+ (property_declaration name: (identifier) @name) @definition.variable
13
+ (namespace_declaration name: (identifier) @name) @definition.module
14
+
15
+ (invocation_expression
16
+ function: [
17
+ (identifier) @name
18
+ (member_access_expression name: (identifier) @name)
19
+ ]) @reference.call
@@ -0,0 +1,58 @@
1
+ ; Clojure's tree-sitter grammar has no dedicated node types for `defn`/`def`/etc
2
+ ; — every form, definition or call alike, is just a `list_lit` whose `value`
3
+ ; field lists its children positionally. So a "definition" here is a list whose
4
+ ; first symbol is a known defining macro, matched by name via `#any-of?`/`#eq?`,
5
+ ; with the second symbol captured as the defined name.
6
+
7
+ ; Definitions
8
+
9
+ ; * namespace
10
+ (list_lit
11
+ .
12
+ value: (sym_lit name: (sym_name) @ignore)
13
+ .
14
+ value: (sym_lit name: (sym_name) @name)
15
+ (#eq? @ignore "ns")) @definition.module
16
+
17
+ ; * functions/macros/multimethods
18
+ (list_lit
19
+ .
20
+ value: (sym_lit name: (sym_name) @ignore)
21
+ .
22
+ value: (sym_lit name: (sym_name) @name)
23
+ (#any-of? @ignore "defn" "defn-" "defmacro" "defmulti" "defmethod" "definline" "deftest")) @definition.function
24
+
25
+ ; * def / defonce — a Var binding, not necessarily a function
26
+ (list_lit
27
+ .
28
+ value: (sym_lit name: (sym_name) @ignore)
29
+ .
30
+ value: (sym_lit name: (sym_name) @name)
31
+ (#any-of? @ignore "def" "defonce")) @definition.variable
32
+
33
+ ; * defprotocol / definterface
34
+ (list_lit
35
+ .
36
+ value: (sym_lit name: (sym_name) @ignore)
37
+ .
38
+ value: (sym_lit name: (sym_name) @name)
39
+ (#any-of? @ignore "defprotocol" "definterface")) @definition.interface
40
+
41
+ ; * defrecord / deftype / defstruct — each mints a JVM class
42
+ (list_lit
43
+ .
44
+ value: (sym_lit name: (sym_name) @ignore)
45
+ .
46
+ value: (sym_lit name: (sym_name) @name)
47
+ (#any-of? @ignore "defrecord" "deftype" "defstruct")) @definition.class
48
+
49
+ ; References
50
+
51
+ ; * function/macro call — any parenthesized list headed by a symbol. This also
52
+ ; matches the def-forms above on their own keyword (e.g. `(defn foo …)` reads
53
+ ; as a "call" to `defn`) and special forms (`let`, `if`, `fn`, …); those never
54
+ ; resolve to an in-repo definition, so the existing resolver drops them rather
55
+ ; than guessing — same trade-off the elixir/ruby queries make.
56
+ (list_lit
57
+ .
58
+ value: (sym_lit name: (sym_name) @name)) @reference.call
@@ -0,0 +1,23 @@
1
+ (struct_specifier name: (type_identifier) @name body:(_)) @definition.class
2
+
3
+ (declaration type: (union_specifier name: (type_identifier) @name)) @definition.class
4
+
5
+ (function_declarator declarator: (identifier) @name) @definition.function
6
+
7
+ (function_declarator declarator: (field_identifier) @name) @definition.function
8
+
9
+ (function_declarator declarator: (qualified_identifier scope: (namespace_identifier) @local.scope name: (identifier) @name)) @definition.method
10
+
11
+ (type_definition declarator: (type_identifier) @name) @definition.type
12
+
13
+ (enum_specifier name: (type_identifier) @name) @definition.type
14
+
15
+ (class_specifier name: (type_identifier) @name) @definition.class
16
+
17
+ ; graft: call sites (upstream cpp tags.scm is definition-only)
18
+ (call_expression
19
+ function: [
20
+ (identifier) @name
21
+ (field_expression field: (field_identifier) @name)
22
+ (qualified_identifier name: (identifier) @name)
23
+ ]) @reference.call
@@ -0,0 +1,42 @@
1
+ ; Dart — breadth-tier tags.scm
2
+ ;
3
+ ; The Dart grammar does not wrap a function's signature and body in one
4
+ ; definition node: `function_signature` / `method_signature` sit as siblings
5
+ ; of `function_body` under `program` / `class_body`. Graft's generic extractor
6
+ ; expands a captured signature to include a following `function_body` sibling
7
+ ; so calls inside the body are attributed to the function (see defScope).
8
+ ;
9
+ ; Without this query the node-kind walker fallback runs, which:
10
+ ; - skips `function_signature` (type does not match the walker suffixes)
11
+ ; - mints `class_body` as a class (type starts with "class") named after the
12
+ ; first identifier in the body (`int`, `bool`, …)
13
+ ; - mints function-body locals (`initialized_variable_definition`) as symbols
14
+ ;
15
+ ; Call sites are `identifier` + adjacent `selector`/`argument_part`, not a
16
+ ; `call_expression` node. Only that shape is tagged — assignment selectors and
17
+ ; bare identifier reads are left alone.
18
+
19
+ ; Top-level functions (direct children of program, not methods)
20
+ (program
21
+ (function_signature
22
+ name: (identifier) @name) @definition.function)
23
+
24
+ ; Methods
25
+ (method_signature
26
+ (function_signature
27
+ name: (identifier) @name)) @definition.method
28
+
29
+ (class_definition
30
+ name: (identifier) @name) @definition.class
31
+
32
+ ; Top-level / static `const`/`final` (`const int kThreshold = 3`)
33
+ (static_final_declaration
34
+ .
35
+ (identifier) @name) @definition.constant
36
+
37
+ ; identifier(args) — `isReady(count)`, `Counter.ready → isReady(value)`
38
+ (
39
+ (identifier) @name
40
+ .
41
+ (selector
42
+ (argument_part))) @reference.call
@@ -0,0 +1,54 @@
1
+ ; Definitions
2
+
3
+ ; * modules and protocols
4
+ (call
5
+ target: (identifier) @ignore
6
+ (arguments (alias) @name)
7
+ (#any-of? @ignore "defmodule" "defprotocol")) @definition.module
8
+
9
+ ; * functions/macros
10
+ (call
11
+ target: (identifier) @ignore
12
+ (arguments
13
+ [
14
+ ; zero-arity functions with no parentheses
15
+ (identifier) @name
16
+ ; regular function clause
17
+ (call target: (identifier) @name)
18
+ ; function clause with a guard clause
19
+ (binary_operator
20
+ left: (call target: (identifier) @name)
21
+ operator: "when")
22
+ ])
23
+ (#any-of? @ignore "def" "defp" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp")) @definition.function
24
+
25
+ ; References
26
+
27
+ ; ignore calls to kernel/special-forms keywords
28
+ (call
29
+ target: (identifier) @ignore
30
+ (#any-of? @ignore "def" "defp" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp" "defmodule" "defprotocol" "defimpl" "defstruct" "defexception" "defoverridable" "alias" "case" "cond" "else" "for" "if" "import" "quote" "raise" "receive" "require" "reraise" "super" "throw" "try" "unless" "unquote" "unquote_splicing" "use" "with"))
31
+
32
+ ; ignore module attributes
33
+ (unary_operator
34
+ operator: "@"
35
+ operand: (call
36
+ target: (identifier) @ignore))
37
+
38
+ ; * function call
39
+ (call
40
+ target: [
41
+ ; local
42
+ (identifier) @name
43
+ ; remote
44
+ (dot
45
+ right: (identifier) @name)
46
+ ]) @reference.call
47
+
48
+ ; * pipe into function call
49
+ (binary_operator
50
+ operator: "|>"
51
+ right: (identifier) @name) @reference.call
52
+
53
+ ; * modules
54
+ (alias) @name @reference.module