agentic-qe 3.7.7 → 3.7.9

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 (384) hide show
  1. package/.claude/helpers/statusline-v3.cjs +13 -1
  2. package/.claude/skills/debug-loop/SKILL.md +1 -1
  3. package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  4. package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -0
  5. package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  6. package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  7. package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -0
  8. package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  9. package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  10. package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -0
  11. package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  12. package/.claude/skills/pr-review/SKILL.md +1 -1
  13. package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  14. package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  15. package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  16. package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  17. package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -0
  18. package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  19. package/.claude/skills/skills-manifest.json +1 -1
  20. package/.claude/skills/trust-tier-manifest.json +78 -7
  21. package/CHANGELOG.md +39 -0
  22. package/README.md +36 -0
  23. package/assets/skills/a11y-ally/SKILL.md +1664 -1658
  24. package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
  25. package/assets/skills/a11y-ally/schemas/output.json +549 -0
  26. package/assets/skills/a11y-ally/scripts/validate-config.json +42 -0
  27. package/assets/skills/brutal-honesty-review/SKILL.md +5 -0
  28. package/assets/skills/brutal-honesty-review/schemas/output.json +291 -0
  29. package/assets/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
  30. package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +1 -1
  31. package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
  32. package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
  33. package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
  34. package/assets/skills/cicd-pipeline-qe-orchestrator/scripts/validate-config.json +42 -0
  35. package/assets/skills/debug-loop/SKILL.md +1 -1
  36. package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  37. package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -0
  38. package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  39. package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  40. package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -0
  41. package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  42. package/assets/skills/n8n-expression-testing/SKILL.md +6 -0
  43. package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
  44. package/assets/skills/n8n-expression-testing/schemas/output.json +369 -0
  45. package/assets/skills/n8n-expression-testing/scripts/validate-config.json +39 -0
  46. package/assets/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
  47. package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
  48. package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
  49. package/assets/skills/n8n-integration-testing-patterns/scripts/validate-config.json +34 -0
  50. package/assets/skills/n8n-security-testing/SKILL.md +6 -0
  51. package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
  52. package/assets/skills/n8n-security-testing/schemas/output.json +293 -0
  53. package/assets/skills/n8n-security-testing/scripts/validate-config.json +34 -0
  54. package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
  55. package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
  56. package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
  57. package/assets/skills/n8n-trigger-testing-strategies/scripts/validate-config.json +34 -0
  58. package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
  59. package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
  60. package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
  61. package/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate-config.json +35 -0
  62. package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  63. package/assets/skills/observability-testing-patterns/schemas/output.json +58 -0
  64. package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  65. package/assets/skills/pentest-validation/scripts/validate-config.json +12 -0
  66. package/assets/skills/pr-review/SKILL.md +1 -1
  67. package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  68. package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  69. package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  70. package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  71. package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -0
  72. package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  73. package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  74. package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
  75. package/assets/skills/qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  76. package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -0
  77. package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
  78. package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -0
  79. package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -0
  80. package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +139 -0
  81. package/assets/skills/qcsd-refinement-swarm/schemas/output.json +811 -0
  82. package/assets/skills/qcsd-refinement-swarm/scripts/validate-config.json +25 -0
  83. package/assets/skills/security-visual-testing/scripts/validate-config.json +45 -0
  84. package/assets/skills/sherlock-review/SKILL.md +5 -0
  85. package/assets/skills/sherlock-review/schemas/output.json +297 -0
  86. package/assets/skills/sherlock-review/scripts/validate-config.json +35 -0
  87. package/assets/skills/testability-scoring/SKILL.md +5 -0
  88. package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
  89. package/assets/skills/testability-scoring/schemas/output.json +606 -0
  90. package/assets/skills/testability-scoring/scripts/validate-config.json +42 -0
  91. package/assets/skills/trust-tier-manifest.json +2404 -0
  92. package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -0
  93. package/assets/skills/wms-testing-patterns/schemas/output.json +150 -0
  94. package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -0
  95. package/dist/benchmarks/performance-benchmarks.js +1 -1
  96. package/dist/cli/bundle.js +10154 -2421
  97. package/dist/cli/commands/hooks.d.ts.map +1 -1
  98. package/dist/cli/commands/hooks.js +92 -0
  99. package/dist/cli/commands/hooks.js.map +1 -1
  100. package/dist/cli/commands/migrate.js +2 -2
  101. package/dist/coordination/complexity-composition/index.d.ts +2 -0
  102. package/dist/coordination/complexity-composition/index.d.ts.map +1 -0
  103. package/dist/coordination/complexity-composition/index.js +2 -0
  104. package/dist/coordination/complexity-composition/index.js.map +1 -0
  105. package/dist/coordination/complexity-composition/team-composer.d.ts +72 -0
  106. package/dist/coordination/complexity-composition/team-composer.d.ts.map +1 -0
  107. package/dist/coordination/complexity-composition/team-composer.js +221 -0
  108. package/dist/coordination/complexity-composition/team-composer.js.map +1 -0
  109. package/dist/coordination/consensus/consensus-engine.d.ts +10 -1
  110. package/dist/coordination/consensus/consensus-engine.d.ts.map +1 -1
  111. package/dist/coordination/consensus/consensus-engine.js +31 -1
  112. package/dist/coordination/consensus/consensus-engine.js.map +1 -1
  113. package/dist/coordination/consensus/index.d.ts +1 -0
  114. package/dist/coordination/consensus/index.d.ts.map +1 -1
  115. package/dist/coordination/consensus/index.js +4 -0
  116. package/dist/coordination/consensus/index.js.map +1 -1
  117. package/dist/coordination/consensus/interfaces.d.ts +5 -0
  118. package/dist/coordination/consensus/interfaces.d.ts.map +1 -1
  119. package/dist/coordination/consensus/interfaces.js +1 -0
  120. package/dist/coordination/consensus/interfaces.js.map +1 -1
  121. package/dist/coordination/consensus/sycophancy-scorer.d.ts +62 -0
  122. package/dist/coordination/consensus/sycophancy-scorer.d.ts.map +1 -0
  123. package/dist/coordination/consensus/sycophancy-scorer.js +200 -0
  124. package/dist/coordination/consensus/sycophancy-scorer.js.map +1 -0
  125. package/dist/coordination/constants.d.ts +1 -1
  126. package/dist/coordination/constants.js +1 -1
  127. package/dist/coordination/fleet-tiers/tier-selector.d.ts +20 -0
  128. package/dist/coordination/fleet-tiers/tier-selector.d.ts.map +1 -1
  129. package/dist/coordination/fleet-tiers/tier-selector.js +31 -0
  130. package/dist/coordination/fleet-tiers/tier-selector.js.map +1 -1
  131. package/dist/coordination/fleet-tiers/types.d.ts +2 -0
  132. package/dist/coordination/fleet-tiers/types.d.ts.map +1 -1
  133. package/dist/coordination/handlers/coverage-handlers.js +1 -1
  134. package/dist/coordination/handlers/coverage-handlers.js.map +1 -1
  135. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +1 -1
  136. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts.map +1 -1
  137. package/dist/domains/code-intelligence/services/semantic-analyzer.js +1 -1
  138. package/dist/domains/code-intelligence/services/semantic-analyzer.js.map +1 -1
  139. package/dist/domains/coverage-analysis/coordinator.js +1 -1
  140. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +1 -1
  141. package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts +1 -1
  142. package/dist/domains/coverage-analysis/services/coverage-embedder.js +1 -1
  143. package/dist/domains/coverage-analysis/services/gap-detector.js +1 -1
  144. package/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +1 -1
  145. package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +2 -2
  146. package/dist/domains/coverage-analysis/services/hnsw-index.js +3 -3
  147. package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +1 -1
  148. package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +1 -1
  149. package/dist/domains/test-execution/services/test-prioritizer.js +1 -1
  150. package/dist/domains/test-generation/blind-review/blind-review-orchestrator.d.ts +65 -0
  151. package/dist/domains/test-generation/blind-review/blind-review-orchestrator.d.ts.map +1 -0
  152. package/dist/domains/test-generation/blind-review/blind-review-orchestrator.js +189 -0
  153. package/dist/domains/test-generation/blind-review/blind-review-orchestrator.js.map +1 -0
  154. package/dist/domains/test-generation/blind-review/index.d.ts +2 -0
  155. package/dist/domains/test-generation/blind-review/index.d.ts.map +1 -0
  156. package/dist/domains/test-generation/blind-review/index.js +2 -0
  157. package/dist/domains/test-generation/blind-review/index.js.map +1 -0
  158. package/dist/domains/test-generation/context/rust-context-builder.d.ts +31 -0
  159. package/dist/domains/test-generation/context/rust-context-builder.d.ts.map +1 -0
  160. package/dist/domains/test-generation/context/rust-context-builder.js +27 -0
  161. package/dist/domains/test-generation/context/rust-context-builder.js.map +1 -0
  162. package/dist/domains/test-generation/coordinator.js +3 -3
  163. package/dist/domains/test-generation/coordinator.js.map +1 -1
  164. package/dist/domains/test-generation/detectors/mobile-detector.d.ts +41 -0
  165. package/dist/domains/test-generation/detectors/mobile-detector.d.ts.map +1 -0
  166. package/dist/domains/test-generation/detectors/mobile-detector.js +111 -0
  167. package/dist/domains/test-generation/detectors/mobile-detector.js.map +1 -0
  168. package/dist/domains/test-generation/detectors/spring-detector.d.ts +22 -0
  169. package/dist/domains/test-generation/detectors/spring-detector.d.ts.map +1 -0
  170. package/dist/domains/test-generation/detectors/spring-detector.js +37 -0
  171. package/dist/domains/test-generation/detectors/spring-detector.js.map +1 -0
  172. package/dist/domains/test-generation/factories/test-generator-factory.d.ts +2 -1
  173. package/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -1
  174. package/dist/domains/test-generation/factories/test-generator-factory.js +33 -13
  175. package/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -1
  176. package/dist/domains/test-generation/gates/index.d.ts +2 -0
  177. package/dist/domains/test-generation/gates/index.d.ts.map +1 -0
  178. package/dist/domains/test-generation/gates/index.js +2 -0
  179. package/dist/domains/test-generation/gates/index.js.map +1 -0
  180. package/dist/domains/test-generation/gates/test-quality-gate.d.ts +85 -0
  181. package/dist/domains/test-generation/gates/test-quality-gate.d.ts.map +1 -0
  182. package/dist/domains/test-generation/gates/test-quality-gate.js +320 -0
  183. package/dist/domains/test-generation/gates/test-quality-gate.js.map +1 -0
  184. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts +107 -0
  185. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts.map +1 -0
  186. package/dist/domains/test-generation/generators/flutter-test-generator.js +590 -0
  187. package/dist/domains/test-generation/generators/flutter-test-generator.js.map +1 -0
  188. package/dist/domains/test-generation/generators/go-test-generator.d.ts +139 -0
  189. package/dist/domains/test-generation/generators/go-test-generator.d.ts.map +1 -0
  190. package/dist/domains/test-generation/generators/go-test-generator.js +654 -0
  191. package/dist/domains/test-generation/generators/go-test-generator.js.map +1 -0
  192. package/dist/domains/test-generation/generators/index.d.ts +8 -0
  193. package/dist/domains/test-generation/generators/index.d.ts.map +1 -1
  194. package/dist/domains/test-generation/generators/index.js +8 -0
  195. package/dist/domains/test-generation/generators/index.js.map +1 -1
  196. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts +95 -0
  197. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts.map +1 -0
  198. package/dist/domains/test-generation/generators/jest-rn-generator.js +591 -0
  199. package/dist/domains/test-generation/generators/jest-rn-generator.js.map +1 -0
  200. package/dist/domains/test-generation/generators/junit5-generator.d.ts +107 -0
  201. package/dist/domains/test-generation/generators/junit5-generator.d.ts.map +1 -0
  202. package/dist/domains/test-generation/generators/junit5-generator.js +588 -0
  203. package/dist/domains/test-generation/generators/junit5-generator.js.map +1 -0
  204. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts +109 -0
  205. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts.map +1 -0
  206. package/dist/domains/test-generation/generators/kotlin-junit-generator.js +588 -0
  207. package/dist/domains/test-generation/generators/kotlin-junit-generator.js.map +1 -0
  208. package/dist/domains/test-generation/generators/pytest-generator.d.ts +8 -1
  209. package/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
  210. package/dist/domains/test-generation/generators/pytest-generator.js +57 -0
  211. package/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
  212. package/dist/domains/test-generation/generators/rust-test-generator.d.ts +80 -0
  213. package/dist/domains/test-generation/generators/rust-test-generator.d.ts.map +1 -0
  214. package/dist/domains/test-generation/generators/rust-test-generator.js +442 -0
  215. package/dist/domains/test-generation/generators/rust-test-generator.js.map +1 -0
  216. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts +97 -0
  217. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts.map +1 -0
  218. package/dist/domains/test-generation/generators/swift-testing-generator.js +482 -0
  219. package/dist/domains/test-generation/generators/swift-testing-generator.js.map +1 -0
  220. package/dist/domains/test-generation/generators/xunit-generator.d.ts +110 -0
  221. package/dist/domains/test-generation/generators/xunit-generator.d.ts.map +1 -0
  222. package/dist/domains/test-generation/generators/xunit-generator.js +611 -0
  223. package/dist/domains/test-generation/generators/xunit-generator.js.map +1 -0
  224. package/dist/domains/test-generation/interfaces.d.ts +14 -2
  225. package/dist/domains/test-generation/interfaces.d.ts.map +1 -1
  226. package/dist/domains/test-generation/pattern-injection/edge-case-injector.d.ts +68 -0
  227. package/dist/domains/test-generation/pattern-injection/edge-case-injector.d.ts.map +1 -0
  228. package/dist/domains/test-generation/pattern-injection/edge-case-injector.js +225 -0
  229. package/dist/domains/test-generation/pattern-injection/edge-case-injector.js.map +1 -0
  230. package/dist/domains/test-generation/pattern-injection/index.d.ts +2 -0
  231. package/dist/domains/test-generation/pattern-injection/index.d.ts.map +1 -0
  232. package/dist/domains/test-generation/pattern-injection/index.js +2 -0
  233. package/dist/domains/test-generation/pattern-injection/index.js.map +1 -0
  234. package/dist/domains/test-generation/prompts/language-prompts.d.ts +29 -0
  235. package/dist/domains/test-generation/prompts/language-prompts.d.ts.map +1 -0
  236. package/dist/domains/test-generation/prompts/language-prompts.js +135 -0
  237. package/dist/domains/test-generation/prompts/language-prompts.js.map +1 -0
  238. package/dist/domains/test-generation/services/compilation-validator.d.ts +43 -0
  239. package/dist/domains/test-generation/services/compilation-validator.d.ts.map +1 -0
  240. package/dist/domains/test-generation/services/compilation-validator.js +134 -0
  241. package/dist/domains/test-generation/services/compilation-validator.js.map +1 -0
  242. package/dist/domains/test-generation/services/index.d.ts +2 -1
  243. package/dist/domains/test-generation/services/index.d.ts.map +1 -1
  244. package/dist/domains/test-generation/services/index.js +3 -1
  245. package/dist/domains/test-generation/services/index.js.map +1 -1
  246. package/dist/domains/test-generation/services/test-file-resolver.d.ts +32 -0
  247. package/dist/domains/test-generation/services/test-file-resolver.d.ts.map +1 -0
  248. package/dist/domains/test-generation/services/test-file-resolver.js +159 -0
  249. package/dist/domains/test-generation/services/test-file-resolver.js.map +1 -0
  250. package/dist/domains/test-generation/services/test-generator.d.ts +16 -0
  251. package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
  252. package/dist/domains/test-generation/services/test-generator.js +116 -10
  253. package/dist/domains/test-generation/services/test-generator.js.map +1 -1
  254. package/dist/governance/feature-flags.js +2 -2
  255. package/dist/governance/feature-flags.js.map +1 -1
  256. package/dist/governance/shard-embeddings.js +1 -1
  257. package/dist/init/init-wizard-hooks.d.ts.map +1 -1
  258. package/dist/init/init-wizard-hooks.js +0 -1
  259. package/dist/init/init-wizard-hooks.js.map +1 -1
  260. package/dist/init/phases/07-hooks.d.ts.map +1 -1
  261. package/dist/init/phases/07-hooks.js +0 -2
  262. package/dist/init/phases/07-hooks.js.map +1 -1
  263. package/dist/init/phases/08-mcp.d.ts +8 -4
  264. package/dist/init/phases/08-mcp.d.ts.map +1 -1
  265. package/dist/init/phases/08-mcp.js +13 -31
  266. package/dist/init/phases/08-mcp.js.map +1 -1
  267. package/dist/init/phases/10-workers.js +2 -2
  268. package/dist/init/phases/10-workers.js.map +1 -1
  269. package/dist/init/settings-merge.d.ts.map +1 -1
  270. package/dist/init/settings-merge.js +0 -2
  271. package/dist/init/settings-merge.js.map +1 -1
  272. package/dist/init/token-bootstrap.js +1 -1
  273. package/dist/init/token-bootstrap.js.map +1 -1
  274. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +8 -2
  275. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts.map +1 -1
  276. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +62 -38
  277. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js.map +1 -1
  278. package/dist/integrations/rl-suite/algorithms/decision-transformer.js +1 -1
  279. package/dist/kernel/constants.d.ts +2 -2
  280. package/dist/kernel/constants.js +2 -2
  281. package/dist/kernel/hnsw-adapter.js +1 -1
  282. package/dist/kernel/progressive-hnsw-backend.d.ts +2 -2
  283. package/dist/kernel/progressive-hnsw-backend.js +2 -2
  284. package/dist/learning/dream/concept-graph.d.ts +1 -1
  285. package/dist/learning/dream/concept-graph.js +1 -1
  286. package/dist/learning/dream/dream-engine.d.ts +1 -1
  287. package/dist/learning/dream/dream-engine.js +1 -1
  288. package/dist/learning/dream/index.d.ts +1 -1
  289. package/dist/learning/dream/index.js +1 -1
  290. package/dist/learning/dream/types.d.ts +1 -1
  291. package/dist/learning/dream/types.d.ts.map +1 -1
  292. package/dist/learning/dream/types.js +1 -1
  293. package/dist/learning/dream/types.js.map +1 -1
  294. package/dist/learning/experience-capture.d.ts +12 -2
  295. package/dist/learning/experience-capture.d.ts.map +1 -1
  296. package/dist/learning/experience-capture.js +28 -35
  297. package/dist/learning/experience-capture.js.map +1 -1
  298. package/dist/learning/experience-consolidation.d.ts +74 -0
  299. package/dist/learning/experience-consolidation.d.ts.map +1 -0
  300. package/dist/learning/experience-consolidation.js +403 -0
  301. package/dist/learning/experience-consolidation.js.map +1 -0
  302. package/dist/learning/token-tracker.js +1 -1
  303. package/dist/learning/token-tracker.js.map +1 -1
  304. package/dist/mcp/bundle.js +9453 -1166
  305. package/dist/routing/calibration/ema-calibrator.d.ts +93 -0
  306. package/dist/routing/calibration/ema-calibrator.d.ts.map +1 -0
  307. package/dist/routing/calibration/ema-calibrator.js +140 -0
  308. package/dist/routing/calibration/ema-calibrator.js.map +1 -0
  309. package/dist/routing/calibration/index.d.ts +2 -0
  310. package/dist/routing/calibration/index.d.ts.map +1 -0
  311. package/dist/routing/calibration/index.js +2 -0
  312. package/dist/routing/calibration/index.js.map +1 -0
  313. package/dist/routing/escalation/auto-escalation-tracker.d.ts +62 -0
  314. package/dist/routing/escalation/auto-escalation-tracker.d.ts.map +1 -0
  315. package/dist/routing/escalation/auto-escalation-tracker.js +116 -0
  316. package/dist/routing/escalation/auto-escalation-tracker.js.map +1 -0
  317. package/dist/routing/escalation/index.d.ts +2 -0
  318. package/dist/routing/escalation/index.d.ts.map +1 -0
  319. package/dist/routing/escalation/index.js +2 -0
  320. package/dist/routing/escalation/index.js.map +1 -0
  321. package/dist/routing/index.d.ts +4 -0
  322. package/dist/routing/index.d.ts.map +1 -1
  323. package/dist/routing/index.js +4 -0
  324. package/dist/routing/index.js.map +1 -1
  325. package/dist/routing/qe-agent-registry.js +4 -4
  326. package/dist/routing/qe-agent-registry.js.map +1 -1
  327. package/dist/routing/routing-config.d.ts +4 -0
  328. package/dist/routing/routing-config.d.ts.map +1 -1
  329. package/dist/routing/routing-config.js +2 -0
  330. package/dist/routing/routing-config.js.map +1 -1
  331. package/dist/routing/routing-feedback.d.ts +35 -2
  332. package/dist/routing/routing-feedback.d.ts.map +1 -1
  333. package/dist/routing/routing-feedback.js +97 -3
  334. package/dist/routing/routing-feedback.js.map +1 -1
  335. package/dist/routing/types.d.ts +7 -8
  336. package/dist/routing/types.d.ts.map +1 -1
  337. package/dist/routing/types.js.map +1 -1
  338. package/dist/shared/embeddings/embedding-cache.js +2 -2
  339. package/dist/shared/embeddings/index.d.ts +2 -2
  340. package/dist/shared/embeddings/index.js +2 -2
  341. package/dist/shared/embeddings/nomic-embedder.d.ts +4 -4
  342. package/dist/shared/embeddings/nomic-embedder.js +2 -2
  343. package/dist/shared/embeddings/ollama-client.d.ts +1 -1
  344. package/dist/shared/embeddings/ollama-client.js +2 -2
  345. package/dist/shared/embeddings/ollama-client.js.map +1 -1
  346. package/dist/shared/embeddings/types.d.ts +2 -2
  347. package/dist/shared/embeddings/types.js +2 -2
  348. package/dist/shared/language-detector.d.ts +46 -0
  349. package/dist/shared/language-detector.d.ts.map +1 -0
  350. package/dist/shared/language-detector.js +183 -0
  351. package/dist/shared/language-detector.js.map +1 -0
  352. package/dist/shared/llm/providers/ollama.js +1 -1
  353. package/dist/shared/metrics/code-metrics.d.ts.map +1 -1
  354. package/dist/shared/metrics/code-metrics.js +24 -1
  355. package/dist/shared/metrics/code-metrics.js.map +1 -1
  356. package/dist/shared/parsers/index.d.ts +2 -0
  357. package/dist/shared/parsers/index.d.ts.map +1 -1
  358. package/dist/shared/parsers/index.js +2 -0
  359. package/dist/shared/parsers/index.js.map +1 -1
  360. package/dist/shared/parsers/interfaces.d.ts +81 -0
  361. package/dist/shared/parsers/interfaces.d.ts.map +1 -0
  362. package/dist/shared/parsers/interfaces.js +6 -0
  363. package/dist/shared/parsers/interfaces.js.map +1 -0
  364. package/dist/shared/parsers/multi-language-parser.d.ts +144 -0
  365. package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -0
  366. package/dist/shared/parsers/multi-language-parser.js +1232 -0
  367. package/dist/shared/parsers/multi-language-parser.js.map +1 -0
  368. package/dist/shared/parsers/rust-ownership-analyzer.d.ts +45 -0
  369. package/dist/shared/parsers/rust-ownership-analyzer.d.ts.map +1 -0
  370. package/dist/shared/parsers/rust-ownership-analyzer.js +52 -0
  371. package/dist/shared/parsers/rust-ownership-analyzer.js.map +1 -0
  372. package/dist/shared/parsers/typescript-parser.d.ts +16 -0
  373. package/dist/shared/parsers/typescript-parser.d.ts.map +1 -1
  374. package/dist/shared/parsers/typescript-parser.js +85 -0
  375. package/dist/shared/parsers/typescript-parser.js.map +1 -1
  376. package/dist/shared/types/test-frameworks.d.ts +25 -0
  377. package/dist/shared/types/test-frameworks.d.ts.map +1 -0
  378. package/dist/shared/types/test-frameworks.js +111 -0
  379. package/dist/shared/types/test-frameworks.js.map +1 -0
  380. package/dist/workers/workers/learning-consolidation.d.ts.map +1 -1
  381. package/dist/workers/workers/learning-consolidation.js +32 -0
  382. package/dist/workers/workers/learning-consolidation.js.map +1 -1
  383. package/package.json +1 -1
  384. package/scripts/prepare-assets.sh +8 -2
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Test Quality Gate - Mock Detector & Mutation Detector
3
+ * Inspired by loki-mode Gates 8 & 9
4
+ *
5
+ * Validates generated test code quality by detecting:
6
+ * 1. No source imports - test never imports from the source file
7
+ * 2. Tautological assertions - expect(true).toBe(true), expect(x).toBe(x)
8
+ * 3. Empty test bodies - it('...', () => {}) with no assertions
9
+ * 4. Mirrored assertions - expected values copy-pasted from source literals
10
+ *
11
+ * All detection is regex-based, no LLM calls.
12
+ */
13
+ const DEFAULT_CONFIG = {
14
+ checkSourceImports: true,
15
+ checkTautologicalAssertions: true,
16
+ checkEmptyTestBodies: true,
17
+ checkMirroredAssertions: true,
18
+ minPassScore: 60,
19
+ };
20
+ // ============================================================================
21
+ // TestQualityGate
22
+ // ============================================================================
23
+ export class TestQualityGate {
24
+ config;
25
+ constructor(config) {
26
+ this.config = { ...DEFAULT_CONFIG, ...config };
27
+ }
28
+ /**
29
+ * Validate generated test code quality.
30
+ *
31
+ * @param testCode - The generated test source code
32
+ * @param sourceFilePath - Path to the source file under test
33
+ * @param sourceCode - Optional source code content for mirrored assertion check
34
+ * @returns Gate result with pass/fail, issues, and score
35
+ */
36
+ validate(testCode, sourceFilePath, sourceCode) {
37
+ const issues = [];
38
+ if (this.config.checkSourceImports) {
39
+ issues.push(...this.detectMissingSourceImports(testCode, sourceFilePath));
40
+ }
41
+ if (this.config.checkTautologicalAssertions) {
42
+ issues.push(...this.detectTautologicalAssertions(testCode));
43
+ }
44
+ if (this.config.checkEmptyTestBodies) {
45
+ issues.push(...this.detectEmptyTestBodies(testCode));
46
+ }
47
+ if (this.config.checkMirroredAssertions && sourceCode) {
48
+ issues.push(...this.detectMirroredAssertions(testCode, sourceCode));
49
+ }
50
+ const score = this.calculateScore(issues);
51
+ const passed = score >= this.config.minPassScore;
52
+ return { passed, issues, score };
53
+ }
54
+ // ============================================================================
55
+ // Detection Methods
56
+ // ============================================================================
57
+ /**
58
+ * Check whether the test code imports from the source file.
59
+ * If no import/require statement references the source file basename, flag an error.
60
+ */
61
+ detectMissingSourceImports(testCode, sourceFilePath) {
62
+ // Extract basename without extension for matching
63
+ const parts = sourceFilePath.replace(/\\/g, '/').split('/');
64
+ const fileName = parts[parts.length - 1];
65
+ const baseName = fileName.replace(/\.(ts|js|tsx|jsx|mts|mjs|py)$/, '');
66
+ // Collect all import/require paths from the test code
67
+ const importPaths = [];
68
+ // ES import: import ... from '...'
69
+ const esImportRegex = /(?:import|from)\s+['"]([^'"]+)['"]/g;
70
+ let match;
71
+ while ((match = esImportRegex.exec(testCode)) !== null) {
72
+ importPaths.push(match[1]);
73
+ }
74
+ // CommonJS require: require('...')
75
+ const requireRegex = /require\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
76
+ while ((match = requireRegex.exec(testCode)) !== null) {
77
+ importPaths.push(match[1]);
78
+ }
79
+ // Check if any import path references the source file
80
+ const hasSourceImport = importPaths.some((importPath) => {
81
+ const importBaseName = importPath
82
+ .replace(/\\/g, '/')
83
+ .split('/')
84
+ .pop()
85
+ ?.replace(/\.(ts|js|tsx|jsx|mts|mjs)$/, '')
86
+ ?.replace(/\.js$/, '');
87
+ return importBaseName === baseName;
88
+ });
89
+ if (!hasSourceImport && importPaths.length >= 0) {
90
+ return [
91
+ {
92
+ type: 'no-source-import',
93
+ severity: 'error',
94
+ description: `Test does not import from source file "${baseName}". Tests that never reference the source under test are likely mock-only or dead code.`,
95
+ suggestion: `Add an import statement that references the source module, e.g.: import { ... } from './${baseName}.js'`,
96
+ },
97
+ ];
98
+ }
99
+ return [];
100
+ }
101
+ /**
102
+ * Detect tautological assertions where the expected and actual values are identical.
103
+ * Examples: expect(true).toBe(true), expect(x).toBe(x), expect('a').toEqual('a')
104
+ */
105
+ detectTautologicalAssertions(testCode) {
106
+ const issues = [];
107
+ const lines = testCode.split('\n');
108
+ const matchers = ['toBe', 'toEqual', 'toStrictEqual'];
109
+ const matcherPattern = matchers.join('|');
110
+ // Pattern 1: Literal boolean/null/undefined on both sides
111
+ // expect(true).toBe(true), expect(false).toEqual(false), etc.
112
+ const literalPattern = new RegExp(`expect\\s*\\(\\s*(true|false|null|undefined)\\s*\\)\\s*\\.\\s*(?:${matcherPattern})\\s*\\(\\s*\\1\\s*\\)`);
113
+ // Pattern 2: Same numeric literal on both sides
114
+ // expect(1).toBe(1), expect(42).toEqual(42)
115
+ const numericPattern = new RegExp(`expect\\s*\\(\\s*(\\d+(?:\\.\\d+)?)\\s*\\)\\s*\\.\\s*(?:${matcherPattern})\\s*\\(\\s*\\1\\s*\\)`);
116
+ // Pattern 3: Same string literal on both sides (single or double quotes)
117
+ // expect('hello').toBe('hello'), expect("foo").toEqual("foo")
118
+ const singleQuotePattern = new RegExp(`expect\\s*\\(\\s*'([^']*)'\\s*\\)\\s*\\.\\s*(?:${matcherPattern})\\s*\\(\\s*'\\1'\\s*\\)`);
119
+ const doubleQuotePattern = new RegExp(`expect\\s*\\(\\s*"([^"]*)"\\s*\\)\\s*\\.\\s*(?:${matcherPattern})\\s*\\(\\s*"\\1"\\s*\\)`);
120
+ // Pattern 4: Same identifier on both sides
121
+ // expect(x).toBe(x), expect(result).toEqual(result)
122
+ const identifierPattern = new RegExp(`expect\\s*\\(\\s*([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*\\)\\s*\\.\\s*(?:${matcherPattern})\\s*\\(\\s*\\1\\s*\\)`);
123
+ for (let i = 0; i < lines.length; i++) {
124
+ const line = lines[i];
125
+ const lineNum = i + 1;
126
+ if (literalPattern.test(line)) {
127
+ const literalMatch = line.match(literalPattern);
128
+ issues.push({
129
+ type: 'tautological-assertion',
130
+ severity: 'error',
131
+ line: lineNum,
132
+ description: `Tautological assertion: expect(${literalMatch?.[1]}) always equals itself.`,
133
+ suggestion: 'Replace with a meaningful assertion that tests actual behavior, e.g.: expect(myFunction()).toBe(expectedValue)',
134
+ });
135
+ }
136
+ else if (numericPattern.test(line)) {
137
+ const numMatch = line.match(numericPattern);
138
+ issues.push({
139
+ type: 'tautological-assertion',
140
+ severity: 'error',
141
+ line: lineNum,
142
+ description: `Tautological assertion: expect(${numMatch?.[1]}) always equals itself.`,
143
+ suggestion: 'Replace with a meaningful assertion that tests actual behavior.',
144
+ });
145
+ }
146
+ else if (singleQuotePattern.test(line)) {
147
+ const strMatch = line.match(singleQuotePattern);
148
+ issues.push({
149
+ type: 'tautological-assertion',
150
+ severity: 'error',
151
+ line: lineNum,
152
+ description: `Tautological assertion: expect('${strMatch?.[1]}') always equals itself.`,
153
+ suggestion: 'Replace with a meaningful assertion that tests actual behavior.',
154
+ });
155
+ }
156
+ else if (doubleQuotePattern.test(line)) {
157
+ const strMatch = line.match(doubleQuotePattern);
158
+ issues.push({
159
+ type: 'tautological-assertion',
160
+ severity: 'error',
161
+ line: lineNum,
162
+ description: `Tautological assertion: expect("${strMatch?.[1]}") always equals itself.`,
163
+ suggestion: 'Replace with a meaningful assertion that tests actual behavior.',
164
+ });
165
+ }
166
+ else if (identifierPattern.test(line)) {
167
+ const idMatch = line.match(identifierPattern);
168
+ // Avoid false positives with common non-tautological patterns
169
+ // like expect(result).toBe(result) where result is a computed value
170
+ // We flag it anyway since same-variable assertions are always suspicious
171
+ issues.push({
172
+ type: 'tautological-assertion',
173
+ severity: 'error',
174
+ line: lineNum,
175
+ description: `Tautological assertion: expect(${idMatch?.[1]}).toBe(${idMatch?.[1]}) compares a value to itself.`,
176
+ suggestion: 'Compute expected value independently from the actual value.',
177
+ });
178
+ }
179
+ }
180
+ return issues;
181
+ }
182
+ /**
183
+ * Detect empty test bodies - test/it blocks with no assertions or meaningful code.
184
+ * Matches: it('...', () => {}), test('...', () => { /* comment * / })
185
+ */
186
+ detectEmptyTestBodies(testCode) {
187
+ const issues = [];
188
+ const lines = testCode.split('\n');
189
+ // Match it(...) or test(...) blocks with empty or comment-only bodies
190
+ // We look for patterns like:
191
+ // it('desc', () => {})
192
+ // it('desc', () => { })
193
+ // it('desc', () => { /* comment */ })
194
+ // it('desc', function() {})
195
+ // test('desc', () => {})
196
+ //
197
+ // Two-phase approach to avoid ReDoS: first match the block structure,
198
+ // then check if the body contains only whitespace and comments.
199
+ const testBlockRegex = /(?:it|test)\s*\(\s*(?:'[^']*'|"[^"]*"|`[^`]*`)\s*,\s*(?:async\s+)?(?:\(\)\s*=>|function\s*\(\))\s*\{([^}]*)\}\s*\)/;
200
+ const isEmptyOrCommentOnly = (body) => {
201
+ // Strip block comments, then line comments, then check if only whitespace remains
202
+ const stripped = body.replace(/\/\*[^*]*\*\//g, '').replace(/\/\/[^\n]*/g, '');
203
+ return stripped.trim().length === 0;
204
+ };
205
+ for (let i = 0; i < lines.length; i++) {
206
+ // Only check lines that start a test block
207
+ if (!/(?:it|test)\s*\(/.test(lines[i]))
208
+ continue;
209
+ // Build a multi-line window to catch bodies that span 1-3 lines
210
+ const window = lines.slice(i, i + 4).join(' ');
211
+ const match = testBlockRegex.exec(window);
212
+ if (match && isEmptyOrCommentOnly(match[1])) {
213
+ issues.push({
214
+ type: 'empty-test-body',
215
+ severity: 'error',
216
+ line: i + 1,
217
+ description: 'Empty test body: this test has no assertions or meaningful code.',
218
+ suggestion: 'Add assertions that verify the expected behavior of the code under test.',
219
+ });
220
+ }
221
+ }
222
+ return issues;
223
+ }
224
+ /**
225
+ * Detect mirrored assertions - expected values that appear to be copy-pasted
226
+ * from source code literals rather than independently computed.
227
+ */
228
+ detectMirroredAssertions(testCode, sourceCode) {
229
+ const issues = [];
230
+ // Extract non-trivial literals from source code
231
+ const sourceLiterals = this.extractNonTrivialLiterals(sourceCode);
232
+ if (sourceLiterals.length === 0)
233
+ return issues;
234
+ const lines = testCode.split('\n');
235
+ const matcherPattern = /\.(?:toBe|toEqual|toStrictEqual)\s*\(\s*(.+?)\s*\)/;
236
+ for (let i = 0; i < lines.length; i++) {
237
+ const line = lines[i];
238
+ const assertionMatch = line.match(matcherPattern);
239
+ if (!assertionMatch)
240
+ continue;
241
+ const expectedValue = assertionMatch[1].trim();
242
+ // Check if the expected value matches a source literal
243
+ for (const literal of sourceLiterals) {
244
+ if (this.literalMatches(expectedValue, literal)) {
245
+ issues.push({
246
+ type: 'mirrored-assertion',
247
+ severity: 'warning',
248
+ line: i + 1,
249
+ description: `Assertion expected value "${expectedValue}" mirrors a literal from the source code. This may indicate the test was generated by copying source values rather than computing expected results independently.`,
250
+ suggestion: 'Verify the expected value is derived from requirements, not copied from the implementation.',
251
+ });
252
+ break; // One warning per line is enough
253
+ }
254
+ }
255
+ }
256
+ return issues;
257
+ }
258
+ // ============================================================================
259
+ // Utility Methods
260
+ // ============================================================================
261
+ /**
262
+ * Extract non-trivial string and number literals from source code.
263
+ * Trivial values (true, false, null, undefined, 0, 1, '', "") are excluded.
264
+ */
265
+ extractNonTrivialLiterals(sourceCode) {
266
+ const literals = new Set();
267
+ const trivialValues = new Set([
268
+ 'true', 'false', 'null', 'undefined',
269
+ '0', '1', '-1', '""', "''", '``',
270
+ ]);
271
+ // Extract string literals (single and double quoted)
272
+ const stringRegex = /(?:=|return|:)\s*(['"])(.+?)\1/g;
273
+ let match;
274
+ while ((match = stringRegex.exec(sourceCode)) !== null) {
275
+ const value = match[2];
276
+ if (value.length >= 2 && !trivialValues.has(value)) {
277
+ literals.add(`'${value}'`);
278
+ literals.add(`"${value}"`);
279
+ }
280
+ }
281
+ // Extract number literals (non-trivial: > 1 or decimals)
282
+ const numberRegex = /(?:=|return|:)\s*(\d+(?:\.\d+)?)\b/g;
283
+ while ((match = numberRegex.exec(sourceCode)) !== null) {
284
+ const value = match[1];
285
+ if (!trivialValues.has(value)) {
286
+ literals.add(value);
287
+ }
288
+ }
289
+ return Array.from(literals);
290
+ }
291
+ /**
292
+ * Check if an assertion expected value matches a source literal.
293
+ */
294
+ literalMatches(expectedValue, sourceLiteral) {
295
+ // Direct match
296
+ if (expectedValue === sourceLiteral)
297
+ return true;
298
+ // Strip quotes for comparison
299
+ const stripped = expectedValue.replace(/^['"`]|['"`]$/g, '');
300
+ const sourceStripped = sourceLiteral.replace(/^['"`]|['"`]$/g, '');
301
+ return stripped === sourceStripped && stripped.length >= 2;
302
+ }
303
+ /**
304
+ * Calculate quality score from issues.
305
+ * Start at 100, subtract per issue (error: -20, warning: -5), clamp to 0.
306
+ */
307
+ calculateScore(issues) {
308
+ let score = 100;
309
+ for (const issue of issues) {
310
+ if (issue.severity === 'error') {
311
+ score -= 20;
312
+ }
313
+ else {
314
+ score -= 5;
315
+ }
316
+ }
317
+ return Math.max(0, score);
318
+ }
319
+ }
320
+ //# sourceMappingURL=test-quality-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-quality-gate.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/gates/test-quality-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Agentic QE v3 - Flutter Test Generator
3
+ * Strategy implementation for Flutter/Dart test framework
4
+ *
5
+ * Generates test code using:
6
+ * - flutter_test package (group, test, testWidgets, expect)
7
+ * - mockito package (@GenerateMocks, when/verify/thenReturn)
8
+ * - setUp / tearDown lifecycle hooks
9
+ * - async/await with Future<T> handling
10
+ * - Dart null safety (T? types)
11
+ * - WidgetTester for widget tests
12
+ *
13
+ * @module test-generation/generators
14
+ */
15
+ import { BaseTestGenerator } from './base-test-generator.js';
16
+ import type { TestFramework, TestType, FunctionInfo, ClassInfo, TestGenerationContext, CodeAnalysis } from '../interfaces.js';
17
+ import type { ParsedFile } from '../../../shared/parsers/interfaces.js';
18
+ /**
19
+ * FlutterTestGenerator - Test generator for Flutter/Dart test framework
20
+ *
21
+ * Produces idiomatic Dart test files using flutter_test and mockito,
22
+ * with support for widget tests, async Future handling, and null safety.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const generator = new FlutterTestGenerator();
27
+ * const testCode = generator.generateTests({
28
+ * moduleName: 'UserService',
29
+ * importPath: 'package:my_app/services/user_service.dart',
30
+ * testType: 'unit',
31
+ * patterns: [],
32
+ * analysis: { functions: [...], classes: [...] }
33
+ * });
34
+ * ```
35
+ */
36
+ export declare class FlutterTestGenerator extends BaseTestGenerator {
37
+ readonly framework: TestFramework;
38
+ /**
39
+ * Dart primitive types for type-aware value generation
40
+ */
41
+ private static readonly DART_TYPE_DEFAULTS;
42
+ /**
43
+ * Generate complete Dart test file from analysis
44
+ */
45
+ generateTests(context: TestGenerationContext): string;
46
+ /**
47
+ * Generate tests for a standalone function
48
+ */
49
+ generateFunctionTests(fn: FunctionInfo, _testType: TestType): string;
50
+ /**
51
+ * Generate tests for a class, including dependency injection via Mockito
52
+ */
53
+ generateClassTests(cls: ClassInfo, testType: TestType): string;
54
+ /**
55
+ * Generate stub tests when no AST analysis is available
56
+ */
57
+ generateStubTests(context: TestGenerationContext): string;
58
+ /**
59
+ * Generate coverage-focused tests for specific lines
60
+ */
61
+ generateCoverageTests(moduleName: string, importPath: string, lines: number[]): string;
62
+ /**
63
+ * Convert a ParsedFile (language-agnostic) to ICodeAnalysis for this generator
64
+ */
65
+ static convertParsedFile(parsed: ParsedFile): CodeAnalysis;
66
+ /**
67
+ * Generate Dart import statements for a test file
68
+ */
69
+ private generateDartImports;
70
+ /**
71
+ * Collect all types that need @GenerateMocks
72
+ */
73
+ private collectMockClasses;
74
+ /**
75
+ * Determine if a type looks like a service/repository (should be mocked)
76
+ */
77
+ private isDartServiceType;
78
+ /**
79
+ * Check if any class in the analysis looks like a Flutter Widget
80
+ */
81
+ private hasWidgetLikeClasses;
82
+ /**
83
+ * Determine if a class is a Widget (by name convention or methods)
84
+ */
85
+ private isWidgetClass;
86
+ /**
87
+ * Extract constructor dependencies that should be mocked
88
+ */
89
+ private extractMockDependencies;
90
+ /**
91
+ * Generate tests for a class method
92
+ */
93
+ private generateMethodTests;
94
+ /**
95
+ * Generate Dart-idiomatic test cases for a function
96
+ */
97
+ private generateDartTestCases;
98
+ /**
99
+ * Generate a Dart test value based on parameter name and type
100
+ */
101
+ private generateDartValue;
102
+ /**
103
+ * Indent a block of code by a given number of spaces
104
+ */
105
+ private indentBlock;
106
+ }
107
+ //# sourceMappingURL=flutter-test-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flutter-test-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/flutter-test-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,qBAAqB,EACrB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAkB;IAEnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAWxC;IAMF;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAsCrD;;OAEG;IACH,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAmBpE;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM;IA2D9D;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAiCzD;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM;IA+BT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IA4D1D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwF3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+F7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACH,OAAO,CAAC,WAAW;CAOpB"}