@lzehrung/codegraph 2.3.31 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/README.md +33 -141
  2. package/codegraph-skill/codegraph/SKILL.md +8 -6
  3. package/dist/agent/artifact.d.ts +2 -0
  4. package/dist/agent/artifact.d.ts.map +1 -1
  5. package/dist/agent/artifact.js.map +1 -1
  6. package/dist/agent/call-hierarchy.js +2 -4
  7. package/dist/agent/call-hierarchy.js.map +1 -1
  8. package/dist/agent/explore.d.ts +1 -1
  9. package/dist/agent/explore.d.ts.map +1 -1
  10. package/dist/agent/explore.js +3 -2
  11. package/dist/agent/explore.js.map +1 -1
  12. package/dist/agent/refactor-plan.js +2 -4
  13. package/dist/agent/refactor-plan.js.map +1 -1
  14. package/dist/agent/rename-preview.d.ts.map +1 -1
  15. package/dist/agent/rename-preview.js +4 -3
  16. package/dist/agent/rename-preview.js.map +1 -1
  17. package/dist/agent/search.d.ts.map +1 -1
  18. package/dist/agent/search.js +5 -3
  19. package/dist/agent/search.js.map +1 -1
  20. package/dist/agent/semantic-symbols.d.ts.map +1 -1
  21. package/dist/agent/semantic-symbols.js +2 -3
  22. package/dist/agent/semantic-symbols.js.map +1 -1
  23. package/dist/agent/session.d.ts +3 -0
  24. package/dist/agent/session.d.ts.map +1 -1
  25. package/dist/agent/session.js +10 -2
  26. package/dist/agent/session.js.map +1 -1
  27. package/dist/agent/type-hierarchy.js +2 -4
  28. package/dist/agent/type-hierarchy.js.map +1 -1
  29. package/dist/agent/workspace-symbols.d.ts.map +1 -1
  30. package/dist/agent/workspace-symbols.js +2 -3
  31. package/dist/agent/workspace-symbols.js.map +1 -1
  32. package/dist/agent-tools.d.ts +0 -4
  33. package/dist/agent-tools.d.ts.map +1 -1
  34. package/dist/agent-tools.js +3 -6
  35. package/dist/agent-tools.js.map +1 -1
  36. package/dist/analysis-summary.d.ts +8 -4
  37. package/dist/analysis-summary.d.ts.map +1 -1
  38. package/dist/analysis-summary.js +15 -66
  39. package/dist/analysis-summary.js.map +1 -1
  40. package/dist/bin/cli.js +51145 -41770
  41. package/dist/bin/query-index-worker.js +122 -82
  42. package/dist/cli/affected.d.ts.map +1 -1
  43. package/dist/cli/affected.js +4 -1
  44. package/dist/cli/affected.js.map +1 -1
  45. package/dist/cli/command-catalog.js +1 -1
  46. package/dist/cli/command-catalog.js.map +1 -1
  47. package/dist/cli/command-table.d.ts.map +1 -1
  48. package/dist/cli/command-table.js +9 -17
  49. package/dist/cli/command-table.js.map +1 -1
  50. package/dist/cli/context.js +10 -10
  51. package/dist/cli/context.js.map +1 -1
  52. package/dist/cli/drift.d.ts +0 -2
  53. package/dist/cli/drift.d.ts.map +1 -1
  54. package/dist/cli/drift.js +0 -1
  55. package/dist/cli/drift.js.map +1 -1
  56. package/dist/cli/graph-delta.d.ts +0 -2
  57. package/dist/cli/graph-delta.d.ts.map +1 -1
  58. package/dist/cli/graph-delta.js +0 -4
  59. package/dist/cli/graph-delta.js.map +1 -1
  60. package/dist/cli/graph-queries.d.ts.map +1 -1
  61. package/dist/cli/graph-queries.js +27 -1
  62. package/dist/cli/graph-queries.js.map +1 -1
  63. package/dist/cli/graph.d.ts +0 -3
  64. package/dist/cli/graph.d.ts.map +1 -1
  65. package/dist/cli/graph.js +4 -14
  66. package/dist/cli/graph.js.map +1 -1
  67. package/dist/cli/help.d.ts +34 -34
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +9 -14
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/impact.d.ts +0 -2
  72. package/dist/cli/impact.d.ts.map +1 -1
  73. package/dist/cli/impact.js +0 -1
  74. package/dist/cli/impact.js.map +1 -1
  75. package/dist/cli/index.d.ts +0 -2
  76. package/dist/cli/index.d.ts.map +1 -1
  77. package/dist/cli/index.js +5 -6
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/cli/inspect.d.ts +0 -2
  80. package/dist/cli/inspect.d.ts.map +1 -1
  81. package/dist/cli/inspect.js +5 -8
  82. package/dist/cli/inspect.js.map +1 -1
  83. package/dist/cli/invocation-context.d.ts +0 -3
  84. package/dist/cli/invocation-context.d.ts.map +1 -1
  85. package/dist/cli/invocation-context.js +4 -16
  86. package/dist/cli/invocation-context.js.map +1 -1
  87. package/dist/cli/navigation.d.ts +0 -2
  88. package/dist/cli/navigation.d.ts.map +1 -1
  89. package/dist/cli/navigation.js +0 -1
  90. package/dist/cli/navigation.js.map +1 -1
  91. package/dist/cli/options.d.ts.map +1 -1
  92. package/dist/cli/options.js +4 -14
  93. package/dist/cli/options.js.map +1 -1
  94. package/dist/cli/review.d.ts +0 -2
  95. package/dist/cli/review.d.ts.map +1 -1
  96. package/dist/cli/review.js +0 -5
  97. package/dist/cli/review.js.map +1 -1
  98. package/dist/cli/root-policy.d.ts +0 -2
  99. package/dist/cli/root-policy.d.ts.map +1 -1
  100. package/dist/cli/root-policy.js +0 -8
  101. package/dist/cli/root-policy.js.map +1 -1
  102. package/dist/cli/server.d.ts.map +1 -1
  103. package/dist/cli/server.js +0 -2
  104. package/dist/cli/server.js.map +1 -1
  105. package/dist/drift/artifact.d.ts.map +1 -1
  106. package/dist/drift/artifact.js +15 -18
  107. package/dist/drift/artifact.js.map +1 -1
  108. package/dist/drift/compare.js +1 -1
  109. package/dist/drift/compare.js.map +1 -1
  110. package/dist/drift/git.d.ts.map +1 -1
  111. package/dist/drift/git.js +0 -1
  112. package/dist/drift/git.js.map +1 -1
  113. package/dist/drift/snapshot.d.ts.map +1 -1
  114. package/dist/drift/snapshot.js +5 -7
  115. package/dist/drift/snapshot.js.map +1 -1
  116. package/dist/drift/types.d.ts +2 -2
  117. package/dist/drift/types.d.ts.map +1 -1
  118. package/dist/drift/types.js.map +1 -1
  119. package/dist/duplicates/unit-cache.d.ts +0 -1
  120. package/dist/duplicates/unit-cache.d.ts.map +1 -1
  121. package/dist/duplicates/unit-cache.js +3 -11
  122. package/dist/duplicates/unit-cache.js.map +1 -1
  123. package/dist/duplicates/units.d.ts +5 -5
  124. package/dist/duplicates/units.d.ts.map +1 -1
  125. package/dist/duplicates/units.js +25 -88
  126. package/dist/duplicates/units.js.map +1 -1
  127. package/dist/graph-builder.d.ts +0 -6
  128. package/dist/graph-builder.d.ts.map +1 -1
  129. package/dist/graph-builder.js +6 -11
  130. package/dist/graph-builder.js.map +1 -1
  131. package/dist/graph-edge-collector.d.ts +4 -6
  132. package/dist/graph-edge-collector.d.ts.map +1 -1
  133. package/dist/graph-edge-collector.js +31 -26
  134. package/dist/graph-edge-collector.js.map +1 -1
  135. package/dist/graphs/angularjs.d.ts.map +1 -1
  136. package/dist/graphs/angularjs.js +2 -1
  137. package/dist/graphs/angularjs.js.map +1 -1
  138. package/dist/graphs/edge-resolution.d.ts +4 -1
  139. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  140. package/dist/graphs/edge-resolution.js +24 -76
  141. package/dist/graphs/edge-resolution.js.map +1 -1
  142. package/dist/graphs/specifiers.d.ts +4 -13
  143. package/dist/graphs/specifiers.d.ts.map +1 -1
  144. package/dist/graphs/specifiers.js +80 -173
  145. package/dist/graphs/specifiers.js.map +1 -1
  146. package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
  147. package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
  148. package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
  149. package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
  150. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +60 -8
  151. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
  152. package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
  153. package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
  154. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
  155. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
  156. package/dist/graphs/symbol-graph-detailed/import-aliases.js +150 -7
  157. package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
  158. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
  159. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
  160. package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
  161. package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
  162. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +141 -25
  163. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
  164. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
  165. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  166. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  167. package/dist/graphs/symbol-graph-detailed.js +449 -46
  168. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  169. package/dist/graphs/symbol-graph.d.ts +2 -0
  170. package/dist/graphs/symbol-graph.d.ts.map +1 -1
  171. package/dist/graphs/symbol-graph.js +34 -16
  172. package/dist/graphs/symbol-graph.js.map +1 -1
  173. package/dist/graphs/types.d.ts +0 -4
  174. package/dist/graphs/types.d.ts.map +1 -1
  175. package/dist/graphs.d.ts +1 -1
  176. package/dist/graphs.d.ts.map +1 -1
  177. package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
  178. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  179. package/dist/impact/call-compatibility/providers/index.js +6 -6
  180. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  181. package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
  182. package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
  183. package/dist/impact/call-compatibility/types.d.ts +6 -0
  184. package/dist/impact/call-compatibility/types.d.ts.map +1 -1
  185. package/dist/impact/call-compatibility.d.ts.map +1 -1
  186. package/dist/impact/call-compatibility.js +316 -526
  187. package/dist/impact/call-compatibility.js.map +1 -1
  188. package/dist/impact/map.js +1 -0
  189. package/dist/impact/map.js.map +1 -1
  190. package/dist/impact/reference-cache.d.ts.map +1 -1
  191. package/dist/impact/reference-cache.js +2 -2
  192. package/dist/impact/reference-cache.js.map +1 -1
  193. package/dist/index.d.ts +2 -2
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +1 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/indexer/ambiguous-resolution.d.ts +11 -0
  198. package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
  199. package/dist/indexer/ambiguous-resolution.js +19 -0
  200. package/dist/indexer/ambiguous-resolution.js.map +1 -0
  201. package/dist/indexer/build-cache/module-cache.d.ts +39 -1
  202. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  203. package/dist/indexer/build-cache/module-cache.js +218 -21
  204. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  205. package/dist/indexer/build-cache/options.d.ts +30 -44
  206. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  207. package/dist/indexer/build-cache/options.js +32 -71
  208. package/dist/indexer/build-cache/options.js.map +1 -1
  209. package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
  210. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  211. package/dist/indexer/build-cache/project-snapshot.js +164 -84
  212. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  213. package/dist/indexer/build-cache/reports.d.ts +0 -2
  214. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  215. package/dist/indexer/build-cache/reports.js +0 -97
  216. package/dist/indexer/build-cache/reports.js.map +1 -1
  217. package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
  218. package/dist/indexer/build-cache/resolver-environment.js +32 -2
  219. package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
  220. package/dist/indexer/build-cache.d.ts +2 -2
  221. package/dist/indexer/build-cache.d.ts.map +1 -1
  222. package/dist/indexer/build-cache.js +2 -2
  223. package/dist/indexer/build-cache.js.map +1 -1
  224. package/dist/indexer/build-index.d.ts.map +1 -1
  225. package/dist/indexer/build-index.js +656 -71
  226. package/dist/indexer/build-index.js.map +1 -1
  227. package/dist/indexer/build-workers.d.ts.map +1 -1
  228. package/dist/indexer/build-workers.js +9 -9
  229. package/dist/indexer/build-workers.js.map +1 -1
  230. package/dist/indexer/call-hierarchy.js +1 -1
  231. package/dist/indexer/call-hierarchy.js.map +1 -1
  232. package/dist/indexer/callable-identity.d.ts +24 -0
  233. package/dist/indexer/callable-identity.d.ts.map +1 -0
  234. package/dist/indexer/callable-identity.js +111 -0
  235. package/dist/indexer/callable-identity.js.map +1 -0
  236. package/dist/indexer/compilation-units.d.ts +103 -0
  237. package/dist/indexer/compilation-units.d.ts.map +1 -0
  238. package/dist/indexer/compilation-units.js +607 -0
  239. package/dist/indexer/compilation-units.js.map +1 -0
  240. package/dist/indexer/cpp-callables.d.ts +25 -0
  241. package/dist/indexer/cpp-callables.d.ts.map +1 -0
  242. package/dist/indexer/cpp-callables.js +562 -0
  243. package/dist/indexer/cpp-callables.js.map +1 -0
  244. package/dist/indexer/declaration-visibility.d.ts +43 -2
  245. package/dist/indexer/declaration-visibility.d.ts.map +1 -1
  246. package/dist/indexer/declaration-visibility.js +158 -2
  247. package/dist/indexer/declaration-visibility.js.map +1 -1
  248. package/dist/indexer/expand-star-imports.d.ts +6 -1
  249. package/dist/indexer/expand-star-imports.d.ts.map +1 -1
  250. package/dist/indexer/expand-star-imports.js +131 -37
  251. package/dist/indexer/expand-star-imports.js.map +1 -1
  252. package/dist/indexer/finalize.d.ts.map +1 -1
  253. package/dist/indexer/finalize.js +0 -1
  254. package/dist/indexer/finalize.js.map +1 -1
  255. package/dist/indexer/import-resolution-tables.d.ts +72 -0
  256. package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
  257. package/dist/indexer/import-resolution-tables.js +137 -0
  258. package/dist/indexer/import-resolution-tables.js.map +1 -0
  259. package/dist/indexer/import-types.d.ts +54 -0
  260. package/dist/indexer/import-types.d.ts.map +1 -1
  261. package/dist/indexer/import-types.js +24 -1
  262. package/dist/indexer/import-types.js.map +1 -1
  263. package/dist/indexer/imports/context.d.ts +16 -1
  264. package/dist/indexer/imports/context.d.ts.map +1 -1
  265. package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
  266. package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
  267. package/dist/indexer/imports/import-binding-tables.js +149 -30
  268. package/dist/indexer/imports/import-binding-tables.js.map +1 -1
  269. package/dist/indexer/imports/js-text-imports.js +4 -4
  270. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  271. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  272. package/dist/indexer/imports/native-captures.js +24 -6
  273. package/dist/indexer/imports/native-captures.js.map +1 -1
  274. package/dist/indexer/imports/python.d.ts +10 -2
  275. package/dist/indexer/imports/python.d.ts.map +1 -1
  276. package/dist/indexer/imports/python.js +128 -112
  277. package/dist/indexer/imports/python.js.map +1 -1
  278. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
  279. package/dist/indexer/imports/text-import-extractors.js +68 -19
  280. package/dist/indexer/imports/text-import-extractors.js.map +1 -1
  281. package/dist/indexer/imports.d.ts +3 -4
  282. package/dist/indexer/imports.d.ts.map +1 -1
  283. package/dist/indexer/imports.js +116 -72
  284. package/dist/indexer/imports.js.map +1 -1
  285. package/dist/indexer/incremental-plan.d.ts +33 -0
  286. package/dist/indexer/incremental-plan.d.ts.map +1 -1
  287. package/dist/indexer/incremental-plan.js +203 -1
  288. package/dist/indexer/incremental-plan.js.map +1 -1
  289. package/dist/indexer/locals-and-exports.d.ts +3 -2
  290. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  291. package/dist/indexer/locals-and-exports.js +659 -78
  292. package/dist/indexer/locals-and-exports.js.map +1 -1
  293. package/dist/indexer/member-selection.d.ts +46 -0
  294. package/dist/indexer/member-selection.d.ts.map +1 -0
  295. package/dist/indexer/member-selection.js +169 -0
  296. package/dist/indexer/member-selection.js.map +1 -0
  297. package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
  298. package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
  299. package/dist/indexer/name-lookup-policies/c-family.js +137 -0
  300. package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
  301. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
  302. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
  303. package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
  304. package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
  305. package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
  306. package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
  307. package/dist/indexer/name-lookup-policies/implicit-self.js +119 -0
  308. package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
  309. package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
  310. package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
  311. package/dist/indexer/name-lookup-policies/index.js +132 -0
  312. package/dist/indexer/name-lookup-policies/index.js.map +1 -0
  313. package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
  314. package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
  315. package/dist/indexer/name-lookup-policies/php.js +82 -0
  316. package/dist/indexer/name-lookup-policies/php.js.map +1 -0
  317. package/dist/indexer/name-resolution-types.d.ts +101 -0
  318. package/dist/indexer/name-resolution-types.d.ts.map +1 -0
  319. package/dist/indexer/name-resolution-types.js +2 -0
  320. package/dist/indexer/name-resolution-types.js.map +1 -0
  321. package/dist/indexer/name-resolution.d.ts +57 -0
  322. package/dist/indexer/name-resolution.d.ts.map +1 -0
  323. package/dist/indexer/name-resolution.js +204 -0
  324. package/dist/indexer/name-resolution.js.map +1 -0
  325. package/dist/indexer/navigation-cpp.d.ts +58 -0
  326. package/dist/indexer/navigation-cpp.d.ts.map +1 -0
  327. package/dist/indexer/navigation-cpp.js +935 -0
  328. package/dist/indexer/navigation-cpp.js.map +1 -0
  329. package/dist/indexer/navigation-goto.d.ts +115 -3
  330. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  331. package/dist/indexer/navigation-goto.js +2469 -190
  332. package/dist/indexer/navigation-goto.js.map +1 -1
  333. package/dist/indexer/navigation-local.d.ts +21 -2
  334. package/dist/indexer/navigation-local.d.ts.map +1 -1
  335. package/dist/indexer/navigation-local.js +520 -63
  336. package/dist/indexer/navigation-local.js.map +1 -1
  337. package/dist/indexer/navigation-php.d.ts +66 -0
  338. package/dist/indexer/navigation-php.d.ts.map +1 -1
  339. package/dist/indexer/navigation-php.js +287 -4
  340. package/dist/indexer/navigation-php.js.map +1 -1
  341. package/dist/indexer/navigation-provenance.d.ts +1 -1
  342. package/dist/indexer/navigation-provenance.d.ts.map +1 -1
  343. package/dist/indexer/navigation-provenance.js +4 -13
  344. package/dist/indexer/navigation-provenance.js.map +1 -1
  345. package/dist/indexer/navigation-references.d.ts +73 -6
  346. package/dist/indexer/navigation-references.d.ts.map +1 -1
  347. package/dist/indexer/navigation-references.js +661 -67
  348. package/dist/indexer/navigation-references.js.map +1 -1
  349. package/dist/indexer/navigation-resolve.d.ts +46 -2
  350. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  351. package/dist/indexer/navigation-resolve.js +599 -193
  352. package/dist/indexer/navigation-resolve.js.map +1 -1
  353. package/dist/indexer/navigation.d.ts +29 -2
  354. package/dist/indexer/navigation.d.ts.map +1 -1
  355. package/dist/indexer/navigation.js +1092 -153
  356. package/dist/indexer/navigation.js.map +1 -1
  357. package/dist/indexer/parse-context.d.ts +2 -3
  358. package/dist/indexer/parse-context.d.ts.map +1 -1
  359. package/dist/indexer/parse-context.js +8 -21
  360. package/dist/indexer/parse-context.js.map +1 -1
  361. package/dist/indexer/php-namespace-symbols.d.ts +66 -0
  362. package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
  363. package/dist/indexer/php-namespace-symbols.js +342 -0
  364. package/dist/indexer/php-namespace-symbols.js.map +1 -0
  365. package/dist/indexer/reference-candidates.d.ts.map +1 -1
  366. package/dist/indexer/reference-candidates.js +13 -7
  367. package/dist/indexer/reference-candidates.js.map +1 -1
  368. package/dist/indexer/reference-context.d.ts +2 -0
  369. package/dist/indexer/reference-context.d.ts.map +1 -1
  370. package/dist/indexer/reference-context.js +4 -0
  371. package/dist/indexer/reference-context.js.map +1 -1
  372. package/dist/indexer/scope-nodes.d.ts +92 -13
  373. package/dist/indexer/scope-nodes.d.ts.map +1 -1
  374. package/dist/indexer/scope-nodes.js +212 -20
  375. package/dist/indexer/scope-nodes.js.map +1 -1
  376. package/dist/indexer/scope-types.d.ts +29 -1
  377. package/dist/indexer/scope-types.d.ts.map +1 -1
  378. package/dist/indexer/scope.d.ts +2 -3
  379. package/dist/indexer/scope.d.ts.map +1 -1
  380. package/dist/indexer/scope.js +968 -47
  381. package/dist/indexer/scope.js.map +1 -1
  382. package/dist/indexer/shared-owner-identity.d.ts +53 -0
  383. package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
  384. package/dist/indexer/shared-owner-identity.js +460 -0
  385. package/dist/indexer/shared-owner-identity.js.map +1 -0
  386. package/dist/indexer/shared.d.ts +1 -1
  387. package/dist/indexer/shared.d.ts.map +1 -1
  388. package/dist/indexer/shared.js +1 -1
  389. package/dist/indexer/shared.js.map +1 -1
  390. package/dist/indexer/star-import-precedence.d.ts +113 -0
  391. package/dist/indexer/star-import-precedence.d.ts.map +1 -0
  392. package/dist/indexer/star-import-precedence.js +402 -0
  393. package/dist/indexer/star-import-precedence.js.map +1 -0
  394. package/dist/indexer/symbols.d.ts +3 -1
  395. package/dist/indexer/symbols.d.ts.map +1 -1
  396. package/dist/indexer/symbols.js +58 -18
  397. package/dist/indexer/symbols.js.map +1 -1
  398. package/dist/indexer/ts-callables.d.ts +42 -0
  399. package/dist/indexer/ts-callables.d.ts.map +1 -0
  400. package/dist/indexer/ts-callables.js +233 -0
  401. package/dist/indexer/ts-callables.js.map +1 -0
  402. package/dist/indexer/types.d.ts +41 -26
  403. package/dist/indexer/types.d.ts.map +1 -1
  404. package/dist/indexer/unused-exports.d.ts +13 -0
  405. package/dist/indexer/unused-exports.d.ts.map +1 -0
  406. package/dist/indexer/unused-exports.js +159 -0
  407. package/dist/indexer/unused-exports.js.map +1 -0
  408. package/dist/indexer/workspace-symbols.d.ts.map +1 -1
  409. package/dist/indexer/workspace-symbols.js +3 -2
  410. package/dist/indexer/workspace-symbols.js.map +1 -1
  411. package/dist/indexer.d.ts +3 -8
  412. package/dist/indexer.d.ts.map +1 -1
  413. package/dist/indexer.js +1 -1
  414. package/dist/indexer.js.map +1 -1
  415. package/dist/languages/callable-arity.d.ts +223 -0
  416. package/dist/languages/callable-arity.d.ts.map +1 -0
  417. package/dist/languages/callable-arity.js +1199 -0
  418. package/dist/languages/callable-arity.js.map +1 -0
  419. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  420. package/dist/languages/definitions/c-family.js +30 -1
  421. package/dist/languages/definitions/c-family.js.map +1 -1
  422. package/dist/languages/definitions/c.d.ts +4 -0
  423. package/dist/languages/definitions/c.d.ts.map +1 -1
  424. package/dist/languages/definitions/c.js +19 -0
  425. package/dist/languages/definitions/c.js.map +1 -1
  426. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  427. package/dist/languages/definitions/cpp.js +12 -0
  428. package/dist/languages/definitions/cpp.js.map +1 -1
  429. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  430. package/dist/languages/definitions/csharp.js +2 -8
  431. package/dist/languages/definitions/csharp.js.map +1 -1
  432. package/dist/languages/definitions/go.d.ts.map +1 -1
  433. package/dist/languages/definitions/go.js +3 -0
  434. package/dist/languages/definitions/go.js.map +1 -1
  435. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  436. package/dist/languages/definitions/javascript.js +10 -1
  437. package/dist/languages/definitions/javascript.js.map +1 -1
  438. package/dist/languages/definitions/js-family.d.ts +1 -1
  439. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  440. package/dist/languages/definitions/js-family.js +7 -1
  441. package/dist/languages/definitions/js-family.js.map +1 -1
  442. package/dist/languages/definitions/php.d.ts.map +1 -1
  443. package/dist/languages/definitions/php.js +5 -1
  444. package/dist/languages/definitions/php.js.map +1 -1
  445. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  446. package/dist/languages/definitions/typescript.js +8 -1
  447. package/dist/languages/definitions/typescript.js.map +1 -1
  448. package/dist/languages/definitions/zig.d.ts.map +1 -1
  449. package/dist/languages/definitions/zig.js +8 -0
  450. package/dist/languages/definitions/zig.js.map +1 -1
  451. package/dist/lifecycle/manifest.d.ts.map +1 -1
  452. package/dist/lifecycle/manifest.js +0 -1
  453. package/dist/lifecycle/manifest.js.map +1 -1
  454. package/dist/mcp/handlers.js +14 -7
  455. package/dist/mcp/handlers.js.map +1 -1
  456. package/dist/native/byte-index.d.ts +6 -0
  457. package/dist/native/byte-index.d.ts.map +1 -1
  458. package/dist/native/byte-index.js +11 -6
  459. package/dist/native/byte-index.js.map +1 -1
  460. package/dist/native/contracts.d.ts +2 -3
  461. package/dist/native/contracts.d.ts.map +1 -1
  462. package/dist/native/execution.d.ts +9 -9
  463. package/dist/native/execution.d.ts.map +1 -1
  464. package/dist/native/execution.js +37 -77
  465. package/dist/native/execution.js.map +1 -1
  466. package/dist/native/js-bridge.d.ts +2 -15
  467. package/dist/native/js-bridge.d.ts.map +1 -1
  468. package/dist/native/js-bridge.js +2 -15
  469. package/dist/native/js-bridge.js.map +1 -1
  470. package/dist/native/query-results.js +2 -2
  471. package/dist/native/query-results.js.map +1 -1
  472. package/dist/native/runtime.d.ts +12 -12
  473. package/dist/native/runtime.d.ts.map +1 -1
  474. package/dist/native/runtime.js +24 -69
  475. package/dist/native/runtime.js.map +1 -1
  476. package/dist/native/tree-sitter-native.d.ts +3 -3
  477. package/dist/native/tree-sitter-native.d.ts.map +1 -1
  478. package/dist/native/tree-sitter-native.js +2 -2
  479. package/dist/native/tree-sitter-native.js.map +1 -1
  480. package/dist/presets.d.ts.map +1 -1
  481. package/dist/presets.js +0 -4
  482. package/dist/presets.js.map +1 -1
  483. package/dist/review/candidates.d.ts.map +1 -1
  484. package/dist/review/candidates.js +1 -1
  485. package/dist/review/candidates.js.map +1 -1
  486. package/dist/review/deleted.d.ts +3 -3
  487. package/dist/review/deleted.d.ts.map +1 -1
  488. package/dist/review/deleted.js +82 -32
  489. package/dist/review/deleted.js.map +1 -1
  490. package/dist/review/report.d.ts +1 -0
  491. package/dist/review/report.d.ts.map +1 -1
  492. package/dist/review/report.js +1 -1
  493. package/dist/review/report.js.map +1 -1
  494. package/dist/review.d.ts.map +1 -1
  495. package/dist/review.js +3 -20
  496. package/dist/review.js.map +1 -1
  497. package/dist/session.d.ts.map +1 -1
  498. package/dist/session.js +0 -5
  499. package/dist/session.js.map +1 -1
  500. package/dist/sql/navigation.d.ts.map +1 -1
  501. package/dist/sql/navigation.js +2 -1
  502. package/dist/sql/navigation.js.map +1 -1
  503. package/dist/sql/source-graph.d.ts.map +1 -1
  504. package/dist/sql/source-graph.js +2 -2
  505. package/dist/sql/source-graph.js.map +1 -1
  506. package/dist/sqlite/schema.d.ts +1 -1
  507. package/dist/sqlite/schema.d.ts.map +1 -1
  508. package/dist/sqlite/schema.js +8 -2
  509. package/dist/sqlite/schema.js.map +1 -1
  510. package/dist/sqlite/write.js +2 -2
  511. package/dist/sqlite/write.js.map +1 -1
  512. package/dist/types.d.ts +2 -0
  513. package/dist/types.d.ts.map +1 -1
  514. package/dist/util/bloom-filter.d.ts +8 -1
  515. package/dist/util/bloom-filter.d.ts.map +1 -1
  516. package/dist/util/bloom-filter.js +15 -2
  517. package/dist/util/bloom-filter.js.map +1 -1
  518. package/dist/util/glob.d.ts +32 -0
  519. package/dist/util/glob.d.ts.map +1 -0
  520. package/dist/util/glob.js +137 -0
  521. package/dist/util/glob.js.map +1 -0
  522. package/dist/util/graph-edges.d.ts +19 -1
  523. package/dist/util/graph-edges.d.ts.map +1 -1
  524. package/dist/util/graph-edges.js +30 -4
  525. package/dist/util/graph-edges.js.map +1 -1
  526. package/dist/util/identifiers.d.ts +15 -0
  527. package/dist/util/identifiers.d.ts.map +1 -1
  528. package/dist/util/identifiers.js +35 -0
  529. package/dist/util/identifiers.js.map +1 -1
  530. package/dist/util/member-access-tables.d.ts +61 -4
  531. package/dist/util/member-access-tables.d.ts.map +1 -1
  532. package/dist/util/member-access-tables.js +139 -19
  533. package/dist/util/member-access-tables.js.map +1 -1
  534. package/dist/util/member-access.d.ts +17 -0
  535. package/dist/util/member-access.d.ts.map +1 -1
  536. package/dist/util/member-access.js +98 -3
  537. package/dist/util/member-access.js.map +1 -1
  538. package/dist/util/project-files.d.ts +2 -10
  539. package/dist/util/project-files.d.ts.map +1 -1
  540. package/dist/util/project-files.js +29 -51
  541. package/dist/util/project-files.js.map +1 -1
  542. package/dist/util/python-type-checking.d.ts +18 -0
  543. package/dist/util/python-type-checking.d.ts.map +1 -0
  544. package/dist/util/python-type-checking.js +160 -0
  545. package/dist/util/python-type-checking.js.map +1 -0
  546. package/dist/util/resolution/cargo-targets.d.ts +11 -0
  547. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  548. package/dist/util/resolution/cargo-targets.js +174 -13
  549. package/dist/util/resolution/cargo-targets.js.map +1 -1
  550. package/dist/util/resolution/csharp.d.ts +33 -1
  551. package/dist/util/resolution/csharp.d.ts.map +1 -1
  552. package/dist/util/resolution/csharp.js +145 -30
  553. package/dist/util/resolution/csharp.js.map +1 -1
  554. package/dist/util/resolution/jvm.d.ts +7 -3
  555. package/dist/util/resolution/jvm.d.ts.map +1 -1
  556. package/dist/util/resolution/jvm.js +56 -38
  557. package/dist/util/resolution/jvm.js.map +1 -1
  558. package/dist/util/resolution/php.d.ts.map +1 -1
  559. package/dist/util/resolution/php.js +35 -8
  560. package/dist/util/resolution/php.js.map +1 -1
  561. package/dist/util/resolution/python.d.ts +9 -0
  562. package/dist/util/resolution/python.d.ts.map +1 -1
  563. package/dist/util/resolution/python.js +46 -0
  564. package/dist/util/resolution/python.js.map +1 -1
  565. package/dist/util/resolution/rust.d.ts +0 -1
  566. package/dist/util/resolution/rust.d.ts.map +1 -1
  567. package/dist/util/resolution/rust.js +95 -35
  568. package/dist/util/resolution/rust.js.map +1 -1
  569. package/dist/util/resolution/specifier-targets.d.ts +44 -0
  570. package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
  571. package/dist/util/resolution/specifier-targets.js +152 -0
  572. package/dist/util/resolution/specifier-targets.js.map +1 -0
  573. package/dist/util/resolution-candidates.d.ts +5 -0
  574. package/dist/util/resolution-candidates.d.ts.map +1 -1
  575. package/dist/util/resolution-candidates.js +16 -3
  576. package/dist/util/resolution-candidates.js.map +1 -1
  577. package/dist/util/resolution.d.ts +2 -1
  578. package/dist/util/resolution.d.ts.map +1 -1
  579. package/dist/util/resolution.js +101 -15
  580. package/dist/util/resolution.js.map +1 -1
  581. package/dist/util/specifiers.d.ts +29 -1
  582. package/dist/util/specifiers.d.ts.map +1 -1
  583. package/dist/util/specifiers.js +56 -8
  584. package/dist/util/specifiers.js.map +1 -1
  585. package/dist/util/trivia.d.ts.map +1 -1
  586. package/dist/util/trivia.js +49 -30
  587. package/dist/util/trivia.js.map +1 -1
  588. package/dist/util/workspace.d.ts.map +1 -1
  589. package/dist/util/workspace.js +32 -4
  590. package/dist/util/workspace.js.map +1 -1
  591. package/docs/mcp.md +3 -2
  592. package/package.json +5 -7
  593. package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
  594. package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
  595. package/dist/impact/call-compatibility/providers/profiles.js +0 -164
  596. package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
@@ -0,0 +1,460 @@
1
+ import fs from "node:fs";
2
+ import { supportForFileWithoutHeaderSample } from "../languages.js";
3
+ import { getNativeSyntaxTreeExecution } from "../native/tree-sitter-native.js";
4
+ import { ProjectedSyntaxTree } from "../native/projected-tree.js";
5
+ import { sliceText } from "../util/ast.js";
6
+ import { normalizeCsharpQualifiedName } from "../util/identifiers.js";
7
+ import { fileIdentityKey } from "../util/paths.js";
8
+ import { SymbolKind } from "./types.js";
9
+ export const CSHARP_PARTIAL_CONTAINER_TYPES = new Set([
10
+ "class_declaration",
11
+ "struct_declaration",
12
+ "record_declaration",
13
+ "interface_declaration",
14
+ ]);
15
+ function csharpModifierHas(node, source, keyword) {
16
+ const text = sliceText(node, source).trim();
17
+ return text === keyword || text.split(/\s+/).includes(keyword);
18
+ }
19
+ /** True when the declaration's own modifier list (not its body or bases) contains `keyword`. */
20
+ function csharpContainerHasModifier(container, source, keyword) {
21
+ const body = container.childForFieldName("body");
22
+ for (const child of container.namedChildren ?? []) {
23
+ if (body && child.id === body.id)
24
+ continue;
25
+ if (child.type === "declaration_list" || child.type === "class_body" || child.type === "base_list") {
26
+ continue;
27
+ }
28
+ if (child.type === "modifier" && csharpModifierHas(child, source, keyword))
29
+ return true;
30
+ if (child.type === "modifiers") {
31
+ for (const nested of child.namedChildren ?? []) {
32
+ if (nested.type === "modifier" && csharpModifierHas(nested, source, keyword))
33
+ return true;
34
+ }
35
+ }
36
+ }
37
+ return false;
38
+ }
39
+ function isCSharpPartialContainer(container, source) {
40
+ return CSHARP_PARTIAL_CONTAINER_TYPES.has(container.type) && csharpContainerHasModifier(container, source, "partial");
41
+ }
42
+ /** A `file` modifier on the type or any enclosing type makes the owner file-local. */
43
+ function csharpOwnerIsFileLocal(container, source) {
44
+ for (let current = container; current; current = current.parent) {
45
+ if (CSHARP_PARTIAL_CONTAINER_TYPES.has(current.type) && csharpContainerHasModifier(current, source, "file")) {
46
+ return true;
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ /** Declared C# name with verbatim `@` and formatting characters removed, per identifier equality. */
52
+ function csharpNameText(node, source) {
53
+ if (!node)
54
+ return "";
55
+ return normalizeCsharpQualifiedName(sliceText(node, source));
56
+ }
57
+ function csharpGenericArity(container) {
58
+ const typeParameters = container.childForFieldName("type_parameters") ??
59
+ (container.namedChildren ?? []).find((child) => child.type === "type_parameter_list") ??
60
+ null;
61
+ if (!typeParameters)
62
+ return 0;
63
+ const parameters = (typeParameters.namedChildren ?? []).filter((child) => child.type === "type_parameter");
64
+ if (parameters.length)
65
+ return parameters.length;
66
+ return (typeParameters.namedChildren ?? []).filter((child) => child.type === "identifier").length;
67
+ }
68
+ /**
69
+ * Enclosing type segment carrying its generic arity compiler-style (`Outer`1`).
70
+ * A backtick cannot appear in a C# type or namespace name, so an encoded
71
+ * segment can never collide with a declared name and dot-joined namespace
72
+ * parts stay unambiguous.
73
+ */
74
+ function csharpEnclosingSegment(name, arity) {
75
+ return arity > 0 ? `${name}\`${arity}` : name;
76
+ }
77
+ /**
78
+ * Namespace + enclosing type names (each carrying its generic arity) + the
79
+ * type name. The container's own arity is stored on
80
+ * {@link SharedOwnerIdentity} instead of encoding it into this path.
81
+ */
82
+ function getCSharpFullPath(container, source) {
83
+ const nameNode = container.childForFieldName("name");
84
+ const typeName = csharpNameText(nameNode, source);
85
+ if (!typeName)
86
+ return null;
87
+ const outer = [];
88
+ const namespaces = [];
89
+ let current = container.parent;
90
+ while (current) {
91
+ if (CSHARP_PARTIAL_CONTAINER_TYPES.has(current.type)) {
92
+ const outerName = csharpNameText(current.childForFieldName("name"), source);
93
+ if (outerName)
94
+ outer.push(csharpEnclosingSegment(outerName, csharpGenericArity(current)));
95
+ }
96
+ if (current.type === "namespace_declaration" || current.type === "file_scoped_namespace_declaration") {
97
+ const nsNode = current.childForFieldName("name") ??
98
+ (current.namedChildren ?? []).find((child) => child.type === "identifier" || child.type === "qualified_name");
99
+ const nsText = csharpNameText(nsNode ?? null, source);
100
+ if (nsText)
101
+ namespaces.push(nsText);
102
+ }
103
+ current = current.parent;
104
+ }
105
+ outer.reverse();
106
+ namespaces.reverse();
107
+ const parts = [...namespaces, ...outer, typeName];
108
+ return parts.join(".");
109
+ }
110
+ function swiftKeywordText(container, source) {
111
+ const kind = container.childForFieldName("declaration_kind");
112
+ if (kind) {
113
+ const text = sliceText(kind, source).trim();
114
+ if (text)
115
+ return text;
116
+ }
117
+ const first = container.child(0);
118
+ return first ? sliceText(first, source).trim() : "";
119
+ }
120
+ export function isSwiftExtensionContainer(container, source) {
121
+ return container.type === "class_declaration" && swiftKeywordText(container, source) === "extension";
122
+ }
123
+ function appendSwiftConstraintTokens(node, source, tokens) {
124
+ if (node.type === "comment" || node.type === "line_comment" || node.type === "multiline_comment")
125
+ return;
126
+ const first = node.child(0);
127
+ if (!first) {
128
+ tokens.push(sliceText(node, source));
129
+ return;
130
+ }
131
+ appendSwiftConstraintTokens(first, source, tokens);
132
+ for (let index = 1;; index += 1) {
133
+ const child = node.child(index);
134
+ if (!child)
135
+ break;
136
+ appendSwiftConstraintTokens(child, source, tokens);
137
+ }
138
+ }
139
+ function swiftConstraintKey(container, source) {
140
+ if (!isSwiftExtensionContainer(container, source))
141
+ return null;
142
+ const constraints = (container.namedChildren ?? []).find((child) => child.type === "type_constraints");
143
+ if (!constraints)
144
+ return null;
145
+ // Leaf tokens ignore trivia but preserve token boundaries and literal contents.
146
+ // Different constraint expressions remain separate; semantic equivalence is not inferred.
147
+ const tokens = [];
148
+ appendSwiftConstraintTokens(constraints, source, tokens);
149
+ return JSON.stringify(tokens);
150
+ }
151
+ export function isSwiftConstrainedExtension(container, source) {
152
+ return swiftConstraintKey(container, source) !== null;
153
+ }
154
+ function isSwiftTypeContainer(container, source) {
155
+ if (container.type !== "class_declaration")
156
+ return false;
157
+ const text = swiftKeywordText(container, source);
158
+ return text === "class" || text === "struct" || text === "enum" || text === "actor";
159
+ }
160
+ function swiftNameText(container, source) {
161
+ const nameNode = container.childForFieldName("name");
162
+ if (!nameNode)
163
+ return null;
164
+ const text = sliceText(nameNode, source).trim();
165
+ return text ? text : null;
166
+ }
167
+ function getSwiftFullPath(container, source) {
168
+ const raw = swiftNameText(container, source);
169
+ if (!raw)
170
+ return null;
171
+ const nameParts = raw
172
+ .split(".")
173
+ .map((part) => part.trim())
174
+ .filter((part) => part.length > 0);
175
+ if (!nameParts.length)
176
+ return null;
177
+ const outer = [];
178
+ let current = container.parent;
179
+ while (current) {
180
+ if (current.type === "class_declaration") {
181
+ const outerRaw = swiftNameText(current, source);
182
+ if (outerRaw) {
183
+ const outerParts = outerRaw
184
+ .split(".")
185
+ .map((part) => part.trim())
186
+ .filter((part) => part.length > 0);
187
+ for (let i = outerParts.length - 1; i >= 0; i -= 1)
188
+ outer.push(outerParts[i]);
189
+ }
190
+ }
191
+ current = current.parent;
192
+ }
193
+ outer.reverse();
194
+ return [...outer, ...nameParts].join(".");
195
+ }
196
+ /**
197
+ * `file` is the declaring file path. It is required to scope C# `file` owners and must be the
198
+ * same spelling for every part of one file (callers pass the module or peer file).
199
+ */
200
+ export function getSharedOwnerIdentity(container, source, languageId, file) {
201
+ if (languageId === "csharp") {
202
+ if (!isCSharpPartialContainer(container, source))
203
+ return null;
204
+ const fullPath = getCSharpFullPath(container, source);
205
+ if (!fullPath)
206
+ return null;
207
+ return {
208
+ languageId,
209
+ fullPath,
210
+ declarationKind: container.type,
211
+ genericArity: csharpGenericArity(container),
212
+ ...(csharpOwnerIsFileLocal(container, source) ? { fileLocalTo: fileIdentityKey(file) } : {}),
213
+ };
214
+ }
215
+ if (languageId === "swift") {
216
+ if (isSwiftExtensionContainer(container, source) || isSwiftTypeContainer(container, source)) {
217
+ const swiftConstraint = swiftConstraintKey(container, source);
218
+ const fullPath = getSwiftFullPath(container, source);
219
+ if (!fullPath)
220
+ return null;
221
+ return { languageId, fullPath, ...(swiftConstraint !== null ? { swiftConstraint } : {}) };
222
+ }
223
+ return null;
224
+ }
225
+ return null;
226
+ }
227
+ /** The first owner can access members of the second owner without proving Swift constraints. */
228
+ export function sharedOwnerCanUseMembers(left, right) {
229
+ return (left.languageId === right.languageId &&
230
+ left.fullPath === right.fullPath &&
231
+ (left.declarationKind ?? "") === (right.declarationKind ?? "") &&
232
+ (left.genericArity ?? 0) === (right.genericArity ?? 0) &&
233
+ (left.fileLocalTo ?? "") === (right.fileLocalTo ?? "") &&
234
+ (right.swiftConstraint === undefined || left.swiftConstraint === right.swiftConstraint));
235
+ }
236
+ function sharedOwnerIdentityKey(identity) {
237
+ return `${identity.languageId}\0${identity.fullPath}\0${identity.declarationKind ?? ""}\0${identity.genericArity ?? 0}\0${identity.fileLocalTo ?? ""}`;
238
+ }
239
+ function sourceForIdentity(index, file, fileKey) {
240
+ const retained = index.parsed?.get(fileKey)?.source;
241
+ if (retained !== undefined)
242
+ return retained;
243
+ try {
244
+ return fs.readFileSync(file, "utf8");
245
+ }
246
+ catch {
247
+ return null;
248
+ }
249
+ }
250
+ const identityParsedCaches = new WeakMap();
251
+ function parsedContextForIdentity(index, file) {
252
+ const fileKey = fileIdentityKey(file);
253
+ const retained = index.parsed?.get(fileKey);
254
+ if (retained)
255
+ return retained;
256
+ let cache = identityParsedCaches.get(index);
257
+ if (!cache) {
258
+ cache = new Map();
259
+ identityParsedCaches.set(index, cache);
260
+ }
261
+ if (cache.has(fileKey))
262
+ return cache.get(fileKey) ?? null;
263
+ const source = sourceForIdentity(index, file, fileKey);
264
+ const sup = supportForFileWithoutHeaderSample(file, index.languageExtensions);
265
+ if (source === null || !sup || sup.id !== "csharp") {
266
+ cache.set(fileKey, null);
267
+ return null;
268
+ }
269
+ const execution = getNativeSyntaxTreeExecution(source, sup);
270
+ if (!execution.tree) {
271
+ cache.set(fileKey, null);
272
+ return null;
273
+ }
274
+ const context = {
275
+ source,
276
+ tree: new ProjectedSyntaxTree(source, execution.tree),
277
+ sup,
278
+ nativeQueries: null,
279
+ };
280
+ cache.set(fileKey, context);
281
+ return context;
282
+ }
283
+ function csharpContainerAtRange(tree, range) {
284
+ const root = tree.rootNode;
285
+ const startIndex = range.start.index;
286
+ const node = typeof startIndex === "number"
287
+ ? root.descendantForIndex(startIndex, range.end.index ?? startIndex)
288
+ : root.descendantForPosition({ row: Math.max(0, range.start.line - 1), column: Math.max(0, range.start.column - 1) }, { row: Math.max(0, range.start.line - 1), column: Math.max(0, range.start.column - 1) });
289
+ let current = node;
290
+ while (current) {
291
+ if (CSHARP_PARTIAL_CONTAINER_TYPES.has(current.type))
292
+ return current;
293
+ current = current.parent;
294
+ }
295
+ return null;
296
+ }
297
+ const partialExportIdentities = new WeakMap();
298
+ function definitionIdentityCacheKey(def) {
299
+ const start = def.range.start;
300
+ return `${fileIdentityKey(def.file)}:${start.index ?? `${start.line}:${start.column}`}`;
301
+ }
302
+ function csharpPartialExportIdentity(index, def) {
303
+ const cacheKey = definitionIdentityCacheKey(def);
304
+ let cache = partialExportIdentities.get(index);
305
+ if (!cache) {
306
+ cache = new Map();
307
+ partialExportIdentities.set(index, cache);
308
+ }
309
+ if (cache.has(cacheKey))
310
+ return cache.get(cacheKey) ?? null;
311
+ const languageId = supportForFileWithoutHeaderSample(def.file, index.languageExtensions)?.id;
312
+ if (languageId !== "csharp") {
313
+ cache.set(cacheKey, null);
314
+ return null;
315
+ }
316
+ const context = parsedContextForIdentity(index, def.file);
317
+ if (!context) {
318
+ cache.set(cacheKey, null);
319
+ return null;
320
+ }
321
+ const container = csharpContainerAtRange(context.tree, def.range);
322
+ const identity = container ? getSharedOwnerIdentity(container, context.source, "csharp", def.file) : null;
323
+ cache.set(cacheKey, identity);
324
+ return identity;
325
+ }
326
+ function compareSymbolDefsDeterministic(left, right) {
327
+ const leftFile = fileIdentityKey(left.file);
328
+ const rightFile = fileIdentityKey(right.file);
329
+ if (leftFile !== rightFile)
330
+ return leftFile < rightFile ? -1 : 1;
331
+ const leftIndex = left.range.start.index;
332
+ const rightIndex = right.range.start.index;
333
+ if (typeof leftIndex === "number" && typeof rightIndex === "number" && leftIndex !== rightIndex) {
334
+ return leftIndex - rightIndex;
335
+ }
336
+ if (left.range.start.line !== right.range.start.line)
337
+ return left.range.start.line - right.range.start.line;
338
+ return left.range.start.column - right.range.start.column;
339
+ }
340
+ /** Deterministic representative among proven-equivalent C# partial type parts. */
341
+ export function selectCsharpPartialRepresentative(group) {
342
+ let best = group[0];
343
+ for (let i = 1; i < group.length; i += 1) {
344
+ const candidate = group[i];
345
+ if (compareSymbolDefsDeterministic(candidate, best) < 0)
346
+ best = candidate;
347
+ }
348
+ return best;
349
+ }
350
+ /**
351
+ * Collapse proven-equivalent C# `partial` type declarations to one representative
352
+ * before implicit-unit uniqueness is judged. Non-partial same-name types, other
353
+ * kinds, other generic arities, and other enclosing owners stay distinct.
354
+ * Lookup stays on the candidate list already collected from compilation-unit peers.
355
+ */
356
+ export function coalesceEquivalentCsharpPartialExports(index, matches) {
357
+ if (matches.length <= 1)
358
+ return [...matches];
359
+ const grouped = new Map();
360
+ const unmatched = [];
361
+ for (const match of matches) {
362
+ const identity = csharpPartialExportIdentity(index, match);
363
+ if (!identity) {
364
+ unmatched.push(match);
365
+ continue;
366
+ }
367
+ const key = sharedOwnerIdentityKey(identity);
368
+ const group = grouped.get(key);
369
+ if (group)
370
+ group.push(match);
371
+ else
372
+ grouped.set(key, [match]);
373
+ }
374
+ const coalesced = [...unmatched];
375
+ for (const group of grouped.values()) {
376
+ coalesced.push(selectCsharpPartialRepresentative(group));
377
+ }
378
+ return coalesced;
379
+ }
380
+ const CSHARP_NAMESPACE_TYPE_NODES = new Set([
381
+ ...CSHARP_PARTIAL_CONTAINER_TYPES,
382
+ "enum_declaration",
383
+ "delegate_declaration",
384
+ ]);
385
+ function collectCsharpTypeContainers(node, out) {
386
+ if (CSHARP_NAMESPACE_TYPE_NODES.has(node.type))
387
+ out.push(node);
388
+ for (const child of node.namedChildren ?? [])
389
+ collectCsharpTypeContainers(child, out);
390
+ }
391
+ function syntaxNodeRange(node) {
392
+ return {
393
+ start: { line: node.startPosition.row + 1, column: node.startPosition.column + 1, index: node.startIndex },
394
+ end: { line: node.endPosition.row + 1, column: node.endPosition.column + 1, index: node.endIndex },
395
+ };
396
+ }
397
+ function parseCsharpOwnerFile(file) {
398
+ let source;
399
+ try {
400
+ source = fs.readFileSync(file, "utf8");
401
+ }
402
+ catch {
403
+ return null;
404
+ }
405
+ if (source.charCodeAt(0) === 0xfeff)
406
+ source = source.slice(1);
407
+ const sup = supportForFileWithoutHeaderSample(file);
408
+ if (!sup || sup.id !== "csharp")
409
+ return null;
410
+ const execution = getNativeSyntaxTreeExecution(source, sup);
411
+ if (!execution.tree)
412
+ return null;
413
+ return { source, tree: new ProjectedSyntaxTree(source, execution.tree), sup, nativeQueries: null };
414
+ }
415
+ /**
416
+ * Among files that each declare namespaceName.typeName, keep a file only when every
417
+ * matching declaration is one type. Proven-equivalent partial parts collapse through
418
+ * coalesceEquivalentCsharpPartialExports; anything still distinct is ambiguous.
419
+ * A file that cannot be parsed makes the set partial so callers do not guess.
420
+ */
421
+ export function selectUniqueCsharpNamespaceTypeFile(files, namespaceName, typeName) {
422
+ const expectedPath = namespaceName + "." + typeName;
423
+ const parsed = new Map();
424
+ const matches = [];
425
+ let unreadable = false;
426
+ for (const file of files) {
427
+ const context = parseCsharpOwnerFile(file);
428
+ if (!context) {
429
+ unreadable = true;
430
+ continue;
431
+ }
432
+ parsed.set(fileIdentityKey(file), context);
433
+ const containers = [];
434
+ collectCsharpTypeContainers(context.tree.rootNode, containers);
435
+ for (const container of containers) {
436
+ if (getCSharpFullPath(container, context.source) !== expectedPath)
437
+ continue;
438
+ const nameNode = container.childForFieldName("name");
439
+ if (!nameNode)
440
+ continue;
441
+ matches.push({
442
+ file,
443
+ localName: typeName,
444
+ kind: SymbolKind.Class,
445
+ range: syntaxNodeRange(nameNode),
446
+ });
447
+ }
448
+ }
449
+ if (unreadable)
450
+ return { status: "partial" };
451
+ if (matches.length === 0)
452
+ return { status: "not_found" };
453
+ if (matches.length === 1)
454
+ return { status: "found", file: matches[0].file };
455
+ const unique = coalesceEquivalentCsharpPartialExports({ parsed }, matches);
456
+ if (unique.length === 1)
457
+ return { status: "found", file: unique[0].file };
458
+ return { status: "ambiguous" };
459
+ }
460
+ //# sourceMappingURL=shared-owner-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-owner-identity.js","sourceRoot":"","sources":["../../src/indexer/shared-owner-identity.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { compareEdges, edgeKey, toRelativeEdge } from "../util/graph-edges.js";
1
+ export { compareEdges, edgeFromImportBinding, edgeKey, toRelativeEdge, type EdgeImportSource, } from "../util/graph-edges.js";
2
2
  export declare const DEFAULT_REF_CONTEXT_LINES = 5;
3
3
  export declare function parseGoImportAlias(stmtText: string): string | null;
4
4
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/indexer/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE/E,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAI3C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlE"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/indexer/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAI3C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlE"}
@@ -1,5 +1,5 @@
1
1
  import { GO_IDENTIFIER_SOURCE } from "../util/identifiers.js";
2
- export { compareEdges, edgeKey, toRelativeEdge } from "../util/graph-edges.js";
2
+ export { compareEdges, edgeFromImportBinding, edgeKey, toRelativeEdge, } from "../util/graph-edges.js";
3
3
  export const DEFAULT_REF_CONTEXT_LINES = 5;
4
4
  const GO_IMPORT_ALIAS_PATTERN = new RegExp(String.raw `^(\.|${GO_IDENTIFIER_SOURCE})\s+["'\u0060]`, "u");
5
5
  export function parseGoImportAlias(stmtText) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/indexer/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,oBAAoB,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAExG,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACxD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/indexer/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,OAAO,EACP,cAAc,GAEf,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,oBAAoB,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAExG,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACxD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,113 @@
1
+ import type { ImportBinding } from "./import-types.js";
2
+ import { type ModuleIndex, type ProjectIndex, type SymbolDef } from "./types.js";
3
+ /**
4
+ * What a language does when more than one star import can see the same simple name.
5
+ *
6
+ * `last-wins` — Python. A later `from module import *` rebinds every public name it
7
+ * defines, so the last star (or a later explicit binding) is the name. Overlap is not
8
+ * an ambiguity.
9
+ * `explicit-beats-star` — Java, Kotlin, and Rust. A single-type import or an explicit
10
+ * `use` beats every wildcard/glob, in either source order. Two wildcards or globs that
11
+ * export the same simple name are a compile error.
12
+ * `ambiguous` — Ruby `require` / `require_relative` / `load` / `autoload`, C and C++
13
+ * `#include`, PHP `include`, Go dot-imports, Swift module imports, and C# `using`
14
+ * namespace directives. Two distinct definitions are unresolved. An explicit named
15
+ * import still wins when the language has one (a C# `using` alias), because that
16
+ * binding is not a star import.
17
+ *
18
+ * Ruby stays `ambiguous` only when the same simple name is two qualified paths.
19
+ * One qualified constant path is one constant: every part the use site's load
20
+ * closure can see is a reopening, including when a third file loads both and
21
+ * neither file loads the other. C and C++ functions are grouped by the callable
22
+ * family in `navigation.ts` (same qualified name and signature); different
23
+ * signatures are overloads, not star ambiguity. Same-name typedefs and structs
24
+ * stay ambiguous.
25
+ */
26
+ export type StarImportPrecedence = "last-wins" | "explicit-beats-star" | "ambiguous";
27
+ export declare const STAR_IMPORT_PRECEDENCE: Readonly<Record<string, StarImportPrecedence>>;
28
+ export declare function starImportPrecedence(languageId: string): StarImportPrecedence;
29
+ export type StarImportCandidate = {
30
+ imp: Extract<ImportBinding, {
31
+ kind: "star";
32
+ }>;
33
+ def: SymbolDef;
34
+ };
35
+ export type StarImportDecision = {
36
+ status: "none";
37
+ } | {
38
+ status: "ambiguous";
39
+ } | {
40
+ status: "resolved";
41
+ imp: StarImportCandidate["imp"];
42
+ definition: SymbolDef;
43
+ };
44
+ export type StarImportNamespaceCandidate = {
45
+ imp: Extract<ImportBinding, {
46
+ kind: "star";
47
+ }>;
48
+ namespace: string;
49
+ };
50
+ export type StarImportNamespaceDecision = {
51
+ status: "none";
52
+ } | {
53
+ status: "ambiguous";
54
+ } | {
55
+ status: "resolved";
56
+ imp: StarImportNamespaceCandidate["imp"];
57
+ namespace: string;
58
+ };
59
+ /**
60
+ * expandStarImports copies each star import into a named or namespace binding with the
61
+ * same source specifier and one of its resolved target files, without a source range.
62
+ * These copies remain star imports. Explicit bindings retain their source ranges or
63
+ * an alias flag that star expansion never adds.
64
+ */
65
+ export declare function isExpandedStarBinding(binding: ImportBinding, imports: readonly ImportBinding[]): boolean;
66
+ /**
67
+ * The explicit import binding effective at a simple-name use. Python overwrites a prior binding;
68
+ * other supported languages either reject duplicate explicit imports or retain the first.
69
+ * A positioned use never sees an import whose source binding begins after that use.
70
+ */
71
+ export declare function effectiveExplicitBinding(imports: readonly ImportBinding[], languageId: string, matches: (binding: ImportBinding) => boolean, referenceIndex?: number): ImportBinding | undefined;
72
+ export type EffectiveExplicitOrLocalBinding = {
73
+ kind: "explicit";
74
+ binding: ImportBinding;
75
+ } | {
76
+ kind: "local";
77
+ };
78
+ /**
79
+ * Decide whether the explicit import or a module-local declaration owns a simple name at a use.
80
+ * Python executes module statements in source order, while other languages retain their explicit
81
+ * import precedence. A Python function body reads module names after initialization, so callers
82
+ * set includeLaterModuleBindings to compare all competing module bindings rather than hide a
83
+ * lone declaration that appears later than the body's text. Callers still resolve the selected
84
+ * binding and must leave an unresolved winner unresolved rather than falling back to an older one.
85
+ */
86
+ export declare function effectiveExplicitOrLocalBinding(imports: readonly ImportBinding[], languageId: string, matches: (binding: ImportBinding) => boolean, localStartIndex?: number, referenceIndex?: number, includeLaterModuleBindings?: boolean): EffectiveExplicitOrLocalBinding | undefined;
87
+ export declare function resolveStarImportedDefinition(index: ProjectIndex, imp: ImportBinding, name: string, languageId: string, cNamespace?: "tag" | "ordinary", argumentCount?: number): SymbolDef | null;
88
+ export declare function decideStarImportCandidates(index: ProjectIndex, languageId: string, candidates: readonly StarImportCandidate[], useFile?: string): StarImportDecision;
89
+ /**
90
+ * One simple name through every star import of `mod`, under the language's precedence.
91
+ * Bare names, member receivers, and base-class lookups all reach star imports through this,
92
+ * so one rule decides for every consumer. Explicit imports are the caller's concern.
93
+ */
94
+ export declare function resolveStarImportedName(index: ProjectIndex, mod: ModuleIndex, languageId: string, name: string): StarImportDecision;
95
+ /**
96
+ * One namespace-valued simple name through every star import of a module, under the same
97
+ * precedence as declaration-valued star imports. Distinct namespace targets are ambiguous
98
+ * outside Python; Python's later star binding replaces the earlier one.
99
+ */
100
+ export declare function resolveStarImportedNamespace(index: ProjectIndex, mod: ModuleIndex, languageId: string, name: string): StarImportNamespaceDecision;
101
+ export type RubyReopenedConstant = {
102
+ /** Other declarations of this constant. The queried declaration is not included. */
103
+ parts: SymbolDef[];
104
+ /** Kept for callers. Source is not re-read, so the part list is not truncated that way. */
105
+ incomplete: boolean;
106
+ };
107
+ /**
108
+ * Other declarations of this qualified constant in the same load component.
109
+ * A third file that requires both sides is enough; the two files need not require
110
+ * each other. Files that are never loaded together stay apart.
111
+ */
112
+ export declare function findRubyReopenedConstantParts(index: ProjectIndex, def: SymbolDef): RubyReopenedConstant;
113
+ //# sourceMappingURL=star-import-precedence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"star-import-precedence.d.ts","sourceRoot":"","sources":["../../src/indexer/star-import-precedence.ts"],"names":[],"mappings":"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"}