igel-qe-core 1.0.5 → 1.0.7

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 (629) hide show
  1. package/dist/cli/index.js +638 -54
  2. package/dist/cli/platform.js +0 -12
  3. package/dist/mcp/server.js +183 -8
  4. package/package.json +4 -4
  5. package/src/__pycache__/__init__.cpython-311.pyc +0 -0
  6. package/src/agents/__pycache__/__init__.cpython-311.pyc +0 -0
  7. package/src/agents/__pycache__/automation_design_agent.cpython-311.pyc +0 -0
  8. package/{knowledge_base → src}/agents/__pycache__/automation_design_agent.cpython-313.pyc +0 -0
  9. package/src/agents/__pycache__/code_intelligence_agent.cpython-311.pyc +0 -0
  10. package/src/agents/__pycache__/code_intelligence_agent.cpython-313.pyc +0 -0
  11. package/src/agents/__pycache__/confidence_agent.cpython-311.pyc +0 -0
  12. package/src/agents/__pycache__/confidence_agent.cpython-313.pyc +0 -0
  13. package/src/agents/__pycache__/execution_validation_agent.cpython-311.pyc +0 -0
  14. package/{knowledge_base → src}/agents/__pycache__/execution_validation_agent.cpython-313.pyc +0 -0
  15. package/src/agents/__pycache__/framework_analyzer_agent.cpython-311.pyc +0 -0
  16. package/src/agents/__pycache__/framework_analyzer_agent.cpython-313.pyc +0 -0
  17. package/src/agents/__pycache__/intent_agent.cpython-313.pyc +0 -0
  18. package/src/agents/__pycache__/regression_agent.cpython-311.pyc +0 -0
  19. package/src/agents/__pycache__/regression_agent.cpython-313.pyc +0 -0
  20. package/src/agents/__pycache__/requirement_agent.cpython-311.pyc +0 -0
  21. package/src/agents/__pycache__/requirement_agent.cpython-313.pyc +0 -0
  22. package/src/agents/__pycache__/scenario_agent.cpython-311.pyc +0 -0
  23. package/{knowledge_base → src}/agents/__pycache__/scenario_agent.cpython-313.pyc +0 -0
  24. package/src/agents/__pycache__/script_generator_agent.cpython-311.pyc +0 -0
  25. package/{knowledge_base → src}/agents/__pycache__/script_generator_agent.cpython-313.pyc +0 -0
  26. package/src/agents/__pycache__/testcase_agent.cpython-311.pyc +0 -0
  27. package/src/agents/__pycache__/testcase_agent.cpython-313.pyc +0 -0
  28. package/src/agents/__pycache__/validation_agent.cpython-311.pyc +0 -0
  29. package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-313.pyc +0 -0
  30. package/src/agents/__pycache__/workflow_engine.cpython-311.pyc +0 -0
  31. package/src/agents/__pycache__/workflow_engine.cpython-313.pyc +0 -0
  32. package/{knowledge_base → src}/agents/automation_design_agent.py +13 -16
  33. package/{knowledge_base → src}/agents/code_intelligence_agent.py +2 -2
  34. package/src/agents/confidence_agent.py +114 -0
  35. package/{knowledge_base → src}/agents/execution_validation_agent.py +1 -1
  36. package/{knowledge_base → src}/agents/feedback_agent.py +36 -7
  37. package/src/agents/framework_analyzer_agent.py +43 -0
  38. package/{knowledge_base → src}/agents/fusion_agent.py +3 -3
  39. package/{knowledge_base → src}/agents/graph.py +10 -10
  40. package/{knowledge_base → src}/agents/healing_agent.py +4 -4
  41. package/src/agents/intent_agent.py +30 -0
  42. package/src/agents/internal/__init__.py +3 -0
  43. package/src/agents/internal/__pycache__/__init__.cpython-313.pyc +0 -0
  44. package/src/agents/internal/__pycache__/approval_manager.cpython-313.pyc +0 -0
  45. package/src/agents/internal/__pycache__/question_engine.cpython-313.pyc +0 -0
  46. package/src/agents/internal/approval_manager.py +111 -0
  47. package/src/agents/internal/question_engine.py +111 -0
  48. package/src/agents/internal/workflow_engine.py +28 -0
  49. package/{knowledge_base → src}/agents/kg_agent.py +3 -3
  50. package/{knowledge_base → src}/agents/memory_agent.py +4 -4
  51. package/src/agents/orchestrator/__init__.py +3 -0
  52. package/src/agents/orchestrator/__pycache__/__init__.cpython-313.pyc +0 -0
  53. package/src/agents/orchestrator/__pycache__/orchestrator.cpython-313.pyc +0 -0
  54. package/src/agents/orchestrator/orchestrator.py +63 -0
  55. package/{knowledge_base → src}/agents/rca_agent.py +4 -4
  56. package/{knowledge_base → src}/agents/reflection_agent.py +1 -1
  57. package/{knowledge_base → src}/agents/regression_agent.py +2 -2
  58. package/src/agents/requirement_agent.py +97 -0
  59. package/{knowledge_base → src}/agents/retrieval_agent.py +2 -2
  60. package/{knowledge_base → src}/agents/scenario_agent.py +11 -17
  61. package/{knowledge_base → src}/agents/script_agent.py +6 -6
  62. package/{knowledge_base → src}/agents/script_generator_agent.py +12 -10
  63. package/{knowledge_base → src}/agents/temporal_agent.py +3 -3
  64. package/src/agents/testcase_agent.py +163 -0
  65. package/{knowledge_base → src}/agents/validation_agent.py +1 -1
  66. package/src/agents/workflow_engine.py +109 -0
  67. package/{knowledge_base → src}/alembic/README.md +4 -4
  68. package/{knowledge_base → src}/alembic/env.py +1 -1
  69. package/{knowledge_base → src}/alembic/script.py.mako +1 -1
  70. package/{knowledge_base → src}/api/middleware.py +3 -3
  71. package/{knowledge_base → src}/api/server.py +28 -28
  72. package/{knowledge_base → src}/chunking/chunker.py +3 -3
  73. package/src/cli/__pycache__/__init__.cpython-311.pyc +0 -0
  74. package/src/cli/__pycache__/workflow_cli.cpython-311.pyc +0 -0
  75. package/src/cli/__pycache__/workflow_cli.cpython-313.pyc +0 -0
  76. package/{knowledge_base → src}/cli/feedback_cli.py +10 -10
  77. package/{knowledge_base → src}/cli/generate.py +11 -11
  78. package/src/cli/index.ts +704 -0
  79. package/src/cli/platform.ts +147 -0
  80. package/src/cli/workflow_cli.py +930 -0
  81. package/{knowledge_base → src}/config/__init__.py +1 -1
  82. package/src/config/__pycache__/__init__.cpython-311.pyc +0 -0
  83. package/src/config/__pycache__/__init__.cpython-313.pyc +0 -0
  84. package/src/config/__pycache__/policy_config.cpython-311.pyc +0 -0
  85. package/src/config/__pycache__/policy_config.cpython-313.pyc +0 -0
  86. package/src/config/__pycache__/settings.cpython-311.pyc +0 -0
  87. package/{knowledge_base → src}/config/__pycache__/settings.cpython-313.pyc +0 -0
  88. package/src/config/policy_config.py +85 -0
  89. package/src/config/policy_rules.yaml +50 -0
  90. package/{knowledge_base → src}/config/settings.py +51 -6
  91. package/{knowledge_base → src}/connectors/__init__.py +1 -1
  92. package/src/connectors/__pycache__/__init__.cpython-311.pyc +0 -0
  93. package/src/connectors/__pycache__/__init__.cpython-313.pyc +0 -0
  94. package/src/connectors/__pycache__/base.cpython-311.pyc +0 -0
  95. package/src/connectors/__pycache__/jira_connector.cpython-311.pyc +0 -0
  96. package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-313.pyc +0 -0
  97. package/src/connectors/__pycache__/query_bridge.cpython-313.pyc +0 -0
  98. package/src/connectors/bitbucket_connector.py +334 -0
  99. package/{knowledge_base → src}/connectors/community_connector.py +6 -6
  100. package/{knowledge_base → src}/connectors/confluence_connector.py +4 -4
  101. package/{knowledge_base → src}/connectors/jira_connector.py +6 -6
  102. package/{knowledge_base → src}/connectors/kb_igel_connector.py +6 -6
  103. package/{knowledge_base → src}/connectors/query_bridge.py +11 -11
  104. package/{knowledge_base → src}/connectors/search_backends.py +1 -1
  105. package/{knowledge_base → src}/connectors/serviceNow_connector.py +2 -2
  106. package/{knowledge_base → src}/connectors/sync_scheduler.py +12 -10
  107. package/{knowledge_base → src}/connectors/teamcity_connector.py +2 -2
  108. package/{knowledge_base → src}/connectors/testRail_connector.py +2 -2
  109. package/{knowledge_base → src}/connectors/web_fetcher.py +1 -1
  110. package/src/connectors/xray_connector.py +337 -0
  111. package/{knowledge_base → src}/core/__init__.py +1 -1
  112. package/src/core/__pycache__/__init__.cpython-311.pyc +0 -0
  113. package/src/core/__pycache__/__init__.cpython-313.pyc +0 -0
  114. package/src/core/__pycache__/circuit_breaker.cpython-313.pyc +0 -0
  115. package/src/core/__pycache__/confidence.cpython-311.pyc +0 -0
  116. package/src/core/__pycache__/confidence.cpython-313.pyc +0 -0
  117. package/src/core/__pycache__/context_engine.cpython-311.pyc +0 -0
  118. package/src/core/__pycache__/context_engine.cpython-313.pyc +0 -0
  119. package/src/core/__pycache__/evidence_resolver.cpython-311.pyc +0 -0
  120. package/src/core/__pycache__/evidence_resolver.cpython-313.pyc +0 -0
  121. package/src/core/__pycache__/guardrails.cpython-311.pyc +0 -0
  122. package/src/core/__pycache__/guardrails.cpython-313.pyc +0 -0
  123. package/src/core/__pycache__/hooks.cpython-311.pyc +0 -0
  124. package/src/core/__pycache__/hooks.cpython-313.pyc +0 -0
  125. package/src/core/__pycache__/intent_service.cpython-313.pyc +0 -0
  126. package/src/core/__pycache__/llm_executor.cpython-311.pyc +0 -0
  127. package/src/core/__pycache__/llm_executor.cpython-313.pyc +0 -0
  128. package/src/core/__pycache__/model_router.cpython-311.pyc +0 -0
  129. package/src/core/__pycache__/model_router.cpython-313.pyc +0 -0
  130. package/src/core/__pycache__/orchestration_contracts.cpython-311.pyc +0 -0
  131. package/src/core/__pycache__/orchestration_contracts.cpython-313.pyc +0 -0
  132. package/src/core/__pycache__/precedence.cpython-311.pyc +0 -0
  133. package/src/core/__pycache__/precedence.cpython-313.pyc +0 -0
  134. package/src/core/__pycache__/prompt_builder.cpython-311.pyc +0 -0
  135. package/src/core/__pycache__/prompt_builder.cpython-313.pyc +0 -0
  136. package/src/core/__pycache__/prompt_policy_engine.cpython-311.pyc +0 -0
  137. package/src/core/__pycache__/prompt_policy_engine.cpython-313.pyc +0 -0
  138. package/{knowledge_base → src}/core/cache.py +2 -2
  139. package/{knowledge_base → src}/core/confidence.py +2 -2
  140. package/src/core/context_engine.py +138 -0
  141. package/src/core/evidence_resolver.py +72 -0
  142. package/src/core/guardrails.py +22 -0
  143. package/src/core/hooks.py +57 -0
  144. package/src/core/intent_service.py +74 -0
  145. package/src/core/llm_executor.py +138 -0
  146. package/{knowledge_base → src}/core/logging_setup.py +1 -1
  147. package/src/core/model_router.py +246 -0
  148. package/src/core/orchestration_contracts.py +66 -0
  149. package/src/core/persistence_engine.py +159 -0
  150. package/src/core/prompt_builder.py +49 -0
  151. package/src/core/prompt_policy_engine.py +35 -0
  152. package/src/core/traceability_engine.py +56 -0
  153. package/src/db/__pycache__/__init__.cpython-311.pyc +0 -0
  154. package/src/db/__pycache__/client.cpython-311.pyc +0 -0
  155. package/{knowledge_base → src}/db/__pycache__/client.cpython-313.pyc +0 -0
  156. package/src/db/__pycache__/igel_schema.cpython-311.pyc +0 -0
  157. package/{knowledge_base → src}/db/__pycache__/igel_schema.cpython-313.pyc +0 -0
  158. package/src/db/__pycache__/kg_introspect.cpython-311.pyc +0 -0
  159. package/src/db/__pycache__/kg_introspect.cpython-313.pyc +0 -0
  160. package/{knowledge_base → src}/db/client.py +1 -1
  161. package/{knowledge_base → src}/db/connector_sync.py +1 -1
  162. package/{knowledge_base → src}/db/feedback_schema.py +2 -2
  163. package/{knowledge_base → src}/db/igel_schema.py +28 -3
  164. package/{knowledge_base → src}/db/kg_introspect.py +1 -1
  165. package/src/db/migrations.py +237 -0
  166. package/{knowledge_base → src}/db/schema.py +6 -6
  167. package/{knowledge_base → src}/deploy/Dockerfile +3 -3
  168. package/{knowledge_base → src}/deploy/feedback_automation.sh +3 -3
  169. package/{knowledge_base → src}/deploy/firecrawl-docker.sh +4 -4
  170. package/{knowledge_base → src}/deploy/igel-testgen.service +2 -2
  171. package/{knowledge_base → src}/deploy/install_reranker.sh +1 -1
  172. package/{knowledge_base → src}/deploy/requirements.txt +1 -2
  173. package/{knowledge_base → src}/deploy/run_server.sh +1 -1
  174. package/{knowledge_base → src}/docs/TEST_GENERATION_GUIDE.md +15 -15
  175. package/src/embeddings/__pycache__/__init__.cpython-311.pyc +0 -0
  176. package/src/embeddings/__pycache__/azure_embedder.cpython-311.pyc +0 -0
  177. package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-313.pyc +0 -0
  178. package/{knowledge_base → src}/embeddings/azure_embedder.py +10 -1
  179. package/{knowledge_base → src}/eval/__init__.py +3 -3
  180. package/{knowledge_base → src}/eval/__main__.py +7 -7
  181. package/src/eval/__pycache__/__init__.cpython-311.pyc +0 -0
  182. package/src/eval/__pycache__/__init__.cpython-313.pyc +0 -0
  183. package/src/eval/__pycache__/baseline.cpython-311.pyc +0 -0
  184. package/src/eval/__pycache__/baseline.cpython-313.pyc +0 -0
  185. package/src/eval/__pycache__/harness.cpython-311.pyc +0 -0
  186. package/src/eval/__pycache__/harness.cpython-313.pyc +0 -0
  187. package/src/eval/__pycache__/scorers.cpython-311.pyc +0 -0
  188. package/src/eval/__pycache__/scorers.cpython-313.pyc +0 -0
  189. package/{knowledge_base → src}/eval/harness.py +6 -6
  190. package/{knowledge_base → src}/feedback/__init__.py +1 -1
  191. package/{knowledge_base → src}/feedback/analytics.py +1 -1
  192. package/{knowledge_base → src}/feedback/applier.py +4 -4
  193. package/{knowledge_base → src}/feedback/curator.py +2 -2
  194. package/{knowledge_base → src}/feedback/handler.py +1 -1
  195. package/src/generation/__pycache__/__init__.cpython-313.pyc +0 -0
  196. package/src/generation/__pycache__/input_classifier.cpython-313.pyc +0 -0
  197. package/src/generation/__pycache__/manual_tc_parser.cpython-313.pyc +0 -0
  198. package/src/generation/__pycache__/prompts.cpython-313.pyc +0 -0
  199. package/src/generation/__pycache__/test_generator.cpython-313.pyc +0 -0
  200. package/{knowledge_base → src}/generation/input_classifier.py +1 -1
  201. package/{knowledge_base → src}/generation/prompts.py +1 -1
  202. package/{knowledge_base → src}/generation/tc_transformer.py +10 -10
  203. package/{knowledge_base → src}/generation/test_generator.py +56 -10
  204. package/{knowledge_base → src}/graph_db/__init__.py +1 -1
  205. package/{knowledge_base → src}/graph_db/graphiti_client.py +2 -2
  206. package/{knowledge_base → src}/graph_db/kg_traversal.py +3 -3
  207. package/{knowledge_base → src}/graph_db/migrate_kg.py +4 -4
  208. package/{knowledge_base → src}/graph_db/neo4j_client.py +1 -1
  209. package/{knowledge_base → src}/graph_db/temporal_ingest.py +1 -1
  210. package/{knowledge_base → src}/ingestion/kg_extractor.py +6 -6
  211. package/{knowledge_base → src}/ingestion/web_ingest.py +6 -6
  212. package/src/intelligence/__pycache__/__init__.cpython-311.pyc +0 -0
  213. package/src/intelligence/__pycache__/__init__.cpython-313.pyc +0 -0
  214. package/src/intelligence/__pycache__/diff_analyzer.cpython-311.pyc +0 -0
  215. package/src/intelligence/__pycache__/diff_analyzer.cpython-313.pyc +0 -0
  216. package/src/intelligence/__pycache__/routing_engine.cpython-311.pyc +0 -0
  217. package/src/intelligence/__pycache__/routing_engine.cpython-313.pyc +0 -0
  218. package/src/intelligence/diff_analyzer.py +109 -0
  219. package/{knowledge_base → src}/intelligence/execution_ingest.py +3 -3
  220. package/src/intelligence/routing_engine.py +74 -0
  221. package/src/mcp/server.ts +384 -0
  222. package/src/memory/__init__.py +6 -0
  223. package/{knowledge_base → src}/memory/cognee_client.py +3 -3
  224. package/src/models/__pycache__/test_requirement.cpython-311.pyc +0 -0
  225. package/{knowledge_base → src}/models/__pycache__/test_requirement.cpython-313.pyc +0 -0
  226. package/{knowledge_base → src}/models/test_requirement.py +9 -7
  227. package/{knowledge_base → src}/parsers/csv_parser.py +1 -1
  228. package/{knowledge_base → src}/parsers/doc_parser.py +1 -1
  229. package/{knowledge_base → src}/parsers/html_parser.py +1 -1
  230. package/{knowledge_base → src}/parsers/pdf_parser.py +1 -1
  231. package/src/project/__pycache__/__init__.cpython-311.pyc +0 -0
  232. package/src/project/__pycache__/__init__.cpython-313.pyc +0 -0
  233. package/src/project/__pycache__/ai_folder.cpython-311.pyc +0 -0
  234. package/src/project/__pycache__/ai_folder.cpython-313.pyc +0 -0
  235. package/src/project/__pycache__/context_enricher.cpython-313.pyc +0 -0
  236. package/src/project/__pycache__/context_projection_builder.cpython-311.pyc +0 -0
  237. package/src/project/__pycache__/context_projection_builder.cpython-313.pyc +0 -0
  238. package/src/project/__pycache__/context_requirement_sync.cpython-311.pyc +0 -0
  239. package/src/project/__pycache__/context_requirement_sync.cpython-313.pyc +0 -0
  240. package/src/project/ai_folder.py +602 -0
  241. package/src/project/context_enricher.py +333 -0
  242. package/src/project/context_projection_builder.py +167 -0
  243. package/src/project/context_requirement_sync.py +205 -0
  244. package/src/project/init_check.py +214 -0
  245. package/src/prompts/__pycache__/prompt_loader.cpython-313.pyc +0 -0
  246. package/src/prompts/automation_design.md +12 -0
  247. package/src/prompts/policies/automation_generation_policy.md +11 -0
  248. package/src/prompts/policies/generation_instructions.md +24 -0
  249. package/src/prompts/policies/guardrails.md +6 -0
  250. package/src/prompts/policies/traceability_policy.md +9 -0
  251. package/src/prompts/prompt_loader.py +56 -0
  252. package/src/prompts/requirement_understanding.md +17 -0
  253. package/src/prompts/scenario_generator.md +17 -0
  254. package/src/prompts/script_generator.md +13 -0
  255. package/src/prompts/test_case_generator.md +23 -0
  256. package/src/retrieval/__pycache__/__init__.cpython-311.pyc +0 -0
  257. package/src/retrieval/__pycache__/__init__.cpython-313.pyc +0 -0
  258. package/src/retrieval/__pycache__/knowledge_graph.cpython-311.pyc +0 -0
  259. package/src/retrieval/__pycache__/knowledge_graph.cpython-313.pyc +0 -0
  260. package/src/retrieval/__pycache__/retriever.cpython-311.pyc +0 -0
  261. package/src/retrieval/__pycache__/retriever.cpython-313.pyc +0 -0
  262. package/src/retrieval/__pycache__/unified_query.cpython-313.pyc +0 -0
  263. package/{knowledge_base → src}/retrieval/context_fusion.py +3 -3
  264. package/{knowledge_base → src}/retrieval/knowledge_graph.py +4 -4
  265. package/{knowledge_base → src}/retrieval/reranker.py +2 -2
  266. package/{knowledge_base → src}/retrieval/retriever.py +11 -11
  267. package/{knowledge_base → src}/retrieval/unified_query.py +7 -7
  268. package/{knowledge_base → src}/retrieval/web_retriever.py +6 -6
  269. package/{knowledge_base → src}/validators/step_fidelity.py +1 -1
  270. package/src/vision/__init__.py +0 -0
  271. package/{knowledge_base → src}/vision/image_describer.py +1 -1
  272. package/knowledge_base/agents/__pycache__/confidence_agent.cpython-313.pyc +0 -0
  273. package/knowledge_base/agents/__pycache__/requirement_agent.cpython-313.pyc +0 -0
  274. package/knowledge_base/agents/__pycache__/testcase_agent.cpython-313.pyc +0 -0
  275. package/knowledge_base/agents/__pycache__/workflow_engine.cpython-313.pyc +0 -0
  276. package/knowledge_base/agents/confidence_agent.py +0 -95
  277. package/knowledge_base/agents/intent_agent.py +0 -76
  278. package/knowledge_base/agents/requirement_agent.py +0 -71
  279. package/knowledge_base/agents/testcase_agent.py +0 -111
  280. package/knowledge_base/agents/workflow_engine.py +0 -87
  281. package/knowledge_base/cli/__pycache__/workflow_cli.cpython-313.pyc +0 -0
  282. package/knowledge_base/cli/generate_qcapps134.py +0 -391
  283. package/knowledge_base/cli/workflow_cli.py +0 -189
  284. package/knowledge_base/config/.env +0 -100
  285. package/knowledge_base/config/.env.example +0 -75
  286. package/knowledge_base/config/__pycache__/__init__.cpython-313.pyc +0 -0
  287. package/knowledge_base/connectors/__pycache__/__init__.cpython-313.pyc +0 -0
  288. package/knowledge_base/connectors/bitbucket_connector.py +0 -25
  289. package/knowledge_base/db/migrations.py +0 -22
  290. package/knowledge_base/ingestion/ingest.py +0 -346
  291. package/knowledge_base/ingestion/ingest_images.py +0 -330
  292. package/knowledge_base/memory/__init__.py +0 -6
  293. package/knowledge_base/memory/ingest_memory.py +0 -60
  294. /package/{knowledge_base → src}/__init__.py +0 -0
  295. /package/{knowledge_base → src}/__pycache__/__init__.cpython-313.pyc +0 -0
  296. /package/{knowledge_base → src}/__pycache__/__init__.cpython-314.pyc +0 -0
  297. /package/{knowledge_base → src}/__pycache__/__init__.cpython-37.pyc +0 -0
  298. /package/{knowledge_base → src}/__pycache__/__init__.cpython-38.pyc +0 -0
  299. /package/{knowledge_base → src}/__pycache__/confidence.cpython-37.pyc +0 -0
  300. /package/{knowledge_base → src}/__pycache__/config.cpython-314.pyc +0 -0
  301. /package/{knowledge_base → src}/__pycache__/config.cpython-37.pyc +0 -0
  302. /package/{knowledge_base → src}/__pycache__/config.cpython-38.pyc +0 -0
  303. /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-314.pyc +0 -0
  304. /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-37.pyc +0 -0
  305. /package/{knowledge_base → src}/__pycache__/feedback_analytics.cpython-37.pyc +0 -0
  306. /package/{knowledge_base → src}/__pycache__/feedback_applier.cpython-37.pyc +0 -0
  307. /package/{knowledge_base → src}/__pycache__/feedback_cli.cpython-37.pyc +0 -0
  308. /package/{knowledge_base → src}/__pycache__/feedback_curator.cpython-37.pyc +0 -0
  309. /package/{knowledge_base → src}/__pycache__/feedback_handler.cpython-37.pyc +0 -0
  310. /package/{knowledge_base → src}/__pycache__/generate.cpython-37.pyc +0 -0
  311. /package/{knowledge_base → src}/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
  312. /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-314.pyc +0 -0
  313. /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-37.pyc +0 -0
  314. /package/{knowledge_base → src}/__pycache__/kg_extractor.cpython-37.pyc +0 -0
  315. /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  316. /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
  317. /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-314.pyc +0 -0
  318. /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
  319. /package/{knowledge_base → src}/__pycache__/precedence.cpython-37.pyc +0 -0
  320. /package/{knowledge_base → src}/__pycache__/prompts.cpython-314.pyc +0 -0
  321. /package/{knowledge_base → src}/__pycache__/prompts.cpython-37.pyc +0 -0
  322. /package/{knowledge_base → src}/__pycache__/reranker.cpython-314.pyc +0 -0
  323. /package/{knowledge_base → src}/__pycache__/reranker.cpython-37.pyc +0 -0
  324. /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-314.pyc +0 -0
  325. /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
  326. /package/{knowledge_base → src}/__pycache__/retriever.cpython-314.pyc +0 -0
  327. /package/{knowledge_base → src}/__pycache__/retriever.cpython-37.pyc +0 -0
  328. /package/{knowledge_base → src}/__pycache__/server.cpython-37.pyc +0 -0
  329. /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-314.pyc +0 -0
  330. /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-37.pyc +0 -0
  331. /package/{knowledge_base → src}/__pycache__/test_generator.cpython-314.pyc +0 -0
  332. /package/{knowledge_base → src}/__pycache__/test_generator.cpython-37.pyc +0 -0
  333. /package/{knowledge_base → src}/agents/__init__.py +0 -0
  334. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-313.pyc +0 -0
  335. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  336. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-37.pyc +0 -0
  337. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-38.pyc +0 -0
  338. /package/{knowledge_base → src}/agents/__pycache__/automation_design_agent.cpython-314.pyc +0 -0
  339. /package/{knowledge_base → src}/agents/__pycache__/confidence_agent.cpython-314.pyc +0 -0
  340. /package/{knowledge_base → src}/agents/__pycache__/execution_validation_agent.cpython-314.pyc +0 -0
  341. /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-314.pyc +0 -0
  342. /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-37.pyc +0 -0
  343. /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-38.pyc +0 -0
  344. /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-314.pyc +0 -0
  345. /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-37.pyc +0 -0
  346. /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-38.pyc +0 -0
  347. /package/{knowledge_base → src}/agents/__pycache__/healing_agent.cpython-37.pyc +0 -0
  348. /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-314.pyc +0 -0
  349. /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-37.pyc +0 -0
  350. /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-38.pyc +0 -0
  351. /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-314.pyc +0 -0
  352. /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-37.pyc +0 -0
  353. /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-38.pyc +0 -0
  354. /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-314.pyc +0 -0
  355. /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-37.pyc +0 -0
  356. /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-38.pyc +0 -0
  357. /package/{knowledge_base → src}/agents/__pycache__/rca_agent.cpython-37.pyc +0 -0
  358. /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-314.pyc +0 -0
  359. /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-37.pyc +0 -0
  360. /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-38.pyc +0 -0
  361. /package/{knowledge_base → src}/agents/__pycache__/regression_agent.cpython-37.pyc +0 -0
  362. /package/{knowledge_base → src}/agents/__pycache__/requirement_agent.cpython-314.pyc +0 -0
  363. /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-314.pyc +0 -0
  364. /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-37.pyc +0 -0
  365. /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-38.pyc +0 -0
  366. /package/{knowledge_base → src}/agents/__pycache__/scenario_agent.cpython-314.pyc +0 -0
  367. /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-314.pyc +0 -0
  368. /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-37.pyc +0 -0
  369. /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-38.pyc +0 -0
  370. /package/{knowledge_base → src}/agents/__pycache__/script_generator_agent.cpython-314.pyc +0 -0
  371. /package/{knowledge_base → src}/agents/__pycache__/state.cpython-314.pyc +0 -0
  372. /package/{knowledge_base → src}/agents/__pycache__/state.cpython-37.pyc +0 -0
  373. /package/{knowledge_base → src}/agents/__pycache__/state.cpython-38.pyc +0 -0
  374. /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-314.pyc +0 -0
  375. /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-37.pyc +0 -0
  376. /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-38.pyc +0 -0
  377. /package/{knowledge_base → src}/agents/__pycache__/testcase_agent.cpython-314.pyc +0 -0
  378. /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-314.pyc +0 -0
  379. /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-37.pyc +0 -0
  380. /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-38.pyc +0 -0
  381. /package/{knowledge_base → src}/agents/__pycache__/workflow_engine.cpython-314.pyc +0 -0
  382. /package/{knowledge_base → src}/agents/state.py +0 -0
  383. /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-37.pyc +0 -0
  384. /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-38.pyc +0 -0
  385. /package/{knowledge_base → src}/alembic/versions/.gitkeep +0 -0
  386. /package/{knowledge_base → src}/alembic/versions/001_phase0_feedback.py +0 -0
  387. /package/{knowledge_base → src}/alembic/versions/002_feedback_promotions.py +0 -0
  388. /package/{knowledge_base → src}/alembic/versions/003_enterprise_hardening.py +0 -0
  389. /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-37.pyc +0 -0
  390. /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-38.pyc +0 -0
  391. /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-37.pyc +0 -0
  392. /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-38.pyc +0 -0
  393. /package/{knowledge_base → src}/api/__init__.py +0 -0
  394. /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-37.pyc +0 -0
  395. /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-38.pyc +0 -0
  396. /package/{knowledge_base → src}/api/__pycache__/middleware.cpython-38.pyc +0 -0
  397. /package/{knowledge_base → src}/api/__pycache__/server.cpython-37.pyc +0 -0
  398. /package/{knowledge_base → src}/api/__pycache__/server.cpython-38.pyc +0 -0
  399. /package/{knowledge_base → src}/chunking/__init__.py +0 -0
  400. /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-37.pyc +0 -0
  401. /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-38.pyc +0 -0
  402. /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-37.pyc +0 -0
  403. /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-38.pyc +0 -0
  404. /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-37.pyc +0 -0
  405. /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-38.pyc +0 -0
  406. /package/{knowledge_base → src}/chunking/validators.py +0 -0
  407. /package/{knowledge_base → src}/cli/__init__.py +0 -0
  408. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  409. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-314.pyc +0 -0
  410. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-37.pyc +0 -0
  411. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-38.pyc +0 -0
  412. /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-37.pyc +0 -0
  413. /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-38.pyc +0 -0
  414. /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-37.pyc +0 -0
  415. /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-38.pyc +0 -0
  416. /package/{knowledge_base → src}/cli/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
  417. /package/{knowledge_base → src}/cli/__pycache__/workflow_cli.cpython-314.pyc +0 -0
  418. /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-314.pyc +0 -0
  419. /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-37.pyc +0 -0
  420. /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-38.pyc +0 -0
  421. /package/{knowledge_base → src}/config/__pycache__/settings.cpython-314.pyc +0 -0
  422. /package/{knowledge_base → src}/config/__pycache__/settings.cpython-37.pyc +0 -0
  423. /package/{knowledge_base → src}/config/__pycache__/settings.cpython-38.pyc +0 -0
  424. /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-314.pyc +0 -0
  425. /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-37.pyc +0 -0
  426. /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-38.pyc +0 -0
  427. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-313.pyc +0 -0
  428. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-314.pyc +0 -0
  429. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-37.pyc +0 -0
  430. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-38.pyc +0 -0
  431. /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-37.pyc +0 -0
  432. /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-38.pyc +0 -0
  433. /package/{knowledge_base → src}/connectors/__pycache__/community_connector.cpython-38.pyc +0 -0
  434. /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-37.pyc +0 -0
  435. /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-38.pyc +0 -0
  436. /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-314.pyc +0 -0
  437. /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-37.pyc +0 -0
  438. /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-38.pyc +0 -0
  439. /package/{knowledge_base → src}/connectors/__pycache__/kb_igel_connector.cpython-38.pyc +0 -0
  440. /package/{knowledge_base → src}/connectors/__pycache__/playwright_fetcher.cpython-38.pyc +0 -0
  441. /package/{knowledge_base → src}/connectors/__pycache__/query_bridge.cpython-314.pyc +0 -0
  442. /package/{knowledge_base → src}/connectors/__pycache__/query_bridge.cpython-38.pyc +0 -0
  443. /package/{knowledge_base → src}/connectors/__pycache__/search_backends.cpython-38.pyc +0 -0
  444. /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-37.pyc +0 -0
  445. /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-38.pyc +0 -0
  446. /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-37.pyc +0 -0
  447. /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-38.pyc +0 -0
  448. /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-37.pyc +0 -0
  449. /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-38.pyc +0 -0
  450. /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-37.pyc +0 -0
  451. /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-38.pyc +0 -0
  452. /package/{knowledge_base → src}/connectors/__pycache__/web_fetcher.cpython-38.pyc +0 -0
  453. /package/{knowledge_base → src}/connectors/base.py +0 -0
  454. /package/{knowledge_base → src}/connectors/playwright_fetcher.py +0 -0
  455. /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-314.pyc +0 -0
  456. /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-37.pyc +0 -0
  457. /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-38.pyc +0 -0
  458. /package/{knowledge_base → src}/core/__pycache__/cache.cpython-38.pyc +0 -0
  459. /package/{knowledge_base → src}/core/__pycache__/circuit_breaker.cpython-314.pyc +0 -0
  460. /package/{knowledge_base → src}/core/__pycache__/circuit_breaker.cpython-38.pyc +0 -0
  461. /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-314.pyc +0 -0
  462. /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-37.pyc +0 -0
  463. /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-38.pyc +0 -0
  464. /package/{knowledge_base → src}/core/__pycache__/logging_setup.cpython-38.pyc +0 -0
  465. /package/{knowledge_base → src}/core/__pycache__/metrics.cpython-38.pyc +0 -0
  466. /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-37.pyc +0 -0
  467. /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-38.pyc +0 -0
  468. /package/{knowledge_base → src}/core/__pycache__/request_context.cpython-38.pyc +0 -0
  469. /package/{knowledge_base → src}/core/circuit_breaker.py +0 -0
  470. /package/{knowledge_base → src}/core/metrics.py +0 -0
  471. /package/{knowledge_base → src}/core/precedence.py +0 -0
  472. /package/{knowledge_base → src}/core/request_context.py +0 -0
  473. /package/{knowledge_base → src}/db/__init__.py +0 -0
  474. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-313.pyc +0 -0
  475. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-314.pyc +0 -0
  476. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-37.pyc +0 -0
  477. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-38.pyc +0 -0
  478. /package/{knowledge_base → src}/db/__pycache__/client.cpython-314.pyc +0 -0
  479. /package/{knowledge_base → src}/db/__pycache__/client.cpython-37.pyc +0 -0
  480. /package/{knowledge_base → src}/db/__pycache__/client.cpython-38.pyc +0 -0
  481. /package/{knowledge_base → src}/db/__pycache__/connector_sync.cpython-38.pyc +0 -0
  482. /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-37.pyc +0 -0
  483. /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-38.pyc +0 -0
  484. /package/{knowledge_base → src}/db/__pycache__/igel_schema.cpython-314.pyc +0 -0
  485. /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-314.pyc +0 -0
  486. /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-37.pyc +0 -0
  487. /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-38.pyc +0 -0
  488. /package/{knowledge_base → src}/db/__pycache__/schema.cpython-37.pyc +0 -0
  489. /package/{knowledge_base → src}/db/__pycache__/schema.cpython-38.pyc +0 -0
  490. /package/{knowledge_base → src}/embeddings/__init__.py +0 -0
  491. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-313.pyc +0 -0
  492. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-314.pyc +0 -0
  493. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-37.pyc +0 -0
  494. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-38.pyc +0 -0
  495. /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-314.pyc +0 -0
  496. /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-37.pyc +0 -0
  497. /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-38.pyc +0 -0
  498. /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-314.pyc +0 -0
  499. /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-37.pyc +0 -0
  500. /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-38.pyc +0 -0
  501. /package/{knowledge_base → src}/eval/__pycache__/__main__.cpython-37.pyc +0 -0
  502. /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-314.pyc +0 -0
  503. /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-37.pyc +0 -0
  504. /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-38.pyc +0 -0
  505. /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-314.pyc +0 -0
  506. /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-37.pyc +0 -0
  507. /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-38.pyc +0 -0
  508. /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-314.pyc +0 -0
  509. /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-37.pyc +0 -0
  510. /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-38.pyc +0 -0
  511. /package/{knowledge_base → src}/eval/baseline.py +0 -0
  512. /package/{knowledge_base → src}/eval/queries_50.json +0 -0
  513. /package/{knowledge_base → src}/eval/scorers.py +0 -0
  514. /package/{knowledge_base → src}/exemplars/README.md +0 -0
  515. /package/{knowledge_base → src}/exemplars/__pycache__/pytest_reference_snippet.cpython-37.pyc +0 -0
  516. /package/{knowledge_base → src}/exemplars/gold_manual_concise_snippet.md +0 -0
  517. /package/{knowledge_base → src}/exemplars/gold_manual_detailed_snippet.md +0 -0
  518. /package/{knowledge_base → src}/exemplars/pytest_reference_snippet.py +0 -0
  519. /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-37.pyc +0 -0
  520. /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-38.pyc +0 -0
  521. /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-37.pyc +0 -0
  522. /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-38.pyc +0 -0
  523. /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-37.pyc +0 -0
  524. /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-38.pyc +0 -0
  525. /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-37.pyc +0 -0
  526. /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-38.pyc +0 -0
  527. /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-37.pyc +0 -0
  528. /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-38.pyc +0 -0
  529. /package/{knowledge_base → src}/generation/__init__.py +0 -0
  530. /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-314.pyc +0 -0
  531. /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-37.pyc +0 -0
  532. /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-38.pyc +0 -0
  533. /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-37.pyc +0 -0
  534. /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-38.pyc +0 -0
  535. /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
  536. /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-38.pyc +0 -0
  537. /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-314.pyc +0 -0
  538. /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-37.pyc +0 -0
  539. /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-38.pyc +0 -0
  540. /package/{knowledge_base → src}/generation/__pycache__/tc_transformer.cpython-37.pyc +0 -0
  541. /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-314.pyc +0 -0
  542. /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-37.pyc +0 -0
  543. /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-38.pyc +0 -0
  544. /package/{knowledge_base → src}/generation/manual_tc_parser.py +0 -0
  545. /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-37.pyc +0 -0
  546. /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-38.pyc +0 -0
  547. /package/{knowledge_base → src}/graph_db/__pycache__/graphiti_client.cpython-37.pyc +0 -0
  548. /package/{knowledge_base → src}/graph_db/__pycache__/kg_traversal.cpython-37.pyc +0 -0
  549. /package/{knowledge_base → src}/graph_db/__pycache__/migrate_kg.cpython-37.pyc +0 -0
  550. /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-37.pyc +0 -0
  551. /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-38.pyc +0 -0
  552. /package/{knowledge_base → src}/graph_db/__pycache__/schema.cpython-37.pyc +0 -0
  553. /package/{knowledge_base → src}/graph_db/__pycache__/temporal_ingest.cpython-37.pyc +0 -0
  554. /package/{knowledge_base → src}/graph_db/schema.py +0 -0
  555. /package/{knowledge_base → src}/ingestion/__init__.py +0 -0
  556. /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-37.pyc +0 -0
  557. /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-38.pyc +0 -0
  558. /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-37.pyc +0 -0
  559. /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-38.pyc +0 -0
  560. /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-37.pyc +0 -0
  561. /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-38.pyc +0 -0
  562. /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-37.pyc +0 -0
  563. /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-38.pyc +0 -0
  564. /package/{knowledge_base → src}/ingestion/__pycache__/web_ingest.cpython-38.pyc +0 -0
  565. /package/{knowledge_base → src}/intelligence/__init__.py +0 -0
  566. /package/{knowledge_base → src}/intelligence/__pycache__/__init__.cpython-37.pyc +0 -0
  567. /package/{knowledge_base → src}/intelligence/__pycache__/execution_ingest.cpython-37.pyc +0 -0
  568. /package/{knowledge_base → src}/intelligence/__pycache__/predictive_engine.cpython-37.pyc +0 -0
  569. /package/{knowledge_base → src}/intelligence/__pycache__/risk_scorer.cpython-37.pyc +0 -0
  570. /package/{knowledge_base → src}/intelligence/predictive_engine.py +0 -0
  571. /package/{knowledge_base → src}/intelligence/risk_scorer.py +0 -0
  572. /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  573. /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-37.pyc +0 -0
  574. /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-38.pyc +0 -0
  575. /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-314.pyc +0 -0
  576. /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-37.pyc +0 -0
  577. /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-38.pyc +0 -0
  578. /package/{knowledge_base → src}/memory/__pycache__/ingest_memory.cpython-37.pyc +0 -0
  579. /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-314.pyc +0 -0
  580. /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-37.pyc +0 -0
  581. /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-38.pyc +0 -0
  582. /package/{knowledge_base → src}/memory/memory_types.py +0 -0
  583. /package/{knowledge_base → src}/models/__pycache__/test_requirement.cpython-314.pyc +0 -0
  584. /package/{knowledge_base → src}/parsers/__init__.py +0 -0
  585. /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-37.pyc +0 -0
  586. /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-38.pyc +0 -0
  587. /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-37.pyc +0 -0
  588. /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-38.pyc +0 -0
  589. /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-37.pyc +0 -0
  590. /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-38.pyc +0 -0
  591. /package/{knowledge_base → src}/parsers/__pycache__/html_parser.cpython-38.pyc +0 -0
  592. /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-37.pyc +0 -0
  593. /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-38.pyc +0 -0
  594. /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-37.pyc +0 -0
  595. /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-38.pyc +0 -0
  596. /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-37.pyc +0 -0
  597. /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-38.pyc +0 -0
  598. /package/{knowledge_base → src}/parsers/image_extractor.py +0 -0
  599. /package/{knowledge_base → src}/parsers/markdown_parser.py +0 -0
  600. /package/{knowledge_base/vision → src/project}/__init__.py +0 -0
  601. /package/{knowledge_base → src}/retrieval/__init__.py +0 -0
  602. /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-314.pyc +0 -0
  603. /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-37.pyc +0 -0
  604. /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-38.pyc +0 -0
  605. /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-37.pyc +0 -0
  606. /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-38.pyc +0 -0
  607. /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  608. /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
  609. /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-38.pyc +0 -0
  610. /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-37.pyc +0 -0
  611. /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-38.pyc +0 -0
  612. /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
  613. /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-38.pyc +0 -0
  614. /package/{knowledge_base → src}/retrieval/__pycache__/retriever.cpython-314.pyc +0 -0
  615. /package/{knowledge_base → src}/retrieval/__pycache__/retriever.cpython-37.pyc +0 -0
  616. /package/{knowledge_base → src}/retrieval/__pycache__/retriever.cpython-38.pyc +0 -0
  617. /package/{knowledge_base → src}/retrieval/__pycache__/unified_query.cpython-314.pyc +0 -0
  618. /package/{knowledge_base → src}/retrieval/__pycache__/unified_query.cpython-38.pyc +0 -0
  619. /package/{knowledge_base → src}/retrieval/__pycache__/web_retriever.cpython-38.pyc +0 -0
  620. /package/{knowledge_base → src}/retrieval/retrieval_debug.py +0 -0
  621. /package/{knowledge_base → src}/validators/__init__.py +0 -0
  622. /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-314.pyc +0 -0
  623. /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-37.pyc +0 -0
  624. /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-314.pyc +0 -0
  625. /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-37.pyc +0 -0
  626. /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-37.pyc +0 -0
  627. /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-38.pyc +0 -0
  628. /package/{knowledge_base → src}/vision/__pycache__/image_describer.cpython-37.pyc +0 -0
  629. /package/{knowledge_base → src}/vision/__pycache__/image_describer.cpython-38.pyc +0 -0
@@ -1,95 +0,0 @@
1
- import logging
2
- from knowledge_base.models.test_requirement import (
3
- GeneratedTestCase,
4
- ScenarioWithRules,
5
- ConfidenceMetrics,
6
- TestCaseWithConfidence
7
- )
8
-
9
- logger = logging.getLogger(__name__)
10
-
11
- def evaluate_coverage(tc: GeneratedTestCase, scenario: ScenarioWithRules) -> float:
12
- """Calculate if the test cases cover the business rules.
13
- If we are evaluating a single TC, we see if it represents its rule properly.
14
- Here we return 1.0 if it maps to a rule, 0.0 otherwise.
15
- """
16
- if any(r.description == tc.business_rule.description for r in scenario.business_rules):
17
- return 1.0
18
- return 0.0
19
-
20
- def evaluate_traceability(tc: GeneratedTestCase) -> float:
21
- """Check if the test case is traceable to a specific step."""
22
- return 1.0 if "S" in tc.tc_reference and tc.business_rule else 0.0
23
-
24
- def evaluate_completeness(tc: GeneratedTestCase) -> float:
25
- """Evaluate completeness of steps, data, and expected results."""
26
- if not tc.steps:
27
- return 0.0
28
-
29
- score = 0.0
30
- for step in tc.steps:
31
- step_score = 0.0
32
- if step.action: step_score += 0.4
33
- if step.data: step_score += 0.2
34
- if step.expected_result: step_score += 0.4
35
- score += step_score
36
-
37
- return score / len(tc.steps)
38
-
39
- def evaluate_automation_feasibility(tc: GeneratedTestCase) -> float:
40
- """
41
- Evaluate if this test case can be automated based on the Asset Registry.
42
- For now, return a placeholder high score unless we have specific constraints.
43
- (This will be enhanced when the Code Intelligence Agent is fully integrated).
44
- """
45
- return 0.9
46
-
47
- def compute_hybrid_confidence(tc: GeneratedTestCase, scenario: ScenarioWithRules) -> TestCaseWithConfidence:
48
- """
49
- Compute the deterministic hybrid confidence score.
50
- Weights:
51
- - Coverage: 25%
52
- - Traceability: 20%
53
- - Completeness: 20%
54
- - Historical Similarity: 15% (Stubbed to 0.8 for now)
55
- - Automation Feasibility: 20%
56
- """
57
- coverage = evaluate_coverage(tc, scenario)
58
- traceability = evaluate_traceability(tc)
59
- completeness = evaluate_completeness(tc)
60
- historical_similarity = 0.8 # Placeholder for vector DB search against approved tests
61
- automation_feasibility = evaluate_automation_feasibility(tc)
62
-
63
- total = (
64
- coverage * 0.25 +
65
- traceability * 0.20 +
66
- completeness * 0.20 +
67
- historical_similarity * 0.15 +
68
- automation_feasibility * 0.20
69
- )
70
-
71
- metrics = ConfidenceMetrics(
72
- coverage_score=coverage,
73
- traceability_score=traceability,
74
- completeness_score=completeness,
75
- historical_similarity_score=historical_similarity,
76
- automation_feasibility_score=automation_feasibility,
77
- total_score=total
78
- )
79
-
80
- tc.confidence_score = total
81
- # Support both Pydantic v1 (.dict()) and v2 (.model_dump())
82
- tc.confidence_metrics = metrics.model_dump() if hasattr(metrics, 'model_dump') else metrics.dict()
83
-
84
- is_approved = total >= 0.80
85
-
86
- if not is_approved:
87
- logger.info(f"Test case {tc.tc_reference} needs review (score: {total:.2f})")
88
- else:
89
- logger.info(f"Test case {tc.tc_reference} auto-approved (score: {total:.2f})")
90
-
91
- return TestCaseWithConfidence(
92
- test_case=tc,
93
- confidence=metrics,
94
- is_approved=is_approved
95
- )
@@ -1,76 +0,0 @@
1
- """Intent classification agent — Phase 5."""
2
- from __future__ import annotations
3
-
4
- import re
5
-
6
- from knowledge_base.agents.state import AgenticState
7
-
8
- _FEATURE_MAP = {
9
- "entra": "Entra ID SSO",
10
- "sso": "Entra ID SSO",
11
- "mfa": "Entra ID MFA",
12
- "wifi": "Network WiFi 802.1x",
13
- "802.1": "Network WiFi 802.1x",
14
- "icg": "ICG Certificate Management",
15
- "certificate": "ICG Certificate Management",
16
- "chromium": "Chromium Browser",
17
- "ums": "UMS Administration",
18
- "profile": "UMS Profile Assignment",
19
- "amd": "AMD Driver Integration",
20
- "hub": "Device Onboarding IGEL Hub",
21
- }
22
-
23
- _VERSIONS = ("12.8", "12.9", "12.10")
24
-
25
-
26
- def intent_agent(state: AgenticState) -> AgenticState:
27
- query = state.get("query", "")
28
- q_lower = query.lower()
29
-
30
- if any(w in q_lower for w in ("transform", "restructure", "reformat", "improve this")):
31
- intent = "transform"
32
- elif any(w in q_lower for w in ("expand", "add detail", "step-by-step")):
33
- intent = "expand"
34
- else:
35
- intent = "synthesize"
36
-
37
- feature = "Unknown"
38
- for kw, name in _FEATURE_MAP.items():
39
- if kw in q_lower:
40
- feature = name
41
- break
42
-
43
- version_scope = "unspecified"
44
- categories: list[str] = []
45
- for v in _VERSIONS:
46
- if v in query or f"os {v}" in q_lower:
47
- version_scope = v
48
- categories.append("version_specific")
49
- break
50
- if version_scope == "unspecified":
51
- categories.append("version_unspecified")
52
-
53
- if any(w in q_lower for w in ("fail", "error", "negative", "boundary")):
54
- categories.append("negative_case")
55
- if any(w in q_lower for w in ("regression", "release", "change impact")):
56
- categories.append("regression")
57
- if any(w in q_lower for w in ("debug", "troubleshoot", "root cause")):
58
- categories.append("troubleshooting")
59
- if any(w in q_lower for w in ("registry", "profile", "configure", "setting")):
60
- categories.append("configuration")
61
- if intent == "synthesize" and feature == "Unknown":
62
- categories.append("feature_unclear")
63
-
64
- state["intent"] = intent
65
- state["feature_area"] = feature
66
- state["version_scope"] = version_scope
67
- state["query_categories"] = categories
68
- state.setdefault("agent_trace", []).append({
69
- "agent": "IntentAgent",
70
- "status": "complete",
71
- "intent": intent,
72
- "feature_area": feature,
73
- "version_scope": version_scope,
74
- "query_categories": categories,
75
- })
76
- return state
@@ -1,71 +0,0 @@
1
- import json
2
- import logging
3
- from typing import Dict, Any
4
- from openai import AzureOpenAI
5
- from knowledge_base.config import cfg
6
- from knowledge_base.models.test_requirement import RequirementUnderstanding, TestRequirement
7
-
8
- logger = logging.getLogger(__name__)
9
-
10
- _SYSTEM_PROMPT = """You are an expert IGEL Quality Engineering Architect.
11
- Your task is to analyze a raw Jira/Xray Test Requirement and extract critical domain understanding.
12
- You must extract actors, entities, explicit business rules, validations, constraints, and dependencies.
13
- Output MUST be valid JSON matching this schema:
14
- {
15
- "actors": ["string"],
16
- "entities": ["string"],
17
- "business_rules": ["string"],
18
- "validations": ["string"],
19
- "constraints": ["string"],
20
- "dependencies": ["string"]
21
- }
22
- """
23
-
24
- _llm_client: AzureOpenAI | None = None
25
-
26
- def _get_llm_client() -> AzureOpenAI:
27
- global _llm_client
28
- if _llm_client is None:
29
- _llm_client = AzureOpenAI(
30
- api_key=cfg.AZURE_API_KEY,
31
- azure_endpoint=cfg.AZURE_ENDPOINT,
32
- api_version=cfg.AZURE_API_VERSION,
33
- )
34
- return _llm_client
35
-
36
- def extract_understanding(requirement: TestRequirement) -> RequirementUnderstanding:
37
- """Analyze a requirement and extract its core semantic understanding."""
38
- client = _get_llm_client()
39
-
40
- user_prompt = f"Requirement Key: {requirement.jira_key}\nSummary: {requirement.summary}\nDescription: {requirement.description or 'None'}\n"
41
-
42
- try:
43
- response = client.chat.completions.create(
44
- model=cfg.AZURE_DEPLOYMENT,
45
- messages=[
46
- {"role": "system", "content": _SYSTEM_PROMPT},
47
- {"role": "user", "content": user_prompt},
48
- ],
49
- response_format={"type": "json_object"},
50
- temperature=0.1,
51
- max_tokens=1500,
52
- )
53
-
54
- content = response.choices[0].message.content or "{}"
55
- data = json.loads(content)
56
-
57
- understanding = RequirementUnderstanding(
58
- actors=data.get("actors", []),
59
- entities=data.get("entities", []),
60
- business_rules=data.get("business_rules", []),
61
- validations=data.get("validations", []),
62
- constraints=data.get("constraints", []),
63
- dependencies=data.get("dependencies", [])
64
- )
65
- logger.info(f"Successfully extracted understanding for {requirement.jira_key}")
66
- return understanding
67
-
68
- except Exception as e:
69
- logger.error(f"Failed to extract understanding for {requirement.jira_key}: {e}")
70
- # Return empty understanding on failure to not block the pipeline
71
- return RequirementUnderstanding()
@@ -1,111 +0,0 @@
1
- import json
2
- import logging
3
- from typing import List, Dict, Any
4
- from openai import AzureOpenAI
5
- from knowledge_base.config import cfg
6
- from knowledge_base.models.test_requirement import (
7
- TestRequirement,
8
- ScenarioWithRules,
9
- GeneratedTestCase,
10
- ManualTestStep,
11
- BusinessRule
12
- )
13
- from knowledge_base.agents.requirement_agent import _get_llm_client
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
- _SYSTEM_PROMPT = """You are an expert IGEL Quality Engineering Architect.
18
- Your task is to take a Business Rule for a specific Scenario and generate a detailed Manual Test Case.
19
- The test case must strictly follow the business rule.
20
- Output MUST be valid JSON matching this schema:
21
- {
22
- "title": "string",
23
- "priority": "critical" | "high" | "medium" | "low",
24
- "preconditions": ["string"],
25
- "steps": [
26
- {
27
- "step_number": 1,
28
- "action": "string",
29
- "data": "string",
30
- "expected_result": "string"
31
- }
32
- ]
33
- }
34
- """
35
-
36
- def generate_test_case(requirement: TestRequirement, scenario_rules: ScenarioWithRules, rule: BusinessRule) -> GeneratedTestCase:
37
- """Generate a specific test case from a business rule."""
38
- client = _get_llm_client()
39
-
40
- # Construct context
41
- user_prompt = f"Requirement: {requirement.summary}\n"
42
- user_prompt += f"Scenario Action: {scenario_rules.scenario.action}\n"
43
- user_prompt += f"Business Rule ({rule.rule_type}): {rule.description}\n\n"
44
- user_prompt += "Generate a detailed manual test case for this business rule."
45
-
46
- try:
47
- response = client.chat.completions.create(
48
- model=cfg.AZURE_DEPLOYMENT,
49
- messages=[
50
- {"role": "system", "content": _SYSTEM_PROMPT},
51
- {"role": "user", "content": user_prompt},
52
- ],
53
- response_format={"type": "json_object"},
54
- temperature=0.2,
55
- max_tokens=2000,
56
- )
57
-
58
- content = response.choices[0].message.content or "{}"
59
- data = json.loads(content)
60
-
61
- # Build manual steps
62
- steps = []
63
- for s in data.get("steps", []):
64
- if isinstance(s, dict) and "action" in s and "expected_result" in s:
65
- steps.append(ManualTestStep(
66
- step_number=s.get("step_number", len(steps) + 1),
67
- action=s["action"],
68
- data=s.get("data", ""),
69
- expected_result=s["expected_result"]
70
- ))
71
-
72
- tc_ref = f"TC_{requirement.jira_key}_S{scenario_rules.scenario.step_number:02d}_{rule.rule_type[:1].upper()}"
73
-
74
- tc = GeneratedTestCase(
75
- tc_reference=tc_ref,
76
- business_rule=rule,
77
- title=data.get("title", f"Test for {rule.description}"),
78
- test_type=rule.rule_type,
79
- priority=data.get("priority", "medium"),
80
- preconditions=data.get("preconditions", []),
81
- steps=steps,
82
- confidence_score=0.0,
83
- confidence_metrics={}
84
- )
85
- logger.info(f"Generated test case {tc_ref} with {len(steps)} steps")
86
- return tc
87
-
88
- except Exception as e:
89
- logger.error(f"Failed to generate test case for rule '{rule.description}': {e}")
90
- # Return a stubbed TC on failure
91
- return GeneratedTestCase(
92
- tc_reference=f"TC_{requirement.jira_key}_ERR",
93
- business_rule=rule,
94
- title="Failed to generate",
95
- test_type=rule.rule_type,
96
- priority="low",
97
- preconditions=[],
98
- steps=[],
99
- confidence_score=0.0,
100
- confidence_metrics={}
101
- )
102
-
103
- def generate_cases_for_scenario(requirement: TestRequirement, scenario_rules: ScenarioWithRules) -> List[GeneratedTestCase]:
104
- """Generate test cases for all business rules in a scenario."""
105
- cases = []
106
- # Enumerate to make refs unique if there are multiple of same type
107
- for i, rule in enumerate(scenario_rules.business_rules):
108
- tc = generate_test_case(requirement, scenario_rules, rule)
109
- tc.tc_reference = f"{tc.tc_reference}{i+1:02d}"
110
- cases.append(tc)
111
- return cases
@@ -1,87 +0,0 @@
1
- import logging
2
- from pathlib import Path
3
- from typing import List, Tuple
4
-
5
- from knowledge_base.models.test_requirement import TestRequirement, GeneratedTestCase, TestCaseWithConfidence
6
- from knowledge_base.agents.requirement_agent import extract_understanding
7
- from knowledge_base.agents.scenario_agent import generate_all_scenarios
8
- from knowledge_base.agents.testcase_agent import generate_cases_for_scenario
9
- from knowledge_base.agents.validation_agent import run_validation_pipeline
10
- from knowledge_base.agents.confidence_agent import compute_hybrid_confidence
11
- from knowledge_base.agents.automation_design_agent import design_automation_plan
12
- from knowledge_base.agents.script_generator_agent import generate_script
13
- from knowledge_base.agents.execution_validation_agent import ExecutionValidationAgent
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
- class WorkflowEngine:
18
- """Predictable orchestration engine replacing the bottleneck Queen Agent."""
19
-
20
- def __init__(self, repo_path: Path):
21
- self.repo_path = repo_path
22
- self.exec_validator = ExecutionValidationAgent(repo_path)
23
-
24
- def run_requirement_flow(self, req: TestRequirement) -> Tuple[TestRequirement, List]:
25
- """Requirement -> Requirement Understanding -> Scenario -> Business Rules"""
26
- logger.info(f"Starting requirement flow for {req.jira_key}")
27
-
28
- # 1. Understanding Layer
29
- understanding = extract_understanding(req)
30
- req.understanding = understanding
31
-
32
- # 2. Scenario & Business Rules Layer
33
- scenarios_with_rules = generate_all_scenarios(req)
34
-
35
- # In reality, you'd persist `scenarios_with_rules` to DB here
36
- return req, scenarios_with_rules
37
-
38
- def run_testcase_flow(self, req: TestRequirement, scenarios_with_rules: List) -> List[TestCaseWithConfidence]:
39
- """Business Rules -> Test Cases -> Validation -> Confidence"""
40
- logger.info(f"Starting test case flow for {req.jira_key}")
41
- all_cases = []
42
-
43
- for sr in scenarios_with_rules:
44
- # 1. Generate Test Cases
45
- tcs = generate_cases_for_scenario(req, sr)
46
-
47
- for tc in tcs:
48
- # 2. Structural/Traceability Validation
49
- ok, errs = run_validation_pipeline(tc, sr)
50
- if not ok:
51
- # Depending on policy, skip or mark for human review
52
- pass
53
-
54
- # 3. Deterministic Confidence Scoring
55
- tc_conf = compute_hybrid_confidence(tc, sr)
56
- all_cases.append(tc_conf)
57
-
58
- # Persist to igel_generated_testcases here
59
- return all_cases
60
-
61
- def run_script_flow(self, req: TestRequirement, test_cases: List[TestCaseWithConfidence], output_path: Path) -> Tuple[bool, str]:
62
- """Approved Test Cases -> Automation Design -> Script -> Execution Validation"""
63
- logger.info(f"Starting script flow for {req.jira_key}")
64
-
65
- # Filter for approved
66
- approved = [tc for tc in test_cases if tc.is_approved]
67
- if not approved:
68
- return False, "No approved test cases available for automation."
69
-
70
- # 1. Automation Design Agent
71
- plan = design_automation_plan(test_cases)
72
-
73
- # 2. Script Generator
74
- ok, code, err = generate_script(test_cases, plan, output_path)
75
- if not ok:
76
- return False, err
77
-
78
- # 3. Execution Validation Pipeline
79
- ok, status, err = self.exec_validator.validate_pipeline(code, output_path)
80
-
81
- # Persist to igel_automation_scripts here
82
-
83
- if not ok:
84
- logger.warning(f"Execution validation failed ({status}): {err}")
85
- return False, err
86
-
87
- return True, "Script successfully generated and validated."