@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,340 @@
1
+ import { ensureInteractionsTables, ensureModulesTables } from '../schema-manager.js';
2
+ /**
3
+ * Service for interaction analysis — relationship coverage, validation, and diagnostics.
4
+ * Extracted from InteractionRepository to separate analysis from CRUD.
5
+ */
6
+ export class InteractionAnalysis {
7
+ db;
8
+ constructor(db) {
9
+ this.db = db;
10
+ }
11
+ /**
12
+ * Get relationship-to-interaction coverage statistics.
13
+ */
14
+ getRelationshipCoverage() {
15
+ ensureInteractionsTables(this.db);
16
+ ensureModulesTables(this.db);
17
+ const totalStmt = this.db.prepare('SELECT COUNT(*) as count FROM relationship_annotations');
18
+ const totalRelationships = totalStmt.get().count;
19
+ const crossModuleStmt = this.db.prepare(`
20
+ SELECT COUNT(*) as count
21
+ FROM relationship_annotations ra
22
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
23
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
24
+ WHERE mm1.module_id != mm2.module_id
25
+ `);
26
+ const crossModuleRelationships = crossModuleStmt.get().count;
27
+ const sameModuleStmt = this.db.prepare(`
28
+ SELECT COUNT(*) as count
29
+ FROM relationship_annotations ra
30
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
31
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
32
+ WHERE mm1.module_id = mm2.module_id
33
+ `);
34
+ const sameModuleCount = sameModuleStmt.get().count;
35
+ const withModulesStmt = this.db.prepare(`
36
+ SELECT COUNT(*) as count
37
+ FROM relationship_annotations ra
38
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
39
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
40
+ `);
41
+ const relationshipsWithModules = withModulesStmt.get().count;
42
+ const contributingStmt = this.db.prepare(`
43
+ SELECT COUNT(DISTINCT ra.id) as count
44
+ FROM relationship_annotations ra
45
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
46
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
47
+ JOIN interactions i ON i.from_module_id = mm1.module_id
48
+ AND i.to_module_id = mm2.module_id
49
+ WHERE mm1.module_id != mm2.module_id
50
+ `);
51
+ const contributing = contributingStmt.get().count;
52
+ return {
53
+ totalRelationships,
54
+ crossModuleRelationships,
55
+ relationshipsContributingToInteractions: contributing,
56
+ sameModuleCount,
57
+ orphanedCount: totalRelationships - relationshipsWithModules,
58
+ coveragePercent: crossModuleRelationships > 0 ? (contributing / crossModuleRelationships) * 100 : 100,
59
+ };
60
+ }
61
+ /**
62
+ * Get detailed breakdown of relationship coverage for diagnostics.
63
+ */
64
+ getRelationshipCoverageBreakdown() {
65
+ ensureInteractionsTables(this.db);
66
+ ensureModulesTables(this.db);
67
+ const stmt = this.db.prepare(`
68
+ SELECT
69
+ ra.relationship_type,
70
+ CASE
71
+ WHEN mm1.module_id IS NULL OR mm2.module_id IS NULL THEN 'orphaned'
72
+ WHEN mm1.module_id = mm2.module_id THEN 'same_module'
73
+ WHEN EXISTS (
74
+ SELECT 1 FROM interactions i
75
+ WHERE i.from_module_id = mm1.module_id
76
+ AND i.to_module_id = mm2.module_id
77
+ ) THEN 'covered'
78
+ ELSE 'no_call_edge'
79
+ END as reason,
80
+ COUNT(*) as count
81
+ FROM relationship_annotations ra
82
+ LEFT JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
83
+ LEFT JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
84
+ GROUP BY ra.relationship_type, reason
85
+ `);
86
+ const rows = stmt.all();
87
+ const result = {
88
+ covered: 0,
89
+ sameModule: 0,
90
+ noCallEdge: 0,
91
+ orphaned: 0,
92
+ byType: {
93
+ uses: 0,
94
+ extends: 0,
95
+ implements: 0,
96
+ },
97
+ };
98
+ for (const row of rows) {
99
+ switch (row.reason) {
100
+ case 'covered':
101
+ result.covered += row.count;
102
+ break;
103
+ case 'same_module':
104
+ result.sameModule += row.count;
105
+ break;
106
+ case 'no_call_edge':
107
+ result.noCallEdge += row.count;
108
+ break;
109
+ case 'orphaned':
110
+ result.orphaned += row.count;
111
+ break;
112
+ }
113
+ if (row.reason !== 'orphaned') {
114
+ switch (row.relationship_type) {
115
+ case 'uses':
116
+ result.byType.uses += row.count;
117
+ break;
118
+ case 'extends':
119
+ result.byType.extends += row.count;
120
+ break;
121
+ case 'implements':
122
+ result.byType.implements += row.count;
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ return result;
128
+ }
129
+ /**
130
+ * Get cross-module relationship pairs that have no corresponding interaction.
131
+ */
132
+ getUncoveredModulePairs() {
133
+ ensureInteractionsTables(this.db);
134
+ ensureModulesTables(this.db);
135
+ const stmt = this.db.prepare(`
136
+ SELECT DISTINCT mm1.module_id as fromModuleId, mm2.module_id as toModuleId,
137
+ m1.full_path as fromPath, m2.full_path as toPath,
138
+ COUNT(*) as relationshipCount
139
+ FROM relationship_annotations ra
140
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
141
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
142
+ JOIN modules m1 ON mm1.module_id = m1.id
143
+ JOIN modules m2 ON mm2.module_id = m2.id
144
+ WHERE mm1.module_id != mm2.module_id
145
+ AND NOT EXISTS (
146
+ SELECT 1 FROM interactions i
147
+ WHERE i.from_module_id = mm1.module_id AND i.to_module_id = mm2.module_id
148
+ )
149
+ GROUP BY mm1.module_id, mm2.module_id
150
+ ORDER BY relationshipCount DESC
151
+ `);
152
+ return stmt.all();
153
+ }
154
+ /**
155
+ * Create interaction edges for inheritance relationships (extends/implements).
156
+ */
157
+ syncInheritanceInteractions() {
158
+ ensureInteractionsTables(this.db);
159
+ ensureModulesTables(this.db);
160
+ const stmt = this.db.prepare(`
161
+ INSERT OR IGNORE INTO interactions (from_module_id, to_module_id, direction, weight, pattern)
162
+ SELECT DISTINCT
163
+ mm1.module_id,
164
+ mm2.module_id,
165
+ 'uni',
166
+ 1,
167
+ 'inheritance'
168
+ FROM relationship_annotations ra
169
+ JOIN module_members mm1 ON ra.from_definition_id = mm1.definition_id
170
+ JOIN module_members mm2 ON ra.to_definition_id = mm2.definition_id
171
+ WHERE ra.relationship_type IN ('extends', 'implements')
172
+ AND mm1.module_id != mm2.module_id
173
+ AND NOT EXISTS (
174
+ SELECT 1 FROM interactions i
175
+ WHERE i.from_module_id = mm1.module_id
176
+ AND i.to_module_id = mm2.module_id
177
+ )
178
+ `);
179
+ const result = stmt.run();
180
+ return { created: result.changes };
181
+ }
182
+ /**
183
+ * Validate all llm-inferred interactions.
184
+ */
185
+ validateInferredInteractions(interactionRepo, isSameProcess) {
186
+ ensureInteractionsTables(this.db);
187
+ ensureModulesTables(this.db);
188
+ const inferred = interactionRepo.getBySource('llm-inferred');
189
+ const issues = [];
190
+ for (const interaction of inferred) {
191
+ const reverseInteraction = interactionRepo.getByModules(interaction.toModuleId, interaction.fromModuleId);
192
+ if (reverseInteraction && reverseInteraction.source === 'ast') {
193
+ issues.push({
194
+ interactionId: interaction.id,
195
+ fromModuleId: interaction.fromModuleId,
196
+ toModuleId: interaction.toModuleId,
197
+ fromPath: interaction.fromModulePath,
198
+ toPath: interaction.toModulePath,
199
+ issue: `REVERSED: AST interaction exists in reverse direction (${interaction.toModulePath} → ${interaction.fromModulePath})`,
200
+ });
201
+ continue;
202
+ }
203
+ const sameProcess = isSameProcess ? isSameProcess(interaction.fromModuleId, interaction.toModuleId) : true;
204
+ if (!sameProcess)
205
+ continue;
206
+ const hasImports = interactionRepo.hasModuleImportPath(interaction.fromModuleId, interaction.toModuleId);
207
+ if (!hasImports) {
208
+ const hasReverseImports = interactionRepo.hasModuleImportPath(interaction.toModuleId, interaction.fromModuleId);
209
+ if (hasReverseImports) {
210
+ issues.push({
211
+ interactionId: interaction.id,
212
+ fromModuleId: interaction.fromModuleId,
213
+ toModuleId: interaction.toModuleId,
214
+ fromPath: interaction.fromModulePath,
215
+ toPath: interaction.toModulePath,
216
+ issue: `DIRECTION_CONFUSED: No forward imports, but reverse imports exist (${interaction.toModulePath} imports from ${interaction.fromModulePath})`,
217
+ });
218
+ }
219
+ else {
220
+ issues.push({
221
+ interactionId: interaction.id,
222
+ fromModuleId: interaction.fromModuleId,
223
+ toModuleId: interaction.toModuleId,
224
+ fromPath: interaction.fromModulePath,
225
+ toPath: interaction.toModulePath,
226
+ issue: 'NO_IMPORTS: No import path exists in either direction between these modules',
227
+ });
228
+ }
229
+ }
230
+ }
231
+ return issues;
232
+ }
233
+ /**
234
+ * Get detailed relationship annotation rows between two modules' members.
235
+ */
236
+ getRelationshipDetailsForModulePair(fromModuleId, toModuleId) {
237
+ ensureModulesTables(this.db);
238
+ const stmt = this.db.prepare(`
239
+ SELECT
240
+ from_d.name as fromName,
241
+ from_d.kind as fromKind,
242
+ to_d.name as toName,
243
+ to_d.kind as toKind,
244
+ ra.semantic,
245
+ ra.relationship_type as relationshipType
246
+ FROM relationship_annotations ra
247
+ JOIN module_members from_mm ON ra.from_definition_id = from_mm.definition_id
248
+ JOIN module_members to_mm ON ra.to_definition_id = to_mm.definition_id
249
+ JOIN definitions from_d ON ra.from_definition_id = from_d.id
250
+ JOIN definitions to_d ON ra.to_definition_id = to_d.id
251
+ WHERE from_mm.module_id = ? AND to_mm.module_id = ?
252
+ ORDER BY ra.relationship_type, from_d.name
253
+ `);
254
+ return stmt.all(fromModuleId, toModuleId);
255
+ }
256
+ /**
257
+ * Check if an interaction exists in the reverse direction (toModuleId → fromModuleId).
258
+ */
259
+ hasReverseInteraction(fromModuleId, toModuleId) {
260
+ ensureInteractionsTables(this.db);
261
+ const stmt = this.db.prepare(`
262
+ SELECT EXISTS (
263
+ SELECT 1 FROM interactions
264
+ WHERE from_module_id = ? AND to_module_id = ?
265
+ ) as has_reverse
266
+ `);
267
+ const row = stmt.get(toModuleId, fromModuleId);
268
+ return row.has_reverse === 1;
269
+ }
270
+ /**
271
+ * Detect fan-in anomalies: modules with unusually high llm-inferred inbound
272
+ * connections but zero AST inbound connections (hallucination pattern).
273
+ *
274
+ * Uses Tukey's far-outlier fence (Q3 + 3*IQR) with an absolute minimum of 8.
275
+ */
276
+ detectFanInAnomalies() {
277
+ ensureInteractionsTables(this.db);
278
+ ensureModulesTables(this.db);
279
+ // Query llm-inferred fan-in per target module
280
+ const llmFanInRows = this.db
281
+ .prepare(`
282
+ SELECT to_module_id as moduleId, COUNT(*) as fanIn
283
+ FROM interactions
284
+ WHERE source = 'llm-inferred'
285
+ GROUP BY to_module_id
286
+ `)
287
+ .all();
288
+ if (llmFanInRows.length === 0)
289
+ return [];
290
+ // Query AST fan-in per target module
291
+ const astFanInRows = this.db
292
+ .prepare(`
293
+ SELECT to_module_id as moduleId, COUNT(*) as fanIn
294
+ FROM interactions
295
+ WHERE source IN ('ast', 'ast-import')
296
+ GROUP BY to_module_id
297
+ `)
298
+ .all();
299
+ const astFanInMap = new Map(astFanInRows.map((r) => [r.moduleId, r.fanIn]));
300
+ // Compute distribution statistics for llm fan-in values
301
+ const fanInValues = llmFanInRows.map((r) => r.fanIn).sort((a, b) => a - b);
302
+ const n = fanInValues.length;
303
+ const q1 = fanInValues[Math.floor(n * 0.25)];
304
+ const q3 = fanInValues[Math.floor(n * 0.75)];
305
+ const iqr = q3 - q1;
306
+ const farFence = q3 + 3 * iqr;
307
+ // Get module paths for reporting
308
+ const modulePathRows = this.db
309
+ .prepare(`
310
+ SELECT id, full_path as fullPath FROM modules
311
+ `)
312
+ .all();
313
+ const modulePathMap = new Map(modulePathRows.map((r) => [r.id, r.fullPath]));
314
+ const anomalies = [];
315
+ for (const row of llmFanInRows) {
316
+ const astFanIn = astFanInMap.get(row.moduleId) ?? 0;
317
+ if (row.fanIn > farFence && row.fanIn >= 8 && astFanIn === 0) {
318
+ anomalies.push({
319
+ moduleId: row.moduleId,
320
+ modulePath: modulePathMap.get(row.moduleId) ?? `module#${row.moduleId}`,
321
+ llmFanIn: row.fanIn,
322
+ astFanIn,
323
+ });
324
+ }
325
+ }
326
+ return anomalies;
327
+ }
328
+ /**
329
+ * Get symbols from relationship annotations for a module pair.
330
+ */
331
+ getRelationshipSymbolsForPair(fromModuleId, toModuleId) {
332
+ const details = this.getRelationshipDetailsForModulePair(fromModuleId, toModuleId);
333
+ const symbols = new Set();
334
+ for (const d of details) {
335
+ symbols.add(d.toName);
336
+ }
337
+ return Array.from(symbols);
338
+ }
339
+ }
340
+ //# sourceMappingURL=interaction-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-analysis.js","sourceRoot":"","sources":["../../../src/db/repositories/interaction-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { CallGraphEdge, Interaction, InteractionSource, InteractionWithPaths } from '../schema.js';
3
+ export interface InteractionInsertOptions {
4
+ direction?: 'uni' | 'bi';
5
+ weight?: number;
6
+ pattern?: 'utility' | 'business' | 'test-internal';
7
+ symbols?: string[];
8
+ semantic?: string;
9
+ source?: InteractionSource;
10
+ confidence?: 'high' | 'medium';
11
+ }
12
+ export interface InteractionUpdateOptions {
13
+ direction?: 'uni' | 'bi';
14
+ pattern?: 'utility' | 'business' | 'test-internal';
15
+ symbols?: string[];
16
+ semantic?: string;
17
+ }
18
+ export interface InteractionStats {
19
+ totalCount: number;
20
+ businessCount: number;
21
+ utilityCount: number;
22
+ biDirectionalCount: number;
23
+ }
24
+ /**
25
+ * Repository for interaction (module-to-module edge) operations.
26
+ */
27
+ export declare class InteractionRepository {
28
+ private db;
29
+ constructor(db: Database.Database);
30
+ /**
31
+ * Insert a new interaction.
32
+ * Throws if an interaction between these modules already exists.
33
+ */
34
+ insert(fromModuleId: number, toModuleId: number, options?: InteractionInsertOptions): number;
35
+ /**
36
+ * Upsert an interaction (insert or update on conflict).
37
+ */
38
+ upsert(fromModuleId: number, toModuleId: number, options?: InteractionInsertOptions): number;
39
+ /**
40
+ * Get interaction by ID.
41
+ */
42
+ getById(id: number): Interaction | null;
43
+ /**
44
+ * Get interaction by module pair.
45
+ */
46
+ getByModules(fromModuleId: number, toModuleId: number): Interaction | null;
47
+ /**
48
+ * Get all interactions with module paths.
49
+ */
50
+ getAll(): InteractionWithPaths[];
51
+ /**
52
+ * Get interactions by pattern.
53
+ */
54
+ getByPattern(pattern: 'utility' | 'business'): InteractionWithPaths[];
55
+ /**
56
+ * Get interactions from a specific module.
57
+ */
58
+ getFromModule(moduleId: number): InteractionWithPaths[];
59
+ /**
60
+ * Get interactions to a specific module.
61
+ */
62
+ getToModule(moduleId: number): InteractionWithPaths[];
63
+ /**
64
+ * Update an interaction.
65
+ */
66
+ update(id: number, updates: InteractionUpdateOptions): boolean;
67
+ /**
68
+ * Delete an interaction.
69
+ */
70
+ delete(id: number): boolean;
71
+ /**
72
+ * Delete all interactions.
73
+ */
74
+ clear(): number;
75
+ /**
76
+ * Get count of interactions.
77
+ */
78
+ getCount(): number;
79
+ /**
80
+ * Get interaction statistics.
81
+ */
82
+ getStats(): InteractionStats;
83
+ /**
84
+ * Get interactions by source type.
85
+ */
86
+ getBySource(source: InteractionSource): InteractionWithPaths[];
87
+ /**
88
+ * Get count of interactions by source type.
89
+ */
90
+ getCountBySource(source: InteractionSource): number;
91
+ /**
92
+ * Remove all llm-inferred interactions targeting a specific module.
93
+ * Used by fan-in anomaly detection to bulk-remove hallucinated connections.
94
+ */
95
+ removeInferredToModule(targetModuleId: number): number;
96
+ /**
97
+ * Get the definition-level call graph (not aggregated to modules).
98
+ * Returns edges from caller definition to called definition.
99
+ */
100
+ getDefinitionCallGraph(): CallGraphEdge[];
101
+ /**
102
+ * Get the definition-level call graph as a Map for efficient lookups.
103
+ * Maps from_definition_id to array of to_definition_ids.
104
+ */
105
+ getDefinitionCallGraphMap(): Map<number, number[]>;
106
+ /**
107
+ * Get all non-type-only, internal file import edges.
108
+ * Used to build the import graph for process group detection.
109
+ */
110
+ getRuntimeImportEdges(): Array<{
111
+ fromFileId: number;
112
+ toFileId: number;
113
+ }>;
114
+ /**
115
+ * Get file-to-module mapping via module_members → definitions → files.
116
+ * Returns a Map from fileId to moduleId.
117
+ */
118
+ getFileToModuleMap(): Map<number, number>;
119
+ /**
120
+ * Get module pairs connected by imports but with no existing interaction.
121
+ * Fills the gap between call-graph detection (calls only) and the full import graph.
122
+ */
123
+ getImportOnlyModulePairs(): Array<{
124
+ fromModuleId: number;
125
+ toModuleId: number;
126
+ symbols: string[];
127
+ weight: number;
128
+ isTypeOnly: boolean;
129
+ }>;
130
+ /**
131
+ * Check if any file in fromModule imports from any file in toModule.
132
+ * Join: module_members → definitions → files → imports → files → definitions → module_members
133
+ */
134
+ hasModuleImportPath(fromModuleId: number, toModuleId: number): boolean;
135
+ /**
136
+ * Get actual symbols that fromModule imports from toModule.
137
+ * Returns symbol names and kinds for enriching prompts and deriving `symbols` field.
138
+ */
139
+ getModuleImportedSymbols(fromModuleId: number, toModuleId: number): Array<{
140
+ name: string;
141
+ kind: string;
142
+ }>;
143
+ private getCallGraphInternal;
144
+ }
145
+ //# sourceMappingURL=interaction-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-repository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/interaction-repository.ts"],"names":[],"mappings":"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"}