@cstart/coldstart 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +236 -0
  2. package/dist/cache/disk-cache.d.ts +14 -0
  3. package/dist/cache/disk-cache.d.ts.map +1 -0
  4. package/dist/cache/disk-cache.js +371 -0
  5. package/dist/cache/disk-cache.js.map +1 -0
  6. package/dist/cli.d.ts +18 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +206 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/constants.d.ts +8 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +111 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/daemon-lock.d.ts +63 -0
  15. package/dist/daemon-lock.d.ts.map +1 -0
  16. package/dist/daemon-lock.js +218 -0
  17. package/dist/daemon-lock.js.map +1 -0
  18. package/dist/daemon-log.d.ts +26 -0
  19. package/dist/daemon-log.d.ts.map +1 -0
  20. package/dist/daemon-log.js +110 -0
  21. package/dist/daemon-log.js.map +1 -0
  22. package/dist/index-manager.d.ts +103 -0
  23. package/dist/index-manager.d.ts.map +1 -0
  24. package/dist/index-manager.js +361 -0
  25. package/dist/index-manager.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +724 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/indexer/content-tokens.d.ts +74 -0
  31. package/dist/indexer/content-tokens.d.ts.map +1 -0
  32. package/dist/indexer/content-tokens.js +406 -0
  33. package/dist/indexer/content-tokens.js.map +1 -0
  34. package/dist/indexer/cpp-include-roots.d.ts +7 -0
  35. package/dist/indexer/cpp-include-roots.d.ts.map +1 -0
  36. package/dist/indexer/cpp-include-roots.js +166 -0
  37. package/dist/indexer/cpp-include-roots.js.map +1 -0
  38. package/dist/indexer/csharp-synthetic.d.ts +9 -0
  39. package/dist/indexer/csharp-synthetic.d.ts.map +1 -0
  40. package/dist/indexer/csharp-synthetic.js +51 -0
  41. package/dist/indexer/csharp-synthetic.js.map +1 -0
  42. package/dist/indexer/django-synthetic.d.ts +12 -0
  43. package/dist/indexer/django-synthetic.d.ts.map +1 -0
  44. package/dist/indexer/django-synthetic.js +49 -0
  45. package/dist/indexer/django-synthetic.js.map +1 -0
  46. package/dist/indexer/extractors/angularjs.d.ts +16 -0
  47. package/dist/indexer/extractors/angularjs.d.ts.map +1 -0
  48. package/dist/indexer/extractors/angularjs.js +49 -0
  49. package/dist/indexer/extractors/angularjs.js.map +1 -0
  50. package/dist/indexer/extractors/cpp.d.ts +9 -0
  51. package/dist/indexer/extractors/cpp.d.ts.map +1 -0
  52. package/dist/indexer/extractors/cpp.js +254 -0
  53. package/dist/indexer/extractors/cpp.js.map +1 -0
  54. package/dist/indexer/extractors/csharp.d.ts +19 -0
  55. package/dist/indexer/extractors/csharp.d.ts.map +1 -0
  56. package/dist/indexer/extractors/csharp.js +327 -0
  57. package/dist/indexer/extractors/csharp.js.map +1 -0
  58. package/dist/indexer/extractors/env.d.ts +9 -0
  59. package/dist/indexer/extractors/env.d.ts.map +1 -0
  60. package/dist/indexer/extractors/env.js +43 -0
  61. package/dist/indexer/extractors/env.js.map +1 -0
  62. package/dist/indexer/extractors/go.d.ts +9 -0
  63. package/dist/indexer/extractors/go.d.ts.map +1 -0
  64. package/dist/indexer/extractors/go.js +227 -0
  65. package/dist/indexer/extractors/go.js.map +1 -0
  66. package/dist/indexer/extractors/graphql.d.ts +22 -0
  67. package/dist/indexer/extractors/graphql.d.ts.map +1 -0
  68. package/dist/indexer/extractors/graphql.js +88 -0
  69. package/dist/indexer/extractors/graphql.js.map +1 -0
  70. package/dist/indexer/extractors/groovy.d.ts +9 -0
  71. package/dist/indexer/extractors/groovy.d.ts.map +1 -0
  72. package/dist/indexer/extractors/groovy.js +356 -0
  73. package/dist/indexer/extractors/groovy.js.map +1 -0
  74. package/dist/indexer/extractors/java.d.ts +10 -0
  75. package/dist/indexer/extractors/java.d.ts.map +1 -0
  76. package/dist/indexer/extractors/java.js +586 -0
  77. package/dist/indexer/extractors/java.js.map +1 -0
  78. package/dist/indexer/extractors/kotlin.d.ts +10 -0
  79. package/dist/indexer/extractors/kotlin.d.ts.map +1 -0
  80. package/dist/indexer/extractors/kotlin.js +398 -0
  81. package/dist/indexer/extractors/kotlin.js.map +1 -0
  82. package/dist/indexer/extractors/node-helpers.d.ts +13 -0
  83. package/dist/indexer/extractors/node-helpers.d.ts.map +1 -0
  84. package/dist/indexer/extractors/node-helpers.js +17 -0
  85. package/dist/indexer/extractors/node-helpers.js.map +1 -0
  86. package/dist/indexer/extractors/parser-factory.d.ts +4 -0
  87. package/dist/indexer/extractors/parser-factory.d.ts.map +1 -0
  88. package/dist/indexer/extractors/parser-factory.js +28 -0
  89. package/dist/indexer/extractors/parser-factory.js.map +1 -0
  90. package/dist/indexer/extractors/php.d.ts +17 -0
  91. package/dist/indexer/extractors/php.d.ts.map +1 -0
  92. package/dist/indexer/extractors/php.js +363 -0
  93. package/dist/indexer/extractors/php.js.map +1 -0
  94. package/dist/indexer/extractors/python.d.ts +14 -0
  95. package/dist/indexer/extractors/python.d.ts.map +1 -0
  96. package/dist/indexer/extractors/python.js +449 -0
  97. package/dist/indexer/extractors/python.js.map +1 -0
  98. package/dist/indexer/extractors/ruby.d.ts +10 -0
  99. package/dist/indexer/extractors/ruby.d.ts.map +1 -0
  100. package/dist/indexer/extractors/ruby.js +996 -0
  101. package/dist/indexer/extractors/ruby.js.map +1 -0
  102. package/dist/indexer/extractors/rust.d.ts +9 -0
  103. package/dist/indexer/extractors/rust.d.ts.map +1 -0
  104. package/dist/indexer/extractors/rust.js +322 -0
  105. package/dist/indexer/extractors/rust.js.map +1 -0
  106. package/dist/indexer/extractors/toml.d.ts +9 -0
  107. package/dist/indexer/extractors/toml.d.ts.map +1 -0
  108. package/dist/indexer/extractors/toml.js +84 -0
  109. package/dist/indexer/extractors/toml.js.map +1 -0
  110. package/dist/indexer/extractors/xml.d.ts +9 -0
  111. package/dist/indexer/extractors/xml.d.ts.map +1 -0
  112. package/dist/indexer/extractors/xml.js +163 -0
  113. package/dist/indexer/extractors/xml.js.map +1 -0
  114. package/dist/indexer/extractors/yaml.d.ts +9 -0
  115. package/dist/indexer/extractors/yaml.d.ts.map +1 -0
  116. package/dist/indexer/extractors/yaml.js +117 -0
  117. package/dist/indexer/extractors/yaml.js.map +1 -0
  118. package/dist/indexer/git.d.ts +19 -0
  119. package/dist/indexer/git.d.ts.map +1 -0
  120. package/dist/indexer/git.js +55 -0
  121. package/dist/indexer/git.js.map +1 -0
  122. package/dist/indexer/graph.d.ts +7 -0
  123. package/dist/indexer/graph.d.ts.map +1 -0
  124. package/dist/indexer/graph.js +20 -0
  125. package/dist/indexer/graph.js.map +1 -0
  126. package/dist/indexer/indexed-file.d.ts +15 -0
  127. package/dist/indexer/indexed-file.d.ts.map +1 -0
  128. package/dist/indexer/indexed-file.js +50 -0
  129. package/dist/indexer/indexed-file.js.map +1 -0
  130. package/dist/indexer/invariants.d.ts +15 -0
  131. package/dist/indexer/invariants.d.ts.map +1 -0
  132. package/dist/indexer/invariants.js +96 -0
  133. package/dist/indexer/invariants.js.map +1 -0
  134. package/dist/indexer/laravel-synthetic.d.ts +10 -0
  135. package/dist/indexer/laravel-synthetic.d.ts.map +1 -0
  136. package/dist/indexer/laravel-synthetic.js +78 -0
  137. package/dist/indexer/laravel-synthetic.js.map +1 -0
  138. package/dist/indexer/parser.d.ts +4 -0
  139. package/dist/indexer/parser.d.ts.map +1 -0
  140. package/dist/indexer/parser.js +499 -0
  141. package/dist/indexer/parser.js.map +1 -0
  142. package/dist/indexer/patch.d.ts +3 -0
  143. package/dist/indexer/patch.d.ts.map +1 -0
  144. package/dist/indexer/patch.js +291 -0
  145. package/dist/indexer/patch.js.map +1 -0
  146. package/dist/indexer/rails-synthetic.d.ts +11 -0
  147. package/dist/indexer/rails-synthetic.d.ts.map +1 -0
  148. package/dist/indexer/rails-synthetic.js +80 -0
  149. package/dist/indexer/rails-synthetic.js.map +1 -0
  150. package/dist/indexer/reconcile.d.ts +9 -0
  151. package/dist/indexer/reconcile.d.ts.map +1 -0
  152. package/dist/indexer/reconcile.js +96 -0
  153. package/dist/indexer/reconcile.js.map +1 -0
  154. package/dist/indexer/resolvers/cpp.d.ts +15 -0
  155. package/dist/indexer/resolvers/cpp.d.ts.map +1 -0
  156. package/dist/indexer/resolvers/cpp.js +35 -0
  157. package/dist/indexer/resolvers/cpp.js.map +1 -0
  158. package/dist/indexer/resolvers/csharp.d.ts +2 -0
  159. package/dist/indexer/resolvers/csharp.d.ts.map +1 -0
  160. package/dist/indexer/resolvers/csharp.js +89 -0
  161. package/dist/indexer/resolvers/csharp.js.map +1 -0
  162. package/dist/indexer/resolvers/generic.d.ts +10 -0
  163. package/dist/indexer/resolvers/generic.d.ts.map +1 -0
  164. package/dist/indexer/resolvers/generic.js +35 -0
  165. package/dist/indexer/resolvers/generic.js.map +1 -0
  166. package/dist/indexer/resolvers/go.d.ts +2 -0
  167. package/dist/indexer/resolvers/go.d.ts.map +1 -0
  168. package/dist/indexer/resolvers/go.js +171 -0
  169. package/dist/indexer/resolvers/go.js.map +1 -0
  170. package/dist/indexer/resolvers/index.d.ts +26 -0
  171. package/dist/indexer/resolvers/index.d.ts.map +1 -0
  172. package/dist/indexer/resolvers/index.js +301 -0
  173. package/dist/indexer/resolvers/index.js.map +1 -0
  174. package/dist/indexer/resolvers/java.d.ts +17 -0
  175. package/dist/indexer/resolvers/java.d.ts.map +1 -0
  176. package/dist/indexer/resolvers/java.js +104 -0
  177. package/dist/indexer/resolvers/java.js.map +1 -0
  178. package/dist/indexer/resolvers/php.d.ts +2 -0
  179. package/dist/indexer/resolvers/php.d.ts.map +1 -0
  180. package/dist/indexer/resolvers/php.js +108 -0
  181. package/dist/indexer/resolvers/php.js.map +1 -0
  182. package/dist/indexer/resolvers/python.d.ts +17 -0
  183. package/dist/indexer/resolvers/python.d.ts.map +1 -0
  184. package/dist/indexer/resolvers/python.js +63 -0
  185. package/dist/indexer/resolvers/python.js.map +1 -0
  186. package/dist/indexer/resolvers/ruby.d.ts +13 -0
  187. package/dist/indexer/resolvers/ruby.d.ts.map +1 -0
  188. package/dist/indexer/resolvers/ruby.js +199 -0
  189. package/dist/indexer/resolvers/ruby.js.map +1 -0
  190. package/dist/indexer/resolvers/rust.d.ts +12 -0
  191. package/dist/indexer/resolvers/rust.d.ts.map +1 -0
  192. package/dist/indexer/resolvers/rust.js +61 -0
  193. package/dist/indexer/resolvers/rust.js.map +1 -0
  194. package/dist/indexer/resolvers/shared.d.ts +18 -0
  195. package/dist/indexer/resolvers/shared.d.ts.map +1 -0
  196. package/dist/indexer/resolvers/shared.js +71 -0
  197. package/dist/indexer/resolvers/shared.js.map +1 -0
  198. package/dist/indexer/rust-workspace.d.ts +25 -0
  199. package/dist/indexer/rust-workspace.d.ts.map +1 -0
  200. package/dist/indexer/rust-workspace.js +155 -0
  201. package/dist/indexer/rust-workspace.js.map +1 -0
  202. package/dist/indexer/symbol-edges.d.ts +19 -0
  203. package/dist/indexer/symbol-edges.d.ts.map +1 -0
  204. package/dist/indexer/symbol-edges.js +117 -0
  205. package/dist/indexer/symbol-edges.js.map +1 -0
  206. package/dist/indexer/tokenize.d.ts +26 -0
  207. package/dist/indexer/tokenize.d.ts.map +1 -0
  208. package/dist/indexer/tokenize.js +200 -0
  209. package/dist/indexer/tokenize.js.map +1 -0
  210. package/dist/indexer/ts-parser.d.ts +10 -0
  211. package/dist/indexer/ts-parser.d.ts.map +1 -0
  212. package/dist/indexer/ts-parser.js +605 -0
  213. package/dist/indexer/ts-parser.js.map +1 -0
  214. package/dist/indexer/walker.d.ts +9 -0
  215. package/dist/indexer/walker.d.ts.map +1 -0
  216. package/dist/indexer/walker.js +91 -0
  217. package/dist/indexer/walker.js.map +1 -0
  218. package/dist/init.d.ts +111 -0
  219. package/dist/init.d.ts.map +1 -0
  220. package/dist/init.js +787 -0
  221. package/dist/init.js.map +1 -0
  222. package/dist/kb/cli.d.ts +2 -0
  223. package/dist/kb/cli.d.ts.map +1 -0
  224. package/dist/kb/cli.js +377 -0
  225. package/dist/kb/cli.js.map +1 -0
  226. package/dist/kb/commit.d.ts +6 -0
  227. package/dist/kb/commit.d.ts.map +1 -0
  228. package/dist/kb/commit.js +84 -0
  229. package/dist/kb/commit.js.map +1 -0
  230. package/dist/kb/fold.d.ts +42 -0
  231. package/dist/kb/fold.d.ts.map +1 -0
  232. package/dist/kb/fold.js +285 -0
  233. package/dist/kb/fold.js.map +1 -0
  234. package/dist/kb/freshness.d.ts +9 -0
  235. package/dist/kb/freshness.d.ts.map +1 -0
  236. package/dist/kb/freshness.js +52 -0
  237. package/dist/kb/freshness.js.map +1 -0
  238. package/dist/kb/git.d.ts +4 -0
  239. package/dist/kb/git.d.ts.map +1 -0
  240. package/dist/kb/git.js +28 -0
  241. package/dist/kb/git.js.map +1 -0
  242. package/dist/kb/ids.d.ts +8 -0
  243. package/dist/kb/ids.d.ts.map +1 -0
  244. package/dist/kb/ids.js +42 -0
  245. package/dist/kb/ids.js.map +1 -0
  246. package/dist/kb/lint.d.ts +23 -0
  247. package/dist/kb/lint.d.ts.map +1 -0
  248. package/dist/kb/lint.js +102 -0
  249. package/dist/kb/lint.js.map +1 -0
  250. package/dist/kb/lookup.d.ts +55 -0
  251. package/dist/kb/lookup.d.ts.map +1 -0
  252. package/dist/kb/lookup.js +92 -0
  253. package/dist/kb/lookup.js.map +1 -0
  254. package/dist/kb/notes-index.d.ts +31 -0
  255. package/dist/kb/notes-index.d.ts.map +1 -0
  256. package/dist/kb/notes-index.js +0 -0
  257. package/dist/kb/notes-index.js.map +1 -0
  258. package/dist/kb/raw-log.d.ts +34 -0
  259. package/dist/kb/raw-log.d.ts.map +1 -0
  260. package/dist/kb/raw-log.js +106 -0
  261. package/dist/kb/raw-log.js.map +1 -0
  262. package/dist/kb/render.d.ts +17 -0
  263. package/dist/kb/render.d.ts.map +1 -0
  264. package/dist/kb/render.js +101 -0
  265. package/dist/kb/render.js.map +1 -0
  266. package/dist/kb/search.d.ts +110 -0
  267. package/dist/kb/search.d.ts.map +1 -0
  268. package/dist/kb/search.js +453 -0
  269. package/dist/kb/search.js.map +1 -0
  270. package/dist/kb/store.d.ts +35 -0
  271. package/dist/kb/store.d.ts.map +1 -0
  272. package/dist/kb/store.js +160 -0
  273. package/dist/kb/store.js.map +1 -0
  274. package/dist/kb/types.d.ts +142 -0
  275. package/dist/kb/types.d.ts.map +1 -0
  276. package/dist/kb/types.js +13 -0
  277. package/dist/kb/types.js.map +1 -0
  278. package/dist/kb/view-template.d.ts +8 -0
  279. package/dist/kb/view-template.d.ts.map +1 -0
  280. package/dist/kb/view-template.js +8 -0
  281. package/dist/kb/view-template.js.map +1 -0
  282. package/dist/kb/view.d.ts +42 -0
  283. package/dist/kb/view.d.ts.map +1 -0
  284. package/dist/kb/view.js +118 -0
  285. package/dist/kb/view.js.map +1 -0
  286. package/dist/kb/write.d.ts +72 -0
  287. package/dist/kb/write.d.ts.map +1 -0
  288. package/dist/kb/write.js +345 -0
  289. package/dist/kb/write.js.map +1 -0
  290. package/dist/keeper-state.d.ts +29 -0
  291. package/dist/keeper-state.d.ts.map +1 -0
  292. package/dist/keeper-state.js +89 -0
  293. package/dist/keeper-state.js.map +1 -0
  294. package/dist/keeper.d.ts +23 -0
  295. package/dist/keeper.d.ts.map +1 -0
  296. package/dist/keeper.js +105 -0
  297. package/dist/keeper.js.map +1 -0
  298. package/dist/migrate.d.ts +9 -0
  299. package/dist/migrate.d.ts.map +1 -0
  300. package/dist/migrate.js +102 -0
  301. package/dist/migrate.js.map +1 -0
  302. package/dist/restart.d.ts +15 -0
  303. package/dist/restart.d.ts.map +1 -0
  304. package/dist/restart.js +48 -0
  305. package/dist/restart.js.map +1 -0
  306. package/dist/server/find.d.ts +39 -0
  307. package/dist/server/find.d.ts.map +1 -0
  308. package/dist/server/find.js +979 -0
  309. package/dist/server/find.js.map +1 -0
  310. package/dist/server/mcp.d.ts +117 -0
  311. package/dist/server/mcp.d.ts.map +1 -0
  312. package/dist/server/mcp.js +301 -0
  313. package/dist/server/mcp.js.map +1 -0
  314. package/dist/server/searcher.d.ts +14 -0
  315. package/dist/server/searcher.d.ts.map +1 -0
  316. package/dist/server/searcher.js +146 -0
  317. package/dist/server/searcher.js.map +1 -0
  318. package/dist/server/tools.d.ts +17 -0
  319. package/dist/server/tools.d.ts.map +1 -0
  320. package/dist/server/tools.js +875 -0
  321. package/dist/server/tools.js.map +1 -0
  322. package/dist/status.d.ts +12 -0
  323. package/dist/status.d.ts.map +1 -0
  324. package/dist/status.js +157 -0
  325. package/dist/status.js.map +1 -0
  326. package/dist/types.d.ts +138 -0
  327. package/dist/types.d.ts.map +1 -0
  328. package/dist/types.js +3 -0
  329. package/dist/types.js.map +1 -0
  330. package/dist/watcher.d.ts +11 -0
  331. package/dist/watcher.d.ts.map +1 -0
  332. package/dist/watcher.js +67 -0
  333. package/dist/watcher.js.map +1 -0
  334. package/hooks/canonical-find-key.mjs +68 -0
  335. package/hooks/codex-find-nudge.mjs +15 -0
  336. package/hooks/codex-find-preguard.mjs +14 -0
  337. package/hooks/codex-kb-elicit.mjs +329 -0
  338. package/hooks/codex-kb-recall.mjs +151 -0
  339. package/hooks/codex-nudge-handler.mjs +370 -0
  340. package/hooks/codex-preguard-handler.mjs +75 -0
  341. package/hooks/codex-run-hook.mjs +132 -0
  342. package/hooks/coldstart-call.mjs +58 -0
  343. package/hooks/cursor-find-nudge.mjs +15 -0
  344. package/hooks/cursor-find-preguard.mjs +14 -0
  345. package/hooks/cursor-input.mjs +72 -0
  346. package/hooks/cursor-kb-elicit.mjs +335 -0
  347. package/hooks/cursor-kb-recall.mjs +138 -0
  348. package/hooks/cursor-nudge-handler.mjs +33 -0
  349. package/hooks/cursor-preguard-handler.mjs +39 -0
  350. package/hooks/cursor-run-hook.mjs +129 -0
  351. package/hooks/find-nudge.mjs +15 -0
  352. package/hooks/find-preguard.mjs +14 -0
  353. package/hooks/kb-elicit.mjs +334 -0
  354. package/hooks/kb-recall.mjs +151 -0
  355. package/hooks/nudge-handler.mjs +370 -0
  356. package/hooks/preguard-handler.mjs +75 -0
  357. package/hooks/run-hook.mjs +132 -0
  358. package/package.json +69 -0
  359. package/templates/coldstart.cli.md +60 -0
  360. package/templates/coldstart.mcp.md +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laravel-synthetic.d.ts","sourceRoot":"","sources":["../../src/indexer/laravel-synthetic.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,WAAW,EAAE,EAC3B,KAAK,EAAE,IAAI,EAAE,EACb,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -0,0 +1,78 @@
1
+ import { resolvePHP } from './resolvers/php.js';
2
+ /**
3
+ * Laravel synthetic edges:
4
+ * - Eloquent relationships (hasMany, belongsTo, etc) gated to app/Models/:
5
+ * Parse class string references in relationship method arguments and emit edges.
6
+ * - Container resolutions (app(), resolve(), bind(), singleton()):
7
+ * Parse class string references in any PHP file and emit edges to DI container registrations.
8
+ */
9
+ export async function addLaravelSyntheticEdges(indexedFiles, edges, fullFileIdSet, rootDir) {
10
+ const phpFiles = indexedFiles.filter(f => f.language === 'php');
11
+ if (phpFiles.length === 0)
12
+ return;
13
+ // Find Laravel app root by looking for an app/ directory in walked files
14
+ let appRoot = null;
15
+ for (const f of phpFiles) {
16
+ const idx = f.path.lastIndexOf('/app/');
17
+ if (idx >= 0) {
18
+ appRoot = f.path.substring(0, idx);
19
+ break;
20
+ }
21
+ }
22
+ if (!appRoot)
23
+ return;
24
+ const seen = new Set();
25
+ for (const e of edges)
26
+ seen.add(`${e.from}|${e.to}`);
27
+ // Helper: load PSR-4 mapping to resolve class names to file IDs
28
+ async function resolveClassToFileId(fqcn, fromFile) {
29
+ // Remove leading backslash if present
30
+ const normalized = fqcn.replace(/^\\/, '');
31
+ // Use the existing PHP resolver — returns file ID (relative path)
32
+ return resolvePHP(normalized, fromFile, fullFileIdSet, rootDir, new Map());
33
+ }
34
+ // A. Eloquent relationships — gated to app/Models/
35
+ for (const f of phpFiles) {
36
+ // Only process files under app/Models/
37
+ if (!f.relativePath.includes('app/Models/'))
38
+ continue;
39
+ if (!f.eloquentRelations?.length)
40
+ continue;
41
+ for (const rel of f.eloquentRelations) {
42
+ const targetId = await resolveClassToFileId(rel.targetClass, f.path);
43
+ if (!targetId || targetId === f.id)
44
+ continue;
45
+ const key = `${f.id}|${targetId}`;
46
+ if (seen.has(key) || !fullFileIdSet.has(targetId))
47
+ continue;
48
+ seen.add(key);
49
+ edges.push({
50
+ from: f.id,
51
+ to: targetId,
52
+ type: 'import',
53
+ specifier: `convention:eloquent`,
54
+ });
55
+ }
56
+ }
57
+ // B. Container resolutions — anywhere in the codebase
58
+ for (const f of phpFiles) {
59
+ if (!f.containerResolutions?.length)
60
+ continue;
61
+ for (const res of f.containerResolutions) {
62
+ const targetId = await resolveClassToFileId(res.targetClass, f.path);
63
+ if (!targetId || targetId === f.id)
64
+ continue;
65
+ const key = `${f.id}|${targetId}`;
66
+ if (seen.has(key) || !fullFileIdSet.has(targetId))
67
+ continue;
68
+ seen.add(key);
69
+ edges.push({
70
+ from: f.id,
71
+ to: targetId,
72
+ type: 'import',
73
+ specifier: `convention:container`,
74
+ });
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=laravel-synthetic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laravel-synthetic.js","sourceRoot":"","sources":["../../src/indexer/laravel-synthetic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Language, ParsedFile } from '../types.js';
2
+ export declare function parseFile(filePath: string, language: Language, fileId?: string): Promise<ParsedFile | null>;
3
+ export declare function buildFileId(relativePath: string): string;
4
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/indexer/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkDxD,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,SAAK,GACV,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB5B;AAqcD,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGxD"}
@@ -0,0 +1,499 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { createHash } from 'node:crypto';
4
+ import { parseTsContent } from './ts-parser.js';
5
+ import { parseJavaContent } from './extractors/java.js';
6
+ import { parseRubyContent } from './extractors/ruby.js';
7
+ import { parsePythonContent } from './extractors/python.js';
8
+ import { parseGoContent } from './extractors/go.js';
9
+ import { parseRustContent } from './extractors/rust.js';
10
+ import { findRustWorkspace } from './rust-workspace.js';
11
+ import { parseCSharpContent } from './extractors/csharp.js';
12
+ import { parsePhpContent } from './extractors/php.js';
13
+ import { parseKotlinContent } from './extractors/kotlin.js';
14
+ import { parseCppContent } from './extractors/cpp.js';
15
+ import { extractAngularJsSymbols } from './extractors/angularjs.js';
16
+ import { parseGraphQLContent } from './extractors/graphql.js';
17
+ import { parseYamlContent } from './extractors/yaml.js';
18
+ import { parseTomlContent } from './extractors/toml.js';
19
+ import { parseEnvContent } from './extractors/env.js';
20
+ import { parseXmlContent } from './extractors/xml.js';
21
+ import { parseGroovyContent } from './extractors/groovy.js';
22
+ import { extractContentTokens } from './content-tokens.js';
23
+ const MAX_FILE_SIZE = 1_000_000; // 1 MB
24
+ /**
25
+ * Extract all <script> block bodies from a Vue or Svelte SFC and return them
26
+ * concatenated. Handles both <script> and <script setup>, with any lang attr.
27
+ * Returns null if no script block is found.
28
+ */
29
+ function extractSfcScripts(content) {
30
+ const blocks = [];
31
+ const re = /<script(?:\s[^>]*)?>[\s\S]*?<\/script>/gi;
32
+ let m;
33
+ while ((m = re.exec(content)) !== null) {
34
+ const inner = m[0]
35
+ .replace(/<script(?:\s[^>]*)?>/i, '')
36
+ .replace(/<\/script>/i, '');
37
+ blocks.push(inner);
38
+ }
39
+ return blocks.length > 0 ? blocks.join('\n') : null;
40
+ }
41
+ /**
42
+ * Extract TypeScript frontmatter from an Astro file (content between --- fences).
43
+ * Returns null if no frontmatter is present.
44
+ */
45
+ function extractAstroFrontmatter(content) {
46
+ const m = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
47
+ return m ? m[1] : null;
48
+ }
49
+ export async function parseFile(filePath, language, fileId = '') {
50
+ let content;
51
+ try {
52
+ const buf = await readFile(filePath);
53
+ if (buf.length > MAX_FILE_SIZE)
54
+ return null;
55
+ content = buf.toString('utf-8');
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ const parsed = await parseByLanguage(filePath, language, fileId, content);
61
+ if (!parsed)
62
+ return null;
63
+ // Content-token channel is language-agnostic: shaped full-body identifiers
64
+ // with provenance bits, extracted once here for every indexed language.
65
+ parsed.contentTokens = extractContentTokens(content, fileId || filePath);
66
+ return parsed;
67
+ }
68
+ async function parseByLanguage(filePath, language, fileId, content) {
69
+ const hash = createHash('md5').update(content).digest('hex');
70
+ const lineCount = content.split('\n').length;
71
+ const tokenEstimate = Math.ceil(content.length / 4);
72
+ // -------------------------------------------------------------------------
73
+ // TS/JS: use Tree-sitter for symbol-level extraction
74
+ // -------------------------------------------------------------------------
75
+ if (language === 'typescript' || language === 'javascript') {
76
+ const isTsx = filePath.endsWith('.tsx');
77
+ let tsResult;
78
+ try {
79
+ tsResult = parseTsContent(content, fileId || filePath, isTsx);
80
+ }
81
+ catch (err) {
82
+ // Tree-sitter parse error — skip symbol extraction but continue with imports/exports
83
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
84
+ tsResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [], reexportRatio: 0 };
85
+ }
86
+ // AngularJS 1.x: merge registered names + this./\$scope. methods as pseudo-exports
87
+ if (language === 'javascript') {
88
+ const ngSymbols = extractAngularJsSymbols(content);
89
+ if (ngSymbols.length > 0) {
90
+ tsResult = { ...tsResult, exports: [...tsResult.exports, ...ngSymbols] };
91
+ }
92
+ }
93
+ return {
94
+ imports: tsResult.imports,
95
+ exports: tsResult.exports,
96
+ hasDefaultExport: tsResult.hasDefaultExport,
97
+ hash,
98
+ lineCount,
99
+ tokenEstimate,
100
+ symbols: tsResult.symbols,
101
+ reexportRatio: tsResult.reexportRatio,
102
+ };
103
+ }
104
+ // -------------------------------------------------------------------------
105
+ // Java: use Tree-sitter for symbol-level extraction
106
+ // -------------------------------------------------------------------------
107
+ if (language === 'java') {
108
+ let javaResult;
109
+ try {
110
+ javaResult = parseJavaContent(content, fileId || filePath);
111
+ }
112
+ catch (err) {
113
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
114
+ javaResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [], packageName: '' };
115
+ }
116
+ return {
117
+ imports: javaResult.imports,
118
+ exports: javaResult.exports,
119
+ hasDefaultExport: false,
120
+ hash,
121
+ lineCount,
122
+ tokenEstimate,
123
+ symbols: javaResult.symbols,
124
+ packageName: javaResult.packageName,
125
+ };
126
+ }
127
+ // -------------------------------------------------------------------------
128
+ // Ruby: use Tree-sitter for symbol-level extraction
129
+ // -------------------------------------------------------------------------
130
+ if (language === 'ruby') {
131
+ let rubyResult;
132
+ try {
133
+ rubyResult = parseRubyContent(content, fileId || filePath);
134
+ }
135
+ catch (err) {
136
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
137
+ rubyResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
138
+ }
139
+ return {
140
+ imports: rubyResult.imports,
141
+ exports: rubyResult.exports,
142
+ hasDefaultExport: false,
143
+ hash,
144
+ lineCount,
145
+ tokenEstimate,
146
+ symbols: rubyResult.symbols,
147
+ constantReferences: rubyResult.constantReferences,
148
+ };
149
+ }
150
+ // -------------------------------------------------------------------------
151
+ // Python: use Tree-sitter for symbol-level extraction
152
+ // -------------------------------------------------------------------------
153
+ if (language === 'python') {
154
+ let pythonResult;
155
+ try {
156
+ pythonResult = parsePythonContent(content, fileId || filePath);
157
+ }
158
+ catch (err) {
159
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
160
+ pythonResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
161
+ }
162
+ return {
163
+ imports: pythonResult.imports,
164
+ exports: pythonResult.exports,
165
+ hasDefaultExport: false,
166
+ hash,
167
+ lineCount,
168
+ tokenEstimate,
169
+ symbols: pythonResult.symbols,
170
+ djangoConventionRefs: pythonResult.djangoConventionRefs,
171
+ submoduleImportCandidates: pythonResult.submoduleImportCandidates,
172
+ };
173
+ }
174
+ // -------------------------------------------------------------------------
175
+ // Go: use Tree-sitter for symbol-level extraction
176
+ // -------------------------------------------------------------------------
177
+ if (language === 'go') {
178
+ let goResult;
179
+ try {
180
+ goResult = parseGoContent(content, fileId || filePath);
181
+ }
182
+ catch (err) {
183
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
184
+ goResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
185
+ }
186
+ return {
187
+ imports: goResult.imports,
188
+ exports: goResult.exports,
189
+ hasDefaultExport: false,
190
+ hash,
191
+ lineCount,
192
+ tokenEstimate,
193
+ symbols: goResult.symbols,
194
+ };
195
+ }
196
+ // -------------------------------------------------------------------------
197
+ // Rust: use Tree-sitter for symbol-level extraction
198
+ // -------------------------------------------------------------------------
199
+ if (language === 'rust') {
200
+ let rustResult;
201
+ try {
202
+ rustResult = parseRustContent(content, fileId || filePath);
203
+ }
204
+ catch (err) {
205
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
206
+ rustResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
207
+ }
208
+ // Filter `use crate_name::…` specifiers to only those whose leading
209
+ // segment matches a workspace member crate. External crates (third-party
210
+ // deps like `bytes`, `criterion`) are out of scope — including them in
211
+ // imports[] would just inflate unresolved counts without yielding edges.
212
+ const ws = await findRustWorkspace(dirname(filePath));
213
+ const workspaceCrates = ws?.crates;
214
+ const filteredImports = workspaceCrates
215
+ ? rustResult.imports.filter(spec => {
216
+ if (!spec.includes('::'))
217
+ return true; // mod / extern crate / bare use
218
+ return workspaceCrates.has(spec.split('::')[0]);
219
+ })
220
+ : rustResult.imports.filter(spec => !spec.includes('::'));
221
+ return {
222
+ imports: filteredImports,
223
+ exports: rustResult.exports,
224
+ hasDefaultExport: false,
225
+ hash,
226
+ lineCount,
227
+ tokenEstimate,
228
+ symbols: rustResult.symbols,
229
+ };
230
+ }
231
+ // -------------------------------------------------------------------------
232
+ // C#: use Tree-sitter for symbol-level extraction
233
+ // -------------------------------------------------------------------------
234
+ if (language === 'csharp') {
235
+ let csharpResult;
236
+ try {
237
+ csharpResult = parseCSharpContent(content, fileId || filePath);
238
+ }
239
+ catch (err) {
240
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
241
+ csharpResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
242
+ }
243
+ return {
244
+ imports: csharpResult.imports,
245
+ exports: csharpResult.exports,
246
+ hasDefaultExport: false,
247
+ hash,
248
+ lineCount,
249
+ tokenEstimate,
250
+ symbols: csharpResult.symbols,
251
+ partialDeclarations: csharpResult.partialDeclarations,
252
+ packageName: csharpResult.packageName,
253
+ };
254
+ }
255
+ // -------------------------------------------------------------------------
256
+ // PHP: use Tree-sitter for symbol-level extraction
257
+ // -------------------------------------------------------------------------
258
+ if (language === 'php') {
259
+ let phpResult;
260
+ try {
261
+ phpResult = parsePhpContent(content, fileId || filePath);
262
+ }
263
+ catch (err) {
264
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
265
+ phpResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
266
+ }
267
+ return {
268
+ imports: phpResult.imports,
269
+ exports: phpResult.exports,
270
+ hasDefaultExport: false,
271
+ hash,
272
+ lineCount,
273
+ tokenEstimate,
274
+ symbols: phpResult.symbols,
275
+ eloquentRelations: phpResult.eloquentRelations,
276
+ containerResolutions: phpResult.containerResolutions,
277
+ };
278
+ }
279
+ // -------------------------------------------------------------------------
280
+ // Kotlin: use Tree-sitter for symbol-level extraction
281
+ // -------------------------------------------------------------------------
282
+ if (language === 'kotlin') {
283
+ let kotlinResult;
284
+ try {
285
+ kotlinResult = parseKotlinContent(content, fileId || filePath);
286
+ }
287
+ catch (err) {
288
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
289
+ kotlinResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [], packageName: '' };
290
+ }
291
+ return {
292
+ imports: kotlinResult.imports,
293
+ exports: kotlinResult.exports,
294
+ hasDefaultExport: false,
295
+ hash,
296
+ lineCount,
297
+ tokenEstimate,
298
+ symbols: kotlinResult.symbols,
299
+ packageName: kotlinResult.packageName,
300
+ };
301
+ }
302
+ // -------------------------------------------------------------------------
303
+ // C++: use Tree-sitter for symbol-level extraction
304
+ // -------------------------------------------------------------------------
305
+ if (language === 'cpp') {
306
+ let cppResult;
307
+ try {
308
+ cppResult = parseCppContent(content, fileId || filePath);
309
+ }
310
+ catch (err) {
311
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
312
+ cppResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
313
+ }
314
+ return {
315
+ imports: cppResult.imports,
316
+ exports: cppResult.exports,
317
+ hasDefaultExport: false,
318
+ hash,
319
+ lineCount,
320
+ tokenEstimate,
321
+ symbols: cppResult.symbols,
322
+ };
323
+ }
324
+ // -------------------------------------------------------------------------
325
+ // Vue / Svelte: extract <script> blocks and parse as TS/JS
326
+ // -------------------------------------------------------------------------
327
+ if (language === 'vue' || language === 'svelte') {
328
+ const scriptContent = extractSfcScripts(content);
329
+ if (!scriptContent) {
330
+ return { imports: [], exports: [], hasDefaultExport: false, hash, lineCount, tokenEstimate, symbols: [] };
331
+ }
332
+ let tsResult;
333
+ try {
334
+ tsResult = parseTsContent(scriptContent, fileId || filePath, false);
335
+ }
336
+ catch (err) {
337
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
338
+ tsResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [], reexportRatio: 0 };
339
+ }
340
+ return {
341
+ imports: tsResult.imports,
342
+ exports: tsResult.exports,
343
+ hasDefaultExport: tsResult.hasDefaultExport,
344
+ hash,
345
+ lineCount,
346
+ tokenEstimate,
347
+ symbols: tsResult.symbols,
348
+ reexportRatio: tsResult.reexportRatio,
349
+ };
350
+ }
351
+ // -------------------------------------------------------------------------
352
+ // Astro: extract frontmatter (--- fences) and parse as TS
353
+ // -------------------------------------------------------------------------
354
+ if (language === 'astro') {
355
+ const frontmatter = extractAstroFrontmatter(content);
356
+ if (!frontmatter) {
357
+ return { imports: [], exports: [], hasDefaultExport: false, hash, lineCount, tokenEstimate, symbols: [] };
358
+ }
359
+ let tsResult;
360
+ try {
361
+ tsResult = parseTsContent(frontmatter, fileId || filePath, false);
362
+ }
363
+ catch (err) {
364
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
365
+ tsResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [], reexportRatio: 0 };
366
+ }
367
+ return {
368
+ imports: tsResult.imports,
369
+ exports: tsResult.exports,
370
+ hasDefaultExport: tsResult.hasDefaultExport,
371
+ hash,
372
+ lineCount,
373
+ tokenEstimate,
374
+ symbols: tsResult.symbols,
375
+ reexportRatio: tsResult.reexportRatio,
376
+ };
377
+ }
378
+ // -------------------------------------------------------------------------
379
+ // GraphQL: regex-based extractor (operations, fragments, type-system defs)
380
+ // -------------------------------------------------------------------------
381
+ if (language === 'graphql') {
382
+ const gqlResult = parseGraphQLContent(content, fileId || filePath);
383
+ return {
384
+ imports: gqlResult.imports,
385
+ exports: gqlResult.exports,
386
+ hasDefaultExport: false,
387
+ hash,
388
+ lineCount,
389
+ tokenEstimate,
390
+ symbols: gqlResult.symbols,
391
+ };
392
+ }
393
+ // -------------------------------------------------------------------------
394
+ // YAML: tree-sitter extractor (top-level and one-level-nested keys)
395
+ // -------------------------------------------------------------------------
396
+ if (language === 'yaml') {
397
+ const yamlResult = parseYamlContent(content, fileId || filePath);
398
+ return {
399
+ imports: yamlResult.imports,
400
+ exports: yamlResult.exports,
401
+ hasDefaultExport: false,
402
+ hash,
403
+ lineCount,
404
+ tokenEstimate,
405
+ symbols: yamlResult.symbols,
406
+ };
407
+ }
408
+ // -------------------------------------------------------------------------
409
+ // TOML: tree-sitter extractor (sections, keys, array-of-tables)
410
+ // -------------------------------------------------------------------------
411
+ if (language === 'toml') {
412
+ const tomlResult = parseTomlContent(content, fileId || filePath);
413
+ return {
414
+ imports: tomlResult.imports,
415
+ exports: tomlResult.exports,
416
+ hasDefaultExport: false,
417
+ hash,
418
+ lineCount,
419
+ tokenEstimate,
420
+ symbols: tomlResult.symbols,
421
+ };
422
+ }
423
+ // -------------------------------------------------------------------------
424
+ // .env: regex-based extractor (variable names)
425
+ // -------------------------------------------------------------------------
426
+ if (language === 'env') {
427
+ const envResult = parseEnvContent(content, fileId || filePath);
428
+ return {
429
+ imports: envResult.imports,
430
+ exports: envResult.exports,
431
+ hasDefaultExport: false,
432
+ hash,
433
+ lineCount,
434
+ tokenEstimate,
435
+ symbols: envResult.symbols,
436
+ };
437
+ }
438
+ // -------------------------------------------------------------------------
439
+ // XML: tree-sitter-based extractor (attributes, element text)
440
+ // -------------------------------------------------------------------------
441
+ if (language === 'xml') {
442
+ let xmlResult;
443
+ try {
444
+ xmlResult = parseXmlContent(content, fileId || filePath);
445
+ }
446
+ catch (err) {
447
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
448
+ xmlResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
449
+ }
450
+ return {
451
+ imports: xmlResult.imports,
452
+ exports: xmlResult.exports,
453
+ hasDefaultExport: false,
454
+ hash,
455
+ lineCount,
456
+ tokenEstimate,
457
+ symbols: xmlResult.symbols,
458
+ };
459
+ }
460
+ // -------------------------------------------------------------------------
461
+ // Groovy: tree-sitter-based extractor (Gradle DSL, Jenkinsfile DSL)
462
+ // -------------------------------------------------------------------------
463
+ if (language === 'groovy') {
464
+ let groovyResult;
465
+ try {
466
+ groovyResult = parseGroovyContent(content, fileId || filePath);
467
+ }
468
+ catch (err) {
469
+ console.error(`[parser] Tree-sitter error in ${fileId || filePath}: ${err}`);
470
+ groovyResult = { imports: [], exports: [], hasDefaultExport: false, symbols: [] };
471
+ }
472
+ return {
473
+ imports: groovyResult.imports,
474
+ exports: groovyResult.exports,
475
+ hasDefaultExport: false,
476
+ hash,
477
+ lineCount,
478
+ tokenEstimate,
479
+ symbols: groovyResult.symbols,
480
+ };
481
+ }
482
+ // Token-only fallback: template formats (erb, haml, slim), static assets
483
+ // (html, css, json, markdown), and unsupported languages. No AST parsing —
484
+ // the file is still indexed so its path/filename tokens feed domainMap.
485
+ return {
486
+ imports: [],
487
+ exports: [],
488
+ hasDefaultExport: false,
489
+ hash,
490
+ lineCount,
491
+ tokenEstimate,
492
+ symbols: [],
493
+ };
494
+ }
495
+ export function buildFileId(relativePath) {
496
+ // Normalise to forward slashes for cross-platform stability
497
+ return relativePath.replace(/\\/g, '/');
498
+ }
499
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/indexer/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CodebaseIndex } from '../types.js';
2
+ export declare function patchIndex(index: CodebaseIndex, changedAbsPaths: Set<string>, rootDir: string): Promise<void>;
3
+ //# sourceMappingURL=patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../src/indexer/patch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAC;AAkCpF,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAmSf"}