@zbigniewsobiecki/squint 1.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 (649) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1065 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.js +5 -0
  5. package/dist/commands/_shared/db-helper.d.ts +18 -0
  6. package/dist/commands/_shared/db-helper.d.ts.map +1 -0
  7. package/dist/commands/_shared/db-helper.js +72 -0
  8. package/dist/commands/_shared/db-helper.js.map +1 -0
  9. package/dist/commands/_shared/flags.d.ts +20 -0
  10. package/dist/commands/_shared/flags.d.ts.map +1 -0
  11. package/dist/commands/_shared/flags.js +38 -0
  12. package/dist/commands/_shared/flags.js.map +1 -0
  13. package/dist/commands/_shared/index.d.ts +6 -0
  14. package/dist/commands/_shared/index.d.ts.map +1 -0
  15. package/dist/commands/_shared/index.js +6 -0
  16. package/dist/commands/_shared/index.js.map +1 -0
  17. package/dist/commands/_shared/output.d.ts +22 -0
  18. package/dist/commands/_shared/output.d.ts.map +1 -0
  19. package/dist/commands/_shared/output.js +36 -0
  20. package/dist/commands/_shared/output.js.map +1 -0
  21. package/dist/commands/_shared/source-reader.d.ts +23 -0
  22. package/dist/commands/_shared/source-reader.d.ts.map +1 -0
  23. package/dist/commands/_shared/source-reader.js +45 -0
  24. package/dist/commands/_shared/source-reader.js.map +1 -0
  25. package/dist/commands/_shared/symbol-resolver.d.ts +35 -0
  26. package/dist/commands/_shared/symbol-resolver.d.ts.map +1 -0
  27. package/dist/commands/_shared/symbol-resolver.js +102 -0
  28. package/dist/commands/_shared/symbol-resolver.js.map +1 -0
  29. package/dist/commands/browse.d.ts +13 -0
  30. package/dist/commands/browse.d.ts.map +1 -0
  31. package/dist/commands/browse.js +106 -0
  32. package/dist/commands/browse.js.map +1 -0
  33. package/dist/commands/domains/create.d.ts +15 -0
  34. package/dist/commands/domains/create.d.ts.map +1 -0
  35. package/dist/commands/domains/create.js +34 -0
  36. package/dist/commands/domains/create.js.map +1 -0
  37. package/dist/commands/domains/delete.d.ts +14 -0
  38. package/dist/commands/domains/delete.d.ts.map +1 -0
  39. package/dist/commands/domains/delete.js +41 -0
  40. package/dist/commands/domains/delete.js.map +1 -0
  41. package/dist/commands/domains/index.d.ts +2 -0
  42. package/dist/commands/domains/index.d.ts.map +1 -0
  43. package/dist/commands/domains/index.js +2 -0
  44. package/dist/commands/domains/index.js.map +1 -0
  45. package/dist/commands/domains/list.d.ts +12 -0
  46. package/dist/commands/domains/list.d.ts.map +1 -0
  47. package/dist/commands/domains/list.js +67 -0
  48. package/dist/commands/domains/list.js.map +1 -0
  49. package/dist/commands/domains/merge.d.ts +14 -0
  50. package/dist/commands/domains/merge.d.ts.map +1 -0
  51. package/dist/commands/domains/merge.js +40 -0
  52. package/dist/commands/domains/merge.js.map +1 -0
  53. package/dist/commands/domains/rename.d.ts +14 -0
  54. package/dist/commands/domains/rename.d.ts.map +1 -0
  55. package/dist/commands/domains/rename.js +33 -0
  56. package/dist/commands/domains/rename.js.map +1 -0
  57. package/dist/commands/domains/show.d.ts +14 -0
  58. package/dist/commands/domains/show.d.ts.map +1 -0
  59. package/dist/commands/domains/show.js +47 -0
  60. package/dist/commands/domains/show.js.map +1 -0
  61. package/dist/commands/domains/sync.d.ts +11 -0
  62. package/dist/commands/domains/sync.d.ts.map +1 -0
  63. package/dist/commands/domains/sync.js +33 -0
  64. package/dist/commands/domains/sync.js.map +1 -0
  65. package/dist/commands/domains/update.d.ts +14 -0
  66. package/dist/commands/domains/update.d.ts.map +1 -0
  67. package/dist/commands/domains/update.js +28 -0
  68. package/dist/commands/domains/update.js.map +1 -0
  69. package/dist/commands/features/assign.d.ts +16 -0
  70. package/dist/commands/features/assign.d.ts.map +1 -0
  71. package/dist/commands/features/assign.js +51 -0
  72. package/dist/commands/features/assign.js.map +1 -0
  73. package/dist/commands/features/create.d.ts +15 -0
  74. package/dist/commands/features/create.d.ts.map +1 -0
  75. package/dist/commands/features/create.js +30 -0
  76. package/dist/commands/features/create.js.map +1 -0
  77. package/dist/commands/features/delete.d.ts +14 -0
  78. package/dist/commands/features/delete.d.ts.map +1 -0
  79. package/dist/commands/features/delete.js +37 -0
  80. package/dist/commands/features/delete.js.map +1 -0
  81. package/dist/commands/features/generate.d.ts +34 -0
  82. package/dist/commands/features/generate.d.ts.map +1 -0
  83. package/dist/commands/features/generate.js +178 -0
  84. package/dist/commands/features/generate.js.map +1 -0
  85. package/dist/commands/features/index.d.ts +2 -0
  86. package/dist/commands/features/index.d.ts.map +1 -0
  87. package/dist/commands/features/index.js +2 -0
  88. package/dist/commands/features/index.js.map +1 -0
  89. package/dist/commands/features/list.d.ts +11 -0
  90. package/dist/commands/features/list.d.ts.map +1 -0
  91. package/dist/commands/features/list.js +45 -0
  92. package/dist/commands/features/list.js.map +1 -0
  93. package/dist/commands/features/show.d.ts +15 -0
  94. package/dist/commands/features/show.d.ts.map +1 -0
  95. package/dist/commands/features/show.js +61 -0
  96. package/dist/commands/features/show.js.map +1 -0
  97. package/dist/commands/features/unassign.d.ts +16 -0
  98. package/dist/commands/features/unassign.d.ts.map +1 -0
  99. package/dist/commands/features/unassign.js +55 -0
  100. package/dist/commands/features/unassign.js.map +1 -0
  101. package/dist/commands/features/update.d.ts +16 -0
  102. package/dist/commands/features/update.d.ts.map +1 -0
  103. package/dist/commands/features/update.js +54 -0
  104. package/dist/commands/features/update.js.map +1 -0
  105. package/dist/commands/files/imported-by.d.ts +13 -0
  106. package/dist/commands/files/imported-by.d.ts.map +1 -0
  107. package/dist/commands/files/imported-by.js +40 -0
  108. package/dist/commands/files/imported-by.js.map +1 -0
  109. package/dist/commands/files/imports.d.ts +14 -0
  110. package/dist/commands/files/imports.d.ts.map +1 -0
  111. package/dist/commands/files/imports.js +48 -0
  112. package/dist/commands/files/imports.js.map +1 -0
  113. package/dist/commands/files/index.d.ts +2 -0
  114. package/dist/commands/files/index.d.ts.map +1 -0
  115. package/dist/commands/files/index.js +2 -0
  116. package/dist/commands/files/index.js.map +1 -0
  117. package/dist/commands/files/list.d.ts +11 -0
  118. package/dist/commands/files/list.d.ts.map +1 -0
  119. package/dist/commands/files/list.js +35 -0
  120. package/dist/commands/files/list.js.map +1 -0
  121. package/dist/commands/files/orphans.d.ts +12 -0
  122. package/dist/commands/files/orphans.d.ts.map +1 -0
  123. package/dist/commands/files/orphans.js +43 -0
  124. package/dist/commands/files/orphans.js.map +1 -0
  125. package/dist/commands/files/show.d.ts +14 -0
  126. package/dist/commands/files/show.d.ts.map +1 -0
  127. package/dist/commands/files/show.js +95 -0
  128. package/dist/commands/files/show.js.map +1 -0
  129. package/dist/commands/flows/add-step.d.ts +19 -0
  130. package/dist/commands/flows/add-step.d.ts.map +1 -0
  131. package/dist/commands/flows/add-step.js +46 -0
  132. package/dist/commands/flows/add-step.js.map +1 -0
  133. package/dist/commands/flows/create.d.ts +17 -0
  134. package/dist/commands/flows/create.d.ts.map +1 -0
  135. package/dist/commands/flows/create.js +39 -0
  136. package/dist/commands/flows/create.js.map +1 -0
  137. package/dist/commands/flows/delete.d.ts +14 -0
  138. package/dist/commands/flows/delete.d.ts.map +1 -0
  139. package/dist/commands/flows/delete.js +37 -0
  140. package/dist/commands/flows/delete.js.map +1 -0
  141. package/dist/commands/flows/generate.d.ts +50 -0
  142. package/dist/commands/flows/generate.d.ts.map +1 -0
  143. package/dist/commands/flows/generate.js +438 -0
  144. package/dist/commands/flows/generate.js.map +1 -0
  145. package/dist/commands/flows/index.d.ts +2 -0
  146. package/dist/commands/flows/index.d.ts.map +1 -0
  147. package/dist/commands/flows/index.js +2 -0
  148. package/dist/commands/flows/index.js.map +1 -0
  149. package/dist/commands/flows/list.d.ts +12 -0
  150. package/dist/commands/flows/list.d.ts.map +1 -0
  151. package/dist/commands/flows/list.js +98 -0
  152. package/dist/commands/flows/list.js.map +1 -0
  153. package/dist/commands/flows/remove-step.d.ts +18 -0
  154. package/dist/commands/flows/remove-step.d.ts.map +1 -0
  155. package/dist/commands/flows/remove-step.js +41 -0
  156. package/dist/commands/flows/remove-step.js.map +1 -0
  157. package/dist/commands/flows/show.d.ts +17 -0
  158. package/dist/commands/flows/show.d.ts.map +1 -0
  159. package/dist/commands/flows/show.js +136 -0
  160. package/dist/commands/flows/show.js.map +1 -0
  161. package/dist/commands/flows/trace.d.ts +22 -0
  162. package/dist/commands/flows/trace.d.ts.map +1 -0
  163. package/dist/commands/flows/trace.js +217 -0
  164. package/dist/commands/flows/trace.js.map +1 -0
  165. package/dist/commands/flows/update.d.ts +17 -0
  166. package/dist/commands/flows/update.d.ts.map +1 -0
  167. package/dist/commands/flows/update.js +60 -0
  168. package/dist/commands/flows/update.js.map +1 -0
  169. package/dist/commands/flows/verify.d.ts +21 -0
  170. package/dist/commands/flows/verify.d.ts.map +1 -0
  171. package/dist/commands/flows/verify.js +123 -0
  172. package/dist/commands/flows/verify.js.map +1 -0
  173. package/dist/commands/gaps.d.ts +14 -0
  174. package/dist/commands/gaps.d.ts.map +1 -0
  175. package/dist/commands/gaps.js +184 -0
  176. package/dist/commands/gaps.js.map +1 -0
  177. package/dist/commands/hierarchy/index.d.ts +20 -0
  178. package/dist/commands/hierarchy/index.d.ts.map +1 -0
  179. package/dist/commands/hierarchy/index.js +344 -0
  180. package/dist/commands/hierarchy/index.js.map +1 -0
  181. package/dist/commands/ingest.d.ts +23 -0
  182. package/dist/commands/ingest.d.ts.map +1 -0
  183. package/dist/commands/ingest.js +249 -0
  184. package/dist/commands/ingest.js.map +1 -0
  185. package/dist/commands/interactions/create.d.ts +16 -0
  186. package/dist/commands/interactions/create.d.ts.map +1 -0
  187. package/dist/commands/interactions/create.js +58 -0
  188. package/dist/commands/interactions/create.js.map +1 -0
  189. package/dist/commands/interactions/delete.d.ts +16 -0
  190. package/dist/commands/interactions/delete.d.ts.map +1 -0
  191. package/dist/commands/interactions/delete.js +28 -0
  192. package/dist/commands/interactions/delete.js.map +1 -0
  193. package/dist/commands/interactions/generate.d.ts +62 -0
  194. package/dist/commands/interactions/generate.d.ts.map +1 -0
  195. package/dist/commands/interactions/generate.js +870 -0
  196. package/dist/commands/interactions/generate.js.map +1 -0
  197. package/dist/commands/interactions/index.d.ts +2 -0
  198. package/dist/commands/interactions/index.d.ts.map +1 -0
  199. package/dist/commands/interactions/index.js +2 -0
  200. package/dist/commands/interactions/index.js.map +1 -0
  201. package/dist/commands/interactions/list.d.ts +15 -0
  202. package/dist/commands/interactions/list.d.ts.map +1 -0
  203. package/dist/commands/interactions/list.js +127 -0
  204. package/dist/commands/interactions/list.js.map +1 -0
  205. package/dist/commands/interactions/show.d.ts +17 -0
  206. package/dist/commands/interactions/show.d.ts.map +1 -0
  207. package/dist/commands/interactions/show.js +80 -0
  208. package/dist/commands/interactions/show.js.map +1 -0
  209. package/dist/commands/interactions/update.d.ts +20 -0
  210. package/dist/commands/interactions/update.d.ts.map +1 -0
  211. package/dist/commands/interactions/update.js +57 -0
  212. package/dist/commands/interactions/update.js.map +1 -0
  213. package/dist/commands/interactions/validate.d.ts +12 -0
  214. package/dist/commands/interactions/validate.d.ts.map +1 -0
  215. package/dist/commands/interactions/validate.js +94 -0
  216. package/dist/commands/interactions/validate.js.map +1 -0
  217. package/dist/commands/interactions/verify.d.ts +18 -0
  218. package/dist/commands/interactions/verify.d.ts.map +1 -0
  219. package/dist/commands/interactions/verify.js +127 -0
  220. package/dist/commands/interactions/verify.js.map +1 -0
  221. package/dist/commands/llm/_shared/base-llm-command.d.ts +44 -0
  222. package/dist/commands/llm/_shared/base-llm-command.d.ts.map +1 -0
  223. package/dist/commands/llm/_shared/base-llm-command.js +73 -0
  224. package/dist/commands/llm/_shared/base-llm-command.js.map +1 -0
  225. package/dist/commands/llm/_shared/coverage.d.ts +61 -0
  226. package/dist/commands/llm/_shared/coverage.d.ts.map +1 -0
  227. package/dist/commands/llm/_shared/coverage.js +161 -0
  228. package/dist/commands/llm/_shared/coverage.js.map +1 -0
  229. package/dist/commands/llm/_shared/csv-utils.d.ts +65 -0
  230. package/dist/commands/llm/_shared/csv-utils.d.ts.map +1 -0
  231. package/dist/commands/llm/_shared/csv-utils.js +231 -0
  232. package/dist/commands/llm/_shared/csv-utils.js.map +1 -0
  233. package/dist/commands/llm/_shared/csv.d.ts +44 -0
  234. package/dist/commands/llm/_shared/csv.d.ts.map +1 -0
  235. package/dist/commands/llm/_shared/csv.js +76 -0
  236. package/dist/commands/llm/_shared/csv.js.map +1 -0
  237. package/dist/commands/llm/_shared/entity-utils.d.ts +11 -0
  238. package/dist/commands/llm/_shared/entity-utils.d.ts.map +1 -0
  239. package/dist/commands/llm/_shared/entity-utils.js +87 -0
  240. package/dist/commands/llm/_shared/entity-utils.js.map +1 -0
  241. package/dist/commands/llm/_shared/flow-csv.d.ts +74 -0
  242. package/dist/commands/llm/_shared/flow-csv.d.ts.map +1 -0
  243. package/dist/commands/llm/_shared/flow-csv.js +198 -0
  244. package/dist/commands/llm/_shared/flow-csv.js.map +1 -0
  245. package/dist/commands/llm/_shared/flow-prompts.d.ts +61 -0
  246. package/dist/commands/llm/_shared/flow-prompts.d.ts.map +1 -0
  247. package/dist/commands/llm/_shared/flow-prompts.js +281 -0
  248. package/dist/commands/llm/_shared/flow-prompts.js.map +1 -0
  249. package/dist/commands/llm/_shared/flow-validation.d.ts +69 -0
  250. package/dist/commands/llm/_shared/flow-validation.d.ts.map +1 -0
  251. package/dist/commands/llm/_shared/flow-validation.js +176 -0
  252. package/dist/commands/llm/_shared/flow-validation.js.map +1 -0
  253. package/dist/commands/llm/_shared/llm-utils.d.ts +88 -0
  254. package/dist/commands/llm/_shared/llm-utils.d.ts.map +1 -0
  255. package/dist/commands/llm/_shared/llm-utils.js +256 -0
  256. package/dist/commands/llm/_shared/llm-utils.js.map +1 -0
  257. package/dist/commands/llm/_shared/module-csv.d.ts +76 -0
  258. package/dist/commands/llm/_shared/module-csv.d.ts.map +1 -0
  259. package/dist/commands/llm/_shared/module-csv.js +196 -0
  260. package/dist/commands/llm/_shared/module-csv.js.map +1 -0
  261. package/dist/commands/llm/_shared/module-prompts.d.ts +107 -0
  262. package/dist/commands/llm/_shared/module-prompts.d.ts.map +1 -0
  263. package/dist/commands/llm/_shared/module-prompts.js +395 -0
  264. package/dist/commands/llm/_shared/module-prompts.js.map +1 -0
  265. package/dist/commands/llm/_shared/process-utils.d.ts +52 -0
  266. package/dist/commands/llm/_shared/process-utils.d.ts.map +1 -0
  267. package/dist/commands/llm/_shared/process-utils.js +214 -0
  268. package/dist/commands/llm/_shared/process-utils.js.map +1 -0
  269. package/dist/commands/llm/_shared/prompts.d.ts +132 -0
  270. package/dist/commands/llm/_shared/prompts.d.ts.map +1 -0
  271. package/dist/commands/llm/_shared/prompts.js +391 -0
  272. package/dist/commands/llm/_shared/prompts.js.map +1 -0
  273. package/dist/commands/llm/_shared/pure-check.d.ts +10 -0
  274. package/dist/commands/llm/_shared/pure-check.d.ts.map +1 -0
  275. package/dist/commands/llm/_shared/pure-check.js +449 -0
  276. package/dist/commands/llm/_shared/pure-check.js.map +1 -0
  277. package/dist/commands/llm/_shared/verify/content-verifier.d.ts +40 -0
  278. package/dist/commands/llm/_shared/verify/content-verifier.d.ts.map +1 -0
  279. package/dist/commands/llm/_shared/verify/content-verifier.js +247 -0
  280. package/dist/commands/llm/_shared/verify/content-verifier.js.map +1 -0
  281. package/dist/commands/llm/_shared/verify/coverage-checker.d.ts +34 -0
  282. package/dist/commands/llm/_shared/verify/coverage-checker.d.ts.map +1 -0
  283. package/dist/commands/llm/_shared/verify/coverage-checker.js +1096 -0
  284. package/dist/commands/llm/_shared/verify/coverage-checker.js.map +1 -0
  285. package/dist/commands/llm/_shared/verify/verify-prompts.d.ts +30 -0
  286. package/dist/commands/llm/_shared/verify/verify-prompts.d.ts.map +1 -0
  287. package/dist/commands/llm/_shared/verify/verify-prompts.js +118 -0
  288. package/dist/commands/llm/_shared/verify/verify-prompts.js.map +1 -0
  289. package/dist/commands/llm/_shared/verify/verify-types.d.ts +47 -0
  290. package/dist/commands/llm/_shared/verify/verify-types.d.ts.map +1 -0
  291. package/dist/commands/llm/_shared/verify/verify-types.js +2 -0
  292. package/dist/commands/llm/_shared/verify/verify-types.js.map +1 -0
  293. package/dist/commands/llm/annotate.d.ts +7 -0
  294. package/dist/commands/llm/annotate.d.ts.map +1 -0
  295. package/dist/commands/llm/annotate.js +11 -0
  296. package/dist/commands/llm/annotate.js.map +1 -0
  297. package/dist/commands/llm/features/feature-grouper.d.ts +31 -0
  298. package/dist/commands/llm/features/feature-grouper.d.ts.map +1 -0
  299. package/dist/commands/llm/features/feature-grouper.js +223 -0
  300. package/dist/commands/llm/features/feature-grouper.js.map +1 -0
  301. package/dist/commands/llm/features/index.d.ts +6 -0
  302. package/dist/commands/llm/features/index.d.ts.map +1 -0
  303. package/dist/commands/llm/features/index.js +6 -0
  304. package/dist/commands/llm/features/index.js.map +1 -0
  305. package/dist/commands/llm/features/types.d.ts +10 -0
  306. package/dist/commands/llm/features/types.d.ts.map +1 -0
  307. package/dist/commands/llm/features/types.js +5 -0
  308. package/dist/commands/llm/features/types.js.map +1 -0
  309. package/dist/commands/llm/features.d.ts +7 -0
  310. package/dist/commands/llm/features.d.ts.map +1 -0
  311. package/dist/commands/llm/features.js +11 -0
  312. package/dist/commands/llm/features.js.map +1 -0
  313. package/dist/commands/llm/flows/atomic-flow-builder.d.ts +51 -0
  314. package/dist/commands/llm/flows/atomic-flow-builder.d.ts.map +1 -0
  315. package/dist/commands/llm/flows/atomic-flow-builder.js +247 -0
  316. package/dist/commands/llm/flows/atomic-flow-builder.js.map +1 -0
  317. package/dist/commands/llm/flows/dedup.d.ts +18 -0
  318. package/dist/commands/llm/flows/dedup.d.ts.map +1 -0
  319. package/dist/commands/llm/flows/dedup.js +76 -0
  320. package/dist/commands/llm/flows/dedup.js.map +1 -0
  321. package/dist/commands/llm/flows/entry-point-detector.d.ts +41 -0
  322. package/dist/commands/llm/flows/entry-point-detector.d.ts.map +1 -0
  323. package/dist/commands/llm/flows/entry-point-detector.js +388 -0
  324. package/dist/commands/llm/flows/entry-point-detector.js.map +1 -0
  325. package/dist/commands/llm/flows/flow-enhancer.d.ts +21 -0
  326. package/dist/commands/llm/flows/flow-enhancer.d.ts.map +1 -0
  327. package/dist/commands/llm/flows/flow-enhancer.js +166 -0
  328. package/dist/commands/llm/flows/flow-enhancer.js.map +1 -0
  329. package/dist/commands/llm/flows/flow-tracer.d.ts +50 -0
  330. package/dist/commands/llm/flows/flow-tracer.d.ts.map +1 -0
  331. package/dist/commands/llm/flows/flow-tracer.js +271 -0
  332. package/dist/commands/llm/flows/flow-tracer.js.map +1 -0
  333. package/dist/commands/llm/flows/flow-validator.d.ts +31 -0
  334. package/dist/commands/llm/flows/flow-validator.d.ts.map +1 -0
  335. package/dist/commands/llm/flows/flow-validator.js +262 -0
  336. package/dist/commands/llm/flows/flow-validator.js.map +1 -0
  337. package/dist/commands/llm/flows/gap-flow-generator.d.ts +13 -0
  338. package/dist/commands/llm/flows/gap-flow-generator.d.ts.map +1 -0
  339. package/dist/commands/llm/flows/gap-flow-generator.js +48 -0
  340. package/dist/commands/llm/flows/gap-flow-generator.js.map +1 -0
  341. package/dist/commands/llm/flows/index.d.ts +12 -0
  342. package/dist/commands/llm/flows/index.d.ts.map +1 -0
  343. package/dist/commands/llm/flows/index.js +12 -0
  344. package/dist/commands/llm/flows/index.js.map +1 -0
  345. package/dist/commands/llm/flows/types.d.ts +87 -0
  346. package/dist/commands/llm/flows/types.d.ts.map +1 -0
  347. package/dist/commands/llm/flows/types.js +5 -0
  348. package/dist/commands/llm/flows/types.js.map +1 -0
  349. package/dist/commands/llm/flows.d.ts +7 -0
  350. package/dist/commands/llm/flows.d.ts.map +1 -0
  351. package/dist/commands/llm/flows.js +11 -0
  352. package/dist/commands/llm/flows.js.map +1 -0
  353. package/dist/commands/llm/interactions.d.ts +7 -0
  354. package/dist/commands/llm/interactions.d.ts.map +1 -0
  355. package/dist/commands/llm/interactions.js +11 -0
  356. package/dist/commands/llm/interactions.js.map +1 -0
  357. package/dist/commands/llm/modules.d.ts +7 -0
  358. package/dist/commands/llm/modules.d.ts.map +1 -0
  359. package/dist/commands/llm/modules.js +11 -0
  360. package/dist/commands/llm/modules.js.map +1 -0
  361. package/dist/commands/llm/relationships.d.ts +7 -0
  362. package/dist/commands/llm/relationships.d.ts.map +1 -0
  363. package/dist/commands/llm/relationships.js +11 -0
  364. package/dist/commands/llm/relationships.js.map +1 -0
  365. package/dist/commands/modules/assign.d.ts +14 -0
  366. package/dist/commands/modules/assign.d.ts.map +1 -0
  367. package/dist/commands/modules/assign.js +54 -0
  368. package/dist/commands/modules/assign.js.map +1 -0
  369. package/dist/commands/modules/create.d.ts +16 -0
  370. package/dist/commands/modules/create.d.ts.map +1 -0
  371. package/dist/commands/modules/create.js +37 -0
  372. package/dist/commands/modules/create.js.map +1 -0
  373. package/dist/commands/modules/delete.d.ts +14 -0
  374. package/dist/commands/modules/delete.d.ts.map +1 -0
  375. package/dist/commands/modules/delete.js +54 -0
  376. package/dist/commands/modules/delete.js.map +1 -0
  377. package/dist/commands/modules/generate.d.ts +84 -0
  378. package/dist/commands/modules/generate.d.ts.map +1 -0
  379. package/dist/commands/modules/generate.js +1234 -0
  380. package/dist/commands/modules/generate.js.map +1 -0
  381. package/dist/commands/modules/index.d.ts +2 -0
  382. package/dist/commands/modules/index.d.ts.map +1 -0
  383. package/dist/commands/modules/index.js +2 -0
  384. package/dist/commands/modules/index.js.map +1 -0
  385. package/dist/commands/modules/list.d.ts +13 -0
  386. package/dist/commands/modules/list.d.ts.map +1 -0
  387. package/dist/commands/modules/list.js +92 -0
  388. package/dist/commands/modules/list.js.map +1 -0
  389. package/dist/commands/modules/prune.d.ts +10 -0
  390. package/dist/commands/modules/prune.d.ts.map +1 -0
  391. package/dist/commands/modules/prune.js +23 -0
  392. package/dist/commands/modules/prune.js.map +1 -0
  393. package/dist/commands/modules/show.d.ts +15 -0
  394. package/dist/commands/modules/show.d.ts.map +1 -0
  395. package/dist/commands/modules/show.js +95 -0
  396. package/dist/commands/modules/show.js.map +1 -0
  397. package/dist/commands/modules/unassign.d.ts +13 -0
  398. package/dist/commands/modules/unassign.d.ts.map +1 -0
  399. package/dist/commands/modules/unassign.js +49 -0
  400. package/dist/commands/modules/unassign.js.map +1 -0
  401. package/dist/commands/modules/update.d.ts +15 -0
  402. package/dist/commands/modules/update.d.ts.map +1 -0
  403. package/dist/commands/modules/update.js +50 -0
  404. package/dist/commands/modules/update.js.map +1 -0
  405. package/dist/commands/modules/verify.d.ts +18 -0
  406. package/dist/commands/modules/verify.d.ts.map +1 -0
  407. package/dist/commands/modules/verify.js +114 -0
  408. package/dist/commands/modules/verify.js.map +1 -0
  409. package/dist/commands/overview.d.ts +12 -0
  410. package/dist/commands/overview.d.ts.map +1 -0
  411. package/dist/commands/overview.js +219 -0
  412. package/dist/commands/overview.js.map +1 -0
  413. package/dist/commands/parse.d.ts +30 -0
  414. package/dist/commands/parse.d.ts.map +1 -0
  415. package/dist/commands/parse.js +211 -0
  416. package/dist/commands/parse.js.map +1 -0
  417. package/dist/commands/process-groups/index.d.ts +2 -0
  418. package/dist/commands/process-groups/index.d.ts.map +1 -0
  419. package/dist/commands/process-groups/index.js +2 -0
  420. package/dist/commands/process-groups/index.js.map +1 -0
  421. package/dist/commands/process-groups/list.d.ts +11 -0
  422. package/dist/commands/process-groups/list.d.ts.map +1 -0
  423. package/dist/commands/process-groups/list.js +98 -0
  424. package/dist/commands/process-groups/list.js.map +1 -0
  425. package/dist/commands/relationships/annotate.d.ts +27 -0
  426. package/dist/commands/relationships/annotate.d.ts.map +1 -0
  427. package/dist/commands/relationships/annotate.js +453 -0
  428. package/dist/commands/relationships/annotate.js.map +1 -0
  429. package/dist/commands/relationships/index.d.ts +2 -0
  430. package/dist/commands/relationships/index.d.ts.map +1 -0
  431. package/dist/commands/relationships/index.js +2 -0
  432. package/dist/commands/relationships/index.js.map +1 -0
  433. package/dist/commands/relationships/list.d.ts +18 -0
  434. package/dist/commands/relationships/list.d.ts.map +1 -0
  435. package/dist/commands/relationships/list.js +147 -0
  436. package/dist/commands/relationships/list.js.map +1 -0
  437. package/dist/commands/relationships/next.d.ts +17 -0
  438. package/dist/commands/relationships/next.d.ts.map +1 -0
  439. package/dist/commands/relationships/next.js +178 -0
  440. package/dist/commands/relationships/next.js.map +1 -0
  441. package/dist/commands/relationships/set.d.ts +19 -0
  442. package/dist/commands/relationships/set.d.ts.map +1 -0
  443. package/dist/commands/relationships/set.js +65 -0
  444. package/dist/commands/relationships/set.js.map +1 -0
  445. package/dist/commands/relationships/show.d.ts +13 -0
  446. package/dist/commands/relationships/show.d.ts.map +1 -0
  447. package/dist/commands/relationships/show.js +59 -0
  448. package/dist/commands/relationships/show.js.map +1 -0
  449. package/dist/commands/relationships/unset.d.ts +16 -0
  450. package/dist/commands/relationships/unset.d.ts.map +1 -0
  451. package/dist/commands/relationships/unset.js +62 -0
  452. package/dist/commands/relationships/unset.js.map +1 -0
  453. package/dist/commands/relationships/verify.d.ts +24 -0
  454. package/dist/commands/relationships/verify.d.ts.map +1 -0
  455. package/dist/commands/relationships/verify.js +328 -0
  456. package/dist/commands/relationships/verify.js.map +1 -0
  457. package/dist/commands/stats.d.ts +11 -0
  458. package/dist/commands/stats.d.ts.map +1 -0
  459. package/dist/commands/stats.js +207 -0
  460. package/dist/commands/stats.js.map +1 -0
  461. package/dist/commands/symbols/annotate.d.ts +32 -0
  462. package/dist/commands/symbols/annotate.d.ts.map +1 -0
  463. package/dist/commands/symbols/annotate.js +862 -0
  464. package/dist/commands/symbols/annotate.js.map +1 -0
  465. package/dist/commands/symbols/deps.d.ts +18 -0
  466. package/dist/commands/symbols/deps.d.ts.map +1 -0
  467. package/dist/commands/symbols/deps.js +104 -0
  468. package/dist/commands/symbols/deps.js.map +1 -0
  469. package/dist/commands/symbols/index.d.ts +2 -0
  470. package/dist/commands/symbols/index.d.ts.map +1 -0
  471. package/dist/commands/symbols/index.js +2 -0
  472. package/dist/commands/symbols/index.js.map +1 -0
  473. package/dist/commands/symbols/list.d.ts +17 -0
  474. package/dist/commands/symbols/list.d.ts.map +1 -0
  475. package/dist/commands/symbols/list.js +136 -0
  476. package/dist/commands/symbols/list.js.map +1 -0
  477. package/dist/commands/symbols/next.d.ts +15 -0
  478. package/dist/commands/symbols/next.d.ts.map +1 -0
  479. package/dist/commands/symbols/next.js +147 -0
  480. package/dist/commands/symbols/next.js.map +1 -0
  481. package/dist/commands/symbols/prereqs.d.ts +18 -0
  482. package/dist/commands/symbols/prereqs.d.ts.map +1 -0
  483. package/dist/commands/symbols/prereqs.js +107 -0
  484. package/dist/commands/symbols/prereqs.js.map +1 -0
  485. package/dist/commands/symbols/ready.d.ts +17 -0
  486. package/dist/commands/symbols/ready.d.ts.map +1 -0
  487. package/dist/commands/symbols/ready.js +126 -0
  488. package/dist/commands/symbols/ready.js.map +1 -0
  489. package/dist/commands/symbols/set.d.ts +27 -0
  490. package/dist/commands/symbols/set.d.ts.map +1 -0
  491. package/dist/commands/symbols/set.js +241 -0
  492. package/dist/commands/symbols/set.js.map +1 -0
  493. package/dist/commands/symbols/show.d.ts +19 -0
  494. package/dist/commands/symbols/show.d.ts.map +1 -0
  495. package/dist/commands/symbols/show.js +182 -0
  496. package/dist/commands/symbols/show.js.map +1 -0
  497. package/dist/commands/symbols/understood.d.ts +15 -0
  498. package/dist/commands/symbols/understood.d.ts.map +1 -0
  499. package/dist/commands/symbols/understood.js +101 -0
  500. package/dist/commands/symbols/understood.js.map +1 -0
  501. package/dist/commands/symbols/unset.d.ts +16 -0
  502. package/dist/commands/symbols/unset.d.ts.map +1 -0
  503. package/dist/commands/symbols/unset.js +48 -0
  504. package/dist/commands/symbols/unset.js.map +1 -0
  505. package/dist/commands/symbols/verify.d.ts +25 -0
  506. package/dist/commands/symbols/verify.d.ts.map +1 -0
  507. package/dist/commands/symbols/verify.js +360 -0
  508. package/dist/commands/symbols/verify.js.map +1 -0
  509. package/dist/db/connection.d.ts +14 -0
  510. package/dist/db/connection.d.ts.map +1 -0
  511. package/dist/db/connection.js +37 -0
  512. package/dist/db/connection.js.map +1 -0
  513. package/dist/db/database-facade.d.ts +125 -0
  514. package/dist/db/database-facade.d.ts.map +1 -0
  515. package/dist/db/database-facade.js +347 -0
  516. package/dist/db/database-facade.js.map +1 -0
  517. package/dist/db/database.d.ts +9 -0
  518. package/dist/db/database.d.ts.map +1 -0
  519. package/dist/db/database.js +11 -0
  520. package/dist/db/database.js.map +1 -0
  521. package/dist/db/index.d.ts +7 -0
  522. package/dist/db/index.d.ts.map +1 -0
  523. package/dist/db/index.js +11 -0
  524. package/dist/db/index.js.map +1 -0
  525. package/dist/db/repositories/_shared/call-graph-query.d.ts +10 -0
  526. package/dist/db/repositories/_shared/call-graph-query.d.ts.map +1 -0
  527. package/dist/db/repositories/_shared/call-graph-query.js +59 -0
  528. package/dist/db/repositories/_shared/call-graph-query.js.map +1 -0
  529. package/dist/db/repositories/call-graph-service.d.ts +28 -0
  530. package/dist/db/repositories/call-graph-service.d.ts.map +1 -0
  531. package/dist/db/repositories/call-graph-service.js +223 -0
  532. package/dist/db/repositories/call-graph-service.js.map +1 -0
  533. package/dist/db/repositories/definition-repository.d.ts +99 -0
  534. package/dist/db/repositories/definition-repository.d.ts.map +1 -0
  535. package/dist/db/repositories/definition-repository.js +317 -0
  536. package/dist/db/repositories/definition-repository.js.map +1 -0
  537. package/dist/db/repositories/dependency-repository.d.ts +78 -0
  538. package/dist/db/repositories/dependency-repository.d.ts.map +1 -0
  539. package/dist/db/repositories/dependency-repository.js +446 -0
  540. package/dist/db/repositories/dependency-repository.js.map +1 -0
  541. package/dist/db/repositories/domain-repository.d.ts +97 -0
  542. package/dist/db/repositories/domain-repository.d.ts.map +1 -0
  543. package/dist/db/repositories/domain-repository.js +261 -0
  544. package/dist/db/repositories/domain-repository.js.map +1 -0
  545. package/dist/db/repositories/feature-repository.d.ts +64 -0
  546. package/dist/db/repositories/feature-repository.d.ts.map +1 -0
  547. package/dist/db/repositories/feature-repository.js +189 -0
  548. package/dist/db/repositories/feature-repository.js.map +1 -0
  549. package/dist/db/repositories/file-repository.d.ts +67 -0
  550. package/dist/db/repositories/file-repository.d.ts.map +1 -0
  551. package/dist/db/repositories/file-repository.js +179 -0
  552. package/dist/db/repositories/file-repository.js.map +1 -0
  553. package/dist/db/repositories/flow-repository.d.ts +172 -0
  554. package/dist/db/repositories/flow-repository.d.ts.map +1 -0
  555. package/dist/db/repositories/flow-repository.js +599 -0
  556. package/dist/db/repositories/flow-repository.js.map +1 -0
  557. package/dist/db/repositories/graph-repository.d.ts +93 -0
  558. package/dist/db/repositories/graph-repository.d.ts.map +1 -0
  559. package/dist/db/repositories/graph-repository.js +413 -0
  560. package/dist/db/repositories/graph-repository.js.map +1 -0
  561. package/dist/db/repositories/index.d.ts +20 -0
  562. package/dist/db/repositories/index.d.ts.map +1 -0
  563. package/dist/db/repositories/index.js +15 -0
  564. package/dist/db/repositories/index.js.map +1 -0
  565. package/dist/db/repositories/interaction-analysis.d.ts +78 -0
  566. package/dist/db/repositories/interaction-analysis.d.ts.map +1 -0
  567. package/dist/db/repositories/interaction-analysis.js +340 -0
  568. package/dist/db/repositories/interaction-analysis.js.map +1 -0
  569. package/dist/db/repositories/interaction-repository.d.ts +145 -0
  570. package/dist/db/repositories/interaction-repository.d.ts.map +1 -0
  571. package/dist/db/repositories/interaction-repository.js +395 -0
  572. package/dist/db/repositories/interaction-repository.js.map +1 -0
  573. package/dist/db/repositories/metadata-repository.d.ts +110 -0
  574. package/dist/db/repositories/metadata-repository.d.ts.map +1 -0
  575. package/dist/db/repositories/metadata-repository.js +294 -0
  576. package/dist/db/repositories/metadata-repository.js.map +1 -0
  577. package/dist/db/repositories/module-repository.d.ts +162 -0
  578. package/dist/db/repositories/module-repository.d.ts.map +1 -0
  579. package/dist/db/repositories/module-repository.js +519 -0
  580. package/dist/db/repositories/module-repository.js.map +1 -0
  581. package/dist/db/repositories/relationship-repository.d.ts +98 -0
  582. package/dist/db/repositories/relationship-repository.d.ts.map +1 -0
  583. package/dist/db/repositories/relationship-repository.js +421 -0
  584. package/dist/db/repositories/relationship-repository.js.map +1 -0
  585. package/dist/db/schema-manager.d.ts +31 -0
  586. package/dist/db/schema-manager.d.ts.map +1 -0
  587. package/dist/db/schema-manager.js +398 -0
  588. package/dist/db/schema-manager.js.map +1 -0
  589. package/dist/db/schema.d.ts +404 -0
  590. package/dist/db/schema.d.ts.map +1 -0
  591. package/dist/db/schema.js +234 -0
  592. package/dist/db/schema.js.map +1 -0
  593. package/dist/db/utils/tree-builder.d.ts +25 -0
  594. package/dist/db/utils/tree-builder.d.ts.map +1 -0
  595. package/dist/db/utils/tree-builder.js +38 -0
  596. package/dist/db/utils/tree-builder.js.map +1 -0
  597. package/dist/index.d.ts +2 -0
  598. package/dist/index.d.ts.map +1 -0
  599. package/dist/index.js +2 -0
  600. package/dist/index.js.map +1 -0
  601. package/dist/parser/ast-parser.d.ts +23 -0
  602. package/dist/parser/ast-parser.d.ts.map +1 -0
  603. package/dist/parser/ast-parser.js +65 -0
  604. package/dist/parser/ast-parser.js.map +1 -0
  605. package/dist/parser/definition-extractor.d.ts +29 -0
  606. package/dist/parser/definition-extractor.d.ts.map +1 -0
  607. package/dist/parser/definition-extractor.js +379 -0
  608. package/dist/parser/definition-extractor.js.map +1 -0
  609. package/dist/parser/reference-extractor.d.ts +72 -0
  610. package/dist/parser/reference-extractor.d.ts.map +1 -0
  611. package/dist/parser/reference-extractor.js +759 -0
  612. package/dist/parser/reference-extractor.js.map +1 -0
  613. package/dist/utils/file-scanner.d.ts +6 -0
  614. package/dist/utils/file-scanner.d.ts.map +1 -0
  615. package/dist/utils/file-scanner.js +33 -0
  616. package/dist/utils/file-scanner.js.map +1 -0
  617. package/dist/web/api-transforms.d.ts +4 -0
  618. package/dist/web/api-transforms.d.ts.map +1 -0
  619. package/dist/web/api-transforms.js +4 -0
  620. package/dist/web/api-transforms.js.map +1 -0
  621. package/dist/web/server.d.ts +16 -0
  622. package/dist/web/server.d.ts.map +1 -0
  623. package/dist/web/server.js +229 -0
  624. package/dist/web/server.js.map +1 -0
  625. package/dist/web/server.test.d.ts +2 -0
  626. package/dist/web/server.test.d.ts.map +1 -0
  627. package/dist/web/server.test.js +505 -0
  628. package/dist/web/server.test.js.map +1 -0
  629. package/dist/web/transforms/flow-transforms.d.ts +117 -0
  630. package/dist/web/transforms/flow-transforms.d.ts.map +1 -0
  631. package/dist/web/transforms/flow-transforms.js +202 -0
  632. package/dist/web/transforms/flow-transforms.js.map +1 -0
  633. package/dist/web/transforms/index.d.ts +4 -0
  634. package/dist/web/transforms/index.d.ts.map +1 -0
  635. package/dist/web/transforms/index.js +4 -0
  636. package/dist/web/transforms/index.js.map +1 -0
  637. package/dist/web/transforms/module-transforms.d.ts +42 -0
  638. package/dist/web/transforms/module-transforms.d.ts.map +1 -0
  639. package/dist/web/transforms/module-transforms.js +64 -0
  640. package/dist/web/transforms/module-transforms.js.map +1 -0
  641. package/dist/web/transforms/symbol-transforms.d.ts +31 -0
  642. package/dist/web/transforms/symbol-transforms.d.ts.map +1 -0
  643. package/dist/web/transforms/symbol-transforms.js +95 -0
  644. package/dist/web/transforms/symbol-transforms.js.map +1 -0
  645. package/package.json +96 -0
  646. package/ui/dist/assets/index-DP3dRMlh.js +268 -0
  647. package/ui/dist/assets/index-DP3dRMlh.js.map +1 -0
  648. package/ui/dist/assets/index-Db204Xn1.css +1 -0
  649. package/ui/dist/index.html +67 -0
@@ -0,0 +1,759 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ const EXTENSIONS_TO_TRY = ['.ts', '.tsx', '.js', '.jsx'];
4
+ const INDEX_FILES = ['index.ts', 'index.tsx', 'index.js', 'index.jsx'];
5
+ // Cache for package.json imports field lookups
6
+ const packageJsonCache = new Map();
7
+ /**
8
+ * Find the nearest package.json with an imports field
9
+ */
10
+ function findPackageJsonImports(startDir) {
11
+ if (packageJsonCache.has(startDir)) {
12
+ return packageJsonCache.get(startDir) ?? null;
13
+ }
14
+ let dir = startDir;
15
+ while (dir !== path.dirname(dir)) {
16
+ const pkgPath = path.join(dir, 'package.json');
17
+ try {
18
+ const content = fs.readFileSync(pkgPath, 'utf-8');
19
+ const pkg = JSON.parse(content);
20
+ if (pkg.imports && typeof pkg.imports === 'object') {
21
+ const result = { imports: pkg.imports, dir };
22
+ packageJsonCache.set(startDir, result);
23
+ return result;
24
+ }
25
+ }
26
+ catch {
27
+ // not found, continue up the tree
28
+ }
29
+ dir = path.dirname(dir);
30
+ }
31
+ packageJsonCache.set(startDir, null);
32
+ return null;
33
+ }
34
+ /**
35
+ * Resolve a subpath import (#...) using package.json imports field
36
+ */
37
+ function resolveSubpathImport(source, imports, pkgDir) {
38
+ // Sort by specificity (longer patterns first)
39
+ const patterns = Object.keys(imports).sort((a, b) => b.length - a.length);
40
+ for (const pattern of patterns) {
41
+ if (pattern.includes('*')) {
42
+ // Wildcard pattern: #core/* -> ./src/modules/core/*
43
+ const prefix = pattern.slice(0, pattern.indexOf('*'));
44
+ if (source.startsWith(prefix)) {
45
+ const suffix = source.slice(prefix.length);
46
+ const target = imports[pattern];
47
+ if (typeof target === 'string') {
48
+ const resolved = target.replace('*', suffix);
49
+ return path.resolve(pkgDir, resolved);
50
+ }
51
+ }
52
+ }
53
+ else if (source === pattern) {
54
+ // Exact match
55
+ const target = imports[pattern];
56
+ if (typeof target === 'string') {
57
+ return path.resolve(pkgDir, target);
58
+ }
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ /**
64
+ * Resolve an import path to an absolute path if it exists in the known files set
65
+ */
66
+ export function resolveImportPath(source, fromFile, knownFiles) {
67
+ const fromDir = path.dirname(fromFile);
68
+ // Handle subpath imports (#...)
69
+ if (source.startsWith('#')) {
70
+ const pkgInfo = findPackageJsonImports(fromDir);
71
+ if (pkgInfo) {
72
+ const resolved = resolveSubpathImport(source, pkgInfo.imports, pkgInfo.dir);
73
+ if (resolved) {
74
+ // Try exact match first
75
+ if (knownFiles.has(resolved))
76
+ return resolved;
77
+ // Try with extensions
78
+ for (const ext of EXTENSIONS_TO_TRY) {
79
+ if (knownFiles.has(resolved + ext))
80
+ return resolved + ext;
81
+ }
82
+ // Try index files
83
+ for (const ext of EXTENSIONS_TO_TRY) {
84
+ const indexPath = path.join(resolved, `index${ext}`);
85
+ if (knownFiles.has(indexPath))
86
+ return indexPath;
87
+ }
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+ // External packages can't be resolved
93
+ if (!source.startsWith('.') && !source.startsWith('/')) {
94
+ return undefined;
95
+ }
96
+ const resolved = path.resolve(fromDir, source);
97
+ // Try exact match first
98
+ if (knownFiles.has(resolved)) {
99
+ return resolved;
100
+ }
101
+ // Try adding extensions
102
+ for (const ext of EXTENSIONS_TO_TRY) {
103
+ const withExt = resolved + ext;
104
+ if (knownFiles.has(withExt)) {
105
+ return withExt;
106
+ }
107
+ }
108
+ // Handle TypeScript ESM imports that use .js extension
109
+ // (e.g., import './foo.js' when actual file is './foo.ts')
110
+ const ext = path.extname(resolved);
111
+ if (ext === '.js' || ext === '.jsx') {
112
+ const withoutExt = resolved.slice(0, -ext.length);
113
+ const tsExt = ext === '.js' ? '.ts' : '.tsx';
114
+ const tsPath = withoutExt + tsExt;
115
+ if (knownFiles.has(tsPath)) {
116
+ return tsPath;
117
+ }
118
+ // Also try the alternative: .js -> .tsx, .jsx -> .ts
119
+ const altTsExt = ext === '.js' ? '.tsx' : '.ts';
120
+ const altTsPath = withoutExt + altTsExt;
121
+ if (knownFiles.has(altTsPath)) {
122
+ return altTsPath;
123
+ }
124
+ }
125
+ // Try as directory with index file
126
+ for (const indexFile of INDEX_FILES) {
127
+ const withIndex = path.join(resolved, indexFile);
128
+ if (knownFiles.has(withIndex)) {
129
+ return withIndex;
130
+ }
131
+ }
132
+ return undefined;
133
+ }
134
+ /**
135
+ * Check if an identifier node should be tracked as a usage
136
+ * Returns false for identifiers that are:
137
+ * - Part of import/export declarations
138
+ * - Property names in object literals
139
+ * - Property access on right side
140
+ */
141
+ function isValidUsage(node) {
142
+ const parent = node.parent;
143
+ if (!parent)
144
+ return true;
145
+ const parentType = parent.type;
146
+ // Skip if part of import/export declaration
147
+ if (parentType === 'import_specifier' ||
148
+ parentType === 'export_specifier' ||
149
+ parentType === 'import_clause' ||
150
+ parentType === 'namespace_import' ||
151
+ parentType === 'named_imports') {
152
+ return false;
153
+ }
154
+ // Skip if this is the property name in a property access (right side of .)
155
+ if (parentType === 'member_expression') {
156
+ const propertyNode = parent.childForFieldName('property');
157
+ if (propertyNode && propertyNode.id === node.id) {
158
+ return false;
159
+ }
160
+ }
161
+ // Skip if this is a shorthand property key in object literal
162
+ if (parentType === 'shorthand_property_identifier_pattern') {
163
+ return false;
164
+ }
165
+ // Skip if this is a property key (not value) in object literal
166
+ if (parentType === 'pair') {
167
+ const keyNode = parent.childForFieldName('key');
168
+ if (keyNode && keyNode.id === node.id) {
169
+ return false;
170
+ }
171
+ }
172
+ // Skip if this is part of a function/method/property definition name
173
+ if (parentType === 'function_declaration' ||
174
+ parentType === 'method_definition' ||
175
+ parentType === 'class_declaration' ||
176
+ parentType === 'variable_declarator') {
177
+ const nameNode = parent.childForFieldName('name');
178
+ if (nameNode && nameNode.id === node.id) {
179
+ return false;
180
+ }
181
+ }
182
+ return true;
183
+ }
184
+ /**
185
+ * Count the number of arguments in an arguments node
186
+ */
187
+ function countArguments(argsNode) {
188
+ let count = 0;
189
+ for (let i = 0; i < argsNode.childCount; i++) {
190
+ const child = argsNode.child(i);
191
+ if (child) {
192
+ // Skip punctuation: (, ), ,
193
+ const type = child.type;
194
+ if (type !== '(' && type !== ')' && type !== ',') {
195
+ count++;
196
+ }
197
+ }
198
+ }
199
+ return count;
200
+ }
201
+ /**
202
+ * Get the context (parent node type) for a usage, with optional callsite metadata
203
+ */
204
+ function getUsageContext(node) {
205
+ const parent = node.parent;
206
+ if (!parent)
207
+ return { context: 'unknown' };
208
+ // Check for new_expression (constructor call): new Foo()
209
+ if (parent.type === 'new_expression') {
210
+ const argsNode = parent.childForFieldName('arguments');
211
+ return {
212
+ context: 'new_expression',
213
+ callsite: {
214
+ argumentCount: argsNode ? countArguments(argsNode) : 0,
215
+ isMethodCall: false,
216
+ isConstructorCall: true,
217
+ },
218
+ };
219
+ }
220
+ // Direct function call: foo()
221
+ if (parent.type === 'call_expression') {
222
+ const functionNode = parent.childForFieldName('function');
223
+ // Make sure this identifier is the function being called, not an argument
224
+ if (functionNode && functionNode.id === node.id) {
225
+ const argsNode = parent.childForFieldName('arguments');
226
+ return {
227
+ context: 'call_expression',
228
+ callsite: {
229
+ argumentCount: argsNode ? countArguments(argsNode) : 0,
230
+ isMethodCall: false,
231
+ isConstructorCall: false,
232
+ },
233
+ };
234
+ }
235
+ return { context: 'call_expression' };
236
+ }
237
+ // For member expressions, look at what the member expression is used for
238
+ if (parent.type === 'member_expression') {
239
+ const grandparent = parent.parent;
240
+ // Method call: obj.foo() - the identifier is the object, not the method
241
+ if (grandparent?.type === 'call_expression') {
242
+ // Check if this identifier is the object of the member expression
243
+ const objectNode = parent.childForFieldName('object');
244
+ if (objectNode && objectNode.id === node.id) {
245
+ const argsNode = grandparent.childForFieldName('arguments');
246
+ return {
247
+ context: 'call_expression',
248
+ callsite: {
249
+ argumentCount: argsNode ? countArguments(argsNode) : 0,
250
+ isMethodCall: true,
251
+ isConstructorCall: false,
252
+ receiverName: node.text,
253
+ },
254
+ };
255
+ }
256
+ return { context: 'call_expression' };
257
+ }
258
+ return { context: 'member_expression' };
259
+ }
260
+ return { context: parent.type };
261
+ }
262
+ /**
263
+ * Find all usages of a symbol name in the AST
264
+ */
265
+ export function findSymbolUsages(rootNode, symbolName) {
266
+ const usages = [];
267
+ function walk(node) {
268
+ // Check both regular identifiers and type identifiers (for type annotations)
269
+ if ((node.type === 'identifier' || node.type === 'type_identifier') && node.text === symbolName) {
270
+ if (isValidUsage(node)) {
271
+ const usageInfo = getUsageContext(node);
272
+ const usage = {
273
+ position: {
274
+ row: node.startPosition.row,
275
+ column: node.startPosition.column,
276
+ },
277
+ context: usageInfo.context,
278
+ };
279
+ if (usageInfo.callsite) {
280
+ usage.callsite = usageInfo.callsite;
281
+ }
282
+ usages.push(usage);
283
+ }
284
+ }
285
+ for (let i = 0; i < node.childCount; i++) {
286
+ const child = node.child(i);
287
+ if (child) {
288
+ walk(child);
289
+ }
290
+ }
291
+ }
292
+ walk(rootNode);
293
+ return usages;
294
+ }
295
+ /**
296
+ * Extract the source string from an import/export/require statement
297
+ */
298
+ function extractSourceString(node) {
299
+ // Look for string child which contains the path
300
+ for (let i = 0; i < node.childCount; i++) {
301
+ const child = node.child(i);
302
+ if (child?.type === 'string') {
303
+ // Remove quotes from the string
304
+ const text = child.text;
305
+ return text.slice(1, -1);
306
+ }
307
+ }
308
+ return null;
309
+ }
310
+ /**
311
+ * Check if an import/export is type-only
312
+ */
313
+ function isTypeOnlyImport(node) {
314
+ for (let i = 0; i < node.childCount; i++) {
315
+ const child = node.child(i);
316
+ if (child?.type === 'type' || child?.text === 'type') {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ }
322
+ /**
323
+ * Extract imported symbols from an import statement
324
+ */
325
+ function extractImportedSymbols(importNode, rootNode) {
326
+ const symbols = [];
327
+ const importClause = importNode.childForFieldName('import') || findChildByType(importNode, 'import_clause');
328
+ if (!importClause) {
329
+ // Side-effect import: import './file'
330
+ return [
331
+ {
332
+ name: '*',
333
+ localName: '*',
334
+ kind: 'side-effect',
335
+ usages: [],
336
+ },
337
+ ];
338
+ }
339
+ // Process import clause children
340
+ for (let i = 0; i < importClause.childCount; i++) {
341
+ const child = importClause.child(i);
342
+ if (!child)
343
+ continue;
344
+ if (child.type === 'identifier') {
345
+ // Default import: import Foo from './file'
346
+ const localName = child.text;
347
+ symbols.push({
348
+ name: 'default',
349
+ localName,
350
+ kind: 'default',
351
+ usages: findSymbolUsages(rootNode, localName),
352
+ });
353
+ }
354
+ else if (child.type === 'namespace_import') {
355
+ // Namespace import: import * as Foo from './file'
356
+ const nameNode = child.childForFieldName('name') || findChildByType(child, 'identifier');
357
+ if (nameNode) {
358
+ const localName = nameNode.text;
359
+ symbols.push({
360
+ name: '*',
361
+ localName,
362
+ kind: 'namespace',
363
+ usages: findSymbolUsages(rootNode, localName),
364
+ });
365
+ }
366
+ }
367
+ else if (child.type === 'named_imports') {
368
+ // Named imports: import { A, B as C } from './file'
369
+ for (let j = 0; j < child.childCount; j++) {
370
+ const specifier = child.child(j);
371
+ if (specifier?.type === 'import_specifier') {
372
+ const nameNode = specifier.childForFieldName('name');
373
+ const aliasNode = specifier.childForFieldName('alias');
374
+ const originalName = nameNode?.text || '';
375
+ const localName = aliasNode?.text || originalName;
376
+ if (originalName) {
377
+ symbols.push({
378
+ name: originalName,
379
+ localName,
380
+ kind: 'named',
381
+ usages: findSymbolUsages(rootNode, localName),
382
+ });
383
+ }
384
+ }
385
+ }
386
+ }
387
+ }
388
+ return symbols;
389
+ }
390
+ /**
391
+ * Extract exported symbols from a re-export statement.
392
+ * For re-exports, we create a synthetic usage at the export location
393
+ * to ensure dependency edges are created in the database.
394
+ */
395
+ function extractReExportedSymbols(exportNode, _rootNode) {
396
+ const symbols = [];
397
+ const exportClause = findChildByType(exportNode, 'export_clause');
398
+ // Synthetic usage at the export statement location
399
+ const syntheticUsage = {
400
+ position: {
401
+ row: exportNode.startPosition.row,
402
+ column: exportNode.startPosition.column,
403
+ },
404
+ context: 're-export',
405
+ };
406
+ if (!exportClause) {
407
+ // Check for export * from './file'
408
+ for (let i = 0; i < exportNode.childCount; i++) {
409
+ const child = exportNode.child(i);
410
+ if (child?.text === '*') {
411
+ return [
412
+ {
413
+ name: '*',
414
+ localName: '*',
415
+ kind: 'namespace',
416
+ usages: [syntheticUsage],
417
+ },
418
+ ];
419
+ }
420
+ }
421
+ return symbols;
422
+ }
423
+ // Named re-exports: export { A, B as C } from './file'
424
+ for (let i = 0; i < exportClause.childCount; i++) {
425
+ const specifier = exportClause.child(i);
426
+ if (specifier?.type === 'export_specifier') {
427
+ const nameNode = specifier.childForFieldName('name');
428
+ const aliasNode = specifier.childForFieldName('alias');
429
+ const originalName = nameNode?.text || '';
430
+ const localName = aliasNode?.text || originalName;
431
+ if (originalName) {
432
+ symbols.push({
433
+ name: originalName,
434
+ localName,
435
+ kind: 'named',
436
+ usages: [syntheticUsage],
437
+ });
438
+ }
439
+ }
440
+ }
441
+ return symbols;
442
+ }
443
+ /**
444
+ * Helper to find a child node by type
445
+ */
446
+ function findChildByType(node, type) {
447
+ for (let i = 0; i < node.childCount; i++) {
448
+ const child = node.child(i);
449
+ if (child?.type === type) {
450
+ return child;
451
+ }
452
+ }
453
+ return null;
454
+ }
455
+ /**
456
+ * Extract dynamic import from a call expression
457
+ */
458
+ function extractDynamicImport(callNode, _rootNode, filePath, knownFiles) {
459
+ // Check if this is import()
460
+ const functionNode = callNode.childForFieldName('function');
461
+ if (!functionNode || functionNode.text !== 'import') {
462
+ return null;
463
+ }
464
+ const args = callNode.childForFieldName('arguments');
465
+ if (!args)
466
+ return null;
467
+ const firstArg = args.child(1); // Skip opening paren
468
+ if (!firstArg || firstArg.type !== 'string')
469
+ return null;
470
+ const source = firstArg.text.slice(1, -1);
471
+ const isExternal = !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('#');
472
+ return {
473
+ type: 'dynamic-import',
474
+ source,
475
+ resolvedPath: resolveImportPath(source, filePath, knownFiles),
476
+ isExternal,
477
+ isTypeOnly: false,
478
+ imports: [
479
+ {
480
+ name: '*',
481
+ localName: '*',
482
+ kind: 'namespace',
483
+ usages: [],
484
+ },
485
+ ],
486
+ position: {
487
+ row: callNode.startPosition.row,
488
+ column: callNode.startPosition.column,
489
+ },
490
+ };
491
+ }
492
+ /**
493
+ * Extract require() call from a call expression
494
+ */
495
+ function extractRequireCall(callNode, rootNode, filePath, knownFiles) {
496
+ const functionNode = callNode.childForFieldName('function');
497
+ if (!functionNode || functionNode.text !== 'require') {
498
+ return null;
499
+ }
500
+ const args = callNode.childForFieldName('arguments');
501
+ if (!args)
502
+ return null;
503
+ const firstArg = args.child(1); // Skip opening paren
504
+ if (!firstArg || firstArg.type !== 'string')
505
+ return null;
506
+ const source = firstArg.text.slice(1, -1);
507
+ const isExternal = !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('#');
508
+ // Try to find what variable this require is assigned to
509
+ const imports = [];
510
+ const parent = callNode.parent;
511
+ if (parent?.type === 'variable_declarator') {
512
+ const nameNode = parent.childForFieldName('name');
513
+ if (nameNode) {
514
+ if (nameNode.type === 'identifier') {
515
+ const localName = nameNode.text;
516
+ imports.push({
517
+ name: '*',
518
+ localName,
519
+ kind: 'namespace',
520
+ usages: findSymbolUsages(rootNode, localName),
521
+ });
522
+ }
523
+ else if (nameNode.type === 'object_pattern') {
524
+ // Destructured require: const { a, b } = require('./file')
525
+ for (let i = 0; i < nameNode.childCount; i++) {
526
+ const prop = nameNode.child(i);
527
+ if (prop?.type === 'shorthand_property_identifier_pattern') {
528
+ const localName = prop.text;
529
+ imports.push({
530
+ name: localName,
531
+ localName,
532
+ kind: 'named',
533
+ usages: findSymbolUsages(rootNode, localName),
534
+ });
535
+ }
536
+ else if (prop?.type === 'pair_pattern') {
537
+ const keyNode = prop.childForFieldName('key');
538
+ const valueNode = prop.childForFieldName('value');
539
+ if (keyNode && valueNode) {
540
+ imports.push({
541
+ name: keyNode.text,
542
+ localName: valueNode.text,
543
+ kind: 'named',
544
+ usages: findSymbolUsages(rootNode, valueNode.text),
545
+ });
546
+ }
547
+ }
548
+ }
549
+ }
550
+ }
551
+ }
552
+ if (imports.length === 0) {
553
+ imports.push({
554
+ name: '*',
555
+ localName: '*',
556
+ kind: 'side-effect',
557
+ usages: [],
558
+ });
559
+ }
560
+ return {
561
+ type: 'require',
562
+ source,
563
+ resolvedPath: resolveImportPath(source, filePath, knownFiles),
564
+ isExternal,
565
+ isTypeOnly: false,
566
+ imports,
567
+ position: {
568
+ row: callNode.startPosition.row,
569
+ column: callNode.startPosition.column,
570
+ },
571
+ };
572
+ }
573
+ /**
574
+ * Extract all references from an AST
575
+ */
576
+ export function extractReferences(rootNode, filePath, knownFiles) {
577
+ const references = [];
578
+ function walk(node) {
579
+ if (node.type === 'import_statement') {
580
+ const source = extractSourceString(node);
581
+ if (source) {
582
+ const isExternal = !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('#');
583
+ const isTypeOnly = isTypeOnlyImport(node);
584
+ const imports = extractImportedSymbols(node, rootNode);
585
+ references.push({
586
+ type: 'import',
587
+ source,
588
+ resolvedPath: resolveImportPath(source, filePath, knownFiles),
589
+ isExternal,
590
+ isTypeOnly,
591
+ imports,
592
+ position: {
593
+ row: node.startPosition.row,
594
+ column: node.startPosition.column,
595
+ },
596
+ });
597
+ }
598
+ }
599
+ else if (node.type === 'export_statement') {
600
+ const source = extractSourceString(node);
601
+ if (source) {
602
+ // This is a re-export
603
+ const isExternal = !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('#');
604
+ const imports = extractReExportedSymbols(node, rootNode);
605
+ // Determine if it's export-all or re-export
606
+ const isExportAll = imports.some((imp) => imp.name === '*' && imp.kind === 'namespace');
607
+ references.push({
608
+ type: isExportAll ? 'export-all' : 're-export',
609
+ source,
610
+ resolvedPath: resolveImportPath(source, filePath, knownFiles),
611
+ isExternal,
612
+ isTypeOnly: isTypeOnlyImport(node),
613
+ imports,
614
+ position: {
615
+ row: node.startPosition.row,
616
+ column: node.startPosition.column,
617
+ },
618
+ });
619
+ }
620
+ }
621
+ else if (node.type === 'call_expression') {
622
+ // Check for dynamic import
623
+ const dynamicImport = extractDynamicImport(node, rootNode, filePath, knownFiles);
624
+ if (dynamicImport) {
625
+ references.push(dynamicImport);
626
+ return; // Don't recurse into import()
627
+ }
628
+ // Check for require()
629
+ const requireCall = extractRequireCall(node, rootNode, filePath, knownFiles);
630
+ if (requireCall) {
631
+ references.push(requireCall);
632
+ return; // Don't recurse into require()
633
+ }
634
+ }
635
+ // Recurse into children
636
+ for (let i = 0; i < node.childCount; i++) {
637
+ const child = node.child(i);
638
+ if (child) {
639
+ walk(child);
640
+ }
641
+ }
642
+ }
643
+ walk(rootNode);
644
+ return references;
645
+ }
646
+ /**
647
+ * Check if a usage is in a type context (type reference rather than value reference).
648
+ * Type contexts include: type annotations, generic type arguments, extends/implements clauses.
649
+ */
650
+ function isTypeContext(context) {
651
+ const typeContexts = [
652
+ 'type_annotation',
653
+ 'type_arguments',
654
+ 'generic_type',
655
+ 'type_identifier',
656
+ 'extends_clause',
657
+ 'extends_type_clause',
658
+ 'implements_clause',
659
+ 'type_alias_declaration',
660
+ 'constraint',
661
+ 'intersection_type',
662
+ 'union_type',
663
+ 'mapped_type',
664
+ 'conditional_type',
665
+ 'indexed_access_type',
666
+ 'type_query',
667
+ 'predefined_type',
668
+ 'parenthesized_type',
669
+ 'optional_type',
670
+ 'readonly_type',
671
+ 'tuple_type',
672
+ 'array_type',
673
+ 'function_type',
674
+ 'constructor_type',
675
+ 'index_signature',
676
+ ];
677
+ return typeContexts.includes(context);
678
+ }
679
+ /**
680
+ * Extract internal usages of definitions within the same file.
681
+ * This captures calls to local functions, classes, etc. that are not imported.
682
+ * @param includeTypeUsages - If true, also include type usages (not just call usages)
683
+ */
684
+ export function extractInternalUsages(rootNode, definitions, includeTypeUsages = true) {
685
+ const results = [];
686
+ for (const def of definitions) {
687
+ // Find all usages of this definition's name
688
+ const usages = findSymbolUsages(rootNode, def.name);
689
+ // Filter out the definition itself (where the function/class is declared)
690
+ // by checking if the usage is at the same position as the definition
691
+ const filteredUsages = usages.filter((usage) => {
692
+ // Definition position is 0-based, usage position is also 0-based
693
+ const isDefinitionSite = usage.position.row === def.position.row && usage.position.column === def.position.column;
694
+ return !isDefinitionSite;
695
+ });
696
+ // Include call usages
697
+ const callUsages = filteredUsages.filter((u) => u.callsite);
698
+ // Optionally include type usages
699
+ let typeUsages = [];
700
+ if (includeTypeUsages) {
701
+ typeUsages = filteredUsages.filter((u) => !u.callsite && isTypeContext(u.context));
702
+ }
703
+ const allUsages = [...callUsages, ...typeUsages];
704
+ if (allUsages.length > 0) {
705
+ results.push({
706
+ definitionName: def.name,
707
+ usages: allUsages,
708
+ });
709
+ }
710
+ }
711
+ return results;
712
+ }
713
+ /**
714
+ * Extract type references from type alias declarations.
715
+ * This captures dependencies like User in `type Foo = Omit<User, 'password'>`.
716
+ */
717
+ export function extractTypeAliasReferences(rootNode) {
718
+ const results = [];
719
+ function walk(node) {
720
+ if (node.type === 'type_alias_declaration') {
721
+ const nameNode = node.childForFieldName('name');
722
+ const valueNode = node.childForFieldName('value');
723
+ if (nameNode && valueNode) {
724
+ const typeName = nameNode.text;
725
+ const referencedTypes = new Set();
726
+ // Extract all type_identifier nodes from the value
727
+ function collectTypeIdentifiers(n) {
728
+ if (n.type === 'type_identifier') {
729
+ // Exclude the declaration name itself
730
+ if (n.text !== typeName) {
731
+ referencedTypes.add(n.text);
732
+ }
733
+ }
734
+ for (let i = 0; i < n.childCount; i++) {
735
+ const child = n.child(i);
736
+ if (child)
737
+ collectTypeIdentifiers(child);
738
+ }
739
+ }
740
+ collectTypeIdentifiers(valueNode);
741
+ if (referencedTypes.size > 0) {
742
+ results.push({
743
+ typeName,
744
+ referencedTypes: Array.from(referencedTypes),
745
+ position: { row: node.startPosition.row, column: node.startPosition.column },
746
+ });
747
+ }
748
+ }
749
+ }
750
+ for (let i = 0; i < node.childCount; i++) {
751
+ const child = node.child(i);
752
+ if (child)
753
+ walk(child);
754
+ }
755
+ }
756
+ walk(rootNode);
757
+ return results;
758
+ }
759
+ //# sourceMappingURL=reference-extractor.js.map