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
@@ -0,0 +1,3 @@
1
+ import { FrameworkResolver } from '../types';
2
+ export declare const arktsNapiResolver: FrameworkResolver;
3
+ //# sourceMappingURL=arkts-napi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arkts-napi.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/arkts-napi.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAsGlB,eAAO,MAAM,iBAAiB,EAAE,iBA+E/B,CAAC"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arktsNapiResolver = void 0;
4
+ /** JS-visible NAPI export: `ClassName_methodName`. */
5
+ const NAPI_SYMBOL_RE = /^[A-Z][A-Za-z0-9_]*_[A-Za-z0-9_]+$/;
6
+ /** `{"Asset_setCropRect", nullptr, Asset_setCropRect, …}` descriptor rows. */
7
+ const NAPI_DESC_RE = /\{\s*["']([A-Z][A-Za-z0-9_]*(?:_[A-Za-z0-9_]+)+)["']\s*,\s*nullptr\s*,\s*([A-Za-z_][A-Za-z0-9_]*)/g;
8
+ /** `static napi_value Asset_setCropRect(` callback definitions. */
9
+ const NAPI_FUNC_RE = /(?:static\s+)?napi_value\s+([A-Z][A-Za-z0-9_]*(?:_[A-Za-z0-9_]+)+)\s*\(/g;
10
+ const CPP_LANGUAGES = new Set(['cpp', 'c']);
11
+ function isNapiSymbol(name) {
12
+ return NAPI_SYMBOL_RE.test(name);
13
+ }
14
+ function lineOf(source, idx) {
15
+ let line = 1;
16
+ for (let i = 0; i < idx && i < source.length; i++) {
17
+ if (source.charCodeAt(i) === 10)
18
+ line++;
19
+ }
20
+ return line;
21
+ }
22
+ function parseNapiExports(source) {
23
+ const results = [];
24
+ const seen = new Set();
25
+ NAPI_DESC_RE.lastIndex = 0;
26
+ let m;
27
+ while ((m = NAPI_DESC_RE.exec(source)) !== null) {
28
+ const jsName = m[1];
29
+ const nativeName = m[2];
30
+ if (!isNapiSymbol(jsName))
31
+ continue;
32
+ if (seen.has(jsName))
33
+ continue;
34
+ seen.add(jsName);
35
+ results.push({ jsName, nativeName, line: lineOf(source, m.index) });
36
+ }
37
+ NAPI_FUNC_RE.lastIndex = 0;
38
+ while ((m = NAPI_FUNC_RE.exec(source)) !== null) {
39
+ const name = m[1];
40
+ if (!isNapiSymbol(name))
41
+ continue;
42
+ if (seen.has(name))
43
+ continue;
44
+ seen.add(name);
45
+ results.push({ jsName: name, nativeName: name, line: lineOf(source, m.index) });
46
+ }
47
+ return results;
48
+ }
49
+ const napiBySymbol = new WeakMap();
50
+ function buildNapiMap(context) {
51
+ const cached = napiBySymbol.get(context);
52
+ if (cached)
53
+ return cached;
54
+ const bySymbol = new Map();
55
+ const add = (symbol, node) => {
56
+ const arr = bySymbol.get(symbol);
57
+ if (arr)
58
+ arr.push(node);
59
+ else
60
+ bySymbol.set(symbol, [node]);
61
+ };
62
+ for (const node of context.getNodesByKind('function')) {
63
+ if (!CPP_LANGUAGES.has(node.language))
64
+ continue;
65
+ if (isNapiSymbol(node.name))
66
+ add(node.name, node);
67
+ }
68
+ for (const file of context.getAllFiles()) {
69
+ if (!file.endsWith('.cpp') && !file.endsWith('.cc') && !file.endsWith('.cxx'))
70
+ continue;
71
+ const source = context.readFile(file);
72
+ if (!source || !/\bnapi_(define_properties|module_register)\b/.test(source))
73
+ continue;
74
+ for (const exp of parseNapiExports(source)) {
75
+ const candidates = context.getNodesByName(exp.nativeName).filter((n) => CPP_LANGUAGES.has(n.language) && n.filePath === file);
76
+ const node = candidates[0];
77
+ if (node)
78
+ add(exp.jsName, node);
79
+ }
80
+ }
81
+ napiBySymbol.set(context, bySymbol);
82
+ return bySymbol;
83
+ }
84
+ function napiSymbolFromRef(ref) {
85
+ const name = ref.referenceName.includes('.')
86
+ ? ref.referenceName.slice(ref.referenceName.lastIndexOf('.') + 1)
87
+ : ref.referenceName;
88
+ return isNapiSymbol(name) ? name : null;
89
+ }
90
+ exports.arktsNapiResolver = {
91
+ name: 'arkts-napi',
92
+ languages: ['arkts', 'cpp', 'c'],
93
+ extract(filePath, source) {
94
+ if (!filePath.endsWith('.cpp') && !filePath.endsWith('.cc') && !filePath.endsWith('.cxx')) {
95
+ return { nodes: [], references: [] };
96
+ }
97
+ if (!/\bnapi_(define_properties|module_register)\b/.test(source)) {
98
+ return { nodes: [], references: [] };
99
+ }
100
+ const exports = parseNapiExports(source);
101
+ const now = Date.now();
102
+ const nodes = [];
103
+ const seen = new Set();
104
+ for (const exp of exports) {
105
+ if (seen.has(exp.jsName))
106
+ continue;
107
+ seen.add(exp.jsName);
108
+ nodes.push({
109
+ id: `arkts-napi:${filePath}:${exp.jsName}`,
110
+ kind: 'function',
111
+ name: exp.jsName,
112
+ qualifiedName: `${filePath}::${exp.jsName}`,
113
+ filePath,
114
+ language: 'cpp',
115
+ startLine: exp.line,
116
+ endLine: exp.line,
117
+ startColumn: 0,
118
+ endColumn: 0,
119
+ isExported: true,
120
+ docstring: `NAPI export ${exp.jsName}`,
121
+ signature: `napi_value ${exp.nativeName}(napi_env, napi_callback_info)`,
122
+ updatedAt: now,
123
+ });
124
+ }
125
+ return { nodes, references: [] };
126
+ },
127
+ detect(context) {
128
+ for (const file of context.getAllFiles()) {
129
+ if (file.endsWith('.ets') || file.endsWith('.ts')) {
130
+ const src = context.readFile(file);
131
+ if (src && /['"]lib[A-Za-z0-9_]+\.so['"]/.test(src))
132
+ return true;
133
+ }
134
+ if (file.endsWith('.cpp') || file.endsWith('.cc') || file.endsWith('.cxx')) {
135
+ const src = context.readFile(file);
136
+ if (src && /\bnapi_(define_properties|module_register)\b/.test(src))
137
+ return true;
138
+ }
139
+ }
140
+ return false;
141
+ },
142
+ claimsReference(name) {
143
+ const symbol = name.includes('.') ? name.slice(name.lastIndexOf('.') + 1) : name;
144
+ return isNapiSymbol(symbol);
145
+ },
146
+ resolve(ref, context) {
147
+ if (ref.language !== 'arkts' || ref.referenceKind !== 'calls')
148
+ return null;
149
+ const symbol = napiSymbolFromRef(ref);
150
+ if (!symbol)
151
+ return null;
152
+ const entries = buildNapiMap(context).get(symbol);
153
+ if (!entries || entries.length === 0)
154
+ return null;
155
+ const target = entries.find((n) => n.filePath.includes('napi')) ?? entries[0];
156
+ if (!target)
157
+ return null;
158
+ return {
159
+ original: ref,
160
+ targetNodeId: target.id,
161
+ confidence: 0.75,
162
+ resolvedBy: 'framework',
163
+ };
164
+ },
165
+ };
166
+ //# sourceMappingURL=arkts-napi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arkts-napi.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/arkts-napi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Astro Framework Resolver
3
+ *
4
+ * Handles Astro component references, the `Astro` global, `astro:*` virtual
5
+ * module imports, and Astro's `src/pages/` file-based routing.
6
+ */
7
+ import { FrameworkResolver } from '../types';
8
+ export declare const astroResolver: FrameworkResolver;
9
+ //# sourceMappingURL=astro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/astro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAiD,MAAM,UAAU,CAAC;AAiB5F,eAAO,MAAM,aAAa,EAAE,iBA+G3B,CAAC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Astro Framework Resolver
4
+ *
5
+ * Handles Astro component references, the `Astro` global, `astro:*` virtual
6
+ * module imports, and Astro's `src/pages/` file-based routing.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.astroResolver = void 0;
10
+ /**
11
+ * Astro virtual module prefixes — framework-provided, not user code
12
+ */
13
+ const ASTRO_VIRTUAL_MODULES = [
14
+ 'astro:content',
15
+ 'astro:assets',
16
+ 'astro:actions',
17
+ 'astro:env',
18
+ 'astro:i18n',
19
+ 'astro:middleware',
20
+ 'astro:transitions',
21
+ 'astro:components',
22
+ 'astro:schema',
23
+ ];
24
+ exports.astroResolver = {
25
+ name: 'astro',
26
+ detect(context) {
27
+ // Check for astro in package.json
28
+ const packageJson = context.readFile('package.json');
29
+ if (packageJson) {
30
+ try {
31
+ const pkg = JSON.parse(packageJson);
32
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
33
+ if (deps.astro) {
34
+ return true;
35
+ }
36
+ }
37
+ catch {
38
+ // Invalid JSON
39
+ }
40
+ }
41
+ // Check for .astro files in project
42
+ const allFiles = context.getAllFiles();
43
+ return allFiles.some((f) => f.endsWith('.astro'));
44
+ },
45
+ resolve(ref, context) {
46
+ // Pattern 1: the `Astro` global (Astro.props, Astro.url, Astro.params, …)
47
+ // — runtime-provided in every component's frontmatter. Resolving it as
48
+ // framework-provided keeps it from name-matching a user symbol named Astro.
49
+ if (ref.referenceName === 'Astro' || ref.referenceName.startsWith('Astro.')) {
50
+ return {
51
+ original: ref,
52
+ targetNodeId: ref.fromNodeId,
53
+ confidence: 1.0,
54
+ resolvedBy: 'framework',
55
+ };
56
+ }
57
+ // Pattern 2: astro:* virtual module imports (astro:content, astro:assets, …)
58
+ if (ref.referenceKind === 'imports' && ref.referenceName.startsWith('astro:')) {
59
+ if (ASTRO_VIRTUAL_MODULES.some((prefix) => ref.referenceName.startsWith(prefix))) {
60
+ return {
61
+ original: ref,
62
+ targetNodeId: ref.fromNodeId,
63
+ confidence: 1.0,
64
+ resolvedBy: 'framework',
65
+ };
66
+ }
67
+ }
68
+ // Pattern 3: Component references (PascalCase) — resolve to component
69
+ // nodes. Template tags arrive as `references`, frontmatter expression
70
+ // usages as `calls`.
71
+ if (isPascalCase(ref.referenceName) &&
72
+ (ref.referenceKind === 'references' || ref.referenceKind === 'calls')) {
73
+ const result = resolveComponent(ref.referenceName, ref.filePath, context);
74
+ if (result) {
75
+ return {
76
+ original: ref,
77
+ targetNodeId: result,
78
+ confidence: 0.8,
79
+ resolvedBy: 'framework',
80
+ };
81
+ }
82
+ }
83
+ return null;
84
+ },
85
+ extract(filePath, _content) {
86
+ const nodes = [];
87
+ const now = Date.now();
88
+ // Normalize to forward slashes
89
+ const normalized = filePath.replace(/\\/g, '/');
90
+ // Astro file-based routing lives under src/pages/ — .astro files are
91
+ // pages, .ts/.js files are API endpoints. (.md/.mdx pages exist too but
92
+ // aren't indexed as source.) Underscore-prefixed segments are excluded
93
+ // from routing by Astro.
94
+ const pagesMatch = /(?:^|\/)src\/pages\//.exec(normalized);
95
+ if (pagesMatch && /\.(astro|ts|js|mjs)$/.test(normalized)) {
96
+ const afterPages = normalized.substring(pagesMatch.index + pagesMatch[0].length);
97
+ const base = afterPages.split('/').pop() || '';
98
+ // Underscore-prefixed segments are excluded from routing by Astro;
99
+ // a stray `*.config.*` in a pages dir is never a route.
100
+ if (!afterPages.split('/').some((segment) => segment.startsWith('_')) &&
101
+ !/\.config\.[a-z]+$/.test(base)) {
102
+ const routePath = filePathToAstroRoute(afterPages);
103
+ nodes.push({
104
+ id: `route:${filePath}:${routePath}:1`,
105
+ kind: 'route',
106
+ name: routePath,
107
+ qualifiedName: `${filePath}::route:${routePath}`,
108
+ filePath,
109
+ startLine: 1,
110
+ endLine: 1,
111
+ startColumn: 0,
112
+ endColumn: 0,
113
+ language: normalized.endsWith('.astro') ? 'astro' : 'typescript',
114
+ updatedAt: now,
115
+ });
116
+ }
117
+ }
118
+ return { nodes, references: [] };
119
+ },
120
+ };
121
+ /**
122
+ * Check if string is PascalCase
123
+ */
124
+ function isPascalCase(str) {
125
+ return /^[A-Z][a-zA-Z0-9]*$/.test(str);
126
+ }
127
+ /**
128
+ * Resolve an Astro component reference using name-based lookup
129
+ */
130
+ function resolveComponent(name, fromFile, context) {
131
+ // Look for component nodes by name
132
+ const candidates = context.getNodesByName(name);
133
+ const components = candidates.filter((n) => n.kind === 'component');
134
+ if (components.length === 0)
135
+ return null;
136
+ // Prefer same directory
137
+ const fromDir = fromFile.substring(0, fromFile.lastIndexOf('/'));
138
+ const sameDir = components.filter((n) => n.filePath.startsWith(fromDir));
139
+ if (sameDir.length > 0)
140
+ return sameDir[0].id;
141
+ // No positional signal: only an UNAMBIGUOUS name may resolve — picking
142
+ // components[0] would choose an arbitrary same-named component in a
143
+ // multi-app monorepo (#764). Ambiguity falls through to the name-matcher,
144
+ // whose proximity scoring decides.
145
+ return components.length === 1 ? components[0].id : null;
146
+ }
147
+ /**
148
+ * Convert a path under src/pages/ to an Astro route path.
149
+ *
150
+ * blog/[slug].astro -> /blog/:slug
151
+ * blog/[...path].astro -> /blog/*path
152
+ * api/posts.ts -> /api/posts
153
+ * index.astro -> /
154
+ */
155
+ function filePathToAstroRoute(afterPages) {
156
+ // Remove the extension
157
+ const withoutExt = afterPages.replace(/\.(astro|ts|js|mjs)$/, '');
158
+ // index files map to their parent path (index -> /, blog/index -> /blog)
159
+ const withoutIndex = withoutExt.replace(/(^|\/)index$/, '$1').replace(/\/$/, '');
160
+ // Convert Astro param syntax
161
+ const route = '/' + withoutIndex
162
+ .replace(/\[\.\.\.([^\]]+)\]/g, '*$1') // [...rest] -> *rest (catch-all)
163
+ .replace(/\[([^\]]+)\]/g, ':$1'); // [param] -> :param
164
+ if (route === '/')
165
+ return '/';
166
+ // Remove trailing slash
167
+ return route.replace(/\/$/, '');
168
+ }
169
+ //# sourceMappingURL=astro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/astro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * GoFrame Framework Resolver (route metadata) — issue #747.
3
+ *
4
+ * GoFrame's "standard router" binds routes reflectively, so there is no literal
5
+ * path string at a `.GET("/x", handler)` call site and no static edge from a
6
+ * route to the controller method that serves it. The structural facts live in
7
+ * two places, joined only at runtime by GoFrame:
8
+ *
9
+ * // api/user/v1/user_sign_in.go — the route lives in a struct tag on the request type
10
+ * type SignInReq struct {
11
+ * g.Meta `path:"/user/sign-in" method:"post" tags:"UserService" summary:"…"`
12
+ * …
13
+ * }
14
+ * // internal/controller/user/user_v1_sign_in.go — the handler takes *that* request type
15
+ * func (c *ControllerV1) SignIn(ctx context.Context, req *v1.SignInReq) (res *v1.SignInRes, err error)
16
+ * // internal/cmd/cmd.go — reflective binding (no path, no handler name)
17
+ * group.Bind(user.NewV1())
18
+ *
19
+ * This resolver handles the FIRST half: it reads the `g.Meta` struct tag on a
20
+ * request type into a `route` node (`POST /user/sign-in`). The route → handler
21
+ * EDGE is the genuinely reflective part — the method name is NOT derivable from
22
+ * the request type (`DeptSearchReq` is served by `List`, `DeptAddReq` by `Add`),
23
+ * so the only reliable join is the request type appearing in the method's
24
+ * parameter signature. That whole-graph join is done by the companion
25
+ * `goframeRouteEdges` synthesizer, which reads the request type back out of the
26
+ * route node's qualifiedName.
27
+ *
28
+ * Honesty note: the route node carries the `g.Meta` path verbatim. The group
29
+ * prefix from `s.Group("/api", …)` / nested `group.Group("/v1", …)` is applied
30
+ * by reflective `Bind` at runtime and is deliberately NOT reconstructed here —
31
+ * the discriminating, structural part is the per-route path + method.
32
+ */
33
+ import { FrameworkResolver } from '../types';
34
+ /** Marker embedded in a route node's qualifiedName so the synthesizer can read
35
+ * back the request type to join on. The value after it is the package-qualified
36
+ * request type (`cash.ListReq`) — the package disambiguates the many identical
37
+ * bare names (`ListReq`, `GetReq`) a large app defines, one per module. Falls
38
+ * back to the bare type when no `package` declaration is found. */
39
+ export declare const GOFRAME_ROUTE_MARKER = "::goframe-route:";
40
+ export declare const goframeResolver: FrameworkResolver;
41
+ //# sourceMappingURL=goframe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goframe.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/goframe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,iBAAiB,EAAiD,MAAM,UAAU,CAAC;AAe5F;;;;oEAIoE;AACpE,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,eAAO,MAAM,eAAe,EAAE,iBA6D7B,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * GoFrame Framework Resolver (route metadata) — issue #747.
4
+ *
5
+ * GoFrame's "standard router" binds routes reflectively, so there is no literal
6
+ * path string at a `.GET("/x", handler)` call site and no static edge from a
7
+ * route to the controller method that serves it. The structural facts live in
8
+ * two places, joined only at runtime by GoFrame:
9
+ *
10
+ * // api/user/v1/user_sign_in.go — the route lives in a struct tag on the request type
11
+ * type SignInReq struct {
12
+ * g.Meta `path:"/user/sign-in" method:"post" tags:"UserService" summary:"…"`
13
+ * …
14
+ * }
15
+ * // internal/controller/user/user_v1_sign_in.go — the handler takes *that* request type
16
+ * func (c *ControllerV1) SignIn(ctx context.Context, req *v1.SignInReq) (res *v1.SignInRes, err error)
17
+ * // internal/cmd/cmd.go — reflective binding (no path, no handler name)
18
+ * group.Bind(user.NewV1())
19
+ *
20
+ * This resolver handles the FIRST half: it reads the `g.Meta` struct tag on a
21
+ * request type into a `route` node (`POST /user/sign-in`). The route → handler
22
+ * EDGE is the genuinely reflective part — the method name is NOT derivable from
23
+ * the request type (`DeptSearchReq` is served by `List`, `DeptAddReq` by `Add`),
24
+ * so the only reliable join is the request type appearing in the method's
25
+ * parameter signature. That whole-graph join is done by the companion
26
+ * `goframeRouteEdges` synthesizer, which reads the request type back out of the
27
+ * route node's qualifiedName.
28
+ *
29
+ * Honesty note: the route node carries the `g.Meta` path verbatim. The group
30
+ * prefix from `s.Group("/api", …)` / nested `group.Group("/v1", …)` is applied
31
+ * by reflective `Bind` at runtime and is deliberately NOT reconstructed here —
32
+ * the discriminating, structural part is the per-route path + method.
33
+ */
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.goframeResolver = exports.GOFRAME_ROUTE_MARKER = void 0;
36
+ const strip_comments_1 = require("../strip-comments");
37
+ /**
38
+ * A request type carrying a routable `g.Meta` tag. `g.Meta` is, by GoFrame
39
+ * convention, the first embedded field of the struct, so anchoring on
40
+ * `struct { g.Meta `…` }` is both precise and cheap. Response types embed
41
+ * `g.Meta` too but tag it `mime:"…"` with no `path:` — the path requirement
42
+ * below filters them out.
43
+ */
44
+ const GOFRAME_META_RE = /\btype\s+([A-Z]\w*)\s+struct\s*\{\s*g\.Meta\s+`([^`]*)`/g;
45
+ const META_PATH_RE = /\bpath:"([^"]+)"/;
46
+ const META_METHOD_RE = /\bmethod:"([^"]+)"/;
47
+ const GO_PACKAGE_RE = /^\s*package\s+(\w+)/m;
48
+ /** Marker embedded in a route node's qualifiedName so the synthesizer can read
49
+ * back the request type to join on. The value after it is the package-qualified
50
+ * request type (`cash.ListReq`) — the package disambiguates the many identical
51
+ * bare names (`ListReq`, `GetReq`) a large app defines, one per module. Falls
52
+ * back to the bare type when no `package` declaration is found. */
53
+ exports.GOFRAME_ROUTE_MARKER = '::goframe-route:';
54
+ exports.goframeResolver = {
55
+ name: 'goframe',
56
+ languages: ['go'],
57
+ detect(context) {
58
+ const goMod = context.readFile('go.mod');
59
+ // GoFrame is `github.com/gogf/gf` (v1) or `github.com/gogf/gf/v2` (v2).
60
+ return !!goMod && goMod.includes('github.com/gogf/gf');
61
+ },
62
+ extract(filePath, content) {
63
+ if (!filePath.endsWith('.go'))
64
+ return { nodes: [], references: [] };
65
+ // Cheap reject: the file must mention g.Meta at all.
66
+ if (!content.includes('g.Meta'))
67
+ return { nodes: [], references: [] };
68
+ const nodes = [];
69
+ const now = Date.now();
70
+ const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'go');
71
+ const pkg = GO_PACKAGE_RE.exec(safe)?.[1];
72
+ GOFRAME_META_RE.lastIndex = 0;
73
+ let match;
74
+ while ((match = GOFRAME_META_RE.exec(safe)) !== null) {
75
+ const [, requestType, tag] = match;
76
+ const pathMatch = META_PATH_RE.exec(tag);
77
+ if (!pathMatch)
78
+ continue; // response `g.Meta `mime:…`` and other non-route metadata
79
+ const routePath = pathMatch[1];
80
+ const methodMatch = META_METHOD_RE.exec(tag);
81
+ // GoFrame defaults to all methods when `method:` is omitted.
82
+ const method = methodMatch ? methodMatch[1].toUpperCase() : 'ANY';
83
+ const line = safe.slice(0, match.index).split('\n').length;
84
+ // The handler's signature qualifies the request type with its package
85
+ // (`req *cash.ListReq`); encode `pkg.Type` so the synthesizer can match it.
86
+ const joinKey = pkg ? `${pkg}.${requestType}` : requestType;
87
+ nodes.push({
88
+ id: `route:${filePath}:${line}:${method}:${routePath}`,
89
+ kind: 'route',
90
+ name: `${method} ${routePath}`,
91
+ // The request type is the synthesizer's join key — encode it after the
92
+ // marker. The path stays human-readable in `name`.
93
+ qualifiedName: `${filePath}${exports.GOFRAME_ROUTE_MARKER}${joinKey}`,
94
+ filePath,
95
+ startLine: line,
96
+ endLine: line,
97
+ startColumn: 0,
98
+ endColumn: match[0].length,
99
+ language: 'go',
100
+ updatedAt: now,
101
+ });
102
+ }
103
+ return { nodes, references: [] };
104
+ },
105
+ // The route → controller-method edge is reflective (request-type join across
106
+ // files) and is built by the `goframeRouteEdges` synthesizer after the graph
107
+ // is complete. This resolver creates no references of its own.
108
+ resolve(_ref, _context) {
109
+ return null;
110
+ },
111
+ };
112
+ //# sourceMappingURL=goframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goframe.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/goframe.ts"],"names":[],"mappings":"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"}
@@ -33,11 +33,13 @@ export { nestjsResolver } from './nestjs';
33
33
  export { reactResolver } from './react';
34
34
  export { svelteResolver } from './svelte';
35
35
  export { vueResolver } from './vue';
36
+ export { astroResolver } from './astro';
36
37
  export { djangoResolver, flaskResolver, fastapiResolver } from './python';
37
38
  export { railsResolver } from './ruby';
38
39
  export { springResolver } from './java';
39
40
  export { playResolver } from './play';
40
41
  export { goResolver } from './go';
42
+ export { goframeResolver } from './goframe';
41
43
  export { rustResolver } from './rust';
42
44
  export { aspnetResolver } from './csharp';
43
45
  export { swiftUIResolver, uikitResolver, vaporResolver } from './swift';
@@ -45,4 +47,5 @@ export { swiftObjcBridgeResolver } from './swift-objc';
45
47
  export { reactNativeBridgeResolver } from './react-native';
46
48
  export { expoModulesResolver } from './expo-modules';
47
49
  export { fabricViewResolver } from './fabric';
50
+ export { arktsNapiResolver } from './arkts-napi';
48
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+D5C;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAQhF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CAIrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAO3E;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyE5C;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAQhF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CAIrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAO3E;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}