@yasserkhanorg/impact-gate 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/LICENSE +168 -0
  2. package/README.md +520 -0
  3. package/dist/adapters/cypress.d.ts +10 -0
  4. package/dist/adapters/cypress.d.ts.map +1 -0
  5. package/dist/adapters/cypress.js +86 -0
  6. package/dist/adapters/framework_adapter.d.ts +41 -0
  7. package/dist/adapters/framework_adapter.d.ts.map +1 -0
  8. package/dist/adapters/framework_adapter.js +152 -0
  9. package/dist/adapters/playwright.d.ts +10 -0
  10. package/dist/adapters/playwright.d.ts.map +1 -0
  11. package/dist/adapters/playwright.js +86 -0
  12. package/dist/adapters/pytest.d.ts +10 -0
  13. package/dist/adapters/pytest.d.ts.map +1 -0
  14. package/dist/adapters/pytest.js +96 -0
  15. package/dist/adapters/supertest.d.ts +12 -0
  16. package/dist/adapters/supertest.d.ts.map +1 -0
  17. package/dist/adapters/supertest.js +85 -0
  18. package/dist/agent/api_catalog.d.ts +11 -0
  19. package/dist/agent/api_catalog.d.ts.map +1 -0
  20. package/dist/agent/api_catalog.js +210 -0
  21. package/dist/agent/config.d.ts +193 -0
  22. package/dist/agent/config.d.ts.map +1 -0
  23. package/dist/agent/config.js +875 -0
  24. package/dist/agent/feedback.d.ts +91 -0
  25. package/dist/agent/feedback.d.ts.map +1 -0
  26. package/dist/agent/feedback.js +323 -0
  27. package/dist/agent/git.d.ts +19 -0
  28. package/dist/agent/git.d.ts.map +1 -0
  29. package/dist/agent/git.js +257 -0
  30. package/dist/agent/handoff.d.ts +22 -0
  31. package/dist/agent/handoff.d.ts.map +1 -0
  32. package/dist/agent/handoff.js +180 -0
  33. package/dist/agent/llm_agents_flow.d.ts +15 -0
  34. package/dist/agent/llm_agents_flow.d.ts.map +1 -0
  35. package/dist/agent/llm_agents_flow.js +434 -0
  36. package/dist/agent/native_flow.d.ts +6 -0
  37. package/dist/agent/native_flow.d.ts.map +1 -0
  38. package/dist/agent/native_flow.js +179 -0
  39. package/dist/agent/pipeline.d.ts +7 -0
  40. package/dist/agent/pipeline.d.ts.map +1 -0
  41. package/dist/agent/pipeline.js +260 -0
  42. package/dist/agent/pipeline_types.d.ts +54 -0
  43. package/dist/agent/pipeline_types.d.ts.map +1 -0
  44. package/dist/agent/pipeline_types.js +4 -0
  45. package/dist/agent/pipeline_utils.d.ts +12 -0
  46. package/dist/agent/pipeline_utils.d.ts.map +1 -0
  47. package/dist/agent/pipeline_utils.js +156 -0
  48. package/dist/agent/plan.d.ts +170 -0
  49. package/dist/agent/plan.d.ts.map +1 -0
  50. package/dist/agent/plan.js +86 -0
  51. package/dist/agent/playwright_report.d.ts +8 -0
  52. package/dist/agent/playwright_report.d.ts.map +1 -0
  53. package/dist/agent/playwright_report.js +126 -0
  54. package/dist/agent/process_runner.d.ts +10 -0
  55. package/dist/agent/process_runner.d.ts.map +1 -0
  56. package/dist/agent/process_runner.js +92 -0
  57. package/dist/agent/spec_generator.d.ts +5 -0
  58. package/dist/agent/spec_generator.d.ts.map +1 -0
  59. package/dist/agent/spec_generator.js +253 -0
  60. package/dist/agent/test_path.d.ts +2 -0
  61. package/dist/agent/test_path.d.ts.map +1 -0
  62. package/dist/agent/test_path.js +23 -0
  63. package/dist/agent/traceability_capture.d.ts +18 -0
  64. package/dist/agent/traceability_capture.d.ts.map +1 -0
  65. package/dist/agent/traceability_capture.js +313 -0
  66. package/dist/agent/traceability_ingest.d.ts +21 -0
  67. package/dist/agent/traceability_ingest.d.ts.map +1 -0
  68. package/dist/agent/traceability_ingest.js +237 -0
  69. package/dist/agent/types.d.ts +42 -0
  70. package/dist/agent/types.d.ts.map +1 -0
  71. package/dist/agent/types.js +4 -0
  72. package/dist/agent/utils.d.ts +13 -0
  73. package/dist/agent/utils.d.ts.map +1 -0
  74. package/dist/agent/utils.js +152 -0
  75. package/dist/agent/validation_runner.d.ts +5 -0
  76. package/dist/agent/validation_runner.d.ts.map +1 -0
  77. package/dist/agent/validation_runner.js +77 -0
  78. package/dist/agentic/fix_loop.d.ts +26 -0
  79. package/dist/agentic/fix_loop.d.ts.map +1 -0
  80. package/dist/agentic/fix_loop.js +96 -0
  81. package/dist/agentic/playwright_runner.d.ts +43 -0
  82. package/dist/agentic/playwright_runner.d.ts.map +1 -0
  83. package/dist/agentic/playwright_runner.js +165 -0
  84. package/dist/agentic/runner.d.ts +27 -0
  85. package/dist/agentic/runner.d.ts.map +1 -0
  86. package/dist/agentic/runner.js +210 -0
  87. package/dist/agentic/types.d.ts +62 -0
  88. package/dist/agentic/types.d.ts.map +1 -0
  89. package/dist/agentic/types.js +4 -0
  90. package/dist/agents/coverage-evaluator.d.ts +8 -0
  91. package/dist/agents/coverage-evaluator.d.ts.map +1 -0
  92. package/dist/agents/coverage-evaluator.js +41 -0
  93. package/dist/agents/cross-impact.d.ts +13 -0
  94. package/dist/agents/cross-impact.d.ts.map +1 -0
  95. package/dist/agents/cross-impact.js +140 -0
  96. package/dist/agents/executor.d.ts +8 -0
  97. package/dist/agents/executor.d.ts.map +1 -0
  98. package/dist/agents/executor.js +75 -0
  99. package/dist/agents/explorer.d.ts +12 -0
  100. package/dist/agents/explorer.d.ts.map +1 -0
  101. package/dist/agents/explorer.js +43 -0
  102. package/dist/agents/generator.d.ts +8 -0
  103. package/dist/agents/generator.d.ts.map +1 -0
  104. package/dist/agents/generator.js +77 -0
  105. package/dist/agents/healer.d.ts +8 -0
  106. package/dist/agents/healer.d.ts.map +1 -0
  107. package/dist/agents/healer.js +31 -0
  108. package/dist/agents/impact-analyst.d.ts +8 -0
  109. package/dist/agents/impact-analyst.d.ts.map +1 -0
  110. package/dist/agents/impact-analyst.js +38 -0
  111. package/dist/agents/regression-advisor.d.ts +8 -0
  112. package/dist/agents/regression-advisor.d.ts.map +1 -0
  113. package/dist/agents/regression-advisor.js +116 -0
  114. package/dist/agents/strategist.d.ts +9 -0
  115. package/dist/agents/strategist.d.ts.map +1 -0
  116. package/dist/agents/strategist.js +92 -0
  117. package/dist/agents/test-designer.d.ts +8 -0
  118. package/dist/agents/test-designer.d.ts.map +1 -0
  119. package/dist/agents/test-designer.js +111 -0
  120. package/dist/anthropic_provider.d.ts +65 -0
  121. package/dist/anthropic_provider.d.ts.map +1 -0
  122. package/dist/anthropic_provider.js +334 -0
  123. package/dist/api.d.ts +48 -0
  124. package/dist/api.d.ts.map +1 -0
  125. package/dist/api.js +151 -0
  126. package/dist/base_provider.d.ts +109 -0
  127. package/dist/base_provider.d.ts.map +1 -0
  128. package/dist/base_provider.js +203 -0
  129. package/dist/budget_ledger.d.ts +28 -0
  130. package/dist/budget_ledger.d.ts.map +1 -0
  131. package/dist/budget_ledger.js +62 -0
  132. package/dist/cache/cached_provider.d.ts +49 -0
  133. package/dist/cache/cached_provider.d.ts.map +1 -0
  134. package/dist/cache/cached_provider.js +91 -0
  135. package/dist/cache/response_cache.d.ts +79 -0
  136. package/dist/cache/response_cache.d.ts.map +1 -0
  137. package/dist/cache/response_cache.js +177 -0
  138. package/dist/cli/commands/analyze.d.ts +3 -0
  139. package/dist/cli/commands/analyze.d.ts.map +1 -0
  140. package/dist/cli/commands/analyze.js +77 -0
  141. package/dist/cli/commands/bootstrap.d.ts +3 -0
  142. package/dist/cli/commands/bootstrap.d.ts.map +1 -0
  143. package/dist/cli/commands/bootstrap.js +109 -0
  144. package/dist/cli/commands/cost_report.d.ts +3 -0
  145. package/dist/cli/commands/cost_report.d.ts.map +1 -0
  146. package/dist/cli/commands/cost_report.js +115 -0
  147. package/dist/cli/commands/crew.d.ts +3 -0
  148. package/dist/cli/commands/crew.d.ts.map +1 -0
  149. package/dist/cli/commands/crew.js +255 -0
  150. package/dist/cli/commands/feedback.d.ts +3 -0
  151. package/dist/cli/commands/feedback.d.ts.map +1 -0
  152. package/dist/cli/commands/feedback.js +39 -0
  153. package/dist/cli/commands/finalize.d.ts +3 -0
  154. package/dist/cli/commands/finalize.d.ts.map +1 -0
  155. package/dist/cli/commands/finalize.js +41 -0
  156. package/dist/cli/commands/gate.d.ts +3 -0
  157. package/dist/cli/commands/gate.d.ts.map +1 -0
  158. package/dist/cli/commands/gate.js +89 -0
  159. package/dist/cli/commands/generate.d.ts +4 -0
  160. package/dist/cli/commands/generate.d.ts.map +1 -0
  161. package/dist/cli/commands/generate.js +108 -0
  162. package/dist/cli/commands/heal.d.ts +3 -0
  163. package/dist/cli/commands/heal.d.ts.map +1 -0
  164. package/dist/cli/commands/heal.js +60 -0
  165. package/dist/cli/commands/impact.d.ts +4 -0
  166. package/dist/cli/commands/impact.d.ts.map +1 -0
  167. package/dist/cli/commands/impact.js +33 -0
  168. package/dist/cli/commands/init.d.ts +2 -0
  169. package/dist/cli/commands/init.d.ts.map +1 -0
  170. package/dist/cli/commands/init.js +169 -0
  171. package/dist/cli/commands/llm_health.d.ts +2 -0
  172. package/dist/cli/commands/llm_health.d.ts.map +1 -0
  173. package/dist/cli/commands/llm_health.js +22 -0
  174. package/dist/cli/commands/plan.d.ts +4 -0
  175. package/dist/cli/commands/plan.d.ts.map +1 -0
  176. package/dist/cli/commands/plan.js +120 -0
  177. package/dist/cli/commands/plan_crew.d.ts +17 -0
  178. package/dist/cli/commands/plan_crew.d.ts.map +1 -0
  179. package/dist/cli/commands/plan_crew.js +316 -0
  180. package/dist/cli/commands/traceability.d.ts +4 -0
  181. package/dist/cli/commands/traceability.d.ts.map +1 -0
  182. package/dist/cli/commands/traceability.js +77 -0
  183. package/dist/cli/commands/train.d.ts +3 -0
  184. package/dist/cli/commands/train.d.ts.map +1 -0
  185. package/dist/cli/commands/train.js +391 -0
  186. package/dist/cli/defaults.d.ts +35 -0
  187. package/dist/cli/defaults.d.ts.map +1 -0
  188. package/dist/cli/defaults.js +172 -0
  189. package/dist/cli/errors.d.ts +27 -0
  190. package/dist/cli/errors.d.ts.map +1 -0
  191. package/dist/cli/errors.js +57 -0
  192. package/dist/cli/parse_args.d.ts +6 -0
  193. package/dist/cli/parse_args.d.ts.map +1 -0
  194. package/dist/cli/parse_args.js +257 -0
  195. package/dist/cli/types.d.ts +87 -0
  196. package/dist/cli/types.d.ts.map +1 -0
  197. package/dist/cli/types.js +4 -0
  198. package/dist/cli/usage.d.ts +2 -0
  199. package/dist/cli/usage.d.ts.map +1 -0
  200. package/dist/cli/usage.js +109 -0
  201. package/dist/cli.d.ts +3 -0
  202. package/dist/cli.d.ts.map +1 -0
  203. package/dist/cli.js +194 -0
  204. package/dist/crew/context.d.ts +55 -0
  205. package/dist/crew/context.d.ts.map +1 -0
  206. package/dist/crew/context.js +36 -0
  207. package/dist/crew/orchestrator.d.ts +50 -0
  208. package/dist/crew/orchestrator.d.ts.map +1 -0
  209. package/dist/crew/orchestrator.js +329 -0
  210. package/dist/crew/protocol.d.ts +46 -0
  211. package/dist/crew/protocol.d.ts.map +1 -0
  212. package/dist/crew/protocol.js +4 -0
  213. package/dist/crew/provider.d.ts +17 -0
  214. package/dist/crew/provider.d.ts.map +1 -0
  215. package/dist/crew/provider.js +36 -0
  216. package/dist/crew/sanitize.d.ts +3 -0
  217. package/dist/crew/sanitize.d.ts.map +1 -0
  218. package/dist/crew/sanitize.js +31 -0
  219. package/dist/crew/types.d.ts +52 -0
  220. package/dist/crew/types.d.ts.map +1 -0
  221. package/dist/crew/types.js +4 -0
  222. package/dist/crew/workflows.d.ts +52 -0
  223. package/dist/crew/workflows.d.ts.map +1 -0
  224. package/dist/crew/workflows.js +36 -0
  225. package/dist/custom_provider.d.ts +20 -0
  226. package/dist/custom_provider.d.ts.map +1 -0
  227. package/dist/custom_provider.js +277 -0
  228. package/dist/engine/ai_enrichment.d.ts +44 -0
  229. package/dist/engine/ai_enrichment.d.ts.map +1 -0
  230. package/dist/engine/ai_enrichment.js +267 -0
  231. package/dist/engine/diff_loader.d.ts +11 -0
  232. package/dist/engine/diff_loader.d.ts.map +1 -0
  233. package/dist/engine/diff_loader.js +63 -0
  234. package/dist/engine/impact_engine.d.ts +72 -0
  235. package/dist/engine/impact_engine.d.ts.map +1 -0
  236. package/dist/engine/impact_engine.js +298 -0
  237. package/dist/engine/plan_builder.d.ts +11 -0
  238. package/dist/engine/plan_builder.d.ts.map +1 -0
  239. package/dist/engine/plan_builder.js +599 -0
  240. package/dist/esm/adapters/cypress.js +49 -0
  241. package/dist/esm/adapters/framework_adapter.js +114 -0
  242. package/dist/esm/adapters/playwright.js +49 -0
  243. package/dist/esm/adapters/pytest.js +59 -0
  244. package/dist/esm/adapters/supertest.js +48 -0
  245. package/dist/esm/agent/api_catalog.js +199 -0
  246. package/dist/esm/agent/config.js +872 -0
  247. package/dist/esm/agent/feedback.js +317 -0
  248. package/dist/esm/agent/git.js +252 -0
  249. package/dist/esm/agent/handoff.js +177 -0
  250. package/dist/esm/agent/llm_agents_flow.js +421 -0
  251. package/dist/esm/agent/native_flow.js +175 -0
  252. package/dist/esm/agent/pipeline.js +256 -0
  253. package/dist/esm/agent/pipeline_types.js +3 -0
  254. package/dist/esm/agent/pipeline_utils.js +146 -0
  255. package/dist/esm/agent/plan.js +83 -0
  256. package/dist/esm/agent/playwright_report.js +123 -0
  257. package/dist/esm/agent/process_runner.js +83 -0
  258. package/dist/esm/agent/spec_generator.js +249 -0
  259. package/dist/esm/agent/test_path.js +20 -0
  260. package/dist/esm/agent/traceability_capture.js +310 -0
  261. package/dist/esm/agent/traceability_ingest.js +234 -0
  262. package/dist/esm/agent/types.js +3 -0
  263. package/dist/esm/agent/utils.js +138 -0
  264. package/dist/esm/agent/validation_runner.js +73 -0
  265. package/dist/esm/agentic/fix_loop.js +91 -0
  266. package/dist/esm/agentic/playwright_runner.js +161 -0
  267. package/dist/esm/agentic/runner.js +207 -0
  268. package/dist/esm/agentic/types.js +3 -0
  269. package/dist/esm/agents/coverage-evaluator.js +37 -0
  270. package/dist/esm/agents/cross-impact.js +136 -0
  271. package/dist/esm/agents/executor.js +71 -0
  272. package/dist/esm/agents/explorer.js +39 -0
  273. package/dist/esm/agents/generator.js +73 -0
  274. package/dist/esm/agents/healer.js +27 -0
  275. package/dist/esm/agents/impact-analyst.js +34 -0
  276. package/dist/esm/agents/regression-advisor.js +112 -0
  277. package/dist/esm/agents/strategist.js +88 -0
  278. package/dist/esm/agents/test-designer.js +107 -0
  279. package/dist/esm/anthropic_provider.js +326 -0
  280. package/dist/esm/api.js +143 -0
  281. package/dist/esm/base_provider.js +198 -0
  282. package/dist/esm/budget_ledger.js +58 -0
  283. package/dist/esm/cache/cached_provider.js +85 -0
  284. package/dist/esm/cache/response_cache.js +140 -0
  285. package/dist/esm/cli/commands/analyze.js +74 -0
  286. package/dist/esm/cli/commands/bootstrap.js +106 -0
  287. package/dist/esm/cli/commands/cost_report.js +112 -0
  288. package/dist/esm/cli/commands/crew.js +252 -0
  289. package/dist/esm/cli/commands/feedback.js +36 -0
  290. package/dist/esm/cli/commands/finalize.js +38 -0
  291. package/dist/esm/cli/commands/gate.js +86 -0
  292. package/dist/esm/cli/commands/generate.js +105 -0
  293. package/dist/esm/cli/commands/heal.js +57 -0
  294. package/dist/esm/cli/commands/impact.js +30 -0
  295. package/dist/esm/cli/commands/init.js +133 -0
  296. package/dist/esm/cli/commands/llm_health.js +19 -0
  297. package/dist/esm/cli/commands/plan.js +117 -0
  298. package/dist/esm/cli/commands/plan_crew.js +309 -0
  299. package/dist/esm/cli/commands/traceability.js +73 -0
  300. package/dist/esm/cli/commands/train.js +355 -0
  301. package/dist/esm/cli/defaults.js +165 -0
  302. package/dist/esm/cli/errors.js +52 -0
  303. package/dist/esm/cli/parse_args.js +251 -0
  304. package/dist/esm/cli/types.js +3 -0
  305. package/dist/esm/cli/usage.js +106 -0
  306. package/dist/esm/cli.js +192 -0
  307. package/dist/esm/crew/context.js +32 -0
  308. package/dist/esm/crew/orchestrator.js +325 -0
  309. package/dist/esm/crew/protocol.js +3 -0
  310. package/dist/esm/crew/provider.js +33 -0
  311. package/dist/esm/crew/sanitize.js +27 -0
  312. package/dist/esm/crew/types.js +3 -0
  313. package/dist/esm/crew/workflows.js +33 -0
  314. package/dist/esm/custom_provider.js +273 -0
  315. package/dist/esm/engine/ai_enrichment.js +264 -0
  316. package/dist/esm/engine/diff_loader.js +59 -0
  317. package/dist/esm/engine/impact_engine.js +291 -0
  318. package/dist/esm/engine/plan_builder.js +593 -0
  319. package/dist/esm/index.js +72 -0
  320. package/dist/esm/knowledge/api_surface.js +408 -0
  321. package/dist/esm/knowledge/cluster_utils.js +60 -0
  322. package/dist/esm/knowledge/context_loader.js +85 -0
  323. package/dist/esm/knowledge/failure_history.js +121 -0
  324. package/dist/esm/knowledge/kg_bridge.js +381 -0
  325. package/dist/esm/knowledge/kg_types.js +3 -0
  326. package/dist/esm/knowledge/route_families.js +393 -0
  327. package/dist/esm/knowledge/spec_index.js +122 -0
  328. package/dist/esm/logger.js +115 -0
  329. package/dist/esm/mcp-server.js +621 -0
  330. package/dist/esm/metrics/prometheus.js +149 -0
  331. package/dist/esm/model_router.js +59 -0
  332. package/dist/esm/ollama_provider.js +301 -0
  333. package/dist/esm/openai_provider.js +243 -0
  334. package/dist/esm/package.json +3 -0
  335. package/dist/esm/pipeline/orchestrator.js +228 -0
  336. package/dist/esm/pipeline/spec_verifier.js +75 -0
  337. package/dist/esm/pipeline/stage0_preprocess.js +102 -0
  338. package/dist/esm/pipeline/stage1_impact.js +140 -0
  339. package/dist/esm/pipeline/stage2_coverage.js +153 -0
  340. package/dist/esm/pipeline/stage3_generation.js +284 -0
  341. package/dist/esm/pipeline/stage4_heal.js +288 -0
  342. package/dist/esm/progress.js +112 -0
  343. package/dist/esm/prompts/coverage.js +57 -0
  344. package/dist/esm/prompts/cross-impact.js +53 -0
  345. package/dist/esm/prompts/generation.js +297 -0
  346. package/dist/esm/prompts/generation_profile.js +147 -0
  347. package/dist/esm/prompts/heal.js +91 -0
  348. package/dist/esm/prompts/impact.js +63 -0
  349. package/dist/esm/prompts/json_extract.js +36 -0
  350. package/dist/esm/prompts/strategist.js +61 -0
  351. package/dist/esm/prompts/test-designer.js +92 -0
  352. package/dist/esm/provider_factory.js +366 -0
  353. package/dist/esm/provider_interface.js +23 -0
  354. package/dist/esm/provider_utils.js +96 -0
  355. package/dist/esm/qa-agent/cli.js +205 -0
  356. package/dist/esm/qa-agent/orchestrator.js +120 -0
  357. package/dist/esm/qa-agent/phase1/runner.js +139 -0
  358. package/dist/esm/qa-agent/phase1/scope.js +126 -0
  359. package/dist/esm/qa-agent/phase2/agent_browser.js +95 -0
  360. package/dist/esm/qa-agent/phase2/agent_loop.js +351 -0
  361. package/dist/esm/qa-agent/phase2/exploration_state.js +97 -0
  362. package/dist/esm/qa-agent/phase2/tools.js +386 -0
  363. package/dist/esm/qa-agent/phase2/vision.js +75 -0
  364. package/dist/esm/qa-agent/phase3/feedback.js +34 -0
  365. package/dist/esm/qa-agent/phase3/reporter.js +145 -0
  366. package/dist/esm/qa-agent/phase3/spec_generator.js +62 -0
  367. package/dist/esm/qa-agent/phase3/verdict.js +66 -0
  368. package/dist/esm/qa-agent/safe_env.js +23 -0
  369. package/dist/esm/qa-agent/types.js +3 -0
  370. package/dist/esm/reporters/junit.js +86 -0
  371. package/dist/esm/reporters/reporter.js +3 -0
  372. package/dist/esm/reporters/sarif.js +132 -0
  373. package/dist/esm/resilience/circuit_breaker.js +78 -0
  374. package/dist/esm/resilience/retry.js +56 -0
  375. package/dist/esm/sanitize.js +66 -0
  376. package/dist/esm/training/enricher.js +345 -0
  377. package/dist/esm/training/kg_scanner.js +115 -0
  378. package/dist/esm/training/merger.js +204 -0
  379. package/dist/esm/training/scanner.js +923 -0
  380. package/dist/esm/training/types.js +6 -0
  381. package/dist/esm/training/validator.js +254 -0
  382. package/dist/esm/validation/guardrails.js +101 -0
  383. package/dist/esm/validation/output_schema.js +80 -0
  384. package/dist/esm/version.js +33 -0
  385. package/dist/index.d.ts +99 -0
  386. package/dist/index.d.ts.map +1 -0
  387. package/dist/index.js +169 -0
  388. package/dist/knowledge/api_surface.d.ts +37 -0
  389. package/dist/knowledge/api_surface.d.ts.map +1 -0
  390. package/dist/knowledge/api_surface.js +418 -0
  391. package/dist/knowledge/cluster_utils.d.ts +28 -0
  392. package/dist/knowledge/cluster_utils.d.ts.map +1 -0
  393. package/dist/knowledge/cluster_utils.js +67 -0
  394. package/dist/knowledge/context_loader.d.ts +13 -0
  395. package/dist/knowledge/context_loader.d.ts.map +1 -0
  396. package/dist/knowledge/context_loader.js +90 -0
  397. package/dist/knowledge/failure_history.d.ts +39 -0
  398. package/dist/knowledge/failure_history.d.ts.map +1 -0
  399. package/dist/knowledge/failure_history.js +128 -0
  400. package/dist/knowledge/kg_bridge.d.ts +31 -0
  401. package/dist/knowledge/kg_bridge.d.ts.map +1 -0
  402. package/dist/knowledge/kg_bridge.js +388 -0
  403. package/dist/knowledge/kg_types.d.ts +75 -0
  404. package/dist/knowledge/kg_types.d.ts.map +1 -0
  405. package/dist/knowledge/kg_types.js +4 -0
  406. package/dist/knowledge/route_families.d.ts +98 -0
  407. package/dist/knowledge/route_families.d.ts.map +1 -0
  408. package/dist/knowledge/route_families.js +410 -0
  409. package/dist/knowledge/spec_index.d.ts +18 -0
  410. package/dist/knowledge/spec_index.d.ts.map +1 -0
  411. package/dist/knowledge/spec_index.js +128 -0
  412. package/dist/logger.d.ts +31 -0
  413. package/dist/logger.d.ts.map +1 -0
  414. package/dist/logger.js +119 -0
  415. package/dist/mcp-server.d.ts +68 -0
  416. package/dist/mcp-server.d.ts.map +1 -0
  417. package/dist/mcp-server.js +629 -0
  418. package/dist/metrics/prometheus.d.ts +37 -0
  419. package/dist/metrics/prometheus.d.ts.map +1 -0
  420. package/dist/metrics/prometheus.js +153 -0
  421. package/dist/model_router.d.ts +28 -0
  422. package/dist/model_router.d.ts.map +1 -0
  423. package/dist/model_router.js +63 -0
  424. package/dist/ollama_provider.d.ts +65 -0
  425. package/dist/ollama_provider.d.ts.map +1 -0
  426. package/dist/ollama_provider.js +309 -0
  427. package/dist/openai_provider.d.ts +23 -0
  428. package/dist/openai_provider.d.ts.map +1 -0
  429. package/dist/openai_provider.js +251 -0
  430. package/dist/pipeline/orchestrator.d.ts +33 -0
  431. package/dist/pipeline/orchestrator.d.ts.map +1 -0
  432. package/dist/pipeline/orchestrator.js +231 -0
  433. package/dist/pipeline/spec_verifier.d.ts +20 -0
  434. package/dist/pipeline/spec_verifier.d.ts.map +1 -0
  435. package/dist/pipeline/spec_verifier.js +79 -0
  436. package/dist/pipeline/stage0_preprocess.d.ts +31 -0
  437. package/dist/pipeline/stage0_preprocess.d.ts.map +1 -0
  438. package/dist/pipeline/stage0_preprocess.js +105 -0
  439. package/dist/pipeline/stage1_impact.d.ts +19 -0
  440. package/dist/pipeline/stage1_impact.d.ts.map +1 -0
  441. package/dist/pipeline/stage1_impact.js +143 -0
  442. package/dist/pipeline/stage2_coverage.d.ts +19 -0
  443. package/dist/pipeline/stage2_coverage.d.ts.map +1 -0
  444. package/dist/pipeline/stage2_coverage.js +156 -0
  445. package/dist/pipeline/stage3_generation.d.ts +43 -0
  446. package/dist/pipeline/stage3_generation.d.ts.map +1 -0
  447. package/dist/pipeline/stage3_generation.js +287 -0
  448. package/dist/pipeline/stage4_heal.d.ts +62 -0
  449. package/dist/pipeline/stage4_heal.d.ts.map +1 -0
  450. package/dist/pipeline/stage4_heal.js +294 -0
  451. package/dist/progress.d.ts +22 -0
  452. package/dist/progress.d.ts.map +1 -0
  453. package/dist/progress.js +116 -0
  454. package/dist/prompts/coverage.d.ts +39 -0
  455. package/dist/prompts/coverage.d.ts.map +1 -0
  456. package/dist/prompts/coverage.js +61 -0
  457. package/dist/prompts/cross-impact.d.ts +23 -0
  458. package/dist/prompts/cross-impact.d.ts.map +1 -0
  459. package/dist/prompts/cross-impact.js +57 -0
  460. package/dist/prompts/generation.d.ts +25 -0
  461. package/dist/prompts/generation.d.ts.map +1 -0
  462. package/dist/prompts/generation.js +302 -0
  463. package/dist/prompts/generation_profile.d.ts +29 -0
  464. package/dist/prompts/generation_profile.d.ts.map +1 -0
  465. package/dist/prompts/generation_profile.js +151 -0
  466. package/dist/prompts/heal.d.ts +23 -0
  467. package/dist/prompts/heal.d.ts.map +1 -0
  468. package/dist/prompts/heal.js +95 -0
  469. package/dist/prompts/impact.d.ts +31 -0
  470. package/dist/prompts/impact.d.ts.map +1 -0
  471. package/dist/prompts/impact.js +67 -0
  472. package/dist/prompts/json_extract.d.ts +14 -0
  473. package/dist/prompts/json_extract.d.ts.map +1 -0
  474. package/dist/prompts/json_extract.js +39 -0
  475. package/dist/prompts/strategist.d.ts +25 -0
  476. package/dist/prompts/strategist.d.ts.map +1 -0
  477. package/dist/prompts/strategist.js +65 -0
  478. package/dist/prompts/test-designer.d.ts +35 -0
  479. package/dist/prompts/test-designer.d.ts.map +1 -0
  480. package/dist/prompts/test-designer.js +96 -0
  481. package/dist/provider_factory.d.ts +104 -0
  482. package/dist/provider_factory.d.ts.map +1 -0
  483. package/dist/provider_factory.js +371 -0
  484. package/dist/provider_interface.d.ts +365 -0
  485. package/dist/provider_interface.d.ts.map +1 -0
  486. package/dist/provider_interface.js +28 -0
  487. package/dist/provider_utils.d.ts +39 -0
  488. package/dist/provider_utils.d.ts.map +1 -0
  489. package/dist/provider_utils.js +103 -0
  490. package/dist/qa-agent/cli.d.ts +3 -0
  491. package/dist/qa-agent/cli.d.ts.map +1 -0
  492. package/dist/qa-agent/cli.js +207 -0
  493. package/dist/qa-agent/orchestrator.d.ts +3 -0
  494. package/dist/qa-agent/orchestrator.d.ts.map +1 -0
  495. package/dist/qa-agent/orchestrator.js +123 -0
  496. package/dist/qa-agent/phase1/runner.d.ts +3 -0
  497. package/dist/qa-agent/phase1/runner.d.ts.map +1 -0
  498. package/dist/qa-agent/phase1/runner.js +142 -0
  499. package/dist/qa-agent/phase1/scope.d.ts +6 -0
  500. package/dist/qa-agent/phase1/scope.d.ts.map +1 -0
  501. package/dist/qa-agent/phase1/scope.js +129 -0
  502. package/dist/qa-agent/phase2/agent_browser.d.ts +35 -0
  503. package/dist/qa-agent/phase2/agent_browser.d.ts.map +1 -0
  504. package/dist/qa-agent/phase2/agent_browser.js +99 -0
  505. package/dist/qa-agent/phase2/agent_loop.d.ts +3 -0
  506. package/dist/qa-agent/phase2/agent_loop.d.ts.map +1 -0
  507. package/dist/qa-agent/phase2/agent_loop.js +357 -0
  508. package/dist/qa-agent/phase2/exploration_state.d.ts +12 -0
  509. package/dist/qa-agent/phase2/exploration_state.d.ts.map +1 -0
  510. package/dist/qa-agent/phase2/exploration_state.js +109 -0
  511. package/dist/qa-agent/phase2/tools.d.ts +28 -0
  512. package/dist/qa-agent/phase2/tools.d.ts.map +1 -0
  513. package/dist/qa-agent/phase2/tools.js +390 -0
  514. package/dist/qa-agent/phase2/vision.d.ts +3 -0
  515. package/dist/qa-agent/phase2/vision.d.ts.map +1 -0
  516. package/dist/qa-agent/phase2/vision.js +78 -0
  517. package/dist/qa-agent/phase3/feedback.d.ts +3 -0
  518. package/dist/qa-agent/phase3/feedback.d.ts.map +1 -0
  519. package/dist/qa-agent/phase3/feedback.js +37 -0
  520. package/dist/qa-agent/phase3/reporter.d.ts +3 -0
  521. package/dist/qa-agent/phase3/reporter.d.ts.map +1 -0
  522. package/dist/qa-agent/phase3/reporter.js +148 -0
  523. package/dist/qa-agent/phase3/spec_generator.d.ts +3 -0
  524. package/dist/qa-agent/phase3/spec_generator.d.ts.map +1 -0
  525. package/dist/qa-agent/phase3/spec_generator.js +65 -0
  526. package/dist/qa-agent/phase3/verdict.d.ts +3 -0
  527. package/dist/qa-agent/phase3/verdict.d.ts.map +1 -0
  528. package/dist/qa-agent/phase3/verdict.js +69 -0
  529. package/dist/qa-agent/safe_env.d.ts +3 -0
  530. package/dist/qa-agent/safe_env.d.ts.map +1 -0
  531. package/dist/qa-agent/safe_env.js +26 -0
  532. package/dist/qa-agent/types.d.ts +130 -0
  533. package/dist/qa-agent/types.d.ts.map +1 -0
  534. package/dist/qa-agent/types.js +4 -0
  535. package/dist/reporters/junit.d.ts +6 -0
  536. package/dist/reporters/junit.d.ts.map +1 -0
  537. package/dist/reporters/junit.js +89 -0
  538. package/dist/reporters/reporter.d.ts +42 -0
  539. package/dist/reporters/reporter.d.ts.map +1 -0
  540. package/dist/reporters/reporter.js +4 -0
  541. package/dist/reporters/sarif.d.ts +7 -0
  542. package/dist/reporters/sarif.d.ts.map +1 -0
  543. package/dist/reporters/sarif.js +135 -0
  544. package/dist/resilience/circuit_breaker.d.ts +36 -0
  545. package/dist/resilience/circuit_breaker.d.ts.map +1 -0
  546. package/dist/resilience/circuit_breaker.js +82 -0
  547. package/dist/resilience/retry.d.ts +11 -0
  548. package/dist/resilience/retry.d.ts.map +1 -0
  549. package/dist/resilience/retry.js +59 -0
  550. package/dist/sanitize.d.ts +15 -0
  551. package/dist/sanitize.d.ts.map +1 -0
  552. package/dist/sanitize.js +71 -0
  553. package/dist/training/enricher.d.ts +17 -0
  554. package/dist/training/enricher.d.ts.map +1 -0
  555. package/dist/training/enricher.js +350 -0
  556. package/dist/training/kg_scanner.d.ts +13 -0
  557. package/dist/training/kg_scanner.d.ts.map +1 -0
  558. package/dist/training/kg_scanner.js +118 -0
  559. package/dist/training/merger.d.ts +15 -0
  560. package/dist/training/merger.d.ts.map +1 -0
  561. package/dist/training/merger.js +208 -0
  562. package/dist/training/scanner.d.ts +36 -0
  563. package/dist/training/scanner.d.ts.map +1 -0
  564. package/dist/training/scanner.js +932 -0
  565. package/dist/training/types.d.ts +117 -0
  566. package/dist/training/types.d.ts.map +1 -0
  567. package/dist/training/types.js +9 -0
  568. package/dist/training/validator.d.ts +21 -0
  569. package/dist/training/validator.d.ts.map +1 -0
  570. package/dist/training/validator.js +262 -0
  571. package/dist/validation/guardrails.d.ts +31 -0
  572. package/dist/validation/guardrails.d.ts.map +1 -0
  573. package/dist/validation/guardrails.js +112 -0
  574. package/dist/validation/output_schema.d.ts +67 -0
  575. package/dist/validation/output_schema.d.ts.map +1 -0
  576. package/dist/validation/output_schema.js +84 -0
  577. package/dist/version.d.ts +6 -0
  578. package/dist/version.d.ts.map +1 -0
  579. package/dist/version.js +36 -0
  580. package/package.json +126 -0
  581. package/schemas/flow-decision.schema.json +83 -0
  582. package/schemas/gap.schema.json +18 -0
  583. package/schemas/impact.schema.json +455 -0
  584. package/schemas/plan.schema.json +491 -0
  585. package/schemas/route-families.schema.json +137 -0
  586. package/schemas/subsystem-risk-map.schema.json +62 -0
  587. package/schemas/traceability-input.schema.json +122 -0
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.runAgenticGeneration = runAgenticGeneration;
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const playwright_runner_js_1 = require("./playwright_runner.js");
9
+ const fix_loop_js_1 = require("./fix_loop.js");
10
+ const generation_js_1 = require("../prompts/generation.js");
11
+ const api_surface_js_1 = require("../knowledge/api_surface.js");
12
+ const sanitize_js_1 = require("../crew/sanitize.js");
13
+ function buildGeneratePrompt(scenario, apiSurfaceHint, profile) {
14
+ const projectName = profile?.projectName || 'Mattermost';
15
+ const importSource = profile?.importStatement || '@mattermost/playwright-lib';
16
+ const scenariosBlock = scenario.scenarios
17
+ .map((s, i) => ` ${i + 1}. ${(0, sanitize_js_1.sanitizeForPrompt)(s)}`)
18
+ .join('\n');
19
+ return [
20
+ `Generate a ${projectName} Playwright E2E test file.`,
21
+ '',
22
+ `FLOW: ${(0, sanitize_js_1.sanitizeForPrompt)(scenario.name)}`,
23
+ `Route Family: ${scenario.routeFamily}`,
24
+ `Priority: ${scenario.priority}`,
25
+ scenario.evidence ? `Evidence: ${(0, sanitize_js_1.sanitizeForPrompt)(scenario.evidence)}` : '',
26
+ '',
27
+ 'SCENARIOS TO IMPLEMENT:',
28
+ scenariosBlock,
29
+ '',
30
+ 'AVAILABLE PAGE OBJECTS AND METHODS:',
31
+ apiSurfaceHint || 'Use page.getByRole() or page.getByTestId() for selectors.',
32
+ '',
33
+ 'MANDATORY RULES:',
34
+ `1. Import ONLY from "${importSource}" — no other test framework imports.`,
35
+ '2. Every test must call `await pw.initSetup()` first.',
36
+ '3. Use `await pw.testBrowser.login(user)` to log in — never hardcode credentials.',
37
+ '4. Use ONLY page object methods listed above. Do NOT invent methods.',
38
+ '5. If a method is not available, use `page.getByRole()` or `page.getByTestId()`.',
39
+ `6. Tag every test: {tag: '@${scenario.routeFamily}'}`,
40
+ '7. Write one test per scenario with a descriptive name.',
41
+ `8. Use \`expect\` from "${importSource}".`,
42
+ '9. Include the copyright header.',
43
+ '10. NEVER fabricate test IDs (MM-TXXXX). Use descriptive names only.',
44
+ '',
45
+ 'EXAMPLE STRUCTURE:',
46
+ '```typescript',
47
+ '// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.',
48
+ '// See LICENSE.txt for license information.',
49
+ '',
50
+ `import {expect, test} from '${importSource}';`,
51
+ '',
52
+ 'test(',
53
+ " 'user can post a message in channel',",
54
+ ` {tag: '@${scenario.routeFamily}'},`,
55
+ ' async ({pw}) => {',
56
+ ' const {user} = await pw.initSetup();',
57
+ ' const {channelsPage} = await pw.testBrowser.login(user);',
58
+ ' await channelsPage.goto();',
59
+ ' await channelsPage.toBeVisible();',
60
+ ' // test steps...',
61
+ ' },',
62
+ ');',
63
+ '```',
64
+ '',
65
+ 'Return ONLY the TypeScript code. No explanations.',
66
+ ].filter(Boolean).join('\n');
67
+ }
68
+ function resolveSpecPath(scenario, testsRoot) {
69
+ let specPath;
70
+ if (scenario.targetSpec) {
71
+ specPath = (0, path_1.join)(testsRoot, scenario.targetSpec);
72
+ }
73
+ else {
74
+ const safeName = scenario.id.replace(/[^a-zA-Z0-9_-]/g, '_').toLowerCase();
75
+ const outputDir = (0, path_1.join)(testsRoot, 'specs', 'functional', 'ai-assisted');
76
+ specPath = (0, path_1.join)(outputDir, `${safeName}.spec.ts`);
77
+ }
78
+ // SECURITY: Prevent path traversal
79
+ const resolved = (0, path_1.resolve)(specPath);
80
+ const resolvedRoot = (0, path_1.resolve)(testsRoot);
81
+ if (!resolved.startsWith(resolvedRoot + '/') && resolved !== resolvedRoot) {
82
+ throw new Error(`Path traversal blocked: ${specPath} resolves outside testsRoot`);
83
+ }
84
+ if (!resolved.endsWith('.spec.ts') && !resolved.endsWith('.test.ts')) {
85
+ throw new Error(`Invalid spec path: must end in .spec.ts or .test.ts`);
86
+ }
87
+ return specPath;
88
+ }
89
+ async function generateInitialSpec(provider, scenario, specPath, apiSurfaceHint, profile) {
90
+ const prompt = buildGeneratePrompt(scenario, apiSurfaceHint, profile);
91
+ const response = await provider.generateText(prompt, {
92
+ maxTokens: 8000,
93
+ temperature: 0.1,
94
+ timeout: 60000,
95
+ systemPrompt: `You are an expert Playwright test writer for ${profile?.projectName || 'Mattermost'}. Return only TypeScript code.`,
96
+ });
97
+ // Reuse existing parsing logic from prompts/generation.ts
98
+ const parsed = (0, generation_js_1.parseGenerationResponse)(response.text, specPath, 'create_spec', scenario.id);
99
+ return parsed?.code ?? null;
100
+ }
101
+ async function runSingleScenario(scenario, options) {
102
+ const { config, provider } = options;
103
+ const warnings = [];
104
+ const specPath = resolveSpecPath(scenario, config.testsRoot);
105
+ // Build API surface hint
106
+ let apiHint = options.apiSurfaceHint || '';
107
+ if (!apiHint && options.apiSurface) {
108
+ const allClassNames = options.apiSurface.pageObjects.map((po) => po.className);
109
+ apiHint = (0, api_surface_js_1.formatApiSurfaceForPrompt)(options.apiSurface, allClassNames);
110
+ }
111
+ // Step 1: Generate initial spec
112
+ let specCode;
113
+ try {
114
+ specCode = await generateInitialSpec(provider, scenario, specPath, apiHint, options.generationProfile);
115
+ }
116
+ catch (error) {
117
+ const msg = error instanceof Error ? error.message : String(error);
118
+ warnings.push(`Generation failed for ${scenario.id}: ${msg}`);
119
+ return { specPath, scenarioSource: scenario.id, status: 'failed', attempts: 0, warnings };
120
+ }
121
+ if (!specCode) {
122
+ warnings.push(`LLM returned invalid code for ${scenario.id}`);
123
+ return { specPath, scenarioSource: scenario.id, status: 'failed', attempts: 0, warnings };
124
+ }
125
+ // Write the spec file
126
+ const dir = (0, path_1.dirname)(specPath);
127
+ if (!(0, fs_1.existsSync)(dir)) {
128
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
129
+ }
130
+ (0, fs_1.writeFileSync)(specPath, specCode, 'utf-8');
131
+ // Dry run: skip execution
132
+ if (config.dryRun) {
133
+ return { specPath, scenarioSource: scenario.id, status: 'skipped', attempts: 0, warnings };
134
+ }
135
+ // Step 2: Run -> Fix loop
136
+ let lastRun;
137
+ for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {
138
+ lastRun = (0, playwright_runner_js_1.runPlaywrightSpec)(specPath, config.testsRoot, {
139
+ project: config.project,
140
+ baseUrl: config.baseUrl,
141
+ timeoutMs: config.testTimeoutMs,
142
+ });
143
+ // All passed!
144
+ if (lastRun.failed === 0 && lastRun.compiled) {
145
+ return {
146
+ specPath,
147
+ scenarioSource: scenario.id,
148
+ status: 'passed',
149
+ attempts: attempt,
150
+ finalRun: lastRun,
151
+ warnings,
152
+ };
153
+ }
154
+ // If this is the last attempt, don't try to fix
155
+ if (attempt >= config.maxAttempts) {
156
+ break;
157
+ }
158
+ // Step 3: Fix
159
+ const currentCode = (0, fs_1.readFileSync)(specPath, 'utf-8');
160
+ try {
161
+ const fixResult = await (0, fix_loop_js_1.generateFix)(provider, {
162
+ specCode: currentCode,
163
+ failures: lastRun.failures,
164
+ attempt,
165
+ maxAttempts: config.maxAttempts,
166
+ apiSurfaceHint: apiHint,
167
+ });
168
+ if (fixResult.code) {
169
+ (0, fs_1.writeFileSync)(specPath, fixResult.code, 'utf-8');
170
+ }
171
+ else {
172
+ warnings.push(`Fix attempt ${attempt} returned invalid code for ${scenario.id}`);
173
+ }
174
+ }
175
+ catch (error) {
176
+ const msg = error instanceof Error ? error.message : String(error);
177
+ warnings.push(`Fix attempt ${attempt} failed for ${scenario.id}: ${msg}`);
178
+ }
179
+ }
180
+ return {
181
+ specPath,
182
+ scenarioSource: scenario.id,
183
+ status: lastRun?.compiled === false ? 'compile-error' : 'max-attempts',
184
+ attempts: config.maxAttempts,
185
+ finalRun: lastRun,
186
+ warnings,
187
+ };
188
+ }
189
+ async function runAgenticGeneration(options) {
190
+ const startTime = Date.now();
191
+ const results = [];
192
+ const warnings = [];
193
+ for (const scenario of options.scenarios) {
194
+ const result = await runSingleScenario(scenario, options);
195
+ results.push(result);
196
+ warnings.push(...result.warnings);
197
+ }
198
+ const totalPassed = results.filter((r) => r.status === 'passed').length;
199
+ const totalFailed = results.filter((r) => r.status !== 'passed' && r.status !== 'skipped').length;
200
+ const totalAttempts = results.reduce((sum, r) => sum + r.attempts, 0);
201
+ return {
202
+ results,
203
+ totalGenerated: results.length,
204
+ totalPassed,
205
+ totalFailed,
206
+ totalAttempts,
207
+ durationMs: Date.now() - startTime,
208
+ warnings,
209
+ };
210
+ }
@@ -0,0 +1,62 @@
1
+ export interface TestFailure {
2
+ testTitle: string;
3
+ specPath: string;
4
+ error: string;
5
+ /** Truncated stack trace */
6
+ stack: string;
7
+ /** Expected vs actual if available */
8
+ expected?: string;
9
+ actual?: string;
10
+ /** Line number in spec where failure occurred */
11
+ line?: number;
12
+ }
13
+ export interface PlaywrightRunResult {
14
+ specPath: string;
15
+ passed: number;
16
+ failed: number;
17
+ flaky: number;
18
+ skipped: number;
19
+ failures: TestFailure[];
20
+ /** Raw stdout (truncated) */
21
+ stdout: string;
22
+ /** Duration in ms */
23
+ durationMs: number;
24
+ /** Whether the spec even compiled */
25
+ compiled: boolean;
26
+ }
27
+ export interface AgenticConfig {
28
+ /** Max fix attempts before giving up (default: 3) */
29
+ maxAttempts: number;
30
+ /** Playwright project to use (default: 'chrome') */
31
+ project: string;
32
+ /** Base URL for Playwright (e.g. http://localhost:8065) */
33
+ baseUrl?: string;
34
+ /** Timeout per test run in ms (default: 120000) */
35
+ testTimeoutMs: number;
36
+ /** LLM provider override */
37
+ provider?: string;
38
+ /** Whether to use Playwright MCP for browser exploration */
39
+ useMcp?: boolean;
40
+ /** Dry run — generate but don't run tests */
41
+ dryRun?: boolean;
42
+ /** Tests root directory */
43
+ testsRoot: string;
44
+ }
45
+ export interface AgenticResult {
46
+ specPath: string;
47
+ scenarioSource: string;
48
+ status: 'passed' | 'failed' | 'max-attempts' | 'compile-error' | 'skipped';
49
+ attempts: number;
50
+ finalRun?: PlaywrightRunResult;
51
+ warnings: string[];
52
+ }
53
+ export interface AgenticSummary {
54
+ results: AgenticResult[];
55
+ totalGenerated: number;
56
+ totalPassed: number;
57
+ totalFailed: number;
58
+ totalAttempts: number;
59
+ durationMs: number;
60
+ warnings: string[];
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agentic/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC1B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,SAAS,CAAC;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import type { Agent, AgentTask, AgentResult } from '../crew/protocol.js';
2
+ import type { CrewContext } from '../crew/context.js';
3
+ import type { AgentRole } from '../crew/types.js';
4
+ export declare class CoverageEvaluatorAgent implements Agent {
5
+ readonly role: AgentRole;
6
+ execute(_task: AgentTask, ctx: CrewContext): Promise<AgentResult>;
7
+ }
8
+ //# sourceMappingURL=coverage-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-evaluator.d.ts","sourceRoot":"","sources":["../../src/agents/coverage-evaluator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,sBAAuB,YAAW,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAwB;IAE1C,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC1E"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.CoverageEvaluatorAgent = void 0;
6
+ /**
7
+ * Coverage Evaluator Agent — wraps pipeline stage2 (coverage evaluation) in the Agent interface.
8
+ */
9
+ const stage2_coverage_js_1 = require("../pipeline/stage2_coverage.js");
10
+ class CoverageEvaluatorAgent {
11
+ constructor() {
12
+ this.role = 'coverage-evaluator';
13
+ }
14
+ async execute(_task, ctx) {
15
+ const warnings = [];
16
+ if (ctx.impactedFlows.length === 0) {
17
+ warnings.push('Coverage evaluator: no impacted flows to evaluate.');
18
+ return { role: this.role, status: 'partial', output: [], warnings };
19
+ }
20
+ try {
21
+ const result = await (0, stage2_coverage_js_1.runCoverageStage)(ctx.impactedFlows, ctx.specIndex, ctx.context, ctx.testsRoot, { provider: ctx.providerOverride });
22
+ // Replace impacted flows with coverage-enriched versions.
23
+ // This is intentionally a full replace (not push) because coverage evaluation
24
+ // returns the same flow IDs with updated coverage fields.
25
+ ctx.impactedFlows = result.decisions;
26
+ warnings.push(...result.warnings);
27
+ return {
28
+ role: this.role,
29
+ status: 'success',
30
+ output: result.decisions,
31
+ warnings,
32
+ };
33
+ }
34
+ catch (error) {
35
+ const message = error instanceof Error ? error.message : String(error);
36
+ warnings.push(`Coverage evaluator failed: ${message}`);
37
+ return { role: this.role, status: 'failed', output: null, warnings };
38
+ }
39
+ }
40
+ }
41
+ exports.CoverageEvaluatorAgent = CoverageEvaluatorAgent;
@@ -0,0 +1,13 @@
1
+ import type { Agent, AgentTask, AgentResult } from '../crew/protocol.js';
2
+ import type { CrewContext } from '../crew/context.js';
3
+ import type { AgentRole } from '../crew/types.js';
4
+ export declare class CrossImpactAgent implements Agent {
5
+ readonly role: AgentRole;
6
+ execute(_task: AgentTask, ctx: CrewContext): Promise<AgentResult>;
7
+ /**
8
+ * Deterministic cross-impact detection: find families that share webapp/server paths
9
+ * or components with the directly impacted families.
10
+ */
11
+ private detectDeterministic;
12
+ }
13
+ //# sourceMappingURL=cross-impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-impact.d.ts","sourceRoot":"","sources":["../../src/agents/cross-impact.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAc,MAAM,kBAAkB,CAAC;AAK7D,qBAAa,gBAAiB,YAAW,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAkB;IAEpC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA4FvE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAyC9B"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.CrossImpactAgent = void 0;
6
+ /**
7
+ * Cross-Impact Analyst Agent — finds ripple effects across route families
8
+ * by analyzing shared dependencies between changed families and all other families.
9
+ */
10
+ const provider_js_1 = require("../crew/provider.js");
11
+ const cross_impact_js_1 = require("../prompts/cross-impact.js");
12
+ const VALID_RISK = new Set(['high', 'medium', 'low']);
13
+ const MAX_CROSS_IMPACTS = 50;
14
+ class CrossImpactAgent {
15
+ constructor() {
16
+ this.role = 'cross-impact';
17
+ }
18
+ async execute(_task, ctx) {
19
+ const warnings = [];
20
+ if (ctx.routeFamilies.length === 0) {
21
+ warnings.push('Cross-impact: no route families available.');
22
+ return { role: this.role, status: 'partial', output: [], warnings };
23
+ }
24
+ // Determine directly impacted families from family groups
25
+ const directlyImpacted = new Set(ctx.familyGroups.map((g) => g.familyId));
26
+ if (directlyImpacted.size === 0) {
27
+ warnings.push('Cross-impact: no directly impacted families.');
28
+ return { role: this.role, status: 'partial', output: [], warnings };
29
+ }
30
+ // First: deterministic cross-impact detection via shared paths
31
+ const deterministicCrossImpacts = this.detectDeterministic(ctx, directlyImpacted)
32
+ .slice(0, MAX_CROSS_IMPACTS);
33
+ ctx.crossImpacts.push(...deterministicCrossImpacts);
34
+ // Then: LLM-enriched analysis for semantic cross-impacts
35
+ try {
36
+ const provider = await (0, provider_js_1.getCrewProvider)(ctx.providerOverride, ctx.budgetUSD, {
37
+ agentRole: 'cross-impact',
38
+ modelRoutingProviderType: ctx.modelRoutingProviderType,
39
+ modelRoutingOverrides: ctx.modelRoutingOverrides,
40
+ budgetLedger: ctx.budgetLedger,
41
+ });
42
+ const prompt = (0, cross_impact_js_1.buildCrossImpactPrompt)({
43
+ changedFiles: ctx.changedFiles,
44
+ families: ctx.routeFamilies,
45
+ directlyImpactedFamilyIds: Array.from(directlyImpacted),
46
+ });
47
+ const response = await provider.generateText(prompt, {
48
+ maxTokens: 3000,
49
+ temperature: 0,
50
+ timeout: 45000,
51
+ systemPrompt: 'Return only valid JSON. Do not include markdown fences unless necessary.',
52
+ });
53
+ const parsed = (0, cross_impact_js_1.parseCrossImpactResponse)(response.text);
54
+ if (parsed && parsed.crossImpacts.length > 0) {
55
+ const familyIds = new Set(ctx.routeFamilies.map((f) => f.id));
56
+ const llmCrossImpacts = parsed.crossImpacts
57
+ .filter((ci) => familyIds.has(ci.sourceFamily) &&
58
+ familyIds.has(ci.affectedFamily) &&
59
+ ci.sourceFamily !== ci.affectedFamily)
60
+ .map((ci) => ({
61
+ sourceFamily: ci.sourceFamily,
62
+ affectedFamily: ci.affectedFamily,
63
+ sharedDependency: ci.sharedDependency || 'unknown',
64
+ riskLevel: VALID_RISK.has(ci.riskLevel) ? ci.riskLevel : 'low',
65
+ evidence: ci.evidence || '',
66
+ }));
67
+ // Deduplicate against deterministic results
68
+ const existing = new Set(ctx.crossImpacts.map((ci) => `${ci.sourceFamily}->${ci.affectedFamily}`));
69
+ for (const ci of llmCrossImpacts) {
70
+ if (ctx.crossImpacts.length >= MAX_CROSS_IMPACTS)
71
+ break;
72
+ const key = `${ci.sourceFamily}->${ci.affectedFamily}`;
73
+ if (!existing.has(key)) {
74
+ ctx.crossImpacts.push(ci);
75
+ existing.add(key);
76
+ }
77
+ }
78
+ }
79
+ return {
80
+ role: this.role,
81
+ status: ctx.crossImpacts.length > 0 ? 'success' : 'partial',
82
+ output: ctx.crossImpacts,
83
+ usage: provider.getUsageStats(),
84
+ warnings,
85
+ };
86
+ }
87
+ catch (error) {
88
+ const message = error instanceof Error ? error.message : String(error);
89
+ warnings.push(`Cross-impact LLM analysis failed: ${message}. Using deterministic results only.`);
90
+ return {
91
+ role: this.role,
92
+ status: deterministicCrossImpacts.length > 0 ? 'partial' : 'failed',
93
+ output: ctx.crossImpacts,
94
+ warnings,
95
+ };
96
+ }
97
+ }
98
+ /**
99
+ * Deterministic cross-impact detection: find families that share webapp/server paths
100
+ * or components with the directly impacted families.
101
+ */
102
+ detectDeterministic(ctx, directlyImpacted) {
103
+ const results = [];
104
+ for (const sourceId of directlyImpacted) {
105
+ const source = ctx.routeFamilies.find((f) => f.id === sourceId);
106
+ if (!source)
107
+ continue;
108
+ const sourcePaths = new Set([
109
+ ...(source.webappPaths || []),
110
+ ...(source.serverPaths || []),
111
+ ...(source.components || []),
112
+ ]);
113
+ if (sourcePaths.size === 0)
114
+ continue;
115
+ for (const target of ctx.routeFamilies) {
116
+ if (target.id === sourceId)
117
+ continue;
118
+ const targetPaths = [
119
+ ...(target.webappPaths || []),
120
+ ...(target.serverPaths || []),
121
+ ...(target.components || []),
122
+ ];
123
+ for (const path of targetPaths) {
124
+ if (sourcePaths.has(path)) {
125
+ results.push({
126
+ sourceFamily: sourceId,
127
+ affectedFamily: target.id,
128
+ sharedDependency: path,
129
+ riskLevel: 'medium',
130
+ evidence: `Shared path: ${path} is referenced by both ${sourceId} and ${target.id}`,
131
+ });
132
+ break; // One match per family pair is enough
133
+ }
134
+ }
135
+ }
136
+ }
137
+ return results;
138
+ }
139
+ }
140
+ exports.CrossImpactAgent = CrossImpactAgent;
@@ -0,0 +1,8 @@
1
+ import type { Agent, AgentTask, AgentResult } from '../crew/protocol.js';
2
+ import type { CrewContext } from '../crew/context.js';
3
+ import type { AgentRole } from '../crew/types.js';
4
+ export declare class ExecutorAgent implements Agent {
5
+ readonly role: AgentRole;
6
+ execute(_task: AgentTask, ctx: CrewContext): Promise<AgentResult>;
7
+ }
8
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/agents/executor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAKhD,qBAAa,aAAc,YAAW,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAc;IAEhC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CA6D1E"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ExecutorAgent = void 0;
6
+ /**
7
+ * Executor Agent — wraps agentic test execution in the Agent interface.
8
+ * Runs generated specs through Playwright and collects results.
9
+ */
10
+ const provider_js_1 = require("../crew/provider.js");
11
+ const runner_js_1 = require("../agentic/runner.js");
12
+ const MAX_FIX_ATTEMPTS = 2;
13
+ const TEST_TIMEOUT_MS = 120000;
14
+ class ExecutorAgent {
15
+ constructor() {
16
+ this.role = 'executor';
17
+ }
18
+ async execute(_task, ctx) {
19
+ const warnings = [];
20
+ const writtenSpecs = ctx.generatedSpecs.filter((s) => s.written);
21
+ if (writtenSpecs.length === 0) {
22
+ warnings.push('Executor: no written specs to execute.');
23
+ return { role: this.role, status: 'partial', output: null, warnings };
24
+ }
25
+ // Build ScenarioInput[] from generated specs + impacted flows
26
+ const flowMap = new Map(ctx.impactedFlows.map((f) => [f.flowId, f]));
27
+ const scenarios = writtenSpecs.map((spec) => {
28
+ const flow = flowMap.get(spec.flowId);
29
+ return {
30
+ id: spec.flowId,
31
+ name: flow?.flowName || spec.flowId,
32
+ scenarios: flow?.scenariosToAdd || [],
33
+ routeFamily: flow?.routeFamily || 'unknown',
34
+ priority: flow?.priority || 'P2',
35
+ targetSpec: spec.mode === 'add_scenarios' ? spec.specPath : undefined,
36
+ changedFiles: flow?.changedFiles,
37
+ evidence: flow?.evidence,
38
+ };
39
+ });
40
+ try {
41
+ const provider = await (0, provider_js_1.getCrewProvider)(ctx.providerOverride, ctx.budgetUSD, {
42
+ agentRole: 'executor',
43
+ modelRoutingProviderType: ctx.modelRoutingProviderType,
44
+ modelRoutingOverrides: ctx.modelRoutingOverrides,
45
+ budgetLedger: ctx.budgetLedger,
46
+ });
47
+ const summary = await (0, runner_js_1.runAgenticGeneration)({
48
+ scenarios,
49
+ config: {
50
+ maxAttempts: MAX_FIX_ATTEMPTS,
51
+ project: 'chrome',
52
+ testTimeoutMs: TEST_TIMEOUT_MS,
53
+ provider: ctx.providerOverride,
54
+ testsRoot: ctx.testsRoot,
55
+ },
56
+ provider,
57
+ apiSurface: ctx.apiSurface,
58
+ });
59
+ warnings.push(...summary.warnings);
60
+ return {
61
+ role: this.role,
62
+ status: summary.totalPassed > 0 ? 'success' : 'partial',
63
+ output: summary,
64
+ usage: provider.getUsageStats(),
65
+ warnings,
66
+ };
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ warnings.push(`Executor failed: ${message}`);
71
+ return { role: this.role, status: 'failed', output: null, warnings };
72
+ }
73
+ }
74
+ }
75
+ exports.ExecutorAgent = ExecutorAgent;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Explorer Agent — wraps the QA agent browser exploration loop in the Agent interface.
3
+ * This agent is optional and only runs when a browser environment is available.
4
+ */
5
+ import type { Agent, AgentTask, AgentResult } from '../crew/protocol.js';
6
+ import type { CrewContext } from '../crew/context.js';
7
+ import type { AgentRole } from '../crew/types.js';
8
+ export declare class ExplorerAgent implements Agent {
9
+ readonly role: AgentRole;
10
+ execute(_task: AgentTask, ctx: CrewContext): Promise<AgentResult>;
11
+ }
12
+ //# sourceMappingURL=explorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explorer.d.ts","sourceRoot":"","sources":["../../src/agents/explorer.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,aAAc,YAAW,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAc;IAEhC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC1E"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
+ // See LICENSE.txt for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ExplorerAgent = void 0;
6
+ class ExplorerAgent {
7
+ constructor() {
8
+ this.role = 'explorer';
9
+ }
10
+ async execute(_task, ctx) {
11
+ const warnings = [];
12
+ // Explorer requires browser environment — skip gracefully if not available
13
+ try {
14
+ // Build target flows from impacted flows
15
+ const targetFlows = ctx.impactedFlows
16
+ .filter((d) => d.action !== 'cannot_determine')
17
+ .map((d) => ({
18
+ id: d.flowId,
19
+ name: d.flowName,
20
+ url: d.specificRoute,
21
+ priority: d.priority,
22
+ }));
23
+ if (targetFlows.length === 0) {
24
+ warnings.push('Explorer: no target flows for exploration.');
25
+ return { role: this.role, status: 'partial', output: null, warnings };
26
+ }
27
+ // Convert QA findings to crew findings
28
+ warnings.push(`Explorer: ${targetFlows.length} flows available for exploration (requires browser environment).`);
29
+ return {
30
+ role: this.role,
31
+ status: 'partial',
32
+ output: { targetFlows },
33
+ warnings,
34
+ };
35
+ }
36
+ catch (error) {
37
+ const message = error instanceof Error ? error.message : String(error);
38
+ warnings.push(`Explorer failed: ${message}`);
39
+ return { role: this.role, status: 'failed', output: null, warnings };
40
+ }
41
+ }
42
+ }
43
+ exports.ExplorerAgent = ExplorerAgent;
@@ -0,0 +1,8 @@
1
+ import type { Agent, AgentTask, AgentResult } from '../crew/protocol.js';
2
+ import type { CrewContext } from '../crew/context.js';
3
+ import type { AgentRole } from '../crew/types.js';
4
+ export declare class GeneratorAgent implements Agent {
5
+ readonly role: AgentRole;
6
+ execute(_task: AgentTask, ctx: CrewContext): Promise<AgentResult>;
7
+ }
8
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/agents/generator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AA6ChD,qBAAa,cAAe,YAAW,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAe;IAEjC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAoC1E"}