@colbymchenry/codegraph-win32-x64 1.1.6 → 1.3.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 (219) hide show
  1. package/lib/dist/bin/codegraph.d.ts +1 -1
  2. package/lib/dist/bin/codegraph.d.ts.map +1 -1
  3. package/lib/dist/bin/codegraph.js +232 -61
  4. package/lib/dist/bin/codegraph.js.map +1 -1
  5. package/lib/dist/bin/command-supervision.d.ts.map +1 -1
  6. package/lib/dist/bin/command-supervision.js +14 -1
  7. package/lib/dist/bin/command-supervision.js.map +1 -1
  8. package/lib/dist/db/migrations.d.ts +1 -1
  9. package/lib/dist/db/migrations.d.ts.map +1 -1
  10. package/lib/dist/db/migrations.js +19 -1
  11. package/lib/dist/db/migrations.js.map +1 -1
  12. package/lib/dist/db/queries.d.ts +51 -0
  13. package/lib/dist/db/queries.d.ts.map +1 -1
  14. package/lib/dist/db/queries.js +141 -0
  15. package/lib/dist/db/queries.js.map +1 -1
  16. package/lib/dist/db/schema.sql +19 -0
  17. package/lib/dist/directory.d.ts +9 -5
  18. package/lib/dist/directory.d.ts.map +1 -1
  19. package/lib/dist/directory.js +210 -19
  20. package/lib/dist/directory.js.map +1 -1
  21. package/lib/dist/extraction/cfml-extractor.d.ts +107 -0
  22. package/lib/dist/extraction/cfml-extractor.d.ts.map +1 -0
  23. package/lib/dist/extraction/cfml-extractor.js +494 -0
  24. package/lib/dist/extraction/cfml-extractor.js.map +1 -0
  25. package/lib/dist/extraction/grammars.d.ts +9 -0
  26. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  27. package/lib/dist/extraction/grammars.js +115 -3
  28. package/lib/dist/extraction/grammars.js.map +1 -1
  29. package/lib/dist/extraction/index.d.ts +46 -1
  30. package/lib/dist/extraction/index.d.ts.map +1 -1
  31. package/lib/dist/extraction/index.js +254 -3
  32. package/lib/dist/extraction/index.js.map +1 -1
  33. package/lib/dist/extraction/languages/arkts.d.ts +3 -0
  34. package/lib/dist/extraction/languages/arkts.d.ts.map +1 -0
  35. package/lib/dist/extraction/languages/arkts.js +127 -0
  36. package/lib/dist/extraction/languages/arkts.js.map +1 -0
  37. package/lib/dist/extraction/languages/c-cpp.d.ts +59 -0
  38. package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  39. package/lib/dist/extraction/languages/c-cpp.js +499 -3
  40. package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
  41. package/lib/dist/extraction/languages/cfquery.d.ts +12 -0
  42. package/lib/dist/extraction/languages/cfquery.d.ts.map +1 -0
  43. package/lib/dist/extraction/languages/cfquery.js +28 -0
  44. package/lib/dist/extraction/languages/cfquery.js.map +1 -0
  45. package/lib/dist/extraction/languages/cfscript.d.ts +3 -0
  46. package/lib/dist/extraction/languages/cfscript.d.ts.map +1 -0
  47. package/lib/dist/extraction/languages/cfscript.js +73 -0
  48. package/lib/dist/extraction/languages/cfscript.js.map +1 -0
  49. package/lib/dist/extraction/languages/cobol.d.ts +33 -0
  50. package/lib/dist/extraction/languages/cobol.d.ts.map +1 -0
  51. package/lib/dist/extraction/languages/cobol.js +499 -0
  52. package/lib/dist/extraction/languages/cobol.js.map +1 -0
  53. package/lib/dist/extraction/languages/erlang.d.ts +3 -0
  54. package/lib/dist/extraction/languages/erlang.d.ts.map +1 -0
  55. package/lib/dist/extraction/languages/erlang.js +350 -0
  56. package/lib/dist/extraction/languages/erlang.js.map +1 -0
  57. package/lib/dist/extraction/languages/index.d.ts.map +1 -1
  58. package/lib/dist/extraction/languages/index.js +18 -0
  59. package/lib/dist/extraction/languages/index.js.map +1 -1
  60. package/lib/dist/extraction/languages/nix.d.ts +3 -0
  61. package/lib/dist/extraction/languages/nix.d.ts.map +1 -0
  62. package/lib/dist/extraction/languages/nix.js +294 -0
  63. package/lib/dist/extraction/languages/nix.js.map +1 -0
  64. package/lib/dist/extraction/languages/solidity.d.ts +3 -0
  65. package/lib/dist/extraction/languages/solidity.d.ts.map +1 -0
  66. package/lib/dist/extraction/languages/solidity.js +293 -0
  67. package/lib/dist/extraction/languages/solidity.js.map +1 -0
  68. package/lib/dist/extraction/languages/terraform.d.ts +3 -0
  69. package/lib/dist/extraction/languages/terraform.d.ts.map +1 -0
  70. package/lib/dist/extraction/languages/terraform.js +641 -0
  71. package/lib/dist/extraction/languages/terraform.js.map +1 -0
  72. package/lib/dist/extraction/languages/vbnet.d.ts +11 -0
  73. package/lib/dist/extraction/languages/vbnet.d.ts.map +1 -0
  74. package/lib/dist/extraction/languages/vbnet.js +141 -0
  75. package/lib/dist/extraction/languages/vbnet.js.map +1 -0
  76. package/lib/dist/extraction/mybatis-extractor.d.ts +30 -10
  77. package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -1
  78. package/lib/dist/extraction/mybatis-extractor.js +140 -38
  79. package/lib/dist/extraction/mybatis-extractor.js.map +1 -1
  80. package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
  81. package/lib/dist/extraction/tree-sitter-helpers.js +1 -0
  82. package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
  83. package/lib/dist/extraction/tree-sitter-types.d.ts +20 -1
  84. package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  85. package/lib/dist/extraction/tree-sitter.d.ts +38 -0
  86. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  87. package/lib/dist/extraction/tree-sitter.js +845 -16
  88. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  89. package/lib/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
  90. package/lib/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  91. package/lib/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  92. package/lib/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  93. package/lib/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  94. package/lib/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  95. package/lib/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  96. package/lib/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
  97. package/lib/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  98. package/lib/dist/graph/traversal.d.ts.map +1 -1
  99. package/lib/dist/graph/traversal.js +76 -17
  100. package/lib/dist/graph/traversal.js.map +1 -1
  101. package/lib/dist/index.d.ts +63 -1
  102. package/lib/dist/index.d.ts.map +1 -1
  103. package/lib/dist/index.js +310 -6
  104. package/lib/dist/index.js.map +1 -1
  105. package/lib/dist/installer/index.d.ts.map +1 -1
  106. package/lib/dist/installer/index.js +3 -1
  107. package/lib/dist/installer/index.js.map +1 -1
  108. package/lib/dist/mcp/daemon.d.ts +25 -3
  109. package/lib/dist/mcp/daemon.d.ts.map +1 -1
  110. package/lib/dist/mcp/daemon.js +39 -7
  111. package/lib/dist/mcp/daemon.js.map +1 -1
  112. package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
  113. package/lib/dist/mcp/dynamic-boundaries.js +2 -1
  114. package/lib/dist/mcp/dynamic-boundaries.js.map +1 -1
  115. package/lib/dist/mcp/early-ppid.d.ts +26 -0
  116. package/lib/dist/mcp/early-ppid.d.ts.map +1 -0
  117. package/lib/dist/mcp/early-ppid.js +29 -0
  118. package/lib/dist/mcp/early-ppid.js.map +1 -0
  119. package/lib/dist/mcp/index.d.ts.map +1 -1
  120. package/lib/dist/mcp/index.js +21 -4
  121. package/lib/dist/mcp/index.js.map +1 -1
  122. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  123. package/lib/dist/mcp/proxy.js +21 -3
  124. package/lib/dist/mcp/proxy.js.map +1 -1
  125. package/lib/dist/mcp/startup-handshake.d.ts +44 -0
  126. package/lib/dist/mcp/startup-handshake.d.ts.map +1 -0
  127. package/lib/dist/mcp/startup-handshake.js +73 -0
  128. package/lib/dist/mcp/startup-handshake.js.map +1 -0
  129. package/lib/dist/mcp/tools.d.ts +22 -0
  130. package/lib/dist/mcp/tools.d.ts.map +1 -1
  131. package/lib/dist/mcp/tools.js +74 -9
  132. package/lib/dist/mcp/tools.js.map +1 -1
  133. package/lib/dist/project-config.d.ts +38 -0
  134. package/lib/dist/project-config.d.ts.map +1 -1
  135. package/lib/dist/project-config.js +101 -2
  136. package/lib/dist/project-config.js.map +1 -1
  137. package/lib/dist/resolution/callback-synthesizer.d.ts +1 -1
  138. package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  139. package/lib/dist/resolution/callback-synthesizer.js +743 -11
  140. package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
  141. package/lib/dist/resolution/cooperative-yield.d.ts +32 -0
  142. package/lib/dist/resolution/cooperative-yield.d.ts.map +1 -0
  143. package/lib/dist/resolution/cooperative-yield.js +42 -0
  144. package/lib/dist/resolution/cooperative-yield.js.map +1 -0
  145. package/lib/dist/resolution/frameworks/cics.d.ts +20 -0
  146. package/lib/dist/resolution/frameworks/cics.d.ts.map +1 -0
  147. package/lib/dist/resolution/frameworks/cics.js +90 -0
  148. package/lib/dist/resolution/frameworks/cics.js.map +1 -0
  149. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  150. package/lib/dist/resolution/frameworks/index.js +6 -0
  151. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  152. package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
  153. package/lib/dist/resolution/frameworks/java.js +14 -6
  154. package/lib/dist/resolution/frameworks/java.js.map +1 -1
  155. package/lib/dist/resolution/frameworks/terraform.d.ts +38 -0
  156. package/lib/dist/resolution/frameworks/terraform.d.ts.map +1 -0
  157. package/lib/dist/resolution/frameworks/terraform.js +277 -0
  158. package/lib/dist/resolution/frameworks/terraform.js.map +1 -0
  159. package/lib/dist/resolution/import-resolver.d.ts +7 -0
  160. package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
  161. package/lib/dist/resolution/import-resolver.js +129 -4
  162. package/lib/dist/resolution/import-resolver.js.map +1 -1
  163. package/lib/dist/resolution/index.d.ts +44 -2
  164. package/lib/dist/resolution/index.d.ts.map +1 -1
  165. package/lib/dist/resolution/index.js +335 -30
  166. package/lib/dist/resolution/index.js.map +1 -1
  167. package/lib/dist/resolution/name-matcher.d.ts +22 -3
  168. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  169. package/lib/dist/resolution/name-matcher.js +484 -39
  170. package/lib/dist/resolution/name-matcher.js.map +1 -1
  171. package/lib/dist/resolution/strip-comments.d.ts +1 -1
  172. package/lib/dist/resolution/strip-comments.d.ts.map +1 -1
  173. package/lib/dist/resolution/strip-comments.js +49 -0
  174. package/lib/dist/resolution/strip-comments.js.map +1 -1
  175. package/lib/dist/resolution/types.d.ts +20 -0
  176. package/lib/dist/resolution/types.d.ts.map +1 -1
  177. package/lib/dist/resolution/workspace-packages.d.ts +10 -0
  178. package/lib/dist/resolution/workspace-packages.d.ts.map +1 -1
  179. package/lib/dist/resolution/workspace-packages.js +142 -4
  180. package/lib/dist/resolution/workspace-packages.js.map +1 -1
  181. package/lib/dist/search/identifier-segments.d.ts +60 -0
  182. package/lib/dist/search/identifier-segments.d.ts.map +1 -0
  183. package/lib/dist/search/identifier-segments.js +176 -0
  184. package/lib/dist/search/identifier-segments.js.map +1 -0
  185. package/lib/dist/sync/git-hooks.d.ts.map +1 -1
  186. package/lib/dist/sync/git-hooks.js +2 -0
  187. package/lib/dist/sync/git-hooks.js.map +1 -1
  188. package/lib/dist/sync/watcher.d.ts +10 -5
  189. package/lib/dist/sync/watcher.d.ts.map +1 -1
  190. package/lib/dist/sync/watcher.js +51 -14
  191. package/lib/dist/sync/watcher.js.map +1 -1
  192. package/lib/dist/sync/worktree.d.ts.map +1 -1
  193. package/lib/dist/sync/worktree.js +5 -0
  194. package/lib/dist/sync/worktree.js.map +1 -1
  195. package/lib/dist/types.d.ts +19 -1
  196. package/lib/dist/types.d.ts.map +1 -1
  197. package/lib/dist/types.js +10 -0
  198. package/lib/dist/types.js.map +1 -1
  199. package/lib/dist/upgrade/index.js +1 -1
  200. package/lib/dist/upgrade/index.js.map +1 -1
  201. package/lib/node_modules/.package-lock.json +1 -1
  202. package/lib/package.json +1 -1
  203. package/package.json +1 -1
  204. package/lib/dist/reasoning/config.d.ts +0 -45
  205. package/lib/dist/reasoning/config.d.ts.map +0 -1
  206. package/lib/dist/reasoning/config.js +0 -171
  207. package/lib/dist/reasoning/config.js.map +0 -1
  208. package/lib/dist/reasoning/credentials.d.ts +0 -5
  209. package/lib/dist/reasoning/credentials.d.ts.map +0 -1
  210. package/lib/dist/reasoning/credentials.js +0 -83
  211. package/lib/dist/reasoning/credentials.js.map +0 -1
  212. package/lib/dist/reasoning/login.d.ts +0 -21
  213. package/lib/dist/reasoning/login.d.ts.map +0 -1
  214. package/lib/dist/reasoning/login.js +0 -85
  215. package/lib/dist/reasoning/login.js.map +0 -1
  216. package/lib/dist/reasoning/reasoner.d.ts +0 -43
  217. package/lib/dist/reasoning/reasoner.d.ts.map +0 -1
  218. package/lib/dist/reasoning/reasoner.js +0 -308
  219. package/lib/dist/reasoning/reasoner.js.map +0 -1
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nixExtractor = void 0;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ function unwrapVariableExpression(node) {
6
+ if (node.type !== 'variable_expression')
7
+ return node;
8
+ return node.namedChild(0) ?? node;
9
+ }
10
+ function getCalleeName(node, source) {
11
+ let current = node;
12
+ while (current.type === 'apply_expression') {
13
+ const funcNode = current.childForFieldName('function') || current.namedChild(0);
14
+ if (!funcNode)
15
+ break;
16
+ current = funcNode;
17
+ }
18
+ current = unwrapVariableExpression(current);
19
+ if (current.type === 'identifier' || current.type === 'select_expression') {
20
+ return (0, tree_sitter_helpers_1.getNodeText)(current, source).trim();
21
+ }
22
+ return null;
23
+ }
24
+ function getDirectCalleeName(node, source) {
25
+ let funcNode = node.childForFieldName('function') || node.namedChild(0);
26
+ if (!funcNode)
27
+ return null;
28
+ funcNode = unwrapVariableExpression(funcNode);
29
+ return (0, tree_sitter_helpers_1.getNodeText)(funcNode, source).trim();
30
+ }
31
+ function isStaticProjectPath(value) {
32
+ return ((value.startsWith('./') || value.startsWith('../')) &&
33
+ !/[\s{}()[\];"'<>$]/.test(value));
34
+ }
35
+ function getStaticImportPath(argNode, source) {
36
+ let current = argNode;
37
+ while (current.type === 'parenthesized_expression') {
38
+ const inner = current.namedChild(0);
39
+ if (!inner)
40
+ break;
41
+ current = inner;
42
+ }
43
+ let text = (0, tree_sitter_helpers_1.getNodeText)(current, source).trim();
44
+ if (((text.startsWith('"') && text.endsWith('"')) ||
45
+ (text.startsWith("'") && text.endsWith("'"))) &&
46
+ text.length >= 2) {
47
+ text = text.slice(1, -1);
48
+ }
49
+ return isStaticProjectPath(text) ? text : null;
50
+ }
51
+ function isReturnedAttrsetMember(node) {
52
+ let current = node;
53
+ let seenReturnedAttrset = false;
54
+ while (current) {
55
+ const parent = current.parent;
56
+ if (!parent)
57
+ break;
58
+ if (parent.type === 'let_expression') {
59
+ const bodyNode = parent.childForFieldName('body') || parent.childForFieldName('expression');
60
+ if (!bodyNode || !bodyNode.equals(current))
61
+ return false;
62
+ }
63
+ if (parent.type === 'binding' && !current.equals(node))
64
+ return false;
65
+ if (parent.type === 'formal_parameters' || parent.type === 'formals')
66
+ return false;
67
+ if (parent.type === 'attrset' ||
68
+ parent.type === 'rec_attrset' ||
69
+ parent.type === 'attrset_expression' ||
70
+ parent.type === 'rec_attrset_expression') {
71
+ seenReturnedAttrset = true;
72
+ }
73
+ current = parent;
74
+ }
75
+ return seenReturnedAttrset;
76
+ }
77
+ function getCurriedParamsAndBody(node, source) {
78
+ const params = [];
79
+ let current = node;
80
+ while (current.type === 'function_expression' && current.namedChildCount > 0) {
81
+ const bodyNode = current.namedChild(current.namedChildCount - 1);
82
+ if (!bodyNode)
83
+ break;
84
+ const paramPart = source.substring(current.startIndex, bodyNode.startIndex).trim();
85
+ const paramText = paramPart.endsWith(':') ? paramPart.slice(0, -1).trim() : paramPart;
86
+ if (paramText)
87
+ params.push(paramText);
88
+ if (bodyNode.type === 'function_expression') {
89
+ current = bodyNode;
90
+ }
91
+ else {
92
+ return { params, bodyNode };
93
+ }
94
+ }
95
+ return {
96
+ params,
97
+ bodyNode: current.namedChildCount > 0 ? current.namedChild(current.namedChildCount - 1) : null,
98
+ };
99
+ }
100
+ function formatFunctionSignature(params) {
101
+ if (params.length === 0)
102
+ return '()';
103
+ if (params.length > 1)
104
+ return params.join(' : ');
105
+ const [param] = params;
106
+ if (!param)
107
+ return '()';
108
+ return param.startsWith('(') || param.includes('{') || param.includes('@') ? param : `(${param})`;
109
+ }
110
+ function inheritedAttrs(node) {
111
+ return node.namedChildren.find((child) => child.type === 'inherited_attrs') ?? null;
112
+ }
113
+ /**
114
+ * `callPackage ./pkg.nix { }` and `pkgs.callPackage ../tools/foo { }` — the
115
+ * nixpkgs auto-wiring idiom — reference a file the same way `import` does.
116
+ */
117
+ function isCallPackageName(name) {
118
+ return (name === 'callPackage' ||
119
+ name === 'callPackages' ||
120
+ name.endsWith('.callPackage') ||
121
+ name.endsWith('.callPackages'));
122
+ }
123
+ /** Innermost argument of a curried apply chain: `f a b` → `a`. */
124
+ function getFirstApplyArgument(node) {
125
+ let inner = node;
126
+ for (;;) {
127
+ const fn = inner.childForFieldName('function') || inner.namedChild(0);
128
+ if (fn && fn.type === 'apply_expression') {
129
+ inner = fn;
130
+ continue;
131
+ }
132
+ break;
133
+ }
134
+ return inner.childForFieldName('argument') || inner.namedChild(1);
135
+ }
136
+ /** Import node + unresolved `imports` ref for a static project path. */
137
+ function emitFileImport(ctx, importPath, anchorNode, source) {
138
+ const impNode = ctx.createNode('import', importPath, anchorNode, {
139
+ signature: (0, tree_sitter_helpers_1.getNodeText)(anchorNode, source).trim().slice(0, 100),
140
+ });
141
+ if (impNode && ctx.nodeStack.length > 0) {
142
+ const fromNodeId = ctx.nodeStack[ctx.nodeStack.length - 1];
143
+ if (fromNodeId) {
144
+ ctx.addUnresolvedReference({
145
+ fromNodeId,
146
+ referenceName: importPath,
147
+ referenceKind: 'imports',
148
+ line: anchorNode.startPosition.row + 1,
149
+ column: anchorNode.startPosition.column,
150
+ });
151
+ }
152
+ }
153
+ }
154
+ exports.nixExtractor = {
155
+ functionTypes: [],
156
+ classTypes: [],
157
+ methodTypes: [],
158
+ interfaceTypes: [],
159
+ structTypes: [],
160
+ enumTypes: [],
161
+ typeAliasTypes: [],
162
+ importTypes: [],
163
+ callTypes: [],
164
+ variableTypes: [],
165
+ nameField: '',
166
+ bodyField: '',
167
+ paramsField: '',
168
+ visitNode: (node, ctx) => {
169
+ const { source } = ctx;
170
+ if (node.type === 'binding') {
171
+ const attrpath = node.childForFieldName('attrpath') || node.namedChild(0);
172
+ if (!attrpath)
173
+ return false;
174
+ const name = (0, tree_sitter_helpers_1.getNodeText)(attrpath, source).trim();
175
+ if (!name)
176
+ return false;
177
+ const valueNode = node.childForFieldName('expression') || node.childForFieldName('value') || node.namedChild(1);
178
+ if (!valueNode)
179
+ return false;
180
+ if (valueNode.type === 'function_expression') {
181
+ const { params, bodyNode } = getCurriedParamsAndBody(valueNode, source);
182
+ const funcNode = ctx.createNode('function', name, node, {
183
+ signature: formatFunctionSignature(params),
184
+ isExported: isReturnedAttrsetMember(node),
185
+ });
186
+ if (funcNode) {
187
+ ctx.pushScope(funcNode.id);
188
+ if (bodyNode)
189
+ ctx.visitNode(bodyNode);
190
+ ctx.popScope();
191
+ }
192
+ }
193
+ else {
194
+ const initValue = (0, tree_sitter_helpers_1.getNodeText)(valueNode, source).slice(0, 100);
195
+ ctx.createNode('variable', name, node, {
196
+ signature: initValue ? `= ${initValue}${initValue.length >= 100 ? '...' : ''}` : undefined,
197
+ isExported: isReturnedAttrsetMember(node),
198
+ });
199
+ // NixOS/home-manager module lists: `imports = [ ./hardware.nix ../common ]`
200
+ // (and the flake-era `modules = [ ./configuration.nix ]`) reference files
201
+ // without an `import` call. Only literal `path_expression` entries count —
202
+ // variables and interpolations stay dynamic (silent beats wrong).
203
+ const finalSegment = name.split('.').pop();
204
+ if ((finalSegment === 'imports' || finalSegment === 'modules') && valueNode.type === 'list_expression') {
205
+ for (const child of valueNode.namedChildren) {
206
+ if (child.type === 'path_expression') {
207
+ const entryPath = (0, tree_sitter_helpers_1.getNodeText)(child, source).trim();
208
+ if (isStaticProjectPath(entryPath)) {
209
+ emitFileImport(ctx, entryPath, child, source);
210
+ }
211
+ }
212
+ }
213
+ }
214
+ ctx.visitNode(valueNode);
215
+ }
216
+ return true;
217
+ }
218
+ if (node.type === 'function_expression') {
219
+ const bodyNode = node.namedChild(node.namedChildCount - 1);
220
+ if (bodyNode)
221
+ ctx.visitNode(bodyNode);
222
+ return true;
223
+ }
224
+ if (node.type === 'inherit' || node.type === 'inherit_from') {
225
+ const attrs = inheritedAttrs(node);
226
+ if (attrs) {
227
+ for (const child of attrs.namedChildren) {
228
+ const name = (0, tree_sitter_helpers_1.getNodeText)(child, source).trim();
229
+ if (name) {
230
+ ctx.createNode('variable', name, child, {
231
+ isExported: isReturnedAttrsetMember(child),
232
+ });
233
+ }
234
+ }
235
+ }
236
+ for (const child of node.namedChildren) {
237
+ if (child.type !== 'inherited_attrs')
238
+ ctx.visitNode(child);
239
+ }
240
+ return true;
241
+ }
242
+ if (node.type === 'apply_expression') {
243
+ const directCallee = getDirectCalleeName(node, source);
244
+ const isDirectImport = directCallee === 'import' || directCallee === 'builtins.import';
245
+ // Wrapper objects are re-created per access, so compare with .equals(),
246
+ // never === — otherwise every level of a curried chain (`f a b`)
247
+ // re-emits the same refs.
248
+ const parentFn = node.parent?.type === 'apply_expression'
249
+ ? (node.parent.childForFieldName('function') ?? node.parent.namedChild(0))
250
+ : null;
251
+ const isCalleeOfParent = parentFn ? parentFn.equals(node) : false;
252
+ if (!(isCalleeOfParent && !isDirectImport)) {
253
+ if (isDirectImport) {
254
+ const argNode = node.childForFieldName('argument') || node.namedChild(1);
255
+ const importPath = argNode ? getStaticImportPath(argNode, source) : null;
256
+ if (importPath) {
257
+ emitFileImport(ctx, importPath, node, source);
258
+ }
259
+ }
260
+ else {
261
+ const calleeName = getCalleeName(node, source);
262
+ if (calleeName && calleeName !== 'import' && calleeName !== 'builtins.import' && ctx.nodeStack.length > 0) {
263
+ const fromNodeId = ctx.nodeStack[ctx.nodeStack.length - 1];
264
+ if (fromNodeId) {
265
+ ctx.addUnresolvedReference({
266
+ fromNodeId,
267
+ referenceName: calleeName,
268
+ referenceKind: 'calls',
269
+ line: node.startPosition.row + 1,
270
+ column: node.startPosition.column,
271
+ });
272
+ }
273
+ }
274
+ // `callPackage ./pkg.nix { }` loads the file like `import` does; the
275
+ // first argument of the apply chain is the package file. Only a
276
+ // literal static path counts (`callPackage pkgPath { }` stays dynamic).
277
+ if (calleeName && isCallPackageName(calleeName)) {
278
+ const firstArg = getFirstApplyArgument(node);
279
+ const importPath = firstArg ? getStaticImportPath(firstArg, source) : null;
280
+ if (importPath) {
281
+ emitFileImport(ctx, importPath, node, source);
282
+ }
283
+ }
284
+ }
285
+ }
286
+ for (const child of node.namedChildren) {
287
+ ctx.visitNode(child);
288
+ }
289
+ return true;
290
+ }
291
+ return false;
292
+ },
293
+ };
294
+ //# sourceMappingURL=nix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nix.js","sourceRoot":"","sources":["../../../src/extraction/languages/nix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../tree-sitter-types';
2
+ export declare const solidityExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=solidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solidity.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/solidity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsD9D,eAAO,MAAM,iBAAiB,EAAE,iBAiO/B,CAAC"}
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solidityExtractor = void 0;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ /**
6
+ * Solidity extractor — tree-sitter-solidity (ABI 14).
7
+ *
8
+ * Solidity has multiple top-level "contract-like" containers (contract /
9
+ * interface / library) and several callable forms that don't have a `name:`
10
+ * field (constructor, fallback, receive). We map:
11
+ * - contract_declaration → class (also library_declaration)
12
+ * - interface_declaration → interface
13
+ * - struct_declaration → struct
14
+ * - enum_declaration → enum (enum_value is the bare ident — no
15
+ * name field, so handled in visitNode)
16
+ * - function_definition / modifier_definition → function|method
17
+ * - constructor_definition / fallback_receive_definition → method (synthetic
18
+ * name: "constructor" / "fallback" / "receive" — these are nameless in AST)
19
+ * - state_variable_declaration / struct_member → field (inside contract/struct)
20
+ * - event_definition / error_declaration → field-shaped node carrying
21
+ * the event/error name so callers/refs can resolve emit X / revert X
22
+ * - import_directive → import
23
+ * - call_expression / emit_statement / revert_statement / modifier_invocation
24
+ * → calls (the latter three are call-shaped but use distinct AST nodes)
25
+ */
26
+ function getInheritanceAncestors(node, source) {
27
+ const ancestors = [];
28
+ for (let i = 0; i < node.namedChildCount; i++) {
29
+ const child = node.namedChild(i);
30
+ if (!child || child.type !== 'inheritance_specifier')
31
+ continue;
32
+ const ancestor = (0, tree_sitter_helpers_1.getChildByField)(child, 'ancestor');
33
+ if (!ancestor)
34
+ continue;
35
+ // ancestor is user_defined_type → contains identifier (or scoped path)
36
+ const id = ancestor.descendantsOfType('identifier');
37
+ if (id.length > 0) {
38
+ const last = id[id.length - 1];
39
+ ancestors.push((0, tree_sitter_helpers_1.getNodeText)(last, source));
40
+ }
41
+ }
42
+ return ancestors;
43
+ }
44
+ function fallbackReceiveName(node) {
45
+ // tree-sitter-solidity reuses one node type for both `fallback() ...` and
46
+ // `receive() ...` — the keyword is an unnamed/anonymous child. Walk all
47
+ // children (named + unnamed) and pick the first whose text is one of these.
48
+ for (let i = 0; i < node.childCount; i++) {
49
+ const child = node.child(i);
50
+ if (!child)
51
+ continue;
52
+ const t = child.text;
53
+ if (t === 'fallback' || t === 'receive')
54
+ return t;
55
+ }
56
+ return 'fallback';
57
+ }
58
+ exports.solidityExtractor = {
59
+ // Free functions (file-level) AND methods inside contracts use the same
60
+ // function_definition node — the dispatcher routes by isInsideClassLikeNode.
61
+ functionTypes: ['function_definition', 'modifier_definition'],
62
+ classTypes: ['contract_declaration', 'library_declaration'],
63
+ methodTypes: [
64
+ 'function_definition',
65
+ 'modifier_definition',
66
+ 'constructor_definition',
67
+ 'fallback_receive_definition',
68
+ ],
69
+ interfaceTypes: ['interface_declaration'],
70
+ structTypes: ['struct_declaration'],
71
+ enumTypes: ['enum_declaration'],
72
+ enumMemberTypes: [], // enum_value has no name field; handled in visitNode
73
+ typeAliasTypes: ['user_defined_type_definition'],
74
+ importTypes: ['import_directive'],
75
+ // emit / revert / modifier_invocation are call-shaped but distinct AST nodes
76
+ callTypes: ['call_expression', 'emit_statement', 'revert_statement', 'modifier_invocation'],
77
+ // top-level state vars are file-scope constants/variables; struct_member
78
+ // and state_variable_declaration inside a contract are fields (handled via
79
+ // fieldTypes + isInsideClassLikeNode).
80
+ variableTypes: ['state_variable_declaration', 'constant_variable_declaration'],
81
+ fieldTypes: ['state_variable_declaration', 'struct_member'],
82
+ nameField: 'name',
83
+ bodyField: 'body',
84
+ paramsField: 'parameters',
85
+ returnField: 'return_type',
86
+ // constructor / fallback / receive have no `name:` field — synthesize one.
87
+ resolveName: (node, _source) => {
88
+ if (node.type === 'constructor_definition')
89
+ return 'constructor';
90
+ if (node.type === 'fallback_receive_definition')
91
+ return fallbackReceiveName(node);
92
+ return undefined;
93
+ },
94
+ getSignature: (node, source) => {
95
+ // tree-sitter-solidity does NOT wrap params in a `parameters:` field — each
96
+ // `parameter` node is a direct child of function/modifier/constructor. We
97
+ // reconstruct `(t1 a, t2 b)` by walking those siblings; getChildByField
98
+ // would return null and lose the entire param list.
99
+ const params = [];
100
+ let returnType;
101
+ let visibility;
102
+ let mutability;
103
+ for (let i = 0; i < node.namedChildCount; i++) {
104
+ const child = node.namedChild(i);
105
+ if (!child)
106
+ continue;
107
+ const fieldName = node.fieldNameForNamedChild(i);
108
+ if (child.type === 'parameter' && fieldName !== 'return_type') {
109
+ params.push((0, tree_sitter_helpers_1.getNodeText)(child, source));
110
+ }
111
+ else if (child.type === 'return_type_definition' || fieldName === 'return_type') {
112
+ returnType = child;
113
+ }
114
+ else if (child.type === 'visibility') {
115
+ visibility = child;
116
+ }
117
+ else if (child.type === 'state_mutability') {
118
+ mutability = child;
119
+ }
120
+ }
121
+ const parts = [];
122
+ parts.push(`(${params.join(', ')})`);
123
+ if (visibility)
124
+ parts.push((0, tree_sitter_helpers_1.getNodeText)(visibility, source));
125
+ if (mutability)
126
+ parts.push((0, tree_sitter_helpers_1.getNodeText)(mutability, source));
127
+ if (returnType)
128
+ parts.push((0, tree_sitter_helpers_1.getNodeText)(returnType, source));
129
+ return parts.join(' ');
130
+ },
131
+ getVisibility: (node) => {
132
+ // Solidity functions: public/private/internal/external — `external` maps
133
+ // to 'public' for our purposes (callable from outside the contract).
134
+ for (let i = 0; i < node.namedChildCount; i++) {
135
+ const child = node.namedChild(i);
136
+ if (child?.type !== 'visibility')
137
+ continue;
138
+ const t = child.text.trim();
139
+ if (t === 'public' || t === 'external')
140
+ return 'public';
141
+ if (t === 'private')
142
+ return 'private';
143
+ if (t === 'internal')
144
+ return 'internal';
145
+ }
146
+ return undefined;
147
+ },
148
+ // `constant_variable_declaration` is by definition a constant; the generic
149
+ // variable extractor defaults to kind:'variable' otherwise.
150
+ isConst: (node) => node.type === 'constant_variable_declaration',
151
+ visitNode: (node, ctx) => {
152
+ const t = node.type;
153
+ // Solidity inheritance: `contract MyToken is Token, IERC20 { ... }`. The
154
+ // core's extractInheritance walks for `extends_clause`/`base_class_clause`
155
+ // shaped children, which Solidity doesn't have — its `inheritance_specifier`
156
+ // children are direct siblings of the `body:` field. We piggyback on the
157
+ // standard contract/library/interface dispatch (which fires AFTER this
158
+ // hook returns false) by emitting the extends references here, then
159
+ // returning false so the generic class extractor still creates the node.
160
+ // Each ancestor → one `extends` reference; the resolver then upgrades it
161
+ // to a real edge. Without these refs, "what inherits from Ownable" /
162
+ // "trace inherited onlyOwner" can't traverse the contract graph and the
163
+ // agent has to Read each file to reconstruct the hierarchy.
164
+ if (t === 'contract_declaration' ||
165
+ t === 'library_declaration' ||
166
+ t === 'interface_declaration') {
167
+ // Mirror the generic class path — create the node (the extends refs
168
+ // need its id), emit the refs, walk the body — then return true to
169
+ // short-circuit the generic dispatch so nothing is doubled.
170
+ const ancestors = getInheritanceAncestors(node, ctx.source);
171
+ const nameNode = (0, tree_sitter_helpers_1.getChildByField)(node, 'name');
172
+ const body = (0, tree_sitter_helpers_1.getChildByField)(node, 'body');
173
+ if (!nameNode)
174
+ return false;
175
+ const name = (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source);
176
+ const kind = t === 'interface_declaration' ? 'interface' : 'class';
177
+ const created = ctx.createNode(kind, name, node);
178
+ if (!created)
179
+ return true;
180
+ // Solidity uses one keyword (`is`) for both class-extends-class and
181
+ // class-implements-interface, indistinguishable at parse time. Emit
182
+ // `extends` for every ancestor — the resolver's interface-impl synthesizer
183
+ // (Phase 5.5) reclassifies a class→interface edge as `implements` based
184
+ // on the target node kind, matching how Java/C# extractors do it.
185
+ for (const ancestor of ancestors) {
186
+ ctx.addUnresolvedReference({
187
+ fromNodeId: created.id,
188
+ referenceName: ancestor,
189
+ referenceKind: 'extends',
190
+ line: node.startPosition.row + 1,
191
+ column: node.startPosition.column,
192
+ });
193
+ }
194
+ ctx.pushScope(created.id);
195
+ if (body) {
196
+ for (let i = 0; i < body.namedChildCount; i++) {
197
+ const child = body.namedChild(i);
198
+ if (child)
199
+ ctx.visitNode(child);
200
+ }
201
+ }
202
+ ctx.popScope();
203
+ return true;
204
+ }
205
+ // tree-sitter-solidity puts struct_member / enum_value as DIRECT children
206
+ // of struct_declaration / enum_declaration — there is no `body:` field, so
207
+ // the core's extractStruct/extractEnum (which require a body field) bails.
208
+ // We extract these here, push the parent on the scope stack, walk the
209
+ // direct children, and emit one struct/enum node + its members.
210
+ if (t === 'struct_declaration' || t === 'enum_declaration') {
211
+ const nameNode = (0, tree_sitter_helpers_1.getChildByField)(node, 'name');
212
+ if (!nameNode)
213
+ return true;
214
+ const name = (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source);
215
+ const kind = t === 'struct_declaration' ? 'struct' : 'enum';
216
+ const created = ctx.createNode(kind, name, node);
217
+ if (!created)
218
+ return true;
219
+ ctx.pushScope(created.id);
220
+ for (let i = 0; i < node.namedChildCount; i++) {
221
+ const child = node.namedChild(i);
222
+ if (!child)
223
+ continue;
224
+ if (child === nameNode)
225
+ continue;
226
+ ctx.visitNode(child);
227
+ }
228
+ ctx.popScope();
229
+ return true;
230
+ }
231
+ // enum_value is the bare identifier of an enum case — no `name:` field, so
232
+ // the generic enum-member dispatch can't find it. Use the node's own text.
233
+ if (t === 'enum_value') {
234
+ ctx.createNode('enum_member', (0, tree_sitter_helpers_1.getNodeText)(node, ctx.source), node);
235
+ return true;
236
+ }
237
+ // event SomeEvent(...) — preserve event name as a field-shaped node so
238
+ // `emit SomeEvent(...)` (an emit_statement) can resolve to it. We use
239
+ // `field` kind because Solidity events are member declarations of a
240
+ // contract, similar in spirit to fields, and `field` reuses the FTS index
241
+ // without adding a new NodeKind.
242
+ if (t === 'event_definition') {
243
+ const nameNode = (0, tree_sitter_helpers_1.getChildByField)(node, 'name');
244
+ if (!nameNode)
245
+ return true;
246
+ const name = (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source);
247
+ ctx.createNode('field', name, node, {
248
+ signature: (0, tree_sitter_helpers_1.getNodeText)(node, ctx.source).trim().slice(0, 200),
249
+ });
250
+ return true;
251
+ }
252
+ // error MyError(...) — same reasoning as event_definition. revert MyError()
253
+ // (a revert_statement) is captured via callTypes and resolves by name.
254
+ if (t === 'error_declaration') {
255
+ const nameNode = (0, tree_sitter_helpers_1.getChildByField)(node, 'name');
256
+ if (!nameNode)
257
+ return true;
258
+ const name = (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source);
259
+ ctx.createNode('field', name, node, {
260
+ signature: (0, tree_sitter_helpers_1.getNodeText)(node, ctx.source).trim().slice(0, 200),
261
+ });
262
+ return true;
263
+ }
264
+ // struct_member: named field inside a struct. It has `name:` + `type:` —
265
+ // the generic field dispatch handles it via fieldTypes, so no custom code.
266
+ return false;
267
+ },
268
+ // import "X"; / import {A, B} from "X"; / import * as X from "Y";
269
+ // We surface the SOURCE path as the moduleName — that's what
270
+ // import-resolver matches against on disk. The `import_name:` field (if
271
+ // present, for the symbolic-import form) is intentionally ignored here; the
272
+ // SOURCE is the file being imported from.
273
+ extractImport: (node, source) => {
274
+ const importText = source.substring(node.startIndex, node.endIndex).trim();
275
+ const sourceField = (0, tree_sitter_helpers_1.getChildByField)(node, 'source');
276
+ if (!sourceField)
277
+ return null;
278
+ // source is a `string` node — strip quotes via descendantsOfType lookup.
279
+ const stringContent = sourceField.descendantsOfType('string_literal');
280
+ let moduleName;
281
+ if (stringContent.length > 0) {
282
+ moduleName = (0, tree_sitter_helpers_1.getNodeText)(stringContent[0], source);
283
+ }
284
+ else {
285
+ moduleName = (0, tree_sitter_helpers_1.getNodeText)(sourceField, source);
286
+ }
287
+ moduleName = moduleName.replace(/^["']|["']$/g, '').trim();
288
+ if (!moduleName)
289
+ return null;
290
+ return { moduleName, signature: importText };
291
+ },
292
+ };
293
+ //# sourceMappingURL=solidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solidity.js","sourceRoot":"","sources":["../../../src/extraction/languages/solidity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../tree-sitter-types';
2
+ export declare const terraformExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=terraform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terraform.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/terraform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsL9D,eAAO,MAAM,kBAAkB,EAAE,iBAiJhC,CAAC"}