gitnexus 1.6.2-rc.2 → 1.6.2-rc.21

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 (198) hide show
  1. package/dist/_shared/lbug/schema-constants.d.ts +1 -1
  2. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  3. package/dist/_shared/lbug/schema-constants.js +1 -0
  4. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  5. package/dist/cli/analyze.js +3 -0
  6. package/dist/core/embeddings/ast-utils.d.ts +22 -0
  7. package/dist/core/embeddings/ast-utils.js +105 -0
  8. package/dist/core/embeddings/character-chunk.d.ts +12 -0
  9. package/dist/core/embeddings/character-chunk.js +43 -0
  10. package/dist/core/embeddings/chunker.d.ts +14 -0
  11. package/dist/core/embeddings/chunker.js +234 -0
  12. package/dist/core/embeddings/embedder.js +5 -0
  13. package/dist/core/embeddings/embedding-pipeline.d.ts +29 -24
  14. package/dist/core/embeddings/embedding-pipeline.js +244 -125
  15. package/dist/core/embeddings/line-index.d.ts +7 -0
  16. package/dist/core/embeddings/line-index.js +42 -0
  17. package/dist/core/embeddings/server-mapping.d.ts +15 -0
  18. package/dist/core/embeddings/server-mapping.js +33 -0
  19. package/dist/core/embeddings/structural-extractor.d.ts +15 -0
  20. package/dist/core/embeddings/structural-extractor.js +58 -0
  21. package/dist/core/embeddings/text-generator.d.ts +20 -13
  22. package/dist/core/embeddings/text-generator.js +151 -119
  23. package/dist/core/embeddings/types.d.ts +81 -3
  24. package/dist/core/embeddings/types.js +105 -3
  25. package/dist/core/group/extractors/http-patterns/node.js +130 -0
  26. package/dist/core/group/extractors/manifest-extractor.js +20 -5
  27. package/dist/core/group/sync.js +49 -1
  28. package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
  29. package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
  30. package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
  31. package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
  32. package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
  33. package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
  34. package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
  35. package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
  36. package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
  37. package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
  38. package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
  39. package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
  40. package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
  41. package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
  42. package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
  43. package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
  44. package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
  45. package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
  46. package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
  47. package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
  48. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
  49. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
  50. package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
  51. package/dist/core/ingestion/call-extractors/generic.js +59 -0
  52. package/dist/core/ingestion/call-processor.d.ts +1 -3
  53. package/dist/core/ingestion/call-processor.js +49 -47
  54. package/dist/core/ingestion/call-types.d.ts +60 -0
  55. package/dist/core/ingestion/call-types.js +2 -0
  56. package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
  57. package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
  58. package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
  59. package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
  60. package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
  61. package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
  62. package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
  63. package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
  64. package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
  65. package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
  66. package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
  67. package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
  68. package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
  69. package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
  70. package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
  71. package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
  72. package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
  73. package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
  74. package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
  75. package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
  76. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
  77. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
  78. package/dist/core/ingestion/field-types.d.ts +1 -1
  79. package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
  80. package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
  81. package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
  82. package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
  83. package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
  84. package/dist/core/ingestion/import-resolvers/{dart.js → configs/dart.js} +26 -16
  85. package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
  86. package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
  87. package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
  88. package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
  89. package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
  90. package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
  91. package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
  92. package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
  93. package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
  94. package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
  95. package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
  96. package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
  97. package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
  98. package/dist/core/ingestion/import-resolvers/{swift.js → configs/swift.js} +10 -5
  99. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
  100. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
  101. package/dist/core/ingestion/import-resolvers/csharp.d.ts +4 -5
  102. package/dist/core/ingestion/import-resolvers/csharp.js +4 -20
  103. package/dist/core/ingestion/import-resolvers/go.d.ts +4 -5
  104. package/dist/core/ingestion/import-resolvers/go.js +4 -19
  105. package/dist/core/ingestion/import-resolvers/jvm.d.ts +5 -10
  106. package/dist/core/ingestion/import-resolvers/jvm.js +5 -58
  107. package/dist/core/ingestion/import-resolvers/php.d.ts +4 -5
  108. package/dist/core/ingestion/import-resolvers/php.js +4 -7
  109. package/dist/core/ingestion/import-resolvers/python.d.ts +3 -6
  110. package/dist/core/ingestion/import-resolvers/python.js +3 -18
  111. package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
  112. package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
  113. package/dist/core/ingestion/import-resolvers/ruby.d.ts +4 -5
  114. package/dist/core/ingestion/import-resolvers/ruby.js +4 -7
  115. package/dist/core/ingestion/import-resolvers/rust.d.ts +4 -5
  116. package/dist/core/ingestion/import-resolvers/rust.js +4 -47
  117. package/dist/core/ingestion/import-resolvers/standard.d.ts +3 -9
  118. package/dist/core/ingestion/import-resolvers/standard.js +7 -8
  119. package/dist/core/ingestion/import-resolvers/types.d.ts +24 -0
  120. package/dist/core/ingestion/language-provider.d.ts +12 -0
  121. package/dist/core/ingestion/languages/c-cpp.js +15 -12
  122. package/dist/core/ingestion/languages/csharp.js +11 -21
  123. package/dist/core/ingestion/languages/dart.js +11 -7
  124. package/dist/core/ingestion/languages/go.js +11 -20
  125. package/dist/core/ingestion/languages/java.js +11 -18
  126. package/dist/core/ingestion/languages/kotlin.js +11 -13
  127. package/dist/core/ingestion/languages/php.js +11 -7
  128. package/dist/core/ingestion/languages/python.js +11 -7
  129. package/dist/core/ingestion/languages/ruby.js +11 -7
  130. package/dist/core/ingestion/languages/rust.js +11 -7
  131. package/dist/core/ingestion/languages/swift.js +11 -18
  132. package/dist/core/ingestion/languages/typescript.js +15 -23
  133. package/dist/core/ingestion/languages/vue.js +11 -17
  134. package/dist/core/ingestion/model/index.d.ts +2 -2
  135. package/dist/core/ingestion/model/index.js +1 -1
  136. package/dist/core/ingestion/model/resolve.d.ts +3 -0
  137. package/dist/core/ingestion/model/resolve.js +6 -2
  138. package/dist/core/ingestion/parsing-processor.d.ts +1 -2
  139. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  140. package/dist/core/ingestion/tree-sitter-queries.js +81 -0
  141. package/dist/core/ingestion/type-env.d.ts +1 -1
  142. package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -1
  143. package/dist/core/ingestion/utils/ast-helpers.js +3 -0
  144. package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
  145. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
  146. package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
  147. package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
  148. package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
  149. package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
  150. package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
  151. package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
  152. package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
  153. package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
  154. package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
  155. package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
  156. package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
  157. package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
  158. package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
  159. package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
  160. package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
  161. package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
  162. package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
  163. package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
  164. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
  165. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
  166. package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
  167. package/dist/core/ingestion/variable-extractors/generic.js +80 -0
  168. package/dist/core/ingestion/variable-types.d.ts +82 -0
  169. package/dist/core/ingestion/variable-types.js +2 -0
  170. package/dist/core/ingestion/workers/parse-worker.js +196 -166
  171. package/dist/core/ingestion/workers/worker-pool.js +3 -0
  172. package/dist/core/lbug/csv-generator.js +1 -0
  173. package/dist/core/lbug/lbug-adapter.d.ts +13 -4
  174. package/dist/core/lbug/lbug-adapter.js +166 -81
  175. package/dist/core/lbug/schema.d.ts +9 -1
  176. package/dist/core/lbug/schema.js +19 -2
  177. package/dist/core/run-analyze.js +17 -4
  178. package/dist/core/tree-sitter/parser-loader.d.ts +3 -0
  179. package/dist/core/tree-sitter/parser-loader.js +17 -8
  180. package/dist/mcp/core/embedder.js +5 -0
  181. package/dist/mcp/local/local-backend.js +29 -19
  182. package/dist/server/api.js +10 -21
  183. package/package.json +5 -3
  184. package/scripts/build-tree-sitter-proto.cjs +82 -0
  185. package/vendor/node_modules/node-addon-api/node_addon_api.Makefile +6 -0
  186. package/vendor/node_modules/node-addon-api/node_addon_api.target.mk +104 -0
  187. package/vendor/node_modules/node-addon-api/node_addon_api_except.target.mk +108 -0
  188. package/vendor/node_modules/node-addon-api/node_addon_api_except_all.target.mk +104 -0
  189. package/vendor/node_modules/node-addon-api/node_addon_api_maybe.target.mk +104 -0
  190. package/vendor/tree-sitter-proto/package.json +1 -7
  191. package/dist/core/ingestion/call-sites/extract-language-call-site.d.ts +0 -10
  192. package/dist/core/ingestion/call-sites/extract-language-call-site.js +0 -22
  193. package/dist/core/ingestion/call-sites/java.d.ts +0 -9
  194. package/dist/core/ingestion/call-sites/java.js +0 -30
  195. package/dist/core/ingestion/import-resolvers/dart.d.ts +0 -7
  196. package/dist/core/ingestion/import-resolvers/swift.d.ts +0 -7
  197. package/dist/core/ingestion/import-resolvers/vue.d.ts +0 -8
  198. package/dist/core/ingestion/import-resolvers/vue.js +0 -9
@@ -7,10 +7,12 @@
7
7
  */
8
8
  import { SupportedLanguages } from '../../../_shared/index.js';
9
9
  import { createClassExtractor } from '../class-extractors/generic.js';
10
+ import { phpClassConfig } from '../class-extractors/configs/php.js';
10
11
  import { defineLanguage } from '../language-provider.js';
11
12
  import { typeConfig as phpConfig } from '../type-extractors/php.js';
12
13
  import { phpExportChecker } from '../export-detection.js';
13
- import { resolvePhpImport } from '../import-resolvers/php.js';
14
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
15
+ import { phpImportConfig } from '../import-resolvers/configs/php.js';
14
16
  import { extractPhpNamedBindings } from '../named-bindings/php.js';
15
17
  import { PHP_QUERIES } from '../tree-sitter-queries.js';
16
18
  import { findDescendant, extractStringContent } from '../utils/ast-helpers.js';
@@ -18,6 +20,10 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
18
20
  import { phpConfig as phpFieldConfig } from '../field-extractors/configs/php.js';
19
21
  import { createMethodExtractor } from '../method-extractors/generic.js';
20
22
  import { phpMethodConfig } from '../method-extractors/configs/php.js';
23
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
24
+ import { phpVariableConfig } from '../variable-extractors/configs/php.js';
25
+ import { createCallExtractor } from '../call-extractors/generic.js';
26
+ import { phpCallConfig } from '../call-extractors/configs/php.js';
21
27
  const BUILT_INS = new Set([
22
28
  'echo',
23
29
  'isset',
@@ -219,15 +225,13 @@ export const phpProvider = defineLanguage({
219
225
  treeSitterQueries: PHP_QUERIES,
220
226
  typeConfig: phpConfig,
221
227
  exportChecker: phpExportChecker,
222
- importResolver: resolvePhpImport,
228
+ importResolver: createImportResolver(phpImportConfig),
223
229
  namedBindingExtractor: extractPhpNamedBindings,
230
+ callExtractor: createCallExtractor(phpCallConfig),
224
231
  fieldExtractor: createFieldExtractor(phpFieldConfig),
225
232
  methodExtractor: createMethodExtractor(phpMethodConfig),
226
- classExtractor: createClassExtractor({
227
- language: SupportedLanguages.PHP,
228
- typeDeclarationNodes: ['class_declaration', 'interface_declaration', 'enum_declaration'],
229
- ancestorScopeNodeTypes: ['namespace_definition'],
230
- }),
233
+ variableExtractor: createVariableExtractor(phpVariableConfig),
234
+ classExtractor: createClassExtractor(phpClassConfig),
231
235
  descriptionExtractor: phpDescriptionExtractor,
232
236
  isRouteFile: isPhpRouteFile,
233
237
  builtInNames: BUILT_INS,
@@ -11,16 +11,22 @@
11
11
  */
12
12
  import { SupportedLanguages } from '../../../_shared/index.js';
13
13
  import { createClassExtractor } from '../class-extractors/generic.js';
14
+ import { pythonClassConfig } from '../class-extractors/configs/python.js';
14
15
  import { defineLanguage } from '../language-provider.js';
15
16
  import { typeConfig as pythonConfig } from '../type-extractors/python.js';
16
17
  import { pythonExportChecker } from '../export-detection.js';
17
- import { resolvePythonImport } from '../import-resolvers/python.js';
18
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
19
+ import { pythonImportConfig } from '../import-resolvers/configs/python.js';
18
20
  import { extractPythonNamedBindings } from '../named-bindings/python.js';
19
21
  import { PYTHON_QUERIES } from '../tree-sitter-queries.js';
20
22
  import { createFieldExtractor } from '../field-extractors/generic.js';
21
23
  import { pythonConfig as pythonFieldConfig } from '../field-extractors/configs/python.js';
22
24
  import { createMethodExtractor } from '../method-extractors/generic.js';
23
25
  import { pythonMethodConfig } from '../method-extractors/configs/python.js';
26
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
27
+ import { pythonVariableConfig } from '../variable-extractors/configs/python.js';
28
+ import { createCallExtractor } from '../call-extractors/generic.js';
29
+ import { pythonCallConfig } from '../call-extractors/configs/python.js';
24
30
  const BUILT_INS = new Set([
25
31
  'print',
26
32
  'len',
@@ -56,16 +62,14 @@ export const pythonProvider = defineLanguage({
56
62
  treeSitterQueries: PYTHON_QUERIES,
57
63
  typeConfig: pythonConfig,
58
64
  exportChecker: pythonExportChecker,
59
- importResolver: resolvePythonImport,
65
+ importResolver: createImportResolver(pythonImportConfig),
60
66
  namedBindingExtractor: extractPythonNamedBindings,
61
67
  importSemantics: 'namespace',
62
68
  mroStrategy: 'c3',
69
+ callExtractor: createCallExtractor(pythonCallConfig),
63
70
  fieldExtractor: createFieldExtractor(pythonFieldConfig),
64
71
  methodExtractor: createMethodExtractor(pythonMethodConfig),
65
- classExtractor: createClassExtractor({
66
- language: SupportedLanguages.Python,
67
- typeDeclarationNodes: ['class_definition'],
68
- ancestorScopeNodeTypes: ['class_definition'],
69
- }),
72
+ variableExtractor: createVariableExtractor(pythonVariableConfig),
73
+ classExtractor: createClassExtractor(pythonClassConfig),
70
74
  builtInNames: BUILT_INS,
71
75
  });
@@ -8,16 +8,22 @@
8
8
  */
9
9
  import { SupportedLanguages } from '../../../_shared/index.js';
10
10
  import { createClassExtractor } from '../class-extractors/generic.js';
11
+ import { rubyClassConfig } from '../class-extractors/configs/ruby.js';
11
12
  import { defineLanguage } from '../language-provider.js';
12
13
  import { typeConfig as rubyConfig } from '../type-extractors/ruby.js';
13
14
  import { routeRubyCall } from '../call-routing.js';
14
15
  import { rubyExportChecker } from '../export-detection.js';
15
- import { resolveRubyImport } from '../import-resolvers/ruby.js';
16
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
17
+ import { rubyImportConfig } from '../import-resolvers/configs/ruby.js';
16
18
  import { RUBY_QUERIES } from '../tree-sitter-queries.js';
17
19
  import { createFieldExtractor } from '../field-extractors/generic.js';
18
20
  import { rubyConfig as rubyFieldConfig } from '../field-extractors/configs/ruby.js';
19
21
  import { createMethodExtractor } from '../method-extractors/generic.js';
20
22
  import { rubyMethodConfig } from '../method-extractors/configs/ruby.js';
23
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
24
+ import { rubyVariableConfig } from '../variable-extractors/configs/ruby.js';
25
+ import { createCallExtractor } from '../call-extractors/generic.js';
26
+ import { rubyCallConfig } from '../call-extractors/configs/ruby.js';
21
27
  /** Ruby method/singleton_method: extract name from 'name' field, label as Method. */
22
28
  const rubyExtractFunctionName = (node) => {
23
29
  if (node.type !== 'method' && node.type !== 'singleton_method')
@@ -97,9 +103,10 @@ export const rubyProvider = defineLanguage({
97
103
  treeSitterQueries: RUBY_QUERIES,
98
104
  typeConfig: rubyConfig,
99
105
  exportChecker: rubyExportChecker,
100
- importResolver: resolveRubyImport,
106
+ importResolver: createImportResolver(rubyImportConfig),
101
107
  callRouter: routeRubyCall,
102
108
  importSemantics: 'wildcard-leaf',
109
+ callExtractor: createCallExtractor(rubyCallConfig),
103
110
  resolveEnclosingOwner(node) {
104
111
  // Ruby singleton_class (class << self) should resolve to the enclosing
105
112
  // class or module for owner/container resolution (HAS_METHOD edges, class IDs).
@@ -120,10 +127,7 @@ export const rubyProvider = defineLanguage({
120
127
  ...rubyMethodConfig,
121
128
  extractFunctionName: rubyExtractFunctionName,
122
129
  }),
123
- classExtractor: createClassExtractor({
124
- language: SupportedLanguages.Ruby,
125
- typeDeclarationNodes: ['class'],
126
- ancestorScopeNodeTypes: ['module', 'class'],
127
- }),
130
+ variableExtractor: createVariableExtractor(rubyVariableConfig),
131
+ classExtractor: createClassExtractor(rubyClassConfig),
128
132
  builtInNames: BUILT_INS,
129
133
  });
@@ -11,16 +11,22 @@
11
11
  */
12
12
  import { SupportedLanguages } from '../../../_shared/index.js';
13
13
  import { createClassExtractor } from '../class-extractors/generic.js';
14
+ import { rustClassConfig } from '../class-extractors/configs/rust.js';
14
15
  import { defineLanguage } from '../language-provider.js';
15
16
  import { typeConfig as rustConfig } from '../type-extractors/rust.js';
16
17
  import { rustExportChecker } from '../export-detection.js';
17
- import { resolveRustImport } from '../import-resolvers/rust.js';
18
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
19
+ import { rustImportConfig } from '../import-resolvers/configs/rust.js';
18
20
  import { extractRustNamedBindings } from '../named-bindings/rust.js';
19
21
  import { RUST_QUERIES } from '../tree-sitter-queries.js';
20
22
  import { createFieldExtractor } from '../field-extractors/generic.js';
21
23
  import { rustConfig as rustFieldConfig } from '../field-extractors/configs/rust.js';
22
24
  import { createMethodExtractor } from '../method-extractors/generic.js';
23
25
  import { rustMethodConfig } from '../method-extractors/configs/rust.js';
26
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
27
+ import { rustVariableConfig } from '../variable-extractors/configs/rust.js';
28
+ import { createCallExtractor } from '../call-extractors/generic.js';
29
+ import { rustCallConfig } from '../call-extractors/configs/rust.js';
24
30
  /** Rust impl_item: find the function_item child and extract its name as a Method. */
25
31
  const rustExtractFunctionName = (node) => {
26
32
  if (node.type !== 'impl_item')
@@ -109,18 +115,16 @@ export const rustProvider = defineLanguage({
109
115
  treeSitterQueries: RUST_QUERIES,
110
116
  typeConfig: rustConfig,
111
117
  exportChecker: rustExportChecker,
112
- importResolver: resolveRustImport,
118
+ importResolver: createImportResolver(rustImportConfig),
113
119
  namedBindingExtractor: extractRustNamedBindings,
114
120
  mroStrategy: 'qualified-syntax',
121
+ callExtractor: createCallExtractor(rustCallConfig),
115
122
  fieldExtractor: createFieldExtractor(rustFieldConfig),
116
123
  methodExtractor: createMethodExtractor({
117
124
  ...rustMethodConfig,
118
125
  extractFunctionName: rustExtractFunctionName,
119
126
  }),
120
- classExtractor: createClassExtractor({
121
- language: SupportedLanguages.Rust,
122
- typeDeclarationNodes: ['struct_item', 'enum_item'],
123
- ancestorScopeNodeTypes: ['mod_item', 'struct_item', 'enum_item'],
124
- }),
127
+ variableExtractor: createVariableExtractor(rustVariableConfig),
128
+ classExtractor: createClassExtractor(rustClassConfig),
125
129
  builtInNames: BUILT_INS,
126
130
  });
@@ -11,15 +11,21 @@
11
11
  */
12
12
  import { SupportedLanguages } from '../../../_shared/index.js';
13
13
  import { createClassExtractor } from '../class-extractors/generic.js';
14
+ import { swiftClassConfig } from '../class-extractors/configs/swift.js';
14
15
  import { defineLanguage } from '../language-provider.js';
15
16
  import { typeConfig as swiftConfig } from '../type-extractors/swift.js';
16
17
  import { swiftExportChecker } from '../export-detection.js';
17
- import { resolveSwiftImport } from '../import-resolvers/swift.js';
18
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
19
+ import { swiftImportConfig } from '../import-resolvers/configs/swift.js';
18
20
  import { SWIFT_QUERIES } from '../tree-sitter-queries.js';
19
21
  import { createFieldExtractor } from '../field-extractors/generic.js';
20
22
  import { swiftConfig as swiftFieldConfig } from '../field-extractors/configs/swift.js';
21
23
  import { createMethodExtractor } from '../method-extractors/generic.js';
22
24
  import { swiftMethodConfig } from '../method-extractors/configs/swift.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { swiftVariableConfig } from '../variable-extractors/configs/swift.js';
27
+ import { createCallExtractor } from '../call-extractors/generic.js';
28
+ import { swiftCallConfig } from '../call-extractors/configs/swift.js';
23
29
  /**
24
30
  * Group Swift files by SPM target for implicit module visibility.
25
31
  * If SwiftPackageConfig is available, use target -> directory mappings.
@@ -220,30 +226,17 @@ export const swiftProvider = defineLanguage({
220
226
  treeSitterQueries: SWIFT_QUERIES,
221
227
  typeConfig: swiftConfig,
222
228
  exportChecker: swiftExportChecker,
223
- importResolver: resolveSwiftImport,
229
+ importResolver: createImportResolver(swiftImportConfig),
224
230
  importSemantics: 'wildcard-leaf',
225
231
  heritageDefaultEdge: 'IMPLEMENTS',
232
+ callExtractor: createCallExtractor(swiftCallConfig),
226
233
  fieldExtractor: createFieldExtractor(swiftFieldConfig),
227
234
  methodExtractor: createMethodExtractor({
228
235
  ...swiftMethodConfig,
229
236
  extractFunctionName: swiftExtractFunctionName,
230
237
  }),
231
- classExtractor: createClassExtractor({
232
- language: SupportedLanguages.Swift,
233
- typeDeclarationNodes: ['class_declaration', 'protocol_declaration'],
234
- ancestorScopeNodeTypes: ['class_declaration', 'protocol_declaration'],
235
- extractType(node) {
236
- if (node.type === 'protocol_declaration')
237
- return 'Interface';
238
- if (node.type !== 'class_declaration')
239
- return undefined;
240
- if (node.children.some((child) => child?.text === 'struct'))
241
- return 'Struct';
242
- if (node.children.some((child) => child?.text === 'enum'))
243
- return 'Enum';
244
- return 'Class';
245
- },
246
- }),
238
+ variableExtractor: createVariableExtractor(swiftVariableConfig),
239
+ classExtractor: createClassExtractor(swiftClassConfig),
247
240
  implicitImportWirer: wireSwiftImplicitImports,
248
241
  builtInNames: BUILT_INS,
249
242
  });
@@ -9,9 +9,11 @@
9
9
  import { SupportedLanguages } from '../../../_shared/index.js';
10
10
  import { defineLanguage } from '../language-provider.js';
11
11
  import { createClassExtractor } from '../class-extractors/generic.js';
12
+ import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
12
13
  import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
13
14
  import { tsExportChecker } from '../export-detection.js';
14
- import { resolveTypescriptImport, resolveJavascriptImport } from '../import-resolvers/standard.js';
15
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
16
+ import { typescriptImportConfig, javascriptImportConfig, } from '../import-resolvers/configs/typescript-javascript.js';
15
17
  import { extractTsNamedBindings } from '../named-bindings/typescript.js';
16
18
  import { TYPESCRIPT_QUERIES, JAVASCRIPT_QUERIES } from '../tree-sitter-queries.js';
17
19
  import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
@@ -19,6 +21,10 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
19
21
  import { javascriptConfig } from '../field-extractors/configs/typescript-javascript.js';
20
22
  import { createMethodExtractor } from '../method-extractors/generic.js';
21
23
  import { typescriptMethodConfig, javascriptMethodConfig, } from '../method-extractors/configs/typescript-javascript.js';
24
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
25
+ import { typescriptVariableConfig, javascriptVariableConfig, } from '../variable-extractors/configs/typescript-javascript.js';
26
+ import { createCallExtractor } from '../call-extractors/generic.js';
27
+ import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/configs/typescript-javascript.js';
22
28
  /**
23
29
  * TypeScript/JavaScript: arrow_function and function_expression get their name
24
30
  * from the parent variable_declarator (e.g. `const foo = () => {}`).
@@ -137,35 +143,22 @@ export const BUILT_INS = new Set([
137
143
  'toString',
138
144
  'valueOf',
139
145
  ]);
140
- const tsJsClassConfig = {
141
- language: SupportedLanguages.TypeScript,
142
- typeDeclarationNodes: [
143
- 'class_declaration',
144
- 'abstract_class_declaration',
145
- 'interface_declaration',
146
- 'enum_declaration',
147
- ],
148
- ancestorScopeNodeTypes: [
149
- 'class_declaration',
150
- 'abstract_class_declaration',
151
- 'interface_declaration',
152
- 'enum_declaration',
153
- ],
154
- };
155
146
  export const typescriptProvider = defineLanguage({
156
147
  id: SupportedLanguages.TypeScript,
157
148
  extensions: ['.ts', '.tsx'],
158
149
  treeSitterQueries: TYPESCRIPT_QUERIES,
159
150
  typeConfig: typescriptConfig,
160
151
  exportChecker: tsExportChecker,
161
- importResolver: resolveTypescriptImport,
152
+ importResolver: createImportResolver(typescriptImportConfig),
162
153
  namedBindingExtractor: extractTsNamedBindings,
154
+ callExtractor: createCallExtractor(typescriptCallConfig),
163
155
  fieldExtractor: typescriptFieldExtractor,
164
156
  methodExtractor: createMethodExtractor({
165
157
  ...typescriptMethodConfig,
166
158
  extractFunctionName: tsExtractFunctionName,
167
159
  }),
168
- classExtractor: createClassExtractor(tsJsClassConfig),
160
+ variableExtractor: createVariableExtractor(typescriptVariableConfig),
161
+ classExtractor: createClassExtractor(typescriptClassConfig),
169
162
  builtInNames: BUILT_INS,
170
163
  });
171
164
  export const javascriptProvider = defineLanguage({
@@ -174,16 +167,15 @@ export const javascriptProvider = defineLanguage({
174
167
  treeSitterQueries: JAVASCRIPT_QUERIES,
175
168
  typeConfig: typescriptConfig,
176
169
  exportChecker: tsExportChecker,
177
- importResolver: resolveJavascriptImport,
170
+ importResolver: createImportResolver(javascriptImportConfig),
178
171
  namedBindingExtractor: extractTsNamedBindings,
172
+ callExtractor: createCallExtractor(javascriptCallConfig),
179
173
  fieldExtractor: createFieldExtractor(javascriptConfig),
180
174
  methodExtractor: createMethodExtractor({
181
175
  ...javascriptMethodConfig,
182
176
  extractFunctionName: tsExtractFunctionName,
183
177
  }),
184
- classExtractor: createClassExtractor({
185
- ...tsJsClassConfig,
186
- language: SupportedLanguages.JavaScript,
187
- }),
178
+ variableExtractor: createVariableExtractor(javascriptVariableConfig),
179
+ classExtractor: createClassExtractor(javascriptClassConfig),
188
180
  builtInNames: BUILT_INS,
189
181
  });
@@ -12,14 +12,20 @@
12
12
  */
13
13
  import { SupportedLanguages } from '../../../_shared/index.js';
14
14
  import { createClassExtractor } from '../class-extractors/generic.js';
15
+ import { vueClassConfig } from '../class-extractors/configs/typescript-javascript.js';
15
16
  import { defineLanguage } from '../language-provider.js';
16
17
  import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
17
18
  import { tsExportChecker } from '../export-detection.js';
18
- import { resolveVueImport } from '../import-resolvers/vue.js';
19
+ import { createImportResolver } from '../import-resolvers/resolver-factory.js';
20
+ import { vueImportConfig } from '../import-resolvers/configs/typescript-javascript.js';
19
21
  import { extractTsNamedBindings } from '../named-bindings/typescript.js';
20
22
  import { TYPESCRIPT_QUERIES } from '../tree-sitter-queries.js';
21
23
  import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
22
24
  import { BUILT_INS as TS_BUILT_INS } from './typescript.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { typescriptVariableConfig } from '../variable-extractors/configs/typescript-javascript.js';
27
+ import { createCallExtractor } from '../call-extractors/generic.js';
28
+ import { typescriptCallConfig } from '../call-extractors/configs/typescript-javascript.js';
23
29
  const VUE_SPECIFIC_BUILT_INS = [
24
30
  'ref',
25
31
  'reactive',
@@ -52,30 +58,18 @@ const VUE_SPECIFIC_BUILT_INS = [
52
58
  'useAttrs',
53
59
  ];
54
60
  const VUE_BUILT_INS = new Set([...TS_BUILT_INS, ...VUE_SPECIFIC_BUILT_INS]);
55
- const vueClassExtractor = createClassExtractor({
56
- language: SupportedLanguages.Vue,
57
- typeDeclarationNodes: [
58
- 'class_declaration',
59
- 'abstract_class_declaration',
60
- 'interface_declaration',
61
- 'enum_declaration',
62
- ],
63
- ancestorScopeNodeTypes: [
64
- 'class_declaration',
65
- 'abstract_class_declaration',
66
- 'interface_declaration',
67
- 'enum_declaration',
68
- ],
69
- });
61
+ const vueClassExtractor = createClassExtractor(vueClassConfig);
70
62
  export const vueProvider = defineLanguage({
71
63
  id: SupportedLanguages.Vue,
72
64
  extensions: ['.vue'],
73
65
  treeSitterQueries: TYPESCRIPT_QUERIES,
74
66
  typeConfig: typescriptConfig,
75
67
  exportChecker: tsExportChecker,
76
- importResolver: resolveVueImport,
68
+ importResolver: createImportResolver(vueImportConfig),
77
69
  namedBindingExtractor: extractTsNamedBindings,
70
+ callExtractor: createCallExtractor(typescriptCallConfig),
78
71
  fieldExtractor: typescriptFieldExtractor,
72
+ variableExtractor: createVariableExtractor(typescriptVariableConfig),
79
73
  classExtractor: vueClassExtractor,
80
74
  builtInNames: VUE_BUILT_INS,
81
75
  });
@@ -10,11 +10,11 @@
10
10
  * `SymbolTable` by design.
11
11
  */
12
12
  export { type SemanticModel, type MutableSemanticModel, createSemanticModel, } from './semantic-model.js';
13
- export { type SymbolTableReader, type SymbolTableWriter, createSymbolTable, } from './symbol-table.js';
13
+ export { type SymbolTableReader, type SymbolTableWriter, createSymbolTable, type SymbolDefinition, type AddMetadata, CLASS_TYPES, CLASS_TYPES_TUPLE, type ClassLikeLabel, FREE_CALLABLE_TYPES, FREE_CALLABLE_TUPLE, type FreeCallableLabel, CALL_TARGET_TYPES, } from './symbol-table.js';
14
14
  export { type TypeRegistry, type MutableTypeRegistry, createTypeRegistry, } from './type-registry.js';
15
15
  export { type MethodRegistry, type MutableMethodRegistry, createMethodRegistry, } from './method-registry.js';
16
16
  export { type FieldRegistry, type MutableFieldRegistry, createFieldRegistry, } from './field-registry.js';
17
17
  export { lookupMethodByOwnerWithMRO } from './resolve.js';
18
18
  export { type NamedImportBinding, type NamedImportMap, isFileInPackageDir, } from './resolution-context.js';
19
- export { type ExtractedHeritage, type HeritageResolutionStrategy, type HeritageStrategyLookup, } from './heritage-map.js';
19
+ export { type ExtractedHeritage, type HeritageMap, type HeritageResolutionStrategy, type HeritageStrategyLookup, } from './heritage-map.js';
20
20
  export { CALLABLE_ONLY_LABELS, INERT_LABELS, DISPATCH_LABELS, ALL_NODE_LABELS, type LabelBehavior, } from './registration-table.js';
@@ -16,7 +16,7 @@ export { createSemanticModel, } from './semantic-model.js';
16
16
  // SymbolTable is exclusively owned by SemanticModel. Re-exported here
17
17
  // for the rare caller that needs the file/callable interface in
18
18
  // isolation (e.g. tests).
19
- export { createSymbolTable, } from './symbol-table.js';
19
+ export { createSymbolTable, CLASS_TYPES, CLASS_TYPES_TUPLE, FREE_CALLABLE_TYPES, FREE_CALLABLE_TUPLE, CALL_TARGET_TYPES, } from './symbol-table.js';
20
20
  // Type registry (classes, structs, interfaces, enums, records, impls)
21
21
  export { createTypeRegistry, } from './type-registry.js';
22
22
  // Method registry (owner-scoped methods with arity-aware overload lookup)
@@ -12,6 +12,9 @@ import type { MroStrategy } from '../../../_shared/index.js';
12
12
  /**
13
13
  * Gather all ancestor IDs in BFS / topological order.
14
14
  * Returns the linearized list of ancestor IDs (excluding the class itself).
15
+ *
16
+ * Uses a head-pointer BFS (`queue[head++]`) instead of `Array.shift()` to
17
+ * avoid O(n) per-dequeue re-indexing — matching `buildParentMapFromHeritage`.
15
18
  */
16
19
  declare function gatherAncestors(classId: string, parentMap: Map<string, string[]>): string[];
17
20
  /**
@@ -15,13 +15,17 @@
15
15
  /**
16
16
  * Gather all ancestor IDs in BFS / topological order.
17
17
  * Returns the linearized list of ancestor IDs (excluding the class itself).
18
+ *
19
+ * Uses a head-pointer BFS (`queue[head++]`) instead of `Array.shift()` to
20
+ * avoid O(n) per-dequeue re-indexing — matching `buildParentMapFromHeritage`.
18
21
  */
19
22
  function gatherAncestors(classId, parentMap) {
20
23
  const visited = new Set();
21
24
  const order = [];
22
25
  const queue = [...(parentMap.get(classId) ?? [])];
23
- while (queue.length > 0) {
24
- const id = queue.shift();
26
+ let head = 0;
27
+ while (head < queue.length) {
28
+ const id = queue[head++];
25
29
  if (visited.has(id))
26
30
  continue;
27
31
  visited.add(id);
@@ -1,9 +1,8 @@
1
1
  import { KnowledgeGraph } from '../graph/types.js';
2
- import type { SymbolTableWriter } from './model/symbol-table.js';
2
+ import type { SymbolTableWriter, ExtractedHeritage } from './model/index.js';
3
3
  import { ASTCache } from './ast-cache.js';
4
4
  import { WorkerPool } from './workers/worker-pool.js';
5
5
  import type { ExtractedImport, ExtractedCall, ExtractedAssignment, ExtractedRoute, ExtractedFetchCall, ExtractedDecoratorRoute, ExtractedToolDef, FileConstructorBindings, FileScopeBindings, ExtractedORMQuery } from './workers/parse-worker.js';
6
- import type { ExtractedHeritage } from './model/heritage-map.js';
7
6
  export type FileProgressCallback = (current: number, total: number, filePath: string) => void;
8
7
  export interface WorkerExtractedData {
9
8
  imports: ExtractedImport[];