seer-mcp 0.1.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 (371) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/LICENSE +176 -0
  3. package/README.md +272 -0
  4. package/README_dev.md +199 -0
  5. package/dist/bundle/ci.d.ts +47 -0
  6. package/dist/bundle/ci.d.ts.map +1 -0
  7. package/dist/bundle/ci.js +113 -0
  8. package/dist/bundle/ci.js.map +1 -0
  9. package/dist/bundle/contract.d.ts +111 -0
  10. package/dist/bundle/contract.d.ts.map +1 -0
  11. package/dist/bundle/contract.js +352 -0
  12. package/dist/bundle/contract.js.map +1 -0
  13. package/dist/bundle/export.d.ts +36 -0
  14. package/dist/bundle/export.d.ts.map +1 -0
  15. package/dist/bundle/export.js +152 -0
  16. package/dist/bundle/export.js.map +1 -0
  17. package/dist/bundle/external.d.ts +66 -0
  18. package/dist/bundle/external.d.ts.map +1 -0
  19. package/dist/bundle/external.js +238 -0
  20. package/dist/bundle/external.js.map +1 -0
  21. package/dist/bundle/format.d.ts +94 -0
  22. package/dist/bundle/format.d.ts.map +1 -0
  23. package/dist/bundle/format.js +42 -0
  24. package/dist/bundle/format.js.map +1 -0
  25. package/dist/bundle/import.d.ts +49 -0
  26. package/dist/bundle/import.d.ts.map +1 -0
  27. package/dist/bundle/import.js +116 -0
  28. package/dist/bundle/import.js.map +1 -0
  29. package/dist/cli/index.d.ts +3 -0
  30. package/dist/cli/index.d.ts.map +1 -0
  31. package/dist/cli/index.js +1402 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/cli/init.d.ts +48 -0
  34. package/dist/cli/init.d.ts.map +1 -0
  35. package/dist/cli/init.js +284 -0
  36. package/dist/cli/init.js.map +1 -0
  37. package/dist/db/schema.d.ts +3 -0
  38. package/dist/db/schema.d.ts.map +1 -0
  39. package/dist/db/schema.js +616 -0
  40. package/dist/db/schema.js.map +1 -0
  41. package/dist/db/store.d.ts +1011 -0
  42. package/dist/db/store.d.ts.map +1 -0
  43. package/dist/db/store.js +3888 -0
  44. package/dist/db/store.js.map +1 -0
  45. package/dist/graph/pagerank.d.ts +9 -0
  46. package/dist/graph/pagerank.d.ts.map +1 -0
  47. package/dist/graph/pagerank.js +47 -0
  48. package/dist/graph/pagerank.js.map +1 -0
  49. package/dist/indexer/architecture.d.ts +72 -0
  50. package/dist/indexer/architecture.d.ts.map +1 -0
  51. package/dist/indexer/architecture.js +112 -0
  52. package/dist/indexer/architecture.js.map +1 -0
  53. package/dist/indexer/behavior.d.ts +75 -0
  54. package/dist/indexer/behavior.d.ts.map +1 -0
  55. package/dist/indexer/behavior.js +395 -0
  56. package/dist/indexer/behavior.js.map +1 -0
  57. package/dist/indexer/boundaries.d.ts +60 -0
  58. package/dist/indexer/boundaries.d.ts.map +1 -0
  59. package/dist/indexer/boundaries.js +366 -0
  60. package/dist/indexer/boundaries.js.map +1 -0
  61. package/dist/indexer/churn.d.ts +15 -0
  62. package/dist/indexer/churn.d.ts.map +1 -0
  63. package/dist/indexer/churn.js +49 -0
  64. package/dist/indexer/churn.js.map +1 -0
  65. package/dist/indexer/classify.d.ts +9 -0
  66. package/dist/indexer/classify.d.ts.map +1 -0
  67. package/dist/indexer/classify.js +90 -0
  68. package/dist/indexer/classify.js.map +1 -0
  69. package/dist/indexer/context.d.ts +176 -0
  70. package/dist/indexer/context.d.ts.map +1 -0
  71. package/dist/indexer/context.js +193 -0
  72. package/dist/indexer/context.js.map +1 -0
  73. package/dist/indexer/continuity.d.ts +67 -0
  74. package/dist/indexer/continuity.d.ts.map +1 -0
  75. package/dist/indexer/continuity.js +288 -0
  76. package/dist/indexer/continuity.js.map +1 -0
  77. package/dist/indexer/detectchanges.d.ts +32 -0
  78. package/dist/indexer/detectchanges.d.ts.map +1 -0
  79. package/dist/indexer/detectchanges.js +74 -0
  80. package/dist/indexer/detectchanges.js.map +1 -0
  81. package/dist/indexer/discovery.d.ts +37 -0
  82. package/dist/indexer/discovery.d.ts.map +1 -0
  83. package/dist/indexer/discovery.js +136 -0
  84. package/dist/indexer/discovery.js.map +1 -0
  85. package/dist/indexer/externaldeps.d.ts +18 -0
  86. package/dist/indexer/externaldeps.d.ts.map +1 -0
  87. package/dist/indexer/externaldeps.js +288 -0
  88. package/dist/indexer/externaldeps.js.map +1 -0
  89. package/dist/indexer/freshness.d.ts +48 -0
  90. package/dist/indexer/freshness.d.ts.map +1 -0
  91. package/dist/indexer/freshness.js +128 -0
  92. package/dist/indexer/freshness.js.map +1 -0
  93. package/dist/indexer/git.d.ts +144 -0
  94. package/dist/indexer/git.d.ts.map +1 -0
  95. package/dist/indexer/git.js +444 -0
  96. package/dist/indexer/git.js.map +1 -0
  97. package/dist/indexer/index.d.ts +145 -0
  98. package/dist/indexer/index.d.ts.map +1 -0
  99. package/dist/indexer/index.js +930 -0
  100. package/dist/indexer/index.js.map +1 -0
  101. package/dist/indexer/modules.d.ts +62 -0
  102. package/dist/indexer/modules.d.ts.map +1 -0
  103. package/dist/indexer/modules.js +293 -0
  104. package/dist/indexer/modules.js.map +1 -0
  105. package/dist/indexer/preflight.d.ts +154 -0
  106. package/dist/indexer/preflight.d.ts.map +1 -0
  107. package/dist/indexer/preflight.js +399 -0
  108. package/dist/indexer/preflight.js.map +1 -0
  109. package/dist/indexer/protoScanner.d.ts +34 -0
  110. package/dist/indexer/protoScanner.d.ts.map +1 -0
  111. package/dist/indexer/protoScanner.js +133 -0
  112. package/dist/indexer/protoScanner.js.map +1 -0
  113. package/dist/indexer/risk.d.ts +115 -0
  114. package/dist/indexer/risk.d.ts.map +1 -0
  115. package/dist/indexer/risk.js +194 -0
  116. package/dist/indexer/risk.js.map +1 -0
  117. package/dist/indexer/serviceHostScanner.d.ts +25 -0
  118. package/dist/indexer/serviceHostScanner.d.ts.map +1 -0
  119. package/dist/indexer/serviceHostScanner.js +95 -0
  120. package/dist/indexer/serviceHostScanner.js.map +1 -0
  121. package/dist/indexer/serviceLinks.d.ts +105 -0
  122. package/dist/indexer/serviceLinks.d.ts.map +1 -0
  123. package/dist/indexer/serviceLinks.js +509 -0
  124. package/dist/indexer/serviceLinks.js.map +1 -0
  125. package/dist/indexer/shapehash.d.ts +98 -0
  126. package/dist/indexer/shapehash.d.ts.map +1 -0
  127. package/dist/indexer/shapehash.js +354 -0
  128. package/dist/indexer/shapehash.js.map +1 -0
  129. package/dist/indexer/skeleton.d.ts +15 -0
  130. package/dist/indexer/skeleton.d.ts.map +1 -0
  131. package/dist/indexer/skeleton.js +136 -0
  132. package/dist/indexer/skeleton.js.map +1 -0
  133. package/dist/indexer/symbolhistory.d.ts +41 -0
  134. package/dist/indexer/symbolhistory.d.ts.map +1 -0
  135. package/dist/indexer/symbolhistory.js +124 -0
  136. package/dist/indexer/symbolhistory.js.map +1 -0
  137. package/dist/indexer/watcher.d.ts +68 -0
  138. package/dist/indexer/watcher.d.ts.map +1 -0
  139. package/dist/indexer/watcher.js +179 -0
  140. package/dist/indexer/watcher.js.map +1 -0
  141. package/dist/mcp/server.d.ts +80 -0
  142. package/dist/mcp/server.d.ts.map +1 -0
  143. package/dist/mcp/server.js +1610 -0
  144. package/dist/mcp/server.js.map +1 -0
  145. package/dist/parser/index.d.ts +8 -0
  146. package/dist/parser/index.d.ts.map +1 -0
  147. package/dist/parser/index.js +33 -0
  148. package/dist/parser/index.js.map +1 -0
  149. package/dist/parser/languages/cpp.d.ts +3 -0
  150. package/dist/parser/languages/cpp.d.ts.map +1 -0
  151. package/dist/parser/languages/cpp.js +350 -0
  152. package/dist/parser/languages/cpp.js.map +1 -0
  153. package/dist/parser/languages/csharp.d.ts +3 -0
  154. package/dist/parser/languages/csharp.d.ts.map +1 -0
  155. package/dist/parser/languages/csharp.js +239 -0
  156. package/dist/parser/languages/csharp.js.map +1 -0
  157. package/dist/parser/languages/go.d.ts +3 -0
  158. package/dist/parser/languages/go.d.ts.map +1 -0
  159. package/dist/parser/languages/go.js +259 -0
  160. package/dist/parser/languages/go.js.map +1 -0
  161. package/dist/parser/languages/java.d.ts +3 -0
  162. package/dist/parser/languages/java.d.ts.map +1 -0
  163. package/dist/parser/languages/java.js +391 -0
  164. package/dist/parser/languages/java.js.map +1 -0
  165. package/dist/parser/languages/python.d.ts +3 -0
  166. package/dist/parser/languages/python.d.ts.map +1 -0
  167. package/dist/parser/languages/python.js +396 -0
  168. package/dist/parser/languages/python.js.map +1 -0
  169. package/dist/parser/languages/rust.d.ts +3 -0
  170. package/dist/parser/languages/rust.d.ts.map +1 -0
  171. package/dist/parser/languages/rust.js +159 -0
  172. package/dist/parser/languages/rust.js.map +1 -0
  173. package/dist/parser/languages/typescript.d.ts +3 -0
  174. package/dist/parser/languages/typescript.d.ts.map +1 -0
  175. package/dist/parser/languages/typescript.js +1442 -0
  176. package/dist/parser/languages/typescript.js.map +1 -0
  177. package/dist/parser/parserContext.d.ts +77 -0
  178. package/dist/parser/parserContext.d.ts.map +1 -0
  179. package/dist/parser/parserContext.js +354 -0
  180. package/dist/parser/parserContext.js.map +1 -0
  181. package/dist/parser/walker.d.ts +81 -0
  182. package/dist/parser/walker.d.ts.map +1 -0
  183. package/dist/parser/walker.js +217 -0
  184. package/dist/parser/walker.js.map +1 -0
  185. package/dist/parser/worker.d.ts +66 -0
  186. package/dist/parser/worker.d.ts.map +1 -0
  187. package/dist/parser/worker.js +129 -0
  188. package/dist/parser/worker.js.map +1 -0
  189. package/dist/parser/workerpool.d.ts +107 -0
  190. package/dist/parser/workerpool.d.ts.map +1 -0
  191. package/dist/parser/workerpool.js +383 -0
  192. package/dist/parser/workerpool.js.map +1 -0
  193. package/dist/scip/format.d.ts +87 -0
  194. package/dist/scip/format.d.ts.map +1 -0
  195. package/dist/scip/format.js +31 -0
  196. package/dist/scip/format.js.map +1 -0
  197. package/dist/scip/import.d.ts +37 -0
  198. package/dist/scip/import.d.ts.map +1 -0
  199. package/dist/scip/import.js +180 -0
  200. package/dist/scip/import.js.map +1 -0
  201. package/dist/types.d.ts +392 -0
  202. package/dist/types.d.ts.map +1 -0
  203. package/dist/types.js +4 -0
  204. package/dist/types.js.map +1 -0
  205. package/docs/architecture.md +105 -0
  206. package/docs/benchmarks/methodology.md +134 -0
  207. package/docs/benchmarks/raw-results.md +71 -0
  208. package/docs/benchmarks.md +74 -0
  209. package/docs/cli.md +148 -0
  210. package/docs/examples/behavior-tests.md +70 -0
  211. package/docs/examples/change-history.md +85 -0
  212. package/docs/examples/pre-edit-context.md +81 -0
  213. package/docs/examples/service-links.md +88 -0
  214. package/docs/examples.md +80 -0
  215. package/docs/faq.md +70 -0
  216. package/docs/internals.md +104 -0
  217. package/docs/languages.md +70 -0
  218. package/docs/limits.md +52 -0
  219. package/docs/mcp.md +199 -0
  220. package/docs/quickstart.md +119 -0
  221. package/docs/testing.md +123 -0
  222. package/docs/tools.md +115 -0
  223. package/package.json +52 -0
  224. package/research-codebase.md +578 -0
  225. package/seer-cli-docs.md +326 -0
  226. package/seer-master-guide.md +246 -0
  227. package/src/bundle/ci.ts +141 -0
  228. package/src/bundle/contract.ts +387 -0
  229. package/src/bundle/export.ts +175 -0
  230. package/src/bundle/external.ts +285 -0
  231. package/src/bundle/format.ts +92 -0
  232. package/src/bundle/import.ts +157 -0
  233. package/src/cli/index.ts +1249 -0
  234. package/src/cli/init.ts +389 -0
  235. package/src/db/schema.ts +614 -0
  236. package/src/db/store.ts +4306 -0
  237. package/src/graph/pagerank.ts +53 -0
  238. package/src/indexer/architecture.ts +148 -0
  239. package/src/indexer/behavior.ts +466 -0
  240. package/src/indexer/boundaries.ts +374 -0
  241. package/src/indexer/churn.ts +58 -0
  242. package/src/indexer/classify.ts +96 -0
  243. package/src/indexer/context.ts +340 -0
  244. package/src/indexer/continuity.ts +322 -0
  245. package/src/indexer/detectchanges.ts +94 -0
  246. package/src/indexer/discovery.ts +176 -0
  247. package/src/indexer/externaldeps.ts +243 -0
  248. package/src/indexer/freshness.ts +166 -0
  249. package/src/indexer/git.ts +453 -0
  250. package/src/indexer/index.ts +1092 -0
  251. package/src/indexer/modules.ts +358 -0
  252. package/src/indexer/preflight.ts +548 -0
  253. package/src/indexer/protoScanner.ts +147 -0
  254. package/src/indexer/risk.ts +304 -0
  255. package/src/indexer/serviceHostScanner.ts +92 -0
  256. package/src/indexer/serviceLinks.ts +543 -0
  257. package/src/indexer/shapehash.ts +370 -0
  258. package/src/indexer/skeleton.ts +169 -0
  259. package/src/indexer/symbolhistory.ts +172 -0
  260. package/src/indexer/watcher.ts +206 -0
  261. package/src/mcp/server.ts +1659 -0
  262. package/src/parser/index.ts +37 -0
  263. package/src/parser/languages/cpp.ts +361 -0
  264. package/src/parser/languages/csharp.ts +235 -0
  265. package/src/parser/languages/go.ts +259 -0
  266. package/src/parser/languages/java.ts +382 -0
  267. package/src/parser/languages/python.ts +370 -0
  268. package/src/parser/languages/rust.ts +164 -0
  269. package/src/parser/languages/typescript.ts +1435 -0
  270. package/src/parser/parserContext.ts +392 -0
  271. package/src/parser/walker.ts +306 -0
  272. package/src/parser/worker.ts +181 -0
  273. package/src/parser/workerpool.ts +448 -0
  274. package/src/scip/format.ts +83 -0
  275. package/src/scip/import.ts +216 -0
  276. package/src/types.ts +457 -0
  277. package/tests/benchmark-service-links.ts +244 -0
  278. package/tests/bug-regressions.ts +626 -0
  279. package/tests/filters.ts +264 -0
  280. package/tests/fixtures/Counter.tsx +38 -0
  281. package/tests/fixtures/caller.ts +7 -0
  282. package/tests/fixtures/collisions.ts +23 -0
  283. package/tests/fixtures/local_helper.ts +5 -0
  284. package/tests/fixtures/overloads.java +17 -0
  285. package/tests/fixtures/remote_helper.ts +4 -0
  286. package/tests/fixtures/sample.c +15 -0
  287. package/tests/fixtures/sample.cpp +47 -0
  288. package/tests/fixtures/sample.cs +62 -0
  289. package/tests/fixtures/sample.go +68 -0
  290. package/tests/fixtures/sample.h +30 -0
  291. package/tests/fixtures/sample.java +85 -0
  292. package/tests/fixtures/sample.py +46 -0
  293. package/tests/fixtures/sample.rs +78 -0
  294. package/tests/fixtures/sample.ts +76 -0
  295. package/tests/fixtures-service/HttpClients.cs +30 -0
  296. package/tests/fixtures-service/HttpClients.java +24 -0
  297. package/tests/fixtures-service/billing.ts +15 -0
  298. package/tests/fixtures-service/docker-compose.yml +15 -0
  299. package/tests/fixtures-service/gateway.ts +10 -0
  300. package/tests/fixtures-service/get_user.ts +11 -0
  301. package/tests/fixtures-service/graphql_client.ts +63 -0
  302. package/tests/fixtures-service/graphql_server.ts +30 -0
  303. package/tests/fixtures-service/grpc_client.go +30 -0
  304. package/tests/fixtures-service/http_clients.go +23 -0
  305. package/tests/fixtures-service/http_clients.py +38 -0
  306. package/tests/fixtures-service/http_clients.ts +49 -0
  307. package/tests/fixtures-service/k8s/payment-service.yaml +22 -0
  308. package/tests/fixtures-service/k8s_calls.ts +20 -0
  309. package/tests/fixtures-service/messaging.ts +87 -0
  310. package/tests/fixtures-service/trpc_client.ts +39 -0
  311. package/tests/fixtures-service/trpc_server.ts +39 -0
  312. package/tests/fixtures-service/user_service.proto +33 -0
  313. package/tests/fixtures-trackcd/Cargo.toml +11 -0
  314. package/tests/fixtures-trackcd/SpringController.java +36 -0
  315. package/tests/fixtures-trackcd/auth_service.ts +19 -0
  316. package/tests/fixtures-trackcd/complex_module.py +50 -0
  317. package/tests/fixtures-trackcd/express_app.js +30 -0
  318. package/tests/fixtures-trackcd/fastapi_app.py +49 -0
  319. package/tests/fixtures-trackcd/fastify_object_routes.js +32 -0
  320. package/tests/fixtures-trackcd/go.mod +8 -0
  321. package/tests/fixtures-trackcd/package.json +15 -0
  322. package/tests/fixtures-trackcd/requirements.txt +4 -0
  323. package/tests/fixtures-trackcd/tests/auth_service.test.ts +13 -0
  324. package/tests/fixtures-tracke/auth/AuthService.ts +23 -0
  325. package/tests/fixtures-tracke/auth/crypto.ts +7 -0
  326. package/tests/fixtures-tracke/billing/Billing.ts +20 -0
  327. package/tests/fixtures-tracke/billing/Invoice.ts +10 -0
  328. package/tests/fixtures-tracke/billing/server.ts +17 -0
  329. package/tests/fixtures-tracke/package.json +7 -0
  330. package/tests/fixtures-tracke/tests/auth.test.ts +23 -0
  331. package/tests/fixtures-tracke/tests/billing.test.ts +14 -0
  332. package/tests/fixtures-trackf/package.json +5 -0
  333. package/tests/fixtures-trackf/src/auth.ts +26 -0
  334. package/tests/fixtures-trackf/src/handlers.ts +35 -0
  335. package/tests/fixtures-tracki/billing/routes.ts +12 -0
  336. package/tests/fixtures-tracki/gateway/client.ts +13 -0
  337. package/tests/git-features.ts +267 -0
  338. package/tests/init.ts +141 -0
  339. package/tests/mcp-jit.ts +130 -0
  340. package/tests/mcp-smoke.ts +191 -0
  341. package/tests/mcp-trackcd.ts +169 -0
  342. package/tests/mcp-tracke.ts +229 -0
  343. package/tests/mcp-trackf.ts +330 -0
  344. package/tests/mcp-trackg.ts +219 -0
  345. package/tests/mcp-tracki.ts +174 -0
  346. package/tests/mcp-watcher.ts +126 -0
  347. package/tests/optspec.ts +194 -0
  348. package/tests/parallel-index.ts +333 -0
  349. package/tests/parallel-read.ts +125 -0
  350. package/tests/parallel-recovery.ts +241 -0
  351. package/tests/perf-callers.ts +145 -0
  352. package/tests/query-parity.ts +184 -0
  353. package/tests/query-perf.ts +55 -0
  354. package/tests/scale-parallel-parity.ts +225 -0
  355. package/tests/scale-test.ts +523 -0
  356. package/tests/smoke.ts +396 -0
  357. package/tests/trackcd.ts +325 -0
  358. package/tests/tracke-collisions.ts +255 -0
  359. package/tests/tracke.ts +314 -0
  360. package/tests/trackf-bugs.ts +406 -0
  361. package/tests/trackf.ts +390 -0
  362. package/tests/trackg.ts +1372 -0
  363. package/tests/tracki-boundaries.ts +202 -0
  364. package/tests/tracki-continuity.ts +253 -0
  365. package/tests/tracki-contract-diff.ts +249 -0
  366. package/tests/tracki-external-bundles.ts +341 -0
  367. package/tests/tracki-preflight.ts +251 -0
  368. package/tests/verify-roles.ts +51 -0
  369. package/tests/worker-parity.ts +286 -0
  370. package/tests/worker-pool.ts +262 -0
  371. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/parser/languages/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import type { FileExtraction, Language } from '../types.js';
2
+ import type { LanguageExtractor } from './walker.js';
3
+ export declare const EXT_TO_LANGUAGE: Record<string, Language>;
4
+ export declare function detectLanguage(filePath: string): Language | null;
5
+ export declare const EXTRACTORS: Record<Language, LanguageExtractor>;
6
+ export declare const GRAMMAR_NAME: Record<Language, string>;
7
+ /**
8
+ * Map a file extension to the specific WASM grammar to load. Most languages
9
+ * have one grammar, but TS/JS are split:
10
+ * .tsx → tsx grammar (typescript + JSX)
11
+ * .jsx → javascript grammar (which handles JSX natively)
12
+ * .ts → typescript grammar (no JSX)
13
+ */
14
+ export declare function grammarForExtension(ext: string): string | null;
15
+ export declare function isLanguageString(s: string): boolean;
16
+ export interface ParserContextOptions {
17
+ /**
18
+ * Force the baseline walker for every parse, skipping the candidate-query
19
+ * fast path. Defaults to reading the `SEER_USE_CANDIDATE_QUERY` env var
20
+ * (`'0'` ⇒ force baseline). Used by the parity tests to A/B the two paths.
21
+ */
22
+ forceBaselineWalker?: boolean;
23
+ }
24
+ export declare class ParserContext {
25
+ private _initialized;
26
+ private _parser;
27
+ private _languages;
28
+ private _candidateQueries;
29
+ private _wasmResets;
30
+ private _consecutiveFailures;
31
+ private static readonly RESET_AFTER_N_FAILURES;
32
+ private _forceBaselineWalker;
33
+ constructor(options?: ParserContextOptions);
34
+ setForceBaselineWalker(force: boolean): void;
35
+ /** How many times the WASM module had to be hard-reset. Exposed for stats. */
36
+ wasmResetCount(): number;
37
+ private ensureReady;
38
+ private getParser;
39
+ private loadLanguage;
40
+ private noteParseSuccess;
41
+ private noteParseFailureMaybeReset;
42
+ private resetWasmRuntime;
43
+ /**
44
+ * Compile (and cache) the candidate-collection query for one grammar +
45
+ * extractor pair. Returns null if the extractor declares no candidate types
46
+ * OR if every type in the list was rejected by the grammar.
47
+ *
48
+ * Strategy:
49
+ * 1. Try the full combined query first (cheapest path).
50
+ * 2. If that throws — typically because one node type is unknown to the
51
+ * grammar (e.g. `class_specifier` doesn't exist in tree-sitter-c) —
52
+ * retry node types one at a time, keep only the ones that compile,
53
+ * then build a final combined query from the survivors.
54
+ * 3. If even individual probes fail, cache null and the parser falls back
55
+ * to the baseline walker for that grammar permanently.
56
+ *
57
+ * The query captures every candidate node under `@c` so the walker only has
58
+ * to check membership in a single Set; categorization is left to the
59
+ * extractor's `tryExtract*` callbacks (which retain all semantic authority).
60
+ */
61
+ private getOrCompileCandidateQuery;
62
+ /**
63
+ * Run the candidate query against a parsed tree and collect captured node
64
+ * ids into a Set. Returns null if the query fails at runtime — caller falls
65
+ * back to the baseline walker.
66
+ */
67
+ private collectCandidateNodeIds;
68
+ /**
69
+ * Parse a file and return the extracted symbols, references, and imports.
70
+ * Returns null on parse failure (caller decides whether to warn).
71
+ *
72
+ * Takes the file path (not just the language) so we can route .tsx → the tsx
73
+ * grammar variant, which is required to parse JSX.
74
+ */
75
+ parseFile(content: string, filePathOrLanguage: string, languageOverride?: Language): Promise<FileExtraction | null>;
76
+ }
77
+ //# sourceMappingURL=parserContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserContext.d.ts","sourceRoot":"","sources":["../../src/parser/parserContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAcpD,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGhE;AAeD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAW1D,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAYjD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AA2BD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAsC;IAIxD,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IASnD,OAAO,CAAC,oBAAoB,CAAU;gBAE1B,OAAO,GAAE,oBAAyB;IAO9C,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5C,8EAA8E;IAC9E,cAAc,IAAI,MAAM;YAIV,WAAW;IAMzB,OAAO,CAAC,SAAS;YAKH,YAAY;IAc1B,OAAO,CAAC,gBAAgB;YAIV,0BAA0B;YAQ1B,gBAAgB;IAY9B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,0BAA0B;IA8ClC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;;OAMG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,CAAC,EAAE,QAAQ,GAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CA8ElC"}
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ParserContext = exports.GRAMMAR_NAME = exports.EXTRACTORS = exports.EXT_TO_LANGUAGE = void 0;
7
+ exports.detectLanguage = detectLanguage;
8
+ exports.grammarForExtension = grammarForExtension;
9
+ exports.isLanguageString = isLanguageString;
10
+ const web_tree_sitter_1 = __importDefault(require("web-tree-sitter"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const walker_js_1 = require("./walker.js");
13
+ const python_js_1 = require("./languages/python.js");
14
+ const typescript_js_1 = require("./languages/typescript.js");
15
+ const go_js_1 = require("./languages/go.js");
16
+ const java_js_1 = require("./languages/java.js");
17
+ const rust_js_1 = require("./languages/rust.js");
18
+ const cpp_js_1 = require("./languages/cpp.js");
19
+ const csharp_js_1 = require("./languages/csharp.js");
20
+ // ── Extension → language mapping ───────────────────────────────────────────────
21
+ exports.EXT_TO_LANGUAGE = {
22
+ '.py': 'python', '.pyw': 'python',
23
+ '.ts': 'typescript', '.tsx': 'typescript',
24
+ '.js': 'javascript', '.jsx': 'javascript', '.mjs': 'javascript', '.cjs': 'javascript',
25
+ '.go': 'go',
26
+ '.java': 'java',
27
+ '.rs': 'rust',
28
+ // C source files use the dedicated C grammar with the C++ extractor's shared
29
+ // C-family symbol logic. `.h` remains ambiguous between C and C++, so we keep
30
+ // headers on the C++ grammar by default.
31
+ '.c': 'c',
32
+ '.cpp': 'cpp', '.cc': 'cpp', '.cxx': 'cpp', '.c++': 'cpp',
33
+ '.hpp': 'cpp', '.hh': 'cpp', '.h++': 'cpp', '.h': 'cpp',
34
+ '.cs': 'csharp',
35
+ };
36
+ function detectLanguage(filePath) {
37
+ const ext = path_1.default.extname(filePath).toLowerCase();
38
+ return exports.EXT_TO_LANGUAGE[ext] ?? null;
39
+ }
40
+ // v9 Track-H — placeholder extractor for .proto files. Proto files don't go
41
+ // through tree-sitter; the proto scanner in protoScanner.ts handles them. The
42
+ // entry exists so the Record<Language, LanguageExtractor> contract is met.
43
+ const noopProtoExtractor = {
44
+ languageName: 'proto',
45
+ extensions: ['.proto'],
46
+ tryExtractDefinition() { return null; },
47
+ tryExtractCallName() { return null; },
48
+ tryExtractImport() { return null; },
49
+ };
50
+ // JavaScript and TypeScript share the TypeScript extractor but need different
51
+ // WASM grammars (and .tsx needs the tsx variant).
52
+ exports.EXTRACTORS = {
53
+ python: python_js_1.pythonExtractor,
54
+ typescript: typescript_js_1.typescriptExtractor,
55
+ javascript: { ...typescript_js_1.typescriptExtractor, languageName: 'javascript' },
56
+ go: go_js_1.goExtractor,
57
+ java: java_js_1.javaExtractor,
58
+ rust: rust_js_1.rustExtractor,
59
+ c: { ...cpp_js_1.cppExtractor, languageName: 'c', extensions: ['.c'] },
60
+ cpp: cpp_js_1.cppExtractor,
61
+ csharp: csharp_js_1.csharpExtractor,
62
+ proto: noopProtoExtractor,
63
+ };
64
+ // Default grammar for each language (used when there's no per-extension override
65
+ // in `grammarForExtension`). Note the underscore in `c_sharp` matches the WASM
66
+ // filename `tree-sitter-c_sharp.wasm`.
67
+ exports.GRAMMAR_NAME = {
68
+ python: 'python',
69
+ typescript: 'typescript',
70
+ javascript: 'javascript',
71
+ go: 'go',
72
+ java: 'java',
73
+ rust: 'rust',
74
+ c: 'c',
75
+ cpp: 'cpp',
76
+ csharp: 'c_sharp',
77
+ // proto files never enter the tree-sitter pipeline; this is unused.
78
+ proto: 'proto',
79
+ };
80
+ /**
81
+ * Map a file extension to the specific WASM grammar to load. Most languages
82
+ * have one grammar, but TS/JS are split:
83
+ * .tsx → tsx grammar (typescript + JSX)
84
+ * .jsx → javascript grammar (which handles JSX natively)
85
+ * .ts → typescript grammar (no JSX)
86
+ */
87
+ function grammarForExtension(ext) {
88
+ if (ext === '.tsx')
89
+ return 'tsx';
90
+ if (ext === '.jsx' || ext === '.mjs' || ext === '.cjs' || ext === '.js')
91
+ return 'javascript';
92
+ if (ext === '.ts')
93
+ return 'typescript';
94
+ const lang = exports.EXT_TO_LANGUAGE[ext];
95
+ if (!lang)
96
+ return null;
97
+ return exports.GRAMMAR_NAME[lang];
98
+ }
99
+ function isLanguageString(s) {
100
+ return s in exports.GRAMMAR_NAME;
101
+ }
102
+ class ParserContext {
103
+ _initialized = false;
104
+ _parser = null;
105
+ _languages = new Map();
106
+ // Per-grammar compiled candidate Query, or null if compilation failed (in
107
+ // which case we permanently fall back to the baseline walker for that grammar).
108
+ // Cache key matches `loadLanguage`'s grammar name.
109
+ _candidateQueries = new Map();
110
+ _wasmResets = 0;
111
+ _consecutiveFailures = 0;
112
+ static RESET_AFTER_N_FAILURES = 3;
113
+ // Test/diagnostic override: when true, every parseFile() call uses the
114
+ // baseline walker even if the extractor has candidateNodeTypes. The parity
115
+ // test in tests/query-parity.ts flips this to compare both paths on the same
116
+ // fixtures. The env var SEER_USE_CANDIDATE_QUERY=0 has the same effect for
117
+ // users who want to skip the query path system-wide (e.g. if a future
118
+ // web-tree-sitter regression makes query.captures() expensive on their
119
+ // workload).
120
+ _forceBaselineWalker;
121
+ constructor(options = {}) {
122
+ this._forceBaselineWalker = options.forceBaselineWalker ??
123
+ (typeof process !== 'undefined' &&
124
+ process.env != null &&
125
+ process.env.SEER_USE_CANDIDATE_QUERY === '0');
126
+ }
127
+ setForceBaselineWalker(force) {
128
+ this._forceBaselineWalker = force;
129
+ }
130
+ /** How many times the WASM module had to be hard-reset. Exposed for stats. */
131
+ wasmResetCount() {
132
+ return this._wasmResets;
133
+ }
134
+ async ensureReady() {
135
+ if (this._initialized)
136
+ return;
137
+ await web_tree_sitter_1.default.init();
138
+ this._initialized = true;
139
+ }
140
+ getParser() {
141
+ if (!this._parser)
142
+ this._parser = new web_tree_sitter_1.default();
143
+ return this._parser;
144
+ }
145
+ async loadLanguage(grammarName) {
146
+ await this.ensureReady();
147
+ const cached = this._languages.get(grammarName);
148
+ if (cached)
149
+ return cached;
150
+ // tree-sitter-wasms uses underscores in some filenames (e.g. c_sharp). The
151
+ // `grammarName` we pass through is the canonical WASM-filename suffix.
152
+ const wasmDir = path_1.default.dirname(require.resolve('tree-sitter-wasms/package.json'));
153
+ const wasmPath = path_1.default.join(wasmDir, 'out', `tree-sitter-${grammarName}.wasm`);
154
+ const lang = await web_tree_sitter_1.default.Language.load(wasmPath);
155
+ this._languages.set(grammarName, lang);
156
+ return lang;
157
+ }
158
+ noteParseSuccess() {
159
+ this._consecutiveFailures = 0;
160
+ }
161
+ async noteParseFailureMaybeReset() {
162
+ this._consecutiveFailures++;
163
+ if (this._consecutiveFailures >= ParserContext.RESET_AFTER_N_FAILURES) {
164
+ this._consecutiveFailures = 0;
165
+ try {
166
+ await this.resetWasmRuntime();
167
+ }
168
+ catch { /* best effort */ }
169
+ }
170
+ }
171
+ async resetWasmRuntime() {
172
+ this._wasmResets++;
173
+ const grammarNames = Array.from(this._languages.keys());
174
+ this._initialized = false;
175
+ this._parser = null;
176
+ this._languages.clear();
177
+ await this.ensureReady();
178
+ for (const name of grammarNames) {
179
+ await this.loadLanguage(name);
180
+ }
181
+ }
182
+ /**
183
+ * Compile (and cache) the candidate-collection query for one grammar +
184
+ * extractor pair. Returns null if the extractor declares no candidate types
185
+ * OR if every type in the list was rejected by the grammar.
186
+ *
187
+ * Strategy:
188
+ * 1. Try the full combined query first (cheapest path).
189
+ * 2. If that throws — typically because one node type is unknown to the
190
+ * grammar (e.g. `class_specifier` doesn't exist in tree-sitter-c) —
191
+ * retry node types one at a time, keep only the ones that compile,
192
+ * then build a final combined query from the survivors.
193
+ * 3. If even individual probes fail, cache null and the parser falls back
194
+ * to the baseline walker for that grammar permanently.
195
+ *
196
+ * The query captures every candidate node under `@c` so the walker only has
197
+ * to check membership in a single Set; categorization is left to the
198
+ * extractor's `tryExtract*` callbacks (which retain all semantic authority).
199
+ */
200
+ getOrCompileCandidateQuery(grammarName, lang, candidateNodeTypes) {
201
+ if (this._candidateQueries.has(grammarName)) {
202
+ return this._candidateQueries.get(grammarName) ?? null;
203
+ }
204
+ if (candidateNodeTypes.length === 0) {
205
+ this._candidateQueries.set(grammarName, null);
206
+ return null;
207
+ }
208
+ const buildSource = (types) => types.map(t => `(${t}) @c`).join('\n');
209
+ // Pass 1: try the combined query.
210
+ try {
211
+ const q = lang.query(buildSource(candidateNodeTypes));
212
+ this._candidateQueries.set(grammarName, q);
213
+ return q;
214
+ }
215
+ catch { /* fall through to per-type probe */ }
216
+ // Pass 2: probe each type individually, keep only the survivors.
217
+ const survivors = [];
218
+ for (const t of candidateNodeTypes) {
219
+ try {
220
+ const probe = lang.query(`(${t}) @c`);
221
+ try {
222
+ probe.delete();
223
+ }
224
+ catch { /* */ }
225
+ survivors.push(t);
226
+ }
227
+ catch { /* type not in this grammar; skip */ }
228
+ }
229
+ if (survivors.length === 0) {
230
+ this._candidateQueries.set(grammarName, null);
231
+ return null;
232
+ }
233
+ try {
234
+ const q = lang.query(buildSource(survivors));
235
+ this._candidateQueries.set(grammarName, q);
236
+ return q;
237
+ }
238
+ catch {
239
+ this._candidateQueries.set(grammarName, null);
240
+ return null;
241
+ }
242
+ }
243
+ /**
244
+ * Run the candidate query against a parsed tree and collect captured node
245
+ * ids into a Set. Returns null if the query fails at runtime — caller falls
246
+ * back to the baseline walker.
247
+ */
248
+ collectCandidateNodeIds(query, rootNode) {
249
+ try {
250
+ const caps = query.captures(rootNode);
251
+ const ids = new Set();
252
+ for (const c of caps)
253
+ ids.add(c.node.id);
254
+ return ids;
255
+ }
256
+ catch {
257
+ return null;
258
+ }
259
+ }
260
+ /**
261
+ * Parse a file and return the extracted symbols, references, and imports.
262
+ * Returns null on parse failure (caller decides whether to warn).
263
+ *
264
+ * Takes the file path (not just the language) so we can route .tsx → the tsx
265
+ * grammar variant, which is required to parse JSX.
266
+ */
267
+ async parseFile(content, filePathOrLanguage, languageOverride) {
268
+ try {
269
+ // Back-compat: callers used to pass (content, language). New callers pass
270
+ // (content, filePath). We detect by checking if it's a known Language.
271
+ let language;
272
+ let ext;
273
+ if (languageOverride) {
274
+ language = languageOverride;
275
+ ext = path_1.default.extname(filePathOrLanguage).toLowerCase();
276
+ }
277
+ else if (isLanguageString(filePathOrLanguage)) {
278
+ // Legacy two-arg form: parseFile(content, language)
279
+ language = filePathOrLanguage;
280
+ // No file path → use the language's default grammar
281
+ ext = '';
282
+ }
283
+ else {
284
+ language = detectLanguage(filePathOrLanguage);
285
+ ext = path_1.default.extname(filePathOrLanguage).toLowerCase();
286
+ }
287
+ if (!language)
288
+ return null;
289
+ const grammarName = ext ? grammarForExtension(ext) ?? exports.GRAMMAR_NAME[language] : exports.GRAMMAR_NAME[language];
290
+ const lang = await this.loadLanguage(grammarName);
291
+ const parser = this.getParser();
292
+ parser.setLanguage(lang);
293
+ // Cap parse time at 10s per file. tree-sitter aborts internally on
294
+ // truly pathological inputs (returning null without poisoning), which
295
+ // we'd much rather have than the WASM heap exhaustion that comes from
296
+ // letting it run indefinitely.
297
+ try {
298
+ // setTimeoutMicros may not exist on older web-tree-sitter versions.
299
+ parser
300
+ .setTimeoutMicros?.(10_000_000);
301
+ }
302
+ catch { /* best effort */ }
303
+ const tree = parser.parse(content);
304
+ if (!tree) {
305
+ await this.noteParseFailureMaybeReset();
306
+ return null;
307
+ }
308
+ const extractor = exports.EXTRACTORS[language];
309
+ try {
310
+ // Query-assisted candidate collection: when the extractor declares its
311
+ // candidate node types we compile a Tree-Sitter Query for the grammar,
312
+ // gather candidate node ids in one pass, and pass them to the walker so
313
+ // it can skip the per-node tryExtract* calls on the vast majority of
314
+ // structural nodes (binary_expression, parenthesized_expression, etc.).
315
+ // If query compilation or evaluation fails for any reason we fall back
316
+ // to the baseline walker, which still produces correct results.
317
+ let candidateIds = null;
318
+ if (!this._forceBaselineWalker && extractor.candidateNodeTypes && extractor.candidateNodeTypes.length > 0) {
319
+ const q = this.getOrCompileCandidateQuery(grammarName, lang, extractor.candidateNodeTypes);
320
+ if (q) {
321
+ candidateIds = this.collectCandidateNodeIds(q, tree.rootNode);
322
+ }
323
+ }
324
+ const result = candidateIds
325
+ ? (0, walker_js_1.walkTree)(tree.rootNode, extractor, candidateIds)
326
+ : (0, walker_js_1.walkTree)(tree.rootNode, extractor);
327
+ this.noteParseSuccess();
328
+ return result;
329
+ }
330
+ finally {
331
+ // CRITICAL: tree-sitter trees hold WASM-allocated memory. If we don't
332
+ // explicitly delete them, every parse leaks and the WASM heap fills up.
333
+ // At small scale this is invisible; on a 100k+ file codebase like
334
+ // Unreal it cascades into the heap aborting and poisoning all
335
+ // subsequent parses. This single line is the difference between
336
+ // "indexer works" and "indexer falls over on big codebases."
337
+ try {
338
+ tree.delete?.();
339
+ }
340
+ catch { /* */ }
341
+ }
342
+ }
343
+ catch (err) {
344
+ // After a WASM Abort the entire shared WASM module may be poisoned, not
345
+ // just our Parser instance. Reset is opportunistic — only kicks in after
346
+ // a few failures in a row, so single legit parse errors don't trigger
347
+ // an expensive reload.
348
+ await this.noteParseFailureMaybeReset();
349
+ return null;
350
+ }
351
+ }
352
+ }
353
+ exports.ParserContext = ParserContext;
354
+ //# sourceMappingURL=parserContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserContext.js","sourceRoot":"","sources":["../../src/parser/parserContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type Parser from 'web-tree-sitter';
2
+ import type { SymbolDef, FileExtraction, RouteDef, ConfigKeyRead, ServiceCallDef } from '../types.js';
3
+ export interface LanguageExtractor {
4
+ /** tree-sitter language name (used to load the WASM grammar) */
5
+ languageName: string;
6
+ extensions: string[];
7
+ /** Return a SymbolDef if this node is a top-level definition, else null */
8
+ tryExtractDefinition(node: Parser.SyntaxNode): SymbolDef | null;
9
+ /** Return the callee name if this node is a call/reference, else null */
10
+ tryExtractCallName(node: Parser.SyntaxNode): string | null;
11
+ /** Return the imported module/path if this node is an import, else null */
12
+ tryExtractImport(node: Parser.SyntaxNode): string | null;
13
+ /**
14
+ * Optional: return a name for nodes that supply naming context but are not
15
+ * themselves symbols (e.g. Rust `impl AuthService { ... }`).
16
+ */
17
+ tryExtractContextName?(node: Parser.SyntaxNode): string | null;
18
+ /**
19
+ * Optional: extract one or more HTTP routes from a node. Languages return
20
+ * different shapes (Python decorators vs JS call_expression on app), so the
21
+ * extractor owns the recognizer.
22
+ */
23
+ tryExtractRoute?(node: Parser.SyntaxNode): RouteDef[] | null;
24
+ /** Optional: extract a config/env key read from a node. */
25
+ tryExtractConfigKey?(node: Parser.SyntaxNode): ConfigKeyRead | null;
26
+ /**
27
+ * Optional: extract zero-or-more outbound service calls from a node.
28
+ * Languages return different shapes for clients (Python `requests.get('/x')`
29
+ * vs JS `fetch('/x')` vs Go `http.Get('/x')`), so the extractor owns the
30
+ * recognizer. Returns null when the node is not a service-call site.
31
+ */
32
+ tryExtractServiceCalls?(node: Parser.SyntaxNode): ServiceCallDef[] | null;
33
+ /**
34
+ * Set of tree-sitter node types that count as control-flow branches for
35
+ * cyclomatic/cognitive complexity. Optional; languages that omit this
36
+ * leave complexity at null on every symbol.
37
+ */
38
+ branchNodeTypes?: ReadonlySet<string>;
39
+ /**
40
+ * Optional set of node types that increase nesting depth for cognitive
41
+ * complexity. If omitted, defaults to `branchNodeTypes` minus the
42
+ * "non-nesting" branches (logical operators, ternaries).
43
+ */
44
+ nestingNodeTypes?: ReadonlySet<string>;
45
+ /**
46
+ * Optional: list of tree-sitter node types that may produce a
47
+ * definition / call / import / route / config-key / context name on this
48
+ * extractor. Used by the parser to compile a Tree-Sitter Query that bulk-
49
+ * collects candidate nodes in one tree pass, so the walker can skip the
50
+ * `tryExtract*` calls on the ~95% of nodes that can never match anything.
51
+ *
52
+ * This is purely a performance optimization — the extractor's `tryExtract*`
53
+ * functions still own all semantic decisions (body gates, qualified-name
54
+ * resolution, overload disambiguation, route vs prefix, etc.). The list
55
+ * must be a SUPERSET of every node type any `tryExtract*` may accept;
56
+ * missing a type means whole categories of extracted things go silently
57
+ * unindexed. The fallback walker (`walkTree` with no candidate set) stays
58
+ * available for languages that omit this list or for diagnostics.
59
+ */
60
+ candidateNodeTypes?: readonly string[];
61
+ }
62
+ /**
63
+ * Walk the tree, tracking the enclosing definition stack so that calls can
64
+ * be attributed to their containing function/method.
65
+ *
66
+ * v4 additions:
67
+ * - For function/method/constructor symbols, computes cyclomatic + cognitive
68
+ * complexity + max nesting depth + LOC by walking the def's subtree once.
69
+ * - Calls `tryExtractRoute` / `tryExtractConfigKey` per node and threads the
70
+ * results back through `FileExtraction.routes` / `.configKeys`.
71
+ *
72
+ * Optional `candidates` parameter: when provided, the walker only invokes the
73
+ * extractor's `tryExtract*` callbacks on nodes whose id is in the set. Tree
74
+ * structure is still fully traversed so the def-stack stays accurate; we just
75
+ * skip the per-node switch on non-candidates. Pass `undefined` (the default)
76
+ * to run as a full baseline walker.
77
+ */
78
+ export declare function walkTree(root: Parser.SyntaxNode, extractor: LanguageExtractor, candidates?: ReadonlySet<number>): FileExtraction;
79
+ export declare function fieldText(node: Parser.SyntaxNode, fieldName: string): string | null;
80
+ export declare function firstLine(node: Parser.SyntaxNode, maxLen?: number): string;
81
+ //# sourceMappingURL=walker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/parser/walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAa,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjH,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,yEAAyE;IACzE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3D,2EAA2E;IAC3E,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,qBAAqB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAE/D;;;;OAIG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE7D,2DAA2D;IAC3D,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IAEpE;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC;IAE1E;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,SAAS,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,cAAc,CA4IhB;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,SAAM,GAAG,MAAM,CAKvE"}