homegraph 0.9.10 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +243 -193
  3. package/dist/bin/fatal-handler.d.ts +20 -0
  4. package/dist/bin/fatal-handler.d.ts.map +1 -0
  5. package/dist/bin/fatal-handler.js +118 -0
  6. package/dist/bin/fatal-handler.js.map +1 -0
  7. package/dist/bin/homegraph.d.ts +6 -6
  8. package/dist/bin/homegraph.js +532 -109
  9. package/dist/bin/homegraph.js.map +1 -1
  10. package/dist/bin/node-version-check.d.ts +4 -4
  11. package/dist/bin/node-version-check.js +12 -12
  12. package/dist/bin/uninstall.d.ts +1 -1
  13. package/dist/bin/uninstall.js +1 -1
  14. package/dist/context/index.d.ts.map +1 -1
  15. package/dist/context/index.js +8 -1
  16. package/dist/context/index.js.map +1 -1
  17. package/dist/db/index.d.ts +22 -1
  18. package/dist/db/index.d.ts.map +1 -1
  19. package/dist/db/index.js +48 -2
  20. package/dist/db/index.js.map +1 -1
  21. package/dist/db/migrations.d.ts +1 -1
  22. package/dist/db/migrations.d.ts.map +1 -1
  23. package/dist/db/migrations.js +26 -17
  24. package/dist/db/migrations.js.map +1 -1
  25. package/dist/db/queries.d.ts +21 -1
  26. package/dist/db/queries.d.ts.map +1 -1
  27. package/dist/db/queries.js +180 -137
  28. package/dist/db/queries.js.map +1 -1
  29. package/dist/db/schema.sql +152 -151
  30. package/dist/db/sqlite-adapter.d.ts +1 -1
  31. package/dist/db/sqlite-adapter.js +3 -3
  32. package/dist/directory.d.ts +87 -6
  33. package/dist/directory.d.ts.map +1 -1
  34. package/dist/directory.js +319 -57
  35. package/dist/directory.js.map +1 -1
  36. package/dist/errors.d.ts +15 -15
  37. package/dist/errors.js +20 -20
  38. package/dist/extraction/astro-extractor.d.ts +79 -0
  39. package/dist/extraction/astro-extractor.d.ts.map +1 -0
  40. package/dist/extraction/astro-extractor.js +320 -0
  41. package/dist/extraction/astro-extractor.js.map +1 -0
  42. package/dist/extraction/context.d.ts +1 -1
  43. package/dist/extraction/context.js +1 -1
  44. package/dist/extraction/extraction-version.d.ts +2 -2
  45. package/dist/extraction/extraction-version.d.ts.map +1 -1
  46. package/dist/extraction/extraction-version.js +2 -2
  47. package/dist/extraction/extraction-version.js.map +1 -1
  48. package/dist/extraction/function-ref.d.ts +118 -0
  49. package/dist/extraction/function-ref.d.ts.map +1 -0
  50. package/dist/extraction/function-ref.js +727 -0
  51. package/dist/extraction/function-ref.js.map +1 -0
  52. package/dist/extraction/generated-detection.d.ts.map +1 -1
  53. package/dist/extraction/generated-detection.js +3 -0
  54. package/dist/extraction/generated-detection.js.map +1 -1
  55. package/dist/extraction/grammars.d.ts +15 -5
  56. package/dist/extraction/grammars.d.ts.map +1 -1
  57. package/dist/extraction/grammars.js +44 -10
  58. package/dist/extraction/grammars.js.map +1 -1
  59. package/dist/extraction/index.d.ts +37 -0
  60. package/dist/extraction/index.d.ts.map +1 -1
  61. package/dist/extraction/index.js +562 -70
  62. package/dist/extraction/index.js.map +1 -1
  63. package/dist/extraction/languages/arkts-viewtree.d.ts +22 -0
  64. package/dist/extraction/languages/arkts-viewtree.d.ts.map +1 -0
  65. package/dist/extraction/languages/arkts-viewtree.js +133 -0
  66. package/dist/extraction/languages/arkts-viewtree.js.map +1 -0
  67. package/dist/extraction/languages/arkts.d.ts.map +1 -1
  68. package/dist/extraction/languages/arkts.js +211 -20
  69. package/dist/extraction/languages/arkts.js.map +1 -1
  70. package/dist/extraction/languages/c-cpp.d.ts +8 -0
  71. package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  72. package/dist/extraction/languages/c-cpp.js +104 -2
  73. package/dist/extraction/languages/c-cpp.js.map +1 -1
  74. package/dist/extraction/languages/csharp.d.ts.map +1 -1
  75. package/dist/extraction/languages/csharp.js +58 -3
  76. package/dist/extraction/languages/csharp.js.map +1 -1
  77. package/dist/extraction/languages/dart.d.ts.map +1 -1
  78. package/dist/extraction/languages/dart.js +183 -1
  79. package/dist/extraction/languages/dart.js.map +1 -1
  80. package/dist/extraction/languages/go.d.ts.map +1 -1
  81. package/dist/extraction/languages/go.js +37 -0
  82. package/dist/extraction/languages/go.js.map +1 -1
  83. package/dist/extraction/languages/index.d.ts.map +1 -1
  84. package/dist/extraction/languages/index.js +2 -0
  85. package/dist/extraction/languages/index.js.map +1 -1
  86. package/dist/extraction/languages/java.d.ts.map +1 -1
  87. package/dist/extraction/languages/java.js +241 -0
  88. package/dist/extraction/languages/java.js.map +1 -1
  89. package/dist/extraction/languages/javascript.d.ts.map +1 -1
  90. package/dist/extraction/languages/javascript.js +16 -0
  91. package/dist/extraction/languages/javascript.js.map +1 -1
  92. package/dist/extraction/languages/kotlin.d.ts.map +1 -1
  93. package/dist/extraction/languages/kotlin.js +94 -0
  94. package/dist/extraction/languages/kotlin.js.map +1 -1
  95. package/dist/extraction/languages/objc.d.ts.map +1 -1
  96. package/dist/extraction/languages/objc.js +42 -0
  97. package/dist/extraction/languages/objc.js.map +1 -1
  98. package/dist/extraction/languages/pascal.d.ts.map +1 -1
  99. package/dist/extraction/languages/pascal.js +11 -0
  100. package/dist/extraction/languages/pascal.js.map +1 -1
  101. package/dist/extraction/languages/php.d.ts.map +1 -1
  102. package/dist/extraction/languages/php.js +77 -1
  103. package/dist/extraction/languages/php.js.map +1 -1
  104. package/dist/extraction/languages/r.d.ts +3 -0
  105. package/dist/extraction/languages/r.d.ts.map +1 -0
  106. package/dist/extraction/languages/r.js +314 -0
  107. package/dist/extraction/languages/r.js.map +1 -0
  108. package/dist/extraction/languages/rust.d.ts.map +1 -1
  109. package/dist/extraction/languages/rust.js +29 -0
  110. package/dist/extraction/languages/rust.js.map +1 -1
  111. package/dist/extraction/languages/scala.d.ts.map +1 -1
  112. package/dist/extraction/languages/scala.js +44 -9
  113. package/dist/extraction/languages/scala.js.map +1 -1
  114. package/dist/extraction/languages/swift.d.ts.map +1 -1
  115. package/dist/extraction/languages/swift.js +61 -0
  116. package/dist/extraction/languages/swift.js.map +1 -1
  117. package/dist/extraction/languages/typescript.d.ts +13 -0
  118. package/dist/extraction/languages/typescript.d.ts.map +1 -1
  119. package/dist/extraction/languages/typescript.js +38 -0
  120. package/dist/extraction/languages/typescript.js.map +1 -1
  121. package/dist/extraction/liquid-extractor.d.ts.map +1 -1
  122. package/dist/extraction/liquid-extractor.js +4 -1
  123. package/dist/extraction/liquid-extractor.js.map +1 -1
  124. package/dist/extraction/parse-worker.js +4 -1
  125. package/dist/extraction/parse-worker.js.map +1 -1
  126. package/dist/extraction/svelte-extractor.d.ts.map +1 -1
  127. package/dist/extraction/svelte-extractor.js +6 -3
  128. package/dist/extraction/svelte-extractor.js.map +1 -1
  129. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
  130. package/dist/extraction/tree-sitter-helpers.js +59 -10
  131. package/dist/extraction/tree-sitter-helpers.js.map +1 -1
  132. package/dist/extraction/tree-sitter-types.d.ts +29 -0
  133. package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  134. package/dist/extraction/tree-sitter.d.ts +192 -0
  135. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  136. package/dist/extraction/tree-sitter.js +1553 -45
  137. package/dist/extraction/tree-sitter.js.map +1 -1
  138. package/dist/extraction/vue-extractor.d.ts.map +1 -1
  139. package/dist/extraction/vue-extractor.js +6 -3
  140. package/dist/extraction/vue-extractor.js.map +1 -1
  141. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  142. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  143. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  144. package/dist/graph/traversal.d.ts.map +1 -1
  145. package/dist/graph/traversal.js +11 -2
  146. package/dist/graph/traversal.js.map +1 -1
  147. package/dist/index.d.ts +64 -23
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +137 -41
  150. package/dist/index.js.map +1 -1
  151. package/dist/installer/config-writer.d.ts +1 -1
  152. package/dist/installer/config-writer.js +1 -1
  153. package/dist/installer/index.d.ts +4 -4
  154. package/dist/installer/index.d.ts.map +1 -1
  155. package/dist/installer/index.js +100 -73
  156. package/dist/installer/index.js.map +1 -1
  157. package/dist/installer/instructions-template.d.ts +34 -11
  158. package/dist/installer/instructions-template.d.ts.map +1 -1
  159. package/dist/installer/instructions-template.js +44 -12
  160. package/dist/installer/instructions-template.js.map +1 -1
  161. package/dist/installer/targets/antigravity.d.ts +6 -6
  162. package/dist/installer/targets/antigravity.js +14 -14
  163. package/dist/installer/targets/claude.d.ts +19 -13
  164. package/dist/installer/targets/claude.d.ts.map +1 -1
  165. package/dist/installer/targets/claude.js +97 -29
  166. package/dist/installer/targets/claude.js.map +1 -1
  167. package/dist/installer/targets/codebuddy.d.ts +17 -0
  168. package/dist/installer/targets/codebuddy.d.ts.map +1 -0
  169. package/dist/installer/targets/codebuddy.js +150 -0
  170. package/dist/installer/targets/codebuddy.js.map +1 -0
  171. package/dist/installer/targets/codex.js +5 -7
  172. package/dist/installer/targets/codex.js.map +1 -1
  173. package/dist/installer/targets/cursor.d.ts +1 -1
  174. package/dist/installer/targets/cursor.js +7 -7
  175. package/dist/installer/targets/deveco.d.ts +23 -0
  176. package/dist/installer/targets/deveco.d.ts.map +1 -0
  177. package/dist/installer/targets/deveco.js +217 -0
  178. package/dist/installer/targets/deveco.js.map +1 -0
  179. package/dist/installer/targets/gemini.js +5 -7
  180. package/dist/installer/targets/gemini.js.map +1 -1
  181. package/dist/installer/targets/hermes.js +15 -15
  182. package/dist/installer/targets/kiro.d.ts +1 -1
  183. package/dist/installer/targets/kiro.js +4 -4
  184. package/dist/installer/targets/opencode.d.ts +9 -1
  185. package/dist/installer/targets/opencode.d.ts.map +1 -1
  186. package/dist/installer/targets/opencode.js +92 -41
  187. package/dist/installer/targets/opencode.js.map +1 -1
  188. package/dist/installer/targets/registry.d.ts.map +1 -1
  189. package/dist/installer/targets/registry.js +4 -0
  190. package/dist/installer/targets/registry.js.map +1 -1
  191. package/dist/installer/targets/shared.d.ts +28 -4
  192. package/dist/installer/targets/shared.d.ts.map +1 -1
  193. package/dist/installer/targets/shared.js +32 -15
  194. package/dist/installer/targets/shared.js.map +1 -1
  195. package/dist/installer/targets/types.d.ts +9 -2
  196. package/dist/installer/targets/types.d.ts.map +1 -1
  197. package/dist/mcp/daemon-manager.d.ts +42 -0
  198. package/dist/mcp/daemon-manager.d.ts.map +1 -0
  199. package/dist/mcp/daemon-manager.js +129 -0
  200. package/dist/mcp/daemon-manager.js.map +1 -0
  201. package/dist/mcp/daemon-paths.d.ts +1 -1
  202. package/dist/mcp/daemon-paths.js +3 -3
  203. package/dist/mcp/daemon-registry.d.ts +47 -0
  204. package/dist/mcp/daemon-registry.d.ts.map +1 -0
  205. package/dist/mcp/daemon-registry.js +229 -0
  206. package/dist/mcp/daemon-registry.js.map +1 -0
  207. package/dist/mcp/daemon.d.ts.map +1 -1
  208. package/dist/mcp/daemon.js +27 -6
  209. package/dist/mcp/daemon.js.map +1 -1
  210. package/dist/mcp/dynamic-boundaries.d.ts +41 -0
  211. package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
  212. package/dist/mcp/dynamic-boundaries.js +359 -0
  213. package/dist/mcp/dynamic-boundaries.js.map +1 -0
  214. package/dist/mcp/engine.d.ts +4 -4
  215. package/dist/mcp/engine.d.ts.map +1 -1
  216. package/dist/mcp/engine.js +32 -24
  217. package/dist/mcp/engine.js.map +1 -1
  218. package/dist/mcp/index.d.ts +8 -7
  219. package/dist/mcp/index.d.ts.map +1 -1
  220. package/dist/mcp/index.js +39 -18
  221. package/dist/mcp/index.js.map +1 -1
  222. package/dist/mcp/liveness-watchdog.d.ts +18 -0
  223. package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
  224. package/dist/mcp/liveness-watchdog.js +207 -0
  225. package/dist/mcp/liveness-watchdog.js.map +1 -0
  226. package/dist/mcp/proxy.d.ts +6 -0
  227. package/dist/mcp/proxy.d.ts.map +1 -1
  228. package/dist/mcp/proxy.js +75 -18
  229. package/dist/mcp/proxy.js.map +1 -1
  230. package/dist/mcp/server-instructions.d.ts +22 -7
  231. package/dist/mcp/server-instructions.d.ts.map +1 -1
  232. package/dist/mcp/server-instructions.js +91 -59
  233. package/dist/mcp/server-instructions.js.map +1 -1
  234. package/dist/mcp/session.d.ts +3 -1
  235. package/dist/mcp/session.d.ts.map +1 -1
  236. package/dist/mcp/session.js +43 -7
  237. package/dist/mcp/session.js.map +1 -1
  238. package/dist/mcp/stdin-teardown.d.ts +27 -0
  239. package/dist/mcp/stdin-teardown.d.ts.map +1 -0
  240. package/dist/mcp/stdin-teardown.js +49 -0
  241. package/dist/mcp/stdin-teardown.js.map +1 -0
  242. package/dist/mcp/tools.d.ts +137 -16
  243. package/dist/mcp/tools.d.ts.map +1 -1
  244. package/dist/mcp/tools.js +1271 -219
  245. package/dist/mcp/tools.js.map +1 -1
  246. package/dist/mcp/transport.d.ts +1 -1
  247. package/dist/mcp/transport.d.ts.map +1 -1
  248. package/dist/mcp/transport.js +20 -4
  249. package/dist/mcp/transport.js.map +1 -1
  250. package/dist/mcp/version.d.ts +1 -1
  251. package/dist/mcp/version.js +2 -2
  252. package/dist/project-config.d.ts +36 -0
  253. package/dist/project-config.d.ts.map +1 -0
  254. package/dist/project-config.js +235 -0
  255. package/dist/project-config.js.map +1 -0
  256. package/dist/reasoning/config.d.ts +45 -0
  257. package/dist/reasoning/config.d.ts.map +1 -0
  258. package/dist/reasoning/config.js +171 -0
  259. package/dist/reasoning/config.js.map +1 -0
  260. package/dist/reasoning/credentials.d.ts +5 -0
  261. package/dist/reasoning/credentials.d.ts.map +1 -0
  262. package/dist/reasoning/credentials.js +83 -0
  263. package/dist/reasoning/credentials.js.map +1 -0
  264. package/dist/reasoning/login.d.ts +21 -0
  265. package/dist/reasoning/login.d.ts.map +1 -0
  266. package/dist/reasoning/login.js +85 -0
  267. package/dist/reasoning/login.js.map +1 -0
  268. package/dist/reasoning/reasoner.d.ts +43 -0
  269. package/dist/reasoning/reasoner.d.ts.map +1 -0
  270. package/dist/reasoning/reasoner.js +308 -0
  271. package/dist/reasoning/reasoner.js.map +1 -0
  272. package/dist/resolution/c-fnptr-synthesizer.d.ts +33 -0
  273. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
  274. package/dist/resolution/c-fnptr-synthesizer.js +352 -0
  275. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
  276. package/dist/resolution/callback-synthesizer.d.ts +6 -1
  277. package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  278. package/dist/resolution/callback-synthesizer.js +1197 -1
  279. package/dist/resolution/callback-synthesizer.js.map +1 -1
  280. package/dist/resolution/frameworks/arkts-entry.d.ts +12 -0
  281. package/dist/resolution/frameworks/arkts-entry.d.ts.map +1 -0
  282. package/dist/resolution/frameworks/arkts-entry.js +214 -0
  283. package/dist/resolution/frameworks/arkts-entry.js.map +1 -0
  284. package/dist/resolution/frameworks/arkts-napi.d.ts +3 -0
  285. package/dist/resolution/frameworks/arkts-napi.d.ts.map +1 -0
  286. package/dist/resolution/frameworks/arkts-napi.js +166 -0
  287. package/dist/resolution/frameworks/arkts-napi.js.map +1 -0
  288. package/dist/resolution/frameworks/astro.d.ts +9 -0
  289. package/dist/resolution/frameworks/astro.d.ts.map +1 -0
  290. package/dist/resolution/frameworks/astro.js +169 -0
  291. package/dist/resolution/frameworks/astro.js.map +1 -0
  292. package/dist/resolution/frameworks/goframe.d.ts +41 -0
  293. package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
  294. package/dist/resolution/frameworks/goframe.js +112 -0
  295. package/dist/resolution/frameworks/goframe.js.map +1 -0
  296. package/dist/resolution/frameworks/index.d.ts +3 -0
  297. package/dist/resolution/frameworks/index.d.ts.map +1 -1
  298. package/dist/resolution/frameworks/index.js +17 -1
  299. package/dist/resolution/frameworks/index.js.map +1 -1
  300. package/dist/resolution/frameworks/java.js +6 -1
  301. package/dist/resolution/frameworks/java.js.map +1 -1
  302. package/dist/resolution/frameworks/react.d.ts.map +1 -1
  303. package/dist/resolution/frameworks/react.js +32 -63
  304. package/dist/resolution/frameworks/react.js.map +1 -1
  305. package/dist/resolution/frameworks/svelte.js +6 -2
  306. package/dist/resolution/frameworks/svelte.js.map +1 -1
  307. package/dist/resolution/frameworks/vue.js +24 -27
  308. package/dist/resolution/frameworks/vue.js.map +1 -1
  309. package/dist/resolution/goframe-synthesizer.d.ts +28 -0
  310. package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
  311. package/dist/resolution/goframe-synthesizer.js +158 -0
  312. package/dist/resolution/goframe-synthesizer.js.map +1 -0
  313. package/dist/resolution/import-resolver.d.ts +10 -0
  314. package/dist/resolution/import-resolver.d.ts.map +1 -1
  315. package/dist/resolution/import-resolver.js +125 -2
  316. package/dist/resolution/import-resolver.js.map +1 -1
  317. package/dist/resolution/index.d.ts +37 -0
  318. package/dist/resolution/index.d.ts.map +1 -1
  319. package/dist/resolution/index.js +306 -3
  320. package/dist/resolution/index.js.map +1 -1
  321. package/dist/resolution/name-matcher.d.ts +41 -0
  322. package/dist/resolution/name-matcher.d.ts.map +1 -1
  323. package/dist/resolution/name-matcher.js +519 -14
  324. package/dist/resolution/name-matcher.js.map +1 -1
  325. package/dist/resolution/strip-comments.d.ts +1 -1
  326. package/dist/resolution/strip-comments.d.ts.map +1 -1
  327. package/dist/resolution/strip-comments.js +2 -0
  328. package/dist/resolution/strip-comments.js.map +1 -1
  329. package/dist/resolution/types.d.ts +20 -3
  330. package/dist/resolution/types.d.ts.map +1 -1
  331. package/dist/search/query-utils.d.ts +17 -1
  332. package/dist/search/query-utils.d.ts.map +1 -1
  333. package/dist/search/query-utils.js +79 -10
  334. package/dist/search/query-utils.js.map +1 -1
  335. package/dist/sync/git-hooks.d.ts +4 -4
  336. package/dist/sync/git-hooks.js +5 -5
  337. package/dist/sync/watcher.d.ts +69 -2
  338. package/dist/sync/watcher.d.ts.map +1 -1
  339. package/dist/sync/watcher.js +226 -21
  340. package/dist/sync/watcher.js.map +1 -1
  341. package/dist/sync/worktree.d.ts +3 -3
  342. package/dist/sync/worktree.js +5 -5
  343. package/dist/telemetry/index.d.ts +143 -0
  344. package/dist/telemetry/index.d.ts.map +1 -0
  345. package/dist/telemetry/index.js +541 -0
  346. package/dist/telemetry/index.js.map +1 -0
  347. package/dist/types.d.ts +18 -3
  348. package/dist/types.d.ts.map +1 -1
  349. package/dist/types.js +3 -1
  350. package/dist/types.js.map +1 -1
  351. package/dist/upgrade/index.d.ts.map +1 -1
  352. package/dist/upgrade/index.js +46 -10
  353. package/dist/upgrade/index.js.map +1 -1
  354. package/dist/utils.d.ts +46 -27
  355. package/dist/utils.d.ts.map +1 -1
  356. package/dist/utils.js +87 -53
  357. package/dist/utils.js.map +1 -1
  358. package/package.json +57 -57
  359. package/scripts/add-lang/bench.sh +60 -60
  360. package/scripts/add-lang/check-grammar.mjs +75 -75
  361. package/scripts/add-lang/dump-ast.mjs +103 -103
  362. package/scripts/add-lang/verify-extraction.mjs +70 -70
  363. package/scripts/agent-eval/ab-adoption.sh +91 -0
  364. package/scripts/agent-eval/ab-hook.sh +86 -0
  365. package/scripts/agent-eval/ab-impl.sh +78 -0
  366. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
  367. package/scripts/agent-eval/ab-sufficiency.sh +78 -0
  368. package/scripts/agent-eval/arms-F.sh +21 -21
  369. package/scripts/agent-eval/arms-matrix.sh +37 -37
  370. package/scripts/agent-eval/audit.sh +68 -68
  371. package/scripts/agent-eval/bench-readme.sh +28 -28
  372. package/scripts/agent-eval/bench-why-repo.sh +22 -22
  373. package/scripts/agent-eval/block-read-hook.sh +19 -19
  374. package/scripts/agent-eval/hook-settings.json +15 -15
  375. package/scripts/agent-eval/itrun.sh +120 -120
  376. package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
  377. package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
  378. package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
  379. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
  380. package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
  381. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
  382. package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
  383. package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
  384. package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
  385. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
  386. package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
  387. package/scripts/agent-eval/offload-eval-setup.sh +24 -0
  388. package/scripts/agent-eval/offload-eval-styles.sh +72 -0
  389. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
  390. package/scripts/agent-eval/offload-eval.md +76 -0
  391. package/scripts/agent-eval/parse-arms.mjs +116 -116
  392. package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
  393. package/scripts/agent-eval/parse-run.mjs +45 -45
  394. package/scripts/agent-eval/parse-session.mjs +93 -93
  395. package/scripts/agent-eval/probe-context.mjs +21 -21
  396. package/scripts/agent-eval/probe-explore.mjs +40 -40
  397. package/scripts/agent-eval/probe-node.mjs +20 -20
  398. package/scripts/agent-eval/probe-sweep.mjs +119 -119
  399. package/scripts/agent-eval/probe-trace.mjs +20 -20
  400. package/scripts/agent-eval/redirect-read-hook.sh +38 -0
  401. package/scripts/agent-eval/run-agent.sh +34 -34
  402. package/scripts/agent-eval/run-all.sh +69 -67
  403. package/scripts/agent-eval/run-arms.sh +56 -56
  404. package/scripts/agent-eval/seq-matrix.mjs +137 -137
  405. package/scripts/build-bundle.sh +118 -118
  406. package/scripts/extract-release-notes.mjs +130 -130
  407. package/scripts/local-install.sh +41 -41
  408. package/scripts/npm-sdk.js +75 -75
  409. package/scripts/npm-shim.js +246 -246
  410. package/scripts/pack-npm.sh +119 -119
  411. package/scripts/prepare-release.mjs +270 -270
  412. package/scripts/qa_eval/README.md +400 -0
  413. package/scripts/qa_eval/agent_runner.py +526 -0
  414. package/scripts/qa_eval/data/.gitignore +4 -0
  415. package/scripts/qa_eval/data/test-set.jsonl +22 -0
  416. package/scripts/qa_eval/eval_metrics.py +233 -0
  417. package/scripts/qa_eval/external_agent.py +577 -0
  418. package/scripts/qa_eval/llm_config.py +92 -0
  419. package/scripts/qa_eval/memory_monitor.py +132 -0
  420. package/scripts/qa_eval/my_answer_accuracy.py +187 -0
  421. package/scripts/qa_eval/requirements.txt +2 -0
  422. package/scripts/qa_eval/run_pipeline.py +702 -0
  423. package/scripts/qa_eval/stats_efficiency.py +279 -0
  424. package/scripts/qa_eval/stats_scores.py +207 -0
  425. package/dist/bin/codegraph.d.ts +0 -26
  426. package/dist/bin/codegraph.d.ts.map +0 -1
  427. package/dist/bin/codegraph.js +0 -1572
  428. package/dist/bin/codegraph.js.map +0 -1
  429. package/dist/extraction/arkanalyzer-extractor.d.ts +0 -6
  430. package/dist/extraction/arkanalyzer-extractor.d.ts.map +0 -1
  431. package/dist/extraction/arkanalyzer-extractor.js +0 -11
  432. package/dist/extraction/arkanalyzer-extractor.js.map +0 -1
  433. package/dist/extraction/arkanalyzer-project.d.ts +0 -20
  434. package/dist/extraction/arkanalyzer-project.d.ts.map +0 -1
  435. package/dist/extraction/arkanalyzer-project.js +0 -596
  436. package/dist/extraction/arkanalyzer-project.js.map +0 -1
@@ -70,11 +70,67 @@ function getNodeText(node, source) {
70
70
  function getChildByField(node, fieldName) {
71
71
  return node.childForFieldName(fieldName);
72
72
  }
73
+ /**
74
+ * Node types that *wrap* a declaration so a leading comment is a sibling of the
75
+ * wrapper, not of the emitted (inner) declaration node. HomeGraph emits the
76
+ * inner node, so before looking for its preceding comment we climb out through
77
+ * these. Examples: `export class X {}` (export_statement), `@dec\ndef f()`
78
+ * (decorated_definition), `const f = () => {}` (lexical_declaration →
79
+ * variable_declarator). Each wraps exactly one declaration, so climbing can't
80
+ * mis-attribute a comment to a sibling. (#780)
81
+ */
82
+ const DOCSTRING_WRAPPER_TYPES = new Set([
83
+ 'export_statement', // JS/TS: export class/function/const ...
84
+ 'decorated_definition', // Python: @decorator over def/class
85
+ 'lexical_declaration', // JS/TS: const/let x = () => {}
86
+ 'variable_declaration', // JS/TS: var x = ...
87
+ 'variable_declarator', // JS/TS: the `x = () => {}` inside the declaration
88
+ 'ambient_declaration', // TS: declare ...
89
+ ]);
90
+ /**
91
+ * Strip comment-syntax markers from a raw comment so the stored docstring is
92
+ * just the prose. Covers the marker styles across every supported language:
93
+ * C-family line and block comments and their doc variants, Rust/Swift/Kotlin
94
+ * triple-slash and bang doc lines, hash lines (Python/Ruby/shell), Lua/Luau
95
+ * line and long-bracket comments, and Pascal brace and paren-star comments.
96
+ * (#780)
97
+ *
98
+ * Paired block delimiters are stripped only when the comment OPENS with one,
99
+ * so a line comment that merely happens to END with a closing delimiter is
100
+ * never truncated. The per-line markers are anchored at line start, so
101
+ * they're safe to apply to any comment.
102
+ */
103
+ function cleanCommentMarkers(comment) {
104
+ let c = comment.trim();
105
+ if (c.startsWith('/*'))
106
+ c = c.replace(/^\/\*+!?/, '').replace(/\*+\/$/, '');
107
+ else if (c.startsWith('--['))
108
+ c = c.replace(/^--\[=*\[/, '').replace(/\]=*\]$/, '');
109
+ else if (c.startsWith('(*'))
110
+ c = c.replace(/^\(\*/, '').replace(/\*\)$/, '');
111
+ else if (c.startsWith('{'))
112
+ c = c.replace(/^\{/, '').replace(/\}$/, '');
113
+ return c
114
+ .replace(/^\/\/[/!]?\s?/gm, '') // // , and Rust/Swift doc lines /// //!
115
+ .replace(/^--\s?/gm, '') // Lua/Luau line comments
116
+ .replace(/^#\s?/gm, '') // Python/Ruby/shell line comments
117
+ .replace(/^\s*\*\s?/gm, '') // block-comment continuation (* foo)
118
+ .trim();
119
+ }
73
120
  /**
74
121
  * Get the docstring/comment preceding a node
75
122
  */
76
123
  function getPrecedingDocstring(node, source) {
77
- let sibling = node.previousNamedSibling;
124
+ // Climb out of any wrapper(s) so a comment preceding the WHOLE construct
125
+ // (export-, decorator-, or const-arrow-wrapped) is reachable as a sibling.
126
+ // The emitted node's own `previousNamedSibling` is empty (export/const) or a
127
+ // decorator (Python) in those cases, so without this the docstring was
128
+ // dropped. (#780)
129
+ let anchor = node;
130
+ while (anchor.parent && DOCSTRING_WRAPPER_TYPES.has(anchor.parent.type)) {
131
+ anchor = anchor.parent;
132
+ }
133
+ let sibling = anchor.previousNamedSibling;
78
134
  const comments = [];
79
135
  while (sibling) {
80
136
  if (sibling.type === 'comment' ||
@@ -90,14 +146,7 @@ function getPrecedingDocstring(node, source) {
90
146
  }
91
147
  if (comments.length === 0)
92
148
  return undefined;
93
- // Clean up comment markers
94
- return comments
95
- .map((c) => c
96
- .replace(/^\/\*\*?|\*\/$/g, '')
97
- .replace(/^\/\/\s?/gm, '')
98
- .replace(/^\s*\*\s?/gm, '')
99
- .trim())
100
- .join('\n')
101
- .trim();
149
+ // Strip each comment's syntax markers (language-aware), then join.
150
+ return comments.map(cleanCommentMarkers).join('\n').trim();
102
151
  }
103
152
  //# sourceMappingURL=tree-sitter-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-sitter-helpers.js","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,wCAYC;AAKD,kCAEC;AAKD,0CAEC;AAKD,sDA+BC;AAvED,+CAAiC;AAGjC;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,QAAgB,EAChB,IAAc,EACd,IAAY,EACZ,IAAY;IAEZ,MAAM,IAAI,GAAG,MAAM;SAChB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,KAAK,CAAC;SACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,IAAgB,EAAE,MAAc;IAC1D,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAgB,EAAE,SAAiB;IACjE,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAgB,EAAE,MAAc;IACpE,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,OAAO,OAAO,EAAE,CAAC;QACf,IACE,OAAO,CAAC,IAAI,KAAK,SAAS;YAC1B,OAAO,CAAC,IAAI,KAAK,cAAc;YAC/B,OAAO,CAAC,IAAI,KAAK,eAAe;YAChC,OAAO,CAAC,IAAI,KAAK,uBAAuB,EACxC,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,2BAA2B;IAC3B,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC;SACE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CACV;SACA,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"tree-sitter-helpers.js","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":"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"}
@@ -147,11 +147,32 @@ export interface LanguageExtractor {
147
147
  * Used by languages with fundamentally different AST structures (e.g. Pascal).
148
148
  */
149
149
  visitNode?: (node: SyntaxNode, ctx: ExtractorContext) => boolean;
150
+ /**
151
+ * Synthesize members that exist at compile time but not in the source AST,
152
+ * called at the end of class extraction with the class still on the scope
153
+ * stack (so `ctx.createNode` attaches containment + qualified names) and the
154
+ * class's real members already extracted (so the hook can skip a member the
155
+ * source explicitly declares). Used by Java for Lombok-generated accessors
156
+ * (`@Getter`/`@Setter`/`@Data`/`@Value`/`@Builder` → `getX`/`setX`/`builder`/
157
+ * `equals`/`hashCode`/`toString` + the `log` field), which are otherwise
158
+ * invisible and break call-chain analysis (#912). The created nodes carry a
159
+ * `lombok` decorator + a docstring naming the generating annotation, so an
160
+ * agent can tell them apart from hand-written code.
161
+ */
162
+ synthesizeMembers?: (classNode: SyntaxNode, ctx: ExtractorContext) => void;
150
163
  /**
151
164
  * Classify a class_declaration node when the grammar reuses one node type
152
165
  * for multiple concepts (e.g. Swift uses class_declaration for classes, structs, and enums).
153
166
  */
154
167
  classifyClassNode?: (node: SyntaxNode) => 'class' | 'struct' | 'enum' | 'interface' | 'trait';
168
+ /**
169
+ * Classify a methodTypes node when the grammar reuses one node type for
170
+ * both callable and data members (#808): TS/JS class FIELDS
171
+ * (`public_field_definition` / `field_definition`) are methods only when
172
+ * their value is callable (`onClick = () => {}`); a plain field
173
+ * (`public fonts: Fonts;`, `count = 0`) is a property. Default: 'method'.
174
+ */
175
+ classifyMethodNode?: (node: SyntaxNode) => 'method' | 'property';
155
176
  /**
156
177
  * Resolve the body node for a function/method/class when it's not a child field.
157
178
  * (e.g. Dart puts function_body as a sibling, not a child.)
@@ -173,6 +194,14 @@ export interface LanguageExtractor {
173
194
  * When present, the receiver type is included in the qualified name for better searchability.
174
195
  */
175
196
  getReceiverType?: (node: SyntaxNode, source: string) => string | undefined;
197
+ /**
198
+ * Extract a function/method's normalized return type name (bare class name,
199
+ * smart-pointer pointee unwrapped), stored on the node as `returnType`. Used
200
+ * by C/C++ so resolution can infer a chained receiver's type from what the
201
+ * inner call returns (`Foo::instance().bar()` → resolve `bar` on `Foo`,
202
+ * issue #645). Return undefined for primitives / void / constructors.
203
+ */
204
+ getReturnType?: (node: SyntaxNode, source: string) => string | undefined;
176
205
  /**
177
206
  * Resolve the actual node kind for a type alias declaration.
178
207
  * Used by Go where `type_spec` is the named declaration wrapper for structs/interfaces:
@@ -1 +1 @@
1
- {"version":3,"file":"tree-sitter-types.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-sitter-types.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-types.ts"],"names":[],"mappings":"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"}
@@ -16,15 +16,71 @@ export declare class TreeSitterExtractor {
16
16
  private nodes;
17
17
  private edges;
18
18
  private unresolvedReferences;
19
+ private static readonly VALUE_REF_LANGS;
20
+ private static readonly MAX_VALUE_REF_NODES;
21
+ private readonly valueRefsEnabled;
22
+ private fileScopeValues;
23
+ private fileScopeValueCounts;
24
+ private valueRefScopes;
19
25
  private errors;
20
26
  private extractor;
21
27
  private nodeStack;
22
28
  private methodIndex;
29
+ private fnRefSpec;
30
+ private fnRefCandidates;
31
+ private vueStoreFile;
23
32
  constructor(filePath: string, source: string, language?: Language);
24
33
  /**
25
34
  * Parse and extract from the source code
26
35
  */
27
36
  extract(): ExtractionResult;
37
+ /**
38
+ * Function-as-value capture (#756): if this node is one of the language's
39
+ * value-position containers (call arguments, assignment RHS, struct/object
40
+ * initializer, array/table literal), collect candidate function names from
41
+ * it. Candidates are gated & flushed at end-of-file (flushFnRefCandidates).
42
+ */
43
+ private maybeCaptureFnRefs;
44
+ /**
45
+ * Candidates-only scan of a subtree the main walkers won't traverse
46
+ * (top-level variable initializers). No extraction side effects. Halts at
47
+ * nested function definitions: their bodies are walked — and their
48
+ * candidates attributed — by extractFunction's own body walk.
49
+ */
50
+ private scanFnRefSubtree;
51
+ /**
52
+ * Gate captured function-as-value candidates and push survivors as
53
+ * `function_ref` unresolved references.
54
+ *
55
+ * The gate bounds volume and protects precision: a candidate survives only
56
+ * if its name matches a function/method DEFINED IN THIS FILE or a name this
57
+ * file imports/references. Everything else (locals, params, fields passed
58
+ * as arguments) is dropped before it ever reaches the database. Resolution
59
+ * then matches survivors against function/method nodes only
60
+ * (matchFunctionRef) and emits `references` edges — which callers/impact
61
+ * already traverse.
62
+ *
63
+ * Known v1 limit, deliberate: a C/C++ callback registered in a DIFFERENT
64
+ * translation unit than its definition (extern, no symbol imports to match)
65
+ * is not captured. Same-file registration — the dominant C pattern (static
66
+ * callback + same-file ops struct) — is.
67
+ */
68
+ private flushFnRefCandidates;
69
+ /**
70
+ * Record value-reference bookkeeping as nodes are created: file-scope const/var symbols with
71
+ * distinctive names become reference targets; function/method/const/var symbols become reader
72
+ * scopes whose bodies flushValueRefs scans.
73
+ */
74
+ private captureValueRefScope;
75
+ /**
76
+ * Emit same-file `references` edges from a symbol to the file-scope const/var it reads (TS/JS).
77
+ * The engine doesn't edge const→consumer, so impact analysis misses "change this table, affect
78
+ * its readers" (the ReScript-PR false positive). Same-file only (resolution is unambiguous),
79
+ * distinctive target names only (dodges the local-shadowing precision trap documented on
80
+ * function_ref), deduped per (reader, target). Default on (HOMEGRAPH_VALUE_REFS=0 disables) +
81
+ * additive. Shadowed targets are pruned — see below.
82
+ */
83
+ private flushValueRefs;
28
84
  /**
29
85
  * Visit a node and extract information
30
86
  */
@@ -58,10 +114,41 @@ export declare class TreeSitterExtractor {
58
114
  * (class, struct, interface, trait). File nodes do not count as class-like.
59
115
  */
60
116
  private isInsideClassLikeNode;
117
+ /**
118
+ * Ruby `CONST = …` assignment whose LHS is a `constant` node — a class/module
119
+ * (or top-level) constant worth extracting as a symbol even inside a class.
120
+ * Other languages don't give an assignment a `constant`-typed LHS, so this
121
+ * gate is effectively Ruby-only.
122
+ */
123
+ private isClassScopeConstantAssignment;
61
124
  /**
62
125
  * Extract a function
63
126
  */
64
127
  private extractFunction;
128
+ /**
129
+ * Detect a React component declared via an HOC wrapper whose result is itself a
130
+ * component: `forwardRef(...)`, `memo(...)`, `React.forwardRef/memo(...)`, and
131
+ * styled-components / emotion `styled.tag\`…\`` / `styled(Base)\`…\``. These
132
+ * initializers are a call / tagged-template (not a bare arrow), so the const is
133
+ * otherwise classified `constant` — and a constant is skipped by both the
134
+ * JSX-render edge synthesizer and component resolution, so `<Button/>` usages
135
+ * get no edge and callers/impact silently return empty (#841).
136
+ *
137
+ * Returns `{ inner }` — the inline render function to extract as the component
138
+ * body, or `null` when the wrapper has no inline function (`memo(Imported)`,
139
+ * `styled.button\`…\``) and only a bodyless component node is minted — or
140
+ * `undefined` when this initializer is not a recognized component wrapper.
141
+ */
142
+ private reactComponentHoc;
143
+ /**
144
+ * Emit a `component` node for an HOC-wrapped React component declaration (see
145
+ * reactComponentHoc). Named by the declarator (`Button`) and located at it so
146
+ * the node range spans the body. When the wrapper has an inline render
147
+ * function, its body is walked so the component's callees (hooks, helpers) are
148
+ * captured under the component node — matching how a plain
149
+ * `const Foo = () => …` arrow component already behaves.
150
+ */
151
+ private extractReactComponentNode;
65
152
  /**
66
153
  * Extract a class
67
154
  */
@@ -123,6 +210,72 @@ export declare class TreeSitterExtractor {
123
210
  * `=> { return {...} }` block. Returns null for any other body shape.
124
211
  */
125
212
  private functionReturnedObject;
213
+ /**
214
+ * RTK Query: from a `createApi({ ..., endpoints: build => ({...}) })` or a
215
+ * `baseApi.injectEndpoints({ endpoints: build => ({...}) })` call initializer,
216
+ * return the object literal of endpoint definitions (the object the `endpoints`
217
+ * arrow returns). Returns null for any other call — the common case — so this
218
+ * stays cheap and silent. Keyed on the RTK entry-point names (`createApi` /
219
+ * `injectEndpoints`) like the framework extractors key on their library APIs.
220
+ */
221
+ private findRtkEndpointsObject;
222
+ /**
223
+ * Extract each RTK Query endpoint (`getX: build.query({...})` / `build.mutation`)
224
+ * as a function node named by the endpoint key, spanning its primary handler
225
+ * (the `queryFn`/`query` arrow) so the fetch logic's calls attribute to the
226
+ * endpoint. Without this an endpoint exists only as an object-literal property —
227
+ * never a node — so the generated `useXQuery` hook can't be bridged to it.
228
+ */
229
+ private extractRtkEndpoints;
230
+ /**
231
+ * The primary handler arrow of a `build.query({ queryFn|query: (…) => … })`
232
+ * endpoint — prefers `queryFn`, then `query`, else the first function-valued
233
+ * property. Returns null when the endpoint is config-only (no handler arrow).
234
+ */
235
+ private rtkEndpointHandler;
236
+ /**
237
+ * RTK Query generated-hook bindings. `export const { useGetXQuery,
238
+ * useUpdateYMutation } = someApi` destructures the hooks RTK generates per
239
+ * endpoint off a createApi result. They are real exported symbols that
240
+ * components import, but destructured bindings aren't otherwise extracted —
241
+ * mint a function node per binding matching the RTK hook convention so the hook
242
+ * resolves and the synthesizer can bridge it to its endpoint. Gated tight by the
243
+ * caller (object-pattern off a bare identifier) + the name convention here, so
244
+ * ordinary destructures stay unextracted.
245
+ */
246
+ private extractRtkHookBindings;
247
+ /** Cheap per-file heuristic: the file carries ≥2 distinct Vue-store signals
248
+ * (defineStore/createStore/Vuex, or the actions/mutations/getters/namespaced
249
+ * vocabulary). Gates the non-exported `const actions = {…}` Vuex-module form so
250
+ * a stray `const actions` in unrelated code is never mistaken for a store. */
251
+ private looksLikeVueStoreFile;
252
+ /** True if an object literal has ≥1 inline function member (`key: () => …` /
253
+ * `method(){}`) — distinguishes an inline action map (zustand/SvelteKit form
254
+ * actions) from a Pinia SETUP store's all-shorthand `return { foo, bar }`
255
+ * (whose functions are body-local consts, walked normally instead). */
256
+ private objectHasInlineFunctions;
257
+ /** Vue store action/mutation/getter collections defined INLINE in a store call:
258
+ * `defineStore({ actions: {…}, getters: {…} })` (Pinia options form),
259
+ * `defineStore('id', { actions: {…} })`, `createStore({ mutations: {…} })`,
260
+ * `new Vuex.Store({ actions: {…} })`. Returns the object literals under those
261
+ * keys so their methods become nodes. Gated on the store-factory callee. */
262
+ private findVueStoreCollectionObjects;
263
+ /** Extract the methods of a store-config object's `actions`/`mutations`/`getters`
264
+ * properties. Used for the canonical Vuex MODULE shape `export default {
265
+ * namespaced, actions: {…}, mutations: {…} }` — object-literal methods aren't
266
+ * otherwise extracted, so the actions/mutations would never be nodes. */
267
+ private extractStoreCollectionMethods;
268
+ /** The SETUP function of a Pinia setup store (`defineStore('id', () => {…})`)
269
+ * — an arrow/function arg with a block body. Returns null for the options form
270
+ * (`defineStore({…})`) and for any non-defineStore call. The setup body's local
271
+ * function consts are the store's actions; the generic body walk doesn't reach
272
+ * them (nested functions are separate scopes), so they're extracted explicitly. */
273
+ private findPiniaSetupFn;
274
+ /** Extract a Pinia setup store's actions: the body-local `const foo = () => …`
275
+ * / `function foo(){}` declarations, named by the binding. (State refs and other
276
+ * consts are left to the normal value-extraction; only the functions matter as
277
+ * the store's callable surface.) */
278
+ private extractPiniaSetupBody;
126
279
  /**
127
280
  * Extract a variable declaration (const, let, var, etc.)
128
281
  *
@@ -153,6 +306,34 @@ export declare class TreeSitterExtractor {
153
306
  * don't produce phantom members.
154
307
  */
155
308
  private extractTsTypeAliasMembers;
309
+ /**
310
+ * Surface the string-literal "names" of a TypeScript service/contract
311
+ * registry written as a tuple of generic instantiations:
312
+ *
313
+ * type MyServiceList = [
314
+ * Service<'query_apply_record', Req, Resp>,
315
+ * Service<'apply_confirm', Req, Resp>,
316
+ * ];
317
+ *
318
+ * Each `Service<'name', …>` tags an entry with a string-literal name that a
319
+ * dynamic factory (`createService<MyServiceList>()`) turns into a callable
320
+ * property (`api.query_apply_record(…)`). Static extraction otherwise never
321
+ * sees that name — it's a type argument, not a declaration — so
322
+ * `homegraph query query_apply_record` returned nothing (issue #634). We emit
323
+ * each name as a `method` node under the type alias (qualifiedName
324
+ * `MyServiceList::query_apply_record`) so it's searchable and resolvable as a
325
+ * symbol. (A call through the proxy, `api.query_apply_record(…)`, still
326
+ * resolves to the imported `api` binding — the receiver's type isn't known —
327
+ * so this fixes discoverability, not the per-method call edge.)
328
+ *
329
+ * Scope is deliberately narrow to avoid noise: only a string literal that is
330
+ * a DIRECT type argument of a `generic_type` that is itself a DIRECT element
331
+ * of a `tuple_type`. This excludes utility types (`Pick`/`Omit`/`Record` are
332
+ * never written as tuples) and string args nested deeper
333
+ * (`Service<'a', Pick<U, 'id'>>` yields only `a`, never `id`). Names must be
334
+ * valid identifiers, which also rules out route paths / arbitrary strings.
335
+ */
336
+ private extractTsTupleContractNames;
156
337
  /**
157
338
  * `foo: () => T` → property_signature whose type_annotation contains a
158
339
  * `function_type`. Treat that as a method-shaped contract member, since
@@ -439,6 +620,17 @@ export declare class TreeSitterExtractor {
439
620
  * Extract function calls from a Pascal expression
440
621
  */
441
622
  private extractPascalCall;
623
+ /**
624
+ * Extract a PAREN-LESS Pascal method/procedure call (`Obj.Method;`,
625
+ * `TFoo.GetInstance.DoIt;`). Pascal lets a no-arg method drop its parens, so it
626
+ * parses as a bare `exprDot` (not an `exprCall`). A bare `exprDot` is
627
+ * syntactically identical to a field/property access, so this is only ever
628
+ * called for a STATEMENT-level exprDot (caller-gated): a bare `Obj.Field;`
629
+ * statement is a no-op, so a statement-level dot expression is a call. (An
630
+ * exprDot in assignment LHS/RHS or a condition is left alone — there it really
631
+ * can be a field/property read.)
632
+ */
633
+ private extractPascalParenlessCall;
442
634
  /**
443
635
  * Recursively visit a Pascal block/statement tree for call expressions
444
636
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"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"}