@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,50 @@
1
+ /**
2
+ * FlowTracer - Definition-level call graph traversal.
3
+ * Traces composite tier-1 flows from entry point definitions through the call graph,
4
+ * mapping interactions to atomic subflow references.
5
+ */
6
+ import type { InteractionWithPaths } from '../../../db/schema.js';
7
+ import type { EntryPointModuleInfo, FlowSuggestion, FlowTracingContext } from './types.js';
8
+ export declare class FlowTracer {
9
+ private readonly context;
10
+ private readonly maxDepth;
11
+ constructor(context: FlowTracingContext);
12
+ /**
13
+ * Trace composite tier-1 flows from entry point modules.
14
+ * Maps definition-derived interactions to atomic subflow references.
15
+ */
16
+ traceFlowsFromEntryPoints(entryPointModules: EntryPointModuleInfo[], atomicFlows: FlowSuggestion[]): FlowSuggestion[];
17
+ /**
18
+ * Trace a flow from a starting definition through the definition-level call graph.
19
+ * At leaf nodes (no outgoing call graph edges), bridges via LLM-inferred interactions.
20
+ */
21
+ private traceDefinitionFlow;
22
+ /**
23
+ * Derive unique interaction IDs from definition-level steps.
24
+ */
25
+ private deriveInteractionIds;
26
+ /**
27
+ * Generate a flow name from an entry point module and member.
28
+ */
29
+ private generateFlowNameFromModule;
30
+ private actionTypeToVerb;
31
+ /**
32
+ * Generate a slug from an entry point module and member.
33
+ */
34
+ private generateFlowSlugFromModule;
35
+ /**
36
+ * Infer stakeholder from entry point module context.
37
+ */
38
+ private inferStakeholderFromModule;
39
+ }
40
+ /**
41
+ * Build the flow tracing context from database data.
42
+ */
43
+ export declare function buildFlowTracingContext(definitionCallGraph: Map<number, number[]>, allModulesWithMembers: Array<{
44
+ id: number;
45
+ fullPath: string;
46
+ members: Array<{
47
+ definitionId: number;
48
+ }>;
49
+ }>, interactions: InteractionWithPaths[]): FlowTracingContext;
50
+ //# sourceMappingURL=flow-tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-tracer.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-tracer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAEV,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IAGT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;gBAEF,OAAO,EAAE,kBAAkB;IAExD;;;OAGG;IACH,yBAAyB,CACvB,iBAAiB,EAAE,oBAAoB,EAAE,EACzC,WAAW,EAAE,cAAc,EAAE,GAC5B,cAAc,EAAE;IAqDnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2F3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA4BlC,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAYnC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAC1C,qBAAqB,EAAE,KAAK,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1C,CAAC,EACF,YAAY,EAAE,oBAAoB,EAAE,GACnC,kBAAkB,CAgDpB"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * FlowTracer - Definition-level call graph traversal.
3
+ * Traces composite tier-1 flows from entry point definitions through the call graph,
4
+ * mapping interactions to atomic subflow references.
5
+ */
6
+ export class FlowTracer {
7
+ context;
8
+ maxDepth = 15;
9
+ constructor(context) {
10
+ this.context = context;
11
+ }
12
+ /**
13
+ * Trace composite tier-1 flows from entry point modules.
14
+ * Maps definition-derived interactions to atomic subflow references.
15
+ */
16
+ traceFlowsFromEntryPoints(entryPointModules, atomicFlows) {
17
+ // Build interaction-to-atomic-flow lookup
18
+ const interactionToAtomic = new Map();
19
+ for (const atomic of atomicFlows) {
20
+ for (const iId of atomic.interactionIds) {
21
+ if (!interactionToAtomic.has(iId)) {
22
+ interactionToAtomic.set(iId, atomic);
23
+ }
24
+ }
25
+ }
26
+ const flowSuggestions = [];
27
+ for (const entryPointModule of entryPointModules) {
28
+ for (const member of entryPointModule.memberDefinitions) {
29
+ const { definitionSteps, inferredSteps } = this.traceDefinitionFlow(member.id);
30
+ const derivedInteractionIds = this.deriveInteractionIds(definitionSteps);
31
+ // Map interactions to subflow references
32
+ const subflowSlugs = [];
33
+ const seen = new Set();
34
+ for (const iId of derivedInteractionIds) {
35
+ const atomic = interactionToAtomic.get(iId);
36
+ if (atomic && !seen.has(atomic.slug)) {
37
+ seen.add(atomic.slug);
38
+ subflowSlugs.push(atomic.slug);
39
+ }
40
+ }
41
+ if (definitionSteps.length > 0 || derivedInteractionIds.length > 0) {
42
+ flowSuggestions.push({
43
+ name: this.generateFlowNameFromModule(entryPointModule, member),
44
+ slug: this.generateFlowSlugFromModule(entryPointModule, member),
45
+ entryPointModuleId: entryPointModule.moduleId,
46
+ entryPointId: member.id,
47
+ entryPath: `${entryPointModule.modulePath}.${member.name}`,
48
+ stakeholder: this.inferStakeholderFromModule(entryPointModule),
49
+ description: `Flow starting from ${member.name} in ${entryPointModule.modulePath}`,
50
+ interactionIds: derivedInteractionIds,
51
+ definitionSteps,
52
+ inferredSteps,
53
+ actionType: member.actionType,
54
+ targetEntity: member.targetEntity,
55
+ tier: 1,
56
+ subflowSlugs,
57
+ });
58
+ }
59
+ }
60
+ }
61
+ return flowSuggestions;
62
+ }
63
+ /**
64
+ * Trace a flow from a starting definition through the definition-level call graph.
65
+ * At leaf nodes (no outgoing call graph edges), bridges via LLM-inferred interactions.
66
+ */
67
+ traceDefinitionFlow(startDefinitionId) {
68
+ const visited = new Set();
69
+ const visitedBridgeModules = new Set();
70
+ const steps = [];
71
+ const inferredSteps = [];
72
+ const trace = (defId, depth, lastKnownModule, isBridged = false) => {
73
+ if (depth >= this.maxDepth)
74
+ return;
75
+ if (visited.has(defId))
76
+ return;
77
+ visited.add(defId);
78
+ // When a definition was reached via bridge (inferred interaction),
79
+ // don't follow its regular call-graph edges. The bridge connects the
80
+ // boundary crossing; the target's own call graph is traced by its own
81
+ // entry-point flows. Following it here would expand the entire target
82
+ // subsystem (e.g. an Express app.use() aggregator → all controllers).
83
+ if (isBridged)
84
+ return;
85
+ const calledDefs = this.context.definitionCallGraph.get(defId) ?? [];
86
+ for (const calledDefId of calledDefs) {
87
+ const fromModule = this.context.defToModule.get(defId) ?? lastKnownModule;
88
+ const toModule = this.context.defToModule.get(calledDefId);
89
+ // Only include cross-module calls
90
+ if (fromModule && toModule && fromModule.moduleId !== toModule.moduleId) {
91
+ steps.push({
92
+ fromDefinitionId: defId,
93
+ toDefinitionId: calledDefId,
94
+ fromModuleId: fromModule.moduleId,
95
+ toModuleId: toModule.moduleId,
96
+ });
97
+ }
98
+ const nextKnownModule = this.context.defToModule.get(calledDefId) ?? fromModule;
99
+ trace(calledDefId, depth + 1, nextKnownModule);
100
+ }
101
+ // Bridge via inferred interactions at leaf nodes
102
+ if (calledDefs.length === 0) {
103
+ const leafModule = this.context.defToModule.get(defId) ?? lastKnownModule;
104
+ if (!leafModule)
105
+ return;
106
+ const leafModuleId = leafModule.moduleId;
107
+ if (visitedBridgeModules.has(leafModuleId))
108
+ return;
109
+ visitedBridgeModules.add(leafModuleId);
110
+ const inferred = this.context.inferredFromModule.get(leafModuleId);
111
+ if (!inferred)
112
+ return;
113
+ for (const interaction of inferred) {
114
+ const targetModuleId = interaction.toModuleId;
115
+ const targetDefs = this.context.moduleToDefIds.get(targetModuleId);
116
+ if (!targetDefs || targetDefs.length === 0)
117
+ continue;
118
+ // Pick representative: first unvisited, fallback first
119
+ const representative = targetDefs.find((d) => !visited.has(d)) ?? targetDefs[0];
120
+ steps.push({
121
+ fromDefinitionId: defId,
122
+ toDefinitionId: representative,
123
+ fromModuleId: leafModuleId,
124
+ toModuleId: targetModuleId,
125
+ });
126
+ inferredSteps.push({
127
+ fromModuleId: leafModuleId,
128
+ toModuleId: targetModuleId,
129
+ source: 'llm-inferred',
130
+ });
131
+ // Continue tracing from the bridge target — marked as bridged
132
+ // so we record the step but don't expand its call graph
133
+ const targetModule = this.context.defToModule.get(representative) ?? null;
134
+ trace(representative, depth + 1, targetModule, true);
135
+ }
136
+ }
137
+ };
138
+ const startModule = this.context.defToModule.get(startDefinitionId) ?? null;
139
+ trace(startDefinitionId, 0, startModule);
140
+ return { definitionSteps: steps, inferredSteps };
141
+ }
142
+ /**
143
+ * Derive unique interaction IDs from definition-level steps.
144
+ */
145
+ deriveInteractionIds(definitionSteps) {
146
+ const seenIds = new Set();
147
+ const result = [];
148
+ for (const step of definitionSteps) {
149
+ if (step.fromModuleId && step.toModuleId) {
150
+ const key = `${step.fromModuleId}->${step.toModuleId}`;
151
+ const interactionId = this.context.interactionByModulePair.get(key);
152
+ if (interactionId && !seenIds.has(interactionId)) {
153
+ seenIds.add(interactionId);
154
+ result.push(interactionId);
155
+ }
156
+ }
157
+ }
158
+ return result;
159
+ }
160
+ /**
161
+ * Generate a flow name from an entry point module and member.
162
+ */
163
+ generateFlowNameFromModule(_module, member) {
164
+ if (member.actionType && member.targetEntity) {
165
+ const actionVerb = this.actionTypeToVerb(member.actionType);
166
+ const entity = member.targetEntity.charAt(0).toUpperCase() + member.targetEntity.slice(1);
167
+ return `${actionVerb}${entity}Flow`;
168
+ }
169
+ let name = member.name;
170
+ name = name.replace(/^handle/, '');
171
+ name = name.replace(/Handler$/, '');
172
+ name = name.replace(/Controller$/, '');
173
+ name = name.replace(/^on/, '');
174
+ if (member.actionType) {
175
+ const actionVerb = this.actionTypeToVerb(member.actionType);
176
+ name = `${actionVerb}${name}`;
177
+ }
178
+ if (!name.endsWith('Flow')) {
179
+ name = `${name}Flow`;
180
+ }
181
+ return name;
182
+ }
183
+ actionTypeToVerb(actionType) {
184
+ switch (actionType) {
185
+ case 'view':
186
+ return 'View';
187
+ case 'create':
188
+ return 'Create';
189
+ case 'update':
190
+ return 'Update';
191
+ case 'delete':
192
+ return 'Delete';
193
+ case 'process':
194
+ return 'Process';
195
+ default:
196
+ return '';
197
+ }
198
+ }
199
+ /**
200
+ * Generate a slug from an entry point module and member.
201
+ */
202
+ generateFlowSlugFromModule(module, member) {
203
+ return this.generateFlowNameFromModule(module, member)
204
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
205
+ .toLowerCase();
206
+ }
207
+ /**
208
+ * Infer stakeholder from entry point module context.
209
+ */
210
+ inferStakeholderFromModule(module) {
211
+ const path = module.modulePath.toLowerCase();
212
+ if (path.includes('admin'))
213
+ return 'admin';
214
+ if (path.includes('api') || path.includes('route'))
215
+ return 'external';
216
+ if (path.includes('cron') || path.includes('job') || path.includes('worker'))
217
+ return 'system';
218
+ if (path.includes('cli') || path.includes('command'))
219
+ return 'developer';
220
+ return 'user';
221
+ }
222
+ }
223
+ /**
224
+ * Build the flow tracing context from database data.
225
+ */
226
+ export function buildFlowTracingContext(definitionCallGraph, allModulesWithMembers, interactions) {
227
+ // Build definition-to-module lookup and reverse module-to-definitions lookup
228
+ const defToModule = new Map();
229
+ const moduleToDefIds = new Map();
230
+ for (const mod of allModulesWithMembers) {
231
+ const defIds = [];
232
+ for (const member of mod.members) {
233
+ defToModule.set(member.definitionId, { moduleId: mod.id, modulePath: mod.fullPath });
234
+ defIds.push(member.definitionId);
235
+ }
236
+ if (defIds.length > 0) {
237
+ moduleToDefIds.set(mod.id, defIds);
238
+ }
239
+ }
240
+ // Build interaction lookup for module pairs
241
+ const interactionByModulePair = new Map();
242
+ for (const interaction of interactions) {
243
+ const key = `${interaction.fromModuleId}->${interaction.toModuleId}`;
244
+ interactionByModulePair.set(key, interaction.id);
245
+ }
246
+ // Build lookup for llm-inferred interactions by source module
247
+ const inferredFromModule = new Map();
248
+ for (const interaction of interactions) {
249
+ if (interaction.source === 'llm-inferred') {
250
+ const existing = inferredFromModule.get(interaction.fromModuleId) ?? [];
251
+ existing.push(interaction);
252
+ inferredFromModule.set(interaction.fromModuleId, existing);
253
+ }
254
+ }
255
+ // Build lookup for ALL interactions by source module
256
+ const allInteractionsFromModule = new Map();
257
+ for (const interaction of interactions) {
258
+ const existing = allInteractionsFromModule.get(interaction.fromModuleId) ?? [];
259
+ existing.push(interaction);
260
+ allInteractionsFromModule.set(interaction.fromModuleId, existing);
261
+ }
262
+ return {
263
+ definitionCallGraph,
264
+ defToModule,
265
+ interactionByModulePair,
266
+ inferredFromModule,
267
+ allInteractionsFromModule,
268
+ moduleToDefIds,
269
+ };
270
+ }
271
+ //# sourceMappingURL=flow-tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-tracer.js","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-tracer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * FlowValidator - Reviews generated flows for completeness and identifies missing user stories.
3
+ * Uses LLM to find gaps in flow coverage and creates corrective flows.
4
+ */
5
+ import type { Command } from '@oclif/core';
6
+ import type { IndexDatabase } from '../../../db/database.js';
7
+ import type { InteractionWithPaths } from '../../../db/schema.js';
8
+ import type { EntryPointModuleInfo, FlowSuggestion, LlmOptions } from './types.js';
9
+ interface CoverageGateFailure {
10
+ gate: string;
11
+ actual: number;
12
+ threshold: number;
13
+ details: string;
14
+ }
15
+ export declare class FlowValidator {
16
+ private readonly db;
17
+ private readonly command;
18
+ private readonly isJson;
19
+ private readonly verbose;
20
+ constructor(db: IndexDatabase, command: Command, isJson: boolean, verbose: boolean);
21
+ /**
22
+ * Validate existing flows for completeness and generate flows for missing user stories.
23
+ */
24
+ validateAndFillGaps(existingFlows: FlowSuggestion[], interactions: InteractionWithPaths[], model: string, llmOptions: LlmOptions, gateFailures?: CoverageGateFailure[], entryPointModules?: EntryPointModuleInfo[], atomicFlows?: FlowSuggestion[]): Promise<FlowSuggestion[]>;
25
+ private buildValidationSystemPrompt;
26
+ private buildValidationUserPrompt;
27
+ private parseValidatorResponse;
28
+ private findModuleByPrefix;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=flow-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-validator.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAU,MAAM,uBAAuB,CAAC;AAU1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,EAAE,EAAE,aAAa,EACjB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO;IAGnC;;OAEG;IACG,mBAAmB,CACvB,aAAa,EAAE,cAAc,EAAE,EAC/B,YAAY,EAAE,oBAAoB,EAAE,EACpC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,YAAY,CAAC,EAAE,mBAAmB,EAAE,EACpC,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,EAC1C,WAAW,CAAC,EAAE,cAAc,EAAE,GAC7B,OAAO,CAAC,cAAc,EAAE,CAAC;IAuC5B,OAAO,CAAC,2BAA2B;IA2CnC,OAAO,CAAC,yBAAyB;IAgHjC,OAAO,CAAC,sBAAsB;IAkG9B,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * FlowValidator - Reviews generated flows for completeness and identifies missing user stories.
3
+ * Uses LLM to find gaps in flow coverage and creates corrective flows.
4
+ */
5
+ import { parseRow } from '../_shared/csv-utils.js';
6
+ import { groupModulesByEntity } from '../_shared/entity-utils.js';
7
+ import { completeWithLogging, logLlmRequest, logLlmResponse, logVerbose, } from '../_shared/llm-utils.js';
8
+ export class FlowValidator {
9
+ db;
10
+ command;
11
+ isJson;
12
+ verbose;
13
+ constructor(db, command, isJson, verbose) {
14
+ this.db = db;
15
+ this.command = command;
16
+ this.isJson = isJson;
17
+ this.verbose = verbose;
18
+ }
19
+ /**
20
+ * Validate existing flows for completeness and generate flows for missing user stories.
21
+ */
22
+ async validateAndFillGaps(existingFlows, interactions, model, llmOptions, gateFailures, entryPointModules, atomicFlows) {
23
+ const modules = this.db.modules.getAll();
24
+ const moduleByPath = new Map(modules.map((m) => [m.fullPath, m]));
25
+ const coveredInteractionIds = new Set(existingFlows.flatMap((f) => f.interactionIds));
26
+ const systemPrompt = this.buildValidationSystemPrompt();
27
+ const userPrompt = this.buildValidationUserPrompt(existingFlows, interactions, modules, coveredInteractionIds, gateFailures, entryPointModules, atomicFlows);
28
+ const logOptions = {
29
+ showRequests: llmOptions.showLlmRequests,
30
+ showResponses: llmOptions.showLlmResponses,
31
+ isJson: this.isJson,
32
+ };
33
+ logLlmRequest(this.command, 'validateAndFillGaps', systemPrompt, userPrompt, logOptions);
34
+ const response = await completeWithLogging({
35
+ model,
36
+ systemPrompt,
37
+ userPrompt,
38
+ temperature: 0,
39
+ command: this.command,
40
+ isJson: this.isJson,
41
+ });
42
+ logLlmResponse(this.command, 'validateAndFillGaps', response, logOptions);
43
+ return this.parseValidatorResponse(response, interactions, moduleByPath);
44
+ }
45
+ buildValidationSystemPrompt() {
46
+ return `You are reviewing auto-detected user journey flows for completeness.
47
+
48
+ ## What You Have
49
+ 1. A list of detected flows with their entry points and steps
50
+ 2. The full module interaction graph
51
+ 3. Module descriptions
52
+ 4. Entry point definitions showing what operations actually exist in code
53
+
54
+ ## Your Task
55
+ Identify MISSING user stories — important user-facing workflows that should exist
56
+ but don't appear in the detected flows.
57
+
58
+ What to look for:
59
+ - UNCOVERED interactions in the graph that should be part of a user story
60
+ - Cross-entity side effects visible in the interaction graph (e.g., a sale flow also touching vehicle/inventory modules)
61
+ - Compositions of existing atomic flows into higher-level user stories
62
+
63
+ What NOT to do:
64
+ - Do NOT infer operations that are not visible in the interaction graph
65
+ - Do NOT propose admin CRUD flows unless admin-specific entry points are listed above
66
+ - Do NOT create flows from type/interface-only modules
67
+ - Do NOT duplicate flows that already exist — check the existing flows list carefully
68
+
69
+ ## CRITICAL CONSTRAINTS
70
+ - [AST] interactions are statically verified from source code — reliable
71
+ - [INFERRED] interactions are LLM-estimated — may not exist in actual code
72
+ - The "Entry Point Definitions" section shows what operations ACTUALLY exist
73
+ - Do NOT propose flows for operations not listed in Entry Point Definitions
74
+ - Prefer building flows from [AST] interactions when possible
75
+
76
+ ## Output Format
77
+ \`\`\`csv
78
+ flow_name,stakeholder,action_type,target_entity,interaction_chain,description
79
+ "user views dashboard","user","view","dashboard","project.frontend.screens→project.frontend.hooks→project.backend.api","Fetches stats for KPI display"
80
+ "admin registers new user","admin","process","user","project.frontend.screens→project.backend.api.controllers","Admin creates new user account"
81
+ \`\`\`
82
+
83
+ For interaction_chain: list the module path segments in order, separated by →.
84
+ Only report flows that are genuinely MISSING — do not duplicate existing flows.
85
+ Only report flows where the module interactions to support them actually EXIST in the graph.`;
86
+ }
87
+ buildValidationUserPrompt(existingFlows, interactions, modules, coveredInteractionIds, gateFailures, entryPointModules, atomicFlows) {
88
+ const parts = [];
89
+ // Existing flows summary
90
+ parts.push(`## Existing Flows (${existingFlows.length})`);
91
+ for (const f of existingFlows) {
92
+ const stepCount = f.interactionIds.length;
93
+ const isGap = f.entryPointModuleId === null;
94
+ parts.push(`- ${f.name} [${f.stakeholder}/${f.actionType ?? 'unknown'}/${f.targetEntity ?? 'unknown'}] (${stepCount} steps${isGap ? ', gap/internal' : ''})`);
95
+ }
96
+ parts.push('');
97
+ // Modules grouped by domain
98
+ parts.push('## Modules by Domain');
99
+ const entityGroups = groupModulesByEntity(modules);
100
+ for (const [entity, mods] of entityGroups) {
101
+ if (entity === '_generic') {
102
+ parts.push('### Generic/Shared');
103
+ }
104
+ else {
105
+ parts.push(`### ${entity}`);
106
+ }
107
+ for (const m of mods) {
108
+ parts.push(`- ${m.fullPath}: ${m.name}${m.description ? ` - ${m.description}` : ''}`);
109
+ }
110
+ parts.push('');
111
+ }
112
+ // Entry point definitions section
113
+ if (entryPointModules && entryPointModules.length > 0) {
114
+ parts.push('## Entry Point Definitions (operations that exist in code)');
115
+ parts.push('ONLY create flows for operations listed below. Do NOT invent operations.');
116
+ parts.push('');
117
+ for (const ep of entryPointModules) {
118
+ const defs = ep.memberDefinitions
119
+ .map((d) => {
120
+ const action = d.actionType ?? 'unclassified';
121
+ const entity = d.targetEntity ?? '?';
122
+ return ` - ${d.name} [${action}/${entity}]`;
123
+ })
124
+ .join('\n');
125
+ parts.push(`### ${ep.modulePath}`);
126
+ parts.push(defs);
127
+ parts.push('');
128
+ }
129
+ }
130
+ // Available atomic flows
131
+ if (atomicFlows && atomicFlows.length > 0) {
132
+ parts.push('## Available Atomic Flows');
133
+ parts.push('You can compose flows by referencing these atomic building blocks:');
134
+ for (const af of atomicFlows) {
135
+ const interactionCount = af.interactionIds.length;
136
+ parts.push(`- ${af.slug} (${interactionCount} interaction${interactionCount !== 1 ? 's' : ''}): ${af.description}`);
137
+ }
138
+ parts.push('');
139
+ }
140
+ // Interaction graph summary with coverage annotations
141
+ const uncoveredInteractions = interactions.filter((i) => !coveredInteractionIds.has(i.id));
142
+ const coveredCount = interactions.length - uncoveredInteractions.length;
143
+ parts.push(`## Interactions (${interactions.length} total, ${coveredCount} covered, ${uncoveredInteractions.length} uncovered)`);
144
+ for (const i of interactions) {
145
+ const coverTag = coveredInteractionIds.has(i.id) ? '[COVERED]' : '[UNCOVERED]';
146
+ const srcTag = i.source === 'llm-inferred' ? '[INFERRED]' : '[AST]';
147
+ parts.push(`- ${coverTag} ${srcTag} ${i.fromModulePath} → ${i.toModulePath}${i.semantic ? `: ${i.semantic}` : ''}`);
148
+ }
149
+ parts.push('');
150
+ // Priority section: uncovered interactions only
151
+ if (uncoveredInteractions.length > 0) {
152
+ parts.push('## Uncovered Interactions — PRIORITY');
153
+ parts.push('These interactions are NOT yet covered by any flow. Create flows that include them:');
154
+ for (const i of uncoveredInteractions) {
155
+ const srcTag = i.source === 'llm-inferred' ? '[INFERRED]' : '[AST]';
156
+ parts.push(`- ${srcTag} ${i.fromModulePath} → ${i.toModulePath}${i.semantic ? `: ${i.semantic}` : ''}`);
157
+ }
158
+ parts.push('');
159
+ }
160
+ // Gate failure context for retries
161
+ if (gateFailures && gateFailures.length > 0) {
162
+ parts.push('## Previous Attempt Results');
163
+ parts.push('The following coverage gaps remain:');
164
+ for (const f of gateFailures) {
165
+ parts.push(`- ${f.gate}: ${f.details}`);
166
+ }
167
+ parts.push('');
168
+ parts.push('Focus on creating flows that address these specific gaps.');
169
+ parts.push('');
170
+ }
171
+ parts.push('Identify MISSING user stories. Only report flows supported by existing interactions.');
172
+ return parts.join('\n');
173
+ }
174
+ parseValidatorResponse(response, interactions, moduleByPath) {
175
+ const results = [];
176
+ const csvMatch = response.match(/```csv\n([\s\S]*?)\n```/) || response.match(/```\n([\s\S]*?)\n```/);
177
+ const csvContent = csvMatch ? csvMatch[1] : response;
178
+ const lines = csvContent.split('\n').filter((l) => l.trim() && !l.startsWith('flow_name'));
179
+ // Build interaction lookup by module pair
180
+ const interactionByPair = new Map();
181
+ for (const i of interactions) {
182
+ interactionByPair.set(`${i.fromModuleId}->${i.toModuleId}`, i);
183
+ }
184
+ for (const line of lines) {
185
+ const fields = parseRow(line);
186
+ if (!fields || fields.length < 6)
187
+ continue;
188
+ const [flowName, stakeholder, actionType, targetEntity, interactionChain, description] = fields;
189
+ // Parse interaction chain (module paths separated by →)
190
+ const chainPaths = interactionChain
191
+ .split('→')
192
+ .map((p) => p.trim())
193
+ .filter((p) => p.length > 0);
194
+ if (chainPaths.length < 2)
195
+ continue;
196
+ // Resolve module paths and find matching interactions
197
+ const resolvedModules = [];
198
+ for (const path of chainPaths) {
199
+ // Try exact match first, then prefix match
200
+ const mod = moduleByPath.get(path) ?? this.findModuleByPrefix(path, moduleByPath);
201
+ if (mod) {
202
+ resolvedModules.push(mod);
203
+ }
204
+ }
205
+ if (resolvedModules.length < 2)
206
+ continue;
207
+ // Find interaction IDs for consecutive module pairs
208
+ const interactionIds = [];
209
+ for (let i = 0; i < resolvedModules.length - 1; i++) {
210
+ const from = resolvedModules[i];
211
+ const to = resolvedModules[i + 1];
212
+ const interaction = interactionByPair.get(`${from.id}->${to.id}`);
213
+ if (interaction) {
214
+ interactionIds.push(interaction.id);
215
+ }
216
+ }
217
+ if (interactionIds.length === 0)
218
+ continue;
219
+ const validStakeholders = ['user', 'admin', 'system', 'developer', 'external'];
220
+ const parsedStakeholder = validStakeholders.includes(stakeholder.trim().toLowerCase())
221
+ ? stakeholder.trim().toLowerCase()
222
+ : 'user';
223
+ const validActions = ['view', 'create', 'update', 'delete', 'process'];
224
+ const parsedAction = validActions.includes(actionType.trim().toLowerCase())
225
+ ? actionType.trim().toLowerCase()
226
+ : null;
227
+ const cleanName = flowName.replace(/"/g, '').trim();
228
+ const slug = cleanName
229
+ .toLowerCase()
230
+ .replace(/[^a-z0-9]+/g, '-')
231
+ .replace(/^-|-$/g, '');
232
+ results.push({
233
+ name: cleanName,
234
+ slug,
235
+ entryPointModuleId: resolvedModules[0].id,
236
+ entryPointId: null,
237
+ entryPath: resolvedModules[0].fullPath,
238
+ stakeholder: parsedStakeholder,
239
+ description: description.replace(/"/g, '').trim(),
240
+ interactionIds,
241
+ definitionSteps: [],
242
+ inferredSteps: [],
243
+ actionType: parsedAction,
244
+ targetEntity: targetEntity.replace(/"/g, '').trim() || null,
245
+ tier: 1,
246
+ subflowSlugs: [],
247
+ });
248
+ }
249
+ logVerbose(this.command, ` Validator identified ${results.length} missing flows`, this.verbose, this.isJson);
250
+ return results;
251
+ }
252
+ findModuleByPrefix(path, moduleByPath) {
253
+ // Try to find a module whose path ends with the given path segment
254
+ for (const [fullPath, mod] of moduleByPath) {
255
+ if (fullPath.endsWith(path) || fullPath.endsWith(`.${path}`)) {
256
+ return mod;
257
+ }
258
+ }
259
+ return undefined;
260
+ }
261
+ }
262
+ //# sourceMappingURL=flow-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-validator.js","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-validator.ts"],"names":[],"mappings":"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"}