igel-qe-core 1.0.3 → 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 (628) hide show
  1. package/dist/cli/index.js +638 -54
  2. package/dist/cli/platform.js +115 -72
  3. package/dist/mcp/server.js +258 -17
  4. package/package.json +4 -4
  5. package/src/__pycache__/__init__.cpython-311.pyc +0 -0
  6. package/src/__pycache__/__init__.cpython-313.pyc +0 -0
  7. package/src/__pycache__/__init__.cpython-314.pyc +0 -0
  8. package/src/agents/__init__.py +3 -0
  9. package/src/agents/__pycache__/__init__.cpython-311.pyc +0 -0
  10. package/src/agents/__pycache__/__init__.cpython-313.pyc +0 -0
  11. package/src/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  12. package/src/agents/__pycache__/automation_design_agent.cpython-311.pyc +0 -0
  13. package/src/agents/__pycache__/automation_design_agent.cpython-313.pyc +0 -0
  14. package/src/agents/__pycache__/automation_design_agent.cpython-314.pyc +0 -0
  15. package/src/agents/__pycache__/code_intelligence_agent.cpython-311.pyc +0 -0
  16. package/src/agents/__pycache__/code_intelligence_agent.cpython-313.pyc +0 -0
  17. package/src/agents/__pycache__/confidence_agent.cpython-311.pyc +0 -0
  18. package/src/agents/__pycache__/confidence_agent.cpython-313.pyc +0 -0
  19. package/src/agents/__pycache__/confidence_agent.cpython-314.pyc +0 -0
  20. package/src/agents/__pycache__/execution_validation_agent.cpython-311.pyc +0 -0
  21. package/src/agents/__pycache__/execution_validation_agent.cpython-313.pyc +0 -0
  22. package/src/agents/__pycache__/execution_validation_agent.cpython-314.pyc +0 -0
  23. package/src/agents/__pycache__/framework_analyzer_agent.cpython-311.pyc +0 -0
  24. package/src/agents/__pycache__/framework_analyzer_agent.cpython-313.pyc +0 -0
  25. package/src/agents/__pycache__/fusion_agent.cpython-314.pyc +0 -0
  26. package/src/agents/__pycache__/graph.cpython-314.pyc +0 -0
  27. package/src/agents/__pycache__/intent_agent.cpython-313.pyc +0 -0
  28. package/src/agents/__pycache__/intent_agent.cpython-314.pyc +0 -0
  29. package/src/agents/__pycache__/kg_agent.cpython-314.pyc +0 -0
  30. package/src/agents/__pycache__/memory_agent.cpython-314.pyc +0 -0
  31. package/src/agents/__pycache__/reflection_agent.cpython-314.pyc +0 -0
  32. package/src/agents/__pycache__/regression_agent.cpython-311.pyc +0 -0
  33. package/src/agents/__pycache__/regression_agent.cpython-313.pyc +0 -0
  34. package/src/agents/__pycache__/requirement_agent.cpython-311.pyc +0 -0
  35. package/src/agents/__pycache__/requirement_agent.cpython-313.pyc +0 -0
  36. package/src/agents/__pycache__/requirement_agent.cpython-314.pyc +0 -0
  37. package/src/agents/__pycache__/retrieval_agent.cpython-314.pyc +0 -0
  38. package/src/agents/__pycache__/scenario_agent.cpython-311.pyc +0 -0
  39. package/src/agents/__pycache__/scenario_agent.cpython-313.pyc +0 -0
  40. package/src/agents/__pycache__/scenario_agent.cpython-314.pyc +0 -0
  41. package/src/agents/__pycache__/script_agent.cpython-314.pyc +0 -0
  42. package/src/agents/__pycache__/script_generator_agent.cpython-311.pyc +0 -0
  43. package/src/agents/__pycache__/script_generator_agent.cpython-313.pyc +0 -0
  44. package/src/agents/__pycache__/script_generator_agent.cpython-314.pyc +0 -0
  45. package/src/agents/__pycache__/state.cpython-314.pyc +0 -0
  46. package/src/agents/__pycache__/temporal_agent.cpython-314.pyc +0 -0
  47. package/src/agents/__pycache__/testcase_agent.cpython-311.pyc +0 -0
  48. package/src/agents/__pycache__/testcase_agent.cpython-313.pyc +0 -0
  49. package/src/agents/__pycache__/testcase_agent.cpython-314.pyc +0 -0
  50. package/src/agents/__pycache__/validation_agent.cpython-311.pyc +0 -0
  51. package/src/agents/__pycache__/validation_agent.cpython-313.pyc +0 -0
  52. package/src/agents/__pycache__/validation_agent.cpython-314.pyc +0 -0
  53. package/src/agents/__pycache__/workflow_engine.cpython-311.pyc +0 -0
  54. package/src/agents/__pycache__/workflow_engine.cpython-313.pyc +0 -0
  55. package/src/agents/__pycache__/workflow_engine.cpython-314.pyc +0 -0
  56. package/{knowledge_base → src}/agents/automation_design_agent.py +14 -17
  57. package/{knowledge_base → src}/agents/code_intelligence_agent.py +2 -2
  58. package/src/agents/confidence_agent.py +114 -0
  59. package/{knowledge_base → src}/agents/execution_validation_agent.py +1 -1
  60. package/src/agents/feedback_agent.py +89 -0
  61. package/src/agents/framework_analyzer_agent.py +43 -0
  62. package/{knowledge_base → src}/agents/fusion_agent.py +3 -3
  63. package/{knowledge_base → src}/agents/graph.py +10 -10
  64. package/{knowledge_base → src}/agents/healing_agent.py +4 -4
  65. package/src/agents/intent_agent.py +30 -0
  66. package/src/agents/internal/__init__.py +3 -0
  67. package/src/agents/internal/__pycache__/__init__.cpython-313.pyc +0 -0
  68. package/src/agents/internal/__pycache__/approval_manager.cpython-313.pyc +0 -0
  69. package/src/agents/internal/__pycache__/question_engine.cpython-313.pyc +0 -0
  70. package/src/agents/internal/approval_manager.py +111 -0
  71. package/src/agents/internal/question_engine.py +111 -0
  72. package/src/agents/internal/workflow_engine.py +28 -0
  73. package/{knowledge_base → src}/agents/kg_agent.py +3 -3
  74. package/{knowledge_base → src}/agents/memory_agent.py +4 -4
  75. package/src/agents/orchestrator/__init__.py +3 -0
  76. package/src/agents/orchestrator/__pycache__/__init__.cpython-313.pyc +0 -0
  77. package/src/agents/orchestrator/__pycache__/orchestrator.cpython-313.pyc +0 -0
  78. package/src/agents/orchestrator/orchestrator.py +63 -0
  79. package/{knowledge_base → src}/agents/rca_agent.py +4 -4
  80. package/{knowledge_base → src}/agents/reflection_agent.py +1 -1
  81. package/{knowledge_base → src}/agents/regression_agent.py +2 -2
  82. package/src/agents/requirement_agent.py +97 -0
  83. package/{knowledge_base → src}/agents/retrieval_agent.py +2 -2
  84. package/{knowledge_base → src}/agents/scenario_agent.py +11 -17
  85. package/{knowledge_base → src}/agents/script_agent.py +6 -6
  86. package/{knowledge_base → src}/agents/script_generator_agent.py +12 -10
  87. package/{knowledge_base → src}/agents/temporal_agent.py +3 -3
  88. package/src/agents/testcase_agent.py +163 -0
  89. package/{knowledge_base → src}/agents/validation_agent.py +1 -1
  90. package/src/agents/workflow_engine.py +109 -0
  91. package/{knowledge_base → src}/alembic/README.md +4 -4
  92. package/{knowledge_base → src}/alembic/env.py +1 -1
  93. package/{knowledge_base → src}/alembic/script.py.mako +1 -1
  94. package/{knowledge_base → src}/api/middleware.py +3 -3
  95. package/{knowledge_base → src}/api/server.py +28 -28
  96. package/{knowledge_base → src}/chunking/chunker.py +3 -3
  97. package/src/cli/__pycache__/__init__.cpython-311.pyc +0 -0
  98. package/src/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  99. package/src/cli/__pycache__/__init__.cpython-314.pyc +0 -0
  100. package/src/cli/__pycache__/workflow_cli.cpython-311.pyc +0 -0
  101. package/src/cli/__pycache__/workflow_cli.cpython-313.pyc +0 -0
  102. package/src/cli/__pycache__/workflow_cli.cpython-314.pyc +0 -0
  103. package/{knowledge_base → src}/cli/feedback_cli.py +10 -10
  104. package/{knowledge_base → src}/cli/generate.py +11 -11
  105. package/src/cli/index.ts +704 -0
  106. package/src/cli/platform.ts +147 -0
  107. package/src/cli/workflow_cli.py +930 -0
  108. package/{knowledge_base → src}/config/__init__.py +1 -1
  109. package/src/config/__pycache__/__init__.cpython-311.pyc +0 -0
  110. package/src/config/__pycache__/__init__.cpython-313.pyc +0 -0
  111. package/src/config/__pycache__/__init__.cpython-314.pyc +0 -0
  112. package/src/config/__pycache__/policy_config.cpython-311.pyc +0 -0
  113. package/src/config/__pycache__/policy_config.cpython-313.pyc +0 -0
  114. package/src/config/__pycache__/settings.cpython-311.pyc +0 -0
  115. package/src/config/__pycache__/settings.cpython-313.pyc +0 -0
  116. package/src/config/__pycache__/settings.cpython-314.pyc +0 -0
  117. package/src/config/policy_config.py +85 -0
  118. package/src/config/policy_rules.yaml +50 -0
  119. package/{knowledge_base → src}/config/settings.py +51 -6
  120. package/{knowledge_base → src}/connectors/__init__.py +1 -1
  121. package/src/connectors/__pycache__/__init__.cpython-311.pyc +0 -0
  122. package/src/connectors/__pycache__/__init__.cpython-313.pyc +0 -0
  123. package/src/connectors/__pycache__/__init__.cpython-314.pyc +0 -0
  124. package/src/connectors/__pycache__/base.cpython-311.pyc +0 -0
  125. package/src/connectors/__pycache__/base.cpython-313.pyc +0 -0
  126. package/src/connectors/__pycache__/base.cpython-314.pyc +0 -0
  127. package/src/connectors/__pycache__/jira_connector.cpython-311.pyc +0 -0
  128. package/src/connectors/__pycache__/jira_connector.cpython-313.pyc +0 -0
  129. package/src/connectors/__pycache__/jira_connector.cpython-314.pyc +0 -0
  130. package/src/connectors/__pycache__/query_bridge.cpython-313.pyc +0 -0
  131. package/src/connectors/__pycache__/query_bridge.cpython-314.pyc +0 -0
  132. package/src/connectors/bitbucket_connector.py +334 -0
  133. package/{knowledge_base → src}/connectors/community_connector.py +6 -6
  134. package/{knowledge_base → src}/connectors/confluence_connector.py +4 -4
  135. package/{knowledge_base → src}/connectors/jira_connector.py +7 -11
  136. package/{knowledge_base → src}/connectors/kb_igel_connector.py +6 -6
  137. package/{knowledge_base → src}/connectors/query_bridge.py +11 -11
  138. package/{knowledge_base → src}/connectors/search_backends.py +1 -1
  139. package/{knowledge_base → src}/connectors/serviceNow_connector.py +2 -2
  140. package/{knowledge_base → src}/connectors/sync_scheduler.py +12 -10
  141. package/{knowledge_base → src}/connectors/teamcity_connector.py +2 -2
  142. package/{knowledge_base → src}/connectors/testRail_connector.py +2 -2
  143. package/{knowledge_base → src}/connectors/web_fetcher.py +1 -1
  144. package/src/connectors/xray_connector.py +337 -0
  145. package/{knowledge_base → src}/core/__init__.py +1 -1
  146. package/src/core/__pycache__/__init__.cpython-311.pyc +0 -0
  147. package/src/core/__pycache__/__init__.cpython-313.pyc +0 -0
  148. package/src/core/__pycache__/__init__.cpython-314.pyc +0 -0
  149. package/src/core/__pycache__/circuit_breaker.cpython-313.pyc +0 -0
  150. package/src/core/__pycache__/circuit_breaker.cpython-314.pyc +0 -0
  151. package/src/core/__pycache__/confidence.cpython-311.pyc +0 -0
  152. package/src/core/__pycache__/confidence.cpython-313.pyc +0 -0
  153. package/src/core/__pycache__/confidence.cpython-314.pyc +0 -0
  154. package/src/core/__pycache__/context_engine.cpython-311.pyc +0 -0
  155. package/src/core/__pycache__/context_engine.cpython-313.pyc +0 -0
  156. package/src/core/__pycache__/evidence_resolver.cpython-311.pyc +0 -0
  157. package/src/core/__pycache__/evidence_resolver.cpython-313.pyc +0 -0
  158. package/src/core/__pycache__/guardrails.cpython-311.pyc +0 -0
  159. package/src/core/__pycache__/guardrails.cpython-313.pyc +0 -0
  160. package/src/core/__pycache__/hooks.cpython-311.pyc +0 -0
  161. package/src/core/__pycache__/hooks.cpython-313.pyc +0 -0
  162. package/src/core/__pycache__/intent_service.cpython-313.pyc +0 -0
  163. package/src/core/__pycache__/llm_executor.cpython-311.pyc +0 -0
  164. package/src/core/__pycache__/llm_executor.cpython-313.pyc +0 -0
  165. package/src/core/__pycache__/model_router.cpython-311.pyc +0 -0
  166. package/src/core/__pycache__/model_router.cpython-313.pyc +0 -0
  167. package/src/core/__pycache__/orchestration_contracts.cpython-311.pyc +0 -0
  168. package/src/core/__pycache__/orchestration_contracts.cpython-313.pyc +0 -0
  169. package/src/core/__pycache__/precedence.cpython-311.pyc +0 -0
  170. package/src/core/__pycache__/precedence.cpython-313.pyc +0 -0
  171. package/src/core/__pycache__/prompt_builder.cpython-311.pyc +0 -0
  172. package/src/core/__pycache__/prompt_builder.cpython-313.pyc +0 -0
  173. package/src/core/__pycache__/prompt_policy_engine.cpython-311.pyc +0 -0
  174. package/src/core/__pycache__/prompt_policy_engine.cpython-313.pyc +0 -0
  175. package/{knowledge_base → src}/core/cache.py +2 -2
  176. package/{knowledge_base → src}/core/confidence.py +2 -2
  177. package/src/core/context_engine.py +138 -0
  178. package/src/core/evidence_resolver.py +72 -0
  179. package/src/core/guardrails.py +22 -0
  180. package/src/core/hooks.py +57 -0
  181. package/src/core/intent_service.py +74 -0
  182. package/src/core/llm_executor.py +138 -0
  183. package/{knowledge_base → src}/core/logging_setup.py +1 -1
  184. package/src/core/model_router.py +246 -0
  185. package/src/core/orchestration_contracts.py +66 -0
  186. package/src/core/persistence_engine.py +159 -0
  187. package/src/core/prompt_builder.py +49 -0
  188. package/src/core/prompt_policy_engine.py +35 -0
  189. package/src/core/traceability_engine.py +56 -0
  190. package/src/db/__pycache__/__init__.cpython-311.pyc +0 -0
  191. package/src/db/__pycache__/__init__.cpython-313.pyc +0 -0
  192. package/src/db/__pycache__/__init__.cpython-314.pyc +0 -0
  193. package/src/db/__pycache__/client.cpython-311.pyc +0 -0
  194. package/src/db/__pycache__/client.cpython-313.pyc +0 -0
  195. package/src/db/__pycache__/client.cpython-314.pyc +0 -0
  196. package/src/db/__pycache__/igel_schema.cpython-311.pyc +0 -0
  197. package/src/db/__pycache__/igel_schema.cpython-313.pyc +0 -0
  198. package/src/db/__pycache__/igel_schema.cpython-314.pyc +0 -0
  199. package/src/db/__pycache__/kg_introspect.cpython-311.pyc +0 -0
  200. package/src/db/__pycache__/kg_introspect.cpython-313.pyc +0 -0
  201. package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-314.pyc +0 -0
  202. package/{knowledge_base → src}/db/client.py +1 -1
  203. package/{knowledge_base → src}/db/connector_sync.py +1 -1
  204. package/{knowledge_base → src}/db/feedback_schema.py +2 -2
  205. package/{knowledge_base → src}/db/igel_schema.py +29 -4
  206. package/{knowledge_base → src}/db/kg_introspect.py +1 -1
  207. package/src/db/migrations.py +237 -0
  208. package/{knowledge_base → src}/db/schema.py +6 -6
  209. package/{knowledge_base → src}/deploy/Dockerfile +3 -3
  210. package/{knowledge_base → src}/deploy/feedback_automation.sh +3 -3
  211. package/{knowledge_base → src}/deploy/firecrawl-docker.sh +4 -4
  212. package/{knowledge_base → src}/deploy/igel-testgen.service +2 -2
  213. package/{knowledge_base → src}/deploy/install_reranker.sh +1 -1
  214. package/{knowledge_base → src}/deploy/requirements.txt +1 -2
  215. package/{knowledge_base → src}/deploy/run_server.sh +1 -1
  216. package/{knowledge_base → src}/docs/TEST_GENERATION_GUIDE.md +15 -15
  217. package/src/embeddings/__pycache__/__init__.cpython-311.pyc +0 -0
  218. package/src/embeddings/__pycache__/__init__.cpython-313.pyc +0 -0
  219. package/src/embeddings/__pycache__/__init__.cpython-314.pyc +0 -0
  220. package/src/embeddings/__pycache__/azure_embedder.cpython-311.pyc +0 -0
  221. package/src/embeddings/__pycache__/azure_embedder.cpython-313.pyc +0 -0
  222. package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-314.pyc +0 -0
  223. package/{knowledge_base → src}/embeddings/azure_embedder.py +10 -1
  224. package/{knowledge_base → src}/eval/__init__.py +3 -3
  225. package/{knowledge_base → src}/eval/__main__.py +7 -7
  226. package/src/eval/__pycache__/__init__.cpython-311.pyc +0 -0
  227. package/src/eval/__pycache__/__init__.cpython-313.pyc +0 -0
  228. package/src/eval/__pycache__/__init__.cpython-314.pyc +0 -0
  229. package/src/eval/__pycache__/baseline.cpython-311.pyc +0 -0
  230. package/src/eval/__pycache__/baseline.cpython-313.pyc +0 -0
  231. package/src/eval/__pycache__/baseline.cpython-314.pyc +0 -0
  232. package/src/eval/__pycache__/harness.cpython-311.pyc +0 -0
  233. package/src/eval/__pycache__/harness.cpython-313.pyc +0 -0
  234. package/src/eval/__pycache__/harness.cpython-314.pyc +0 -0
  235. package/src/eval/__pycache__/scorers.cpython-311.pyc +0 -0
  236. package/src/eval/__pycache__/scorers.cpython-313.pyc +0 -0
  237. package/src/eval/__pycache__/scorers.cpython-314.pyc +0 -0
  238. package/{knowledge_base → src}/eval/harness.py +6 -6
  239. package/{knowledge_base → src}/feedback/__init__.py +1 -1
  240. package/{knowledge_base → src}/feedback/analytics.py +1 -1
  241. package/{knowledge_base → src}/feedback/applier.py +4 -4
  242. package/{knowledge_base → src}/feedback/curator.py +2 -2
  243. package/{knowledge_base → src}/feedback/handler.py +1 -1
  244. package/src/generation/__pycache__/__init__.cpython-313.pyc +0 -0
  245. package/src/generation/__pycache__/__init__.cpython-314.pyc +0 -0
  246. package/src/generation/__pycache__/input_classifier.cpython-313.pyc +0 -0
  247. package/src/generation/__pycache__/manual_tc_parser.cpython-313.pyc +0 -0
  248. package/src/generation/__pycache__/prompts.cpython-313.pyc +0 -0
  249. package/src/generation/__pycache__/prompts.cpython-314.pyc +0 -0
  250. package/src/generation/__pycache__/test_generator.cpython-313.pyc +0 -0
  251. package/src/generation/__pycache__/test_generator.cpython-314.pyc +0 -0
  252. package/{knowledge_base → src}/generation/input_classifier.py +1 -1
  253. package/{knowledge_base → src}/generation/prompts.py +1 -1
  254. package/{knowledge_base → src}/generation/tc_transformer.py +10 -10
  255. package/{knowledge_base → src}/generation/test_generator.py +56 -10
  256. package/{knowledge_base → src}/graph_db/__init__.py +1 -1
  257. package/{knowledge_base → src}/graph_db/graphiti_client.py +2 -2
  258. package/{knowledge_base → src}/graph_db/kg_traversal.py +3 -3
  259. package/{knowledge_base → src}/graph_db/migrate_kg.py +4 -4
  260. package/{knowledge_base → src}/graph_db/neo4j_client.py +1 -1
  261. package/{knowledge_base → src}/graph_db/temporal_ingest.py +1 -1
  262. package/{knowledge_base → src}/ingestion/kg_extractor.py +6 -6
  263. package/{knowledge_base → src}/ingestion/web_ingest.py +6 -6
  264. package/src/intelligence/__pycache__/__init__.cpython-311.pyc +0 -0
  265. package/src/intelligence/__pycache__/__init__.cpython-313.pyc +0 -0
  266. package/src/intelligence/__pycache__/diff_analyzer.cpython-311.pyc +0 -0
  267. package/src/intelligence/__pycache__/diff_analyzer.cpython-313.pyc +0 -0
  268. package/src/intelligence/__pycache__/routing_engine.cpython-311.pyc +0 -0
  269. package/src/intelligence/__pycache__/routing_engine.cpython-313.pyc +0 -0
  270. package/src/intelligence/diff_analyzer.py +109 -0
  271. package/{knowledge_base → src}/intelligence/execution_ingest.py +3 -3
  272. package/src/intelligence/routing_engine.py +74 -0
  273. package/src/mcp/server.ts +384 -0
  274. package/src/memory/__init__.py +6 -0
  275. package/src/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  276. package/src/memory/__pycache__/cognee_client.cpython-314.pyc +0 -0
  277. package/src/memory/__pycache__/memory_types.cpython-314.pyc +0 -0
  278. package/{knowledge_base → src}/memory/cognee_client.py +3 -3
  279. package/src/models/__pycache__/test_requirement.cpython-311.pyc +0 -0
  280. package/src/models/__pycache__/test_requirement.cpython-313.pyc +0 -0
  281. package/src/models/__pycache__/test_requirement.cpython-314.pyc +0 -0
  282. package/{knowledge_base → src}/models/test_requirement.py +12 -7
  283. package/{knowledge_base → src}/parsers/csv_parser.py +1 -1
  284. package/{knowledge_base → src}/parsers/doc_parser.py +1 -1
  285. package/{knowledge_base → src}/parsers/html_parser.py +1 -1
  286. package/{knowledge_base → src}/parsers/pdf_parser.py +1 -1
  287. package/src/project/__pycache__/__init__.cpython-311.pyc +0 -0
  288. package/src/project/__pycache__/__init__.cpython-313.pyc +0 -0
  289. package/src/project/__pycache__/ai_folder.cpython-311.pyc +0 -0
  290. package/src/project/__pycache__/ai_folder.cpython-313.pyc +0 -0
  291. package/src/project/__pycache__/context_enricher.cpython-313.pyc +0 -0
  292. package/src/project/__pycache__/context_projection_builder.cpython-311.pyc +0 -0
  293. package/src/project/__pycache__/context_projection_builder.cpython-313.pyc +0 -0
  294. package/src/project/__pycache__/context_requirement_sync.cpython-311.pyc +0 -0
  295. package/src/project/__pycache__/context_requirement_sync.cpython-313.pyc +0 -0
  296. package/src/project/ai_folder.py +602 -0
  297. package/src/project/context_enricher.py +333 -0
  298. package/src/project/context_projection_builder.py +167 -0
  299. package/src/project/context_requirement_sync.py +205 -0
  300. package/src/project/init_check.py +214 -0
  301. package/src/prompts/__pycache__/prompt_loader.cpython-313.pyc +0 -0
  302. package/src/prompts/automation_design.md +12 -0
  303. package/src/prompts/policies/automation_generation_policy.md +11 -0
  304. package/src/prompts/policies/generation_instructions.md +24 -0
  305. package/src/prompts/policies/guardrails.md +6 -0
  306. package/src/prompts/policies/traceability_policy.md +9 -0
  307. package/src/prompts/prompt_loader.py +56 -0
  308. package/src/prompts/requirement_understanding.md +17 -0
  309. package/src/prompts/scenario_generator.md +17 -0
  310. package/src/prompts/script_generator.md +13 -0
  311. package/src/prompts/test_case_generator.md +23 -0
  312. package/src/retrieval/__pycache__/__init__.cpython-311.pyc +0 -0
  313. package/src/retrieval/__pycache__/__init__.cpython-313.pyc +0 -0
  314. package/src/retrieval/__pycache__/__init__.cpython-314.pyc +0 -0
  315. package/src/retrieval/__pycache__/knowledge_graph.cpython-311.pyc +0 -0
  316. package/src/retrieval/__pycache__/knowledge_graph.cpython-313.pyc +0 -0
  317. package/src/retrieval/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  318. package/src/retrieval/__pycache__/retriever.cpython-311.pyc +0 -0
  319. package/src/retrieval/__pycache__/retriever.cpython-313.pyc +0 -0
  320. package/src/retrieval/__pycache__/retriever.cpython-314.pyc +0 -0
  321. package/src/retrieval/__pycache__/unified_query.cpython-313.pyc +0 -0
  322. package/src/retrieval/__pycache__/unified_query.cpython-314.pyc +0 -0
  323. package/{knowledge_base → src}/retrieval/context_fusion.py +3 -3
  324. package/{knowledge_base → src}/retrieval/knowledge_graph.py +4 -4
  325. package/{knowledge_base → src}/retrieval/reranker.py +2 -2
  326. package/{knowledge_base → src}/retrieval/retriever.py +11 -11
  327. package/{knowledge_base → src}/retrieval/unified_query.py +7 -7
  328. package/{knowledge_base → src}/retrieval/web_retriever.py +6 -6
  329. package/{knowledge_base → src}/validators/step_fidelity.py +1 -1
  330. package/src/vision/__init__.py +0 -0
  331. package/{knowledge_base → src}/vision/image_describer.py +1 -1
  332. package/knowledge_base/__pycache__/__init__.cpython-314.pyc +0 -0
  333. package/knowledge_base/agents/__init__.py +0 -6
  334. package/knowledge_base/agents/confidence_agent.py +0 -94
  335. package/knowledge_base/agents/feedback_agent.py +0 -56
  336. package/knowledge_base/agents/intent_agent.py +0 -76
  337. package/knowledge_base/agents/requirement_agent.py +0 -71
  338. package/knowledge_base/agents/testcase_agent.py +0 -111
  339. package/knowledge_base/agents/workflow_engine.py +0 -87
  340. package/knowledge_base/cli/generate_qcapps134.py +0 -391
  341. package/knowledge_base/cli/workflow_cli.py +0 -93
  342. package/knowledge_base/config/.env +0 -100
  343. package/knowledge_base/config/.env.example +0 -75
  344. package/knowledge_base/connectors/bitbucket_connector.py +0 -25
  345. package/knowledge_base/db/__pycache__/__init__.cpython-314.pyc +0 -0
  346. package/knowledge_base/db/__pycache__/client.cpython-314.pyc +0 -0
  347. package/knowledge_base/db/migrations.py +0 -22
  348. package/knowledge_base/embeddings/__pycache__/__init__.cpython-314.pyc +0 -0
  349. package/knowledge_base/ingestion/ingest.py +0 -346
  350. package/knowledge_base/ingestion/ingest_images.py +0 -330
  351. package/knowledge_base/memory/__init__.py +0 -6
  352. package/knowledge_base/memory/ingest_memory.py +0 -60
  353. /package/{knowledge_base → src}/__init__.py +0 -0
  354. /package/{knowledge_base → src}/__pycache__/__init__.cpython-37.pyc +0 -0
  355. /package/{knowledge_base → src}/__pycache__/__init__.cpython-38.pyc +0 -0
  356. /package/{knowledge_base → src}/__pycache__/confidence.cpython-37.pyc +0 -0
  357. /package/{knowledge_base → src}/__pycache__/config.cpython-314.pyc +0 -0
  358. /package/{knowledge_base → src}/__pycache__/config.cpython-37.pyc +0 -0
  359. /package/{knowledge_base → src}/__pycache__/config.cpython-38.pyc +0 -0
  360. /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-314.pyc +0 -0
  361. /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-37.pyc +0 -0
  362. /package/{knowledge_base → src}/__pycache__/feedback_analytics.cpython-37.pyc +0 -0
  363. /package/{knowledge_base → src}/__pycache__/feedback_applier.cpython-37.pyc +0 -0
  364. /package/{knowledge_base → src}/__pycache__/feedback_cli.cpython-37.pyc +0 -0
  365. /package/{knowledge_base → src}/__pycache__/feedback_curator.cpython-37.pyc +0 -0
  366. /package/{knowledge_base → src}/__pycache__/feedback_handler.cpython-37.pyc +0 -0
  367. /package/{knowledge_base → src}/__pycache__/generate.cpython-37.pyc +0 -0
  368. /package/{knowledge_base → src}/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
  369. /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-314.pyc +0 -0
  370. /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-37.pyc +0 -0
  371. /package/{knowledge_base → src}/__pycache__/kg_extractor.cpython-37.pyc +0 -0
  372. /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  373. /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
  374. /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-314.pyc +0 -0
  375. /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
  376. /package/{knowledge_base → src}/__pycache__/precedence.cpython-37.pyc +0 -0
  377. /package/{knowledge_base → src}/__pycache__/prompts.cpython-314.pyc +0 -0
  378. /package/{knowledge_base → src}/__pycache__/prompts.cpython-37.pyc +0 -0
  379. /package/{knowledge_base → src}/__pycache__/reranker.cpython-314.pyc +0 -0
  380. /package/{knowledge_base → src}/__pycache__/reranker.cpython-37.pyc +0 -0
  381. /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-314.pyc +0 -0
  382. /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
  383. /package/{knowledge_base → src}/__pycache__/retriever.cpython-314.pyc +0 -0
  384. /package/{knowledge_base → src}/__pycache__/retriever.cpython-37.pyc +0 -0
  385. /package/{knowledge_base → src}/__pycache__/server.cpython-37.pyc +0 -0
  386. /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-314.pyc +0 -0
  387. /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-37.pyc +0 -0
  388. /package/{knowledge_base → src}/__pycache__/test_generator.cpython-314.pyc +0 -0
  389. /package/{knowledge_base → src}/__pycache__/test_generator.cpython-37.pyc +0 -0
  390. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-37.pyc +0 -0
  391. /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-38.pyc +0 -0
  392. /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-37.pyc +0 -0
  393. /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-38.pyc +0 -0
  394. /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-37.pyc +0 -0
  395. /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-38.pyc +0 -0
  396. /package/{knowledge_base → src}/agents/__pycache__/healing_agent.cpython-37.pyc +0 -0
  397. /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-37.pyc +0 -0
  398. /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-38.pyc +0 -0
  399. /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-37.pyc +0 -0
  400. /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-38.pyc +0 -0
  401. /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-37.pyc +0 -0
  402. /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-38.pyc +0 -0
  403. /package/{knowledge_base → src}/agents/__pycache__/rca_agent.cpython-37.pyc +0 -0
  404. /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-37.pyc +0 -0
  405. /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-38.pyc +0 -0
  406. /package/{knowledge_base → src}/agents/__pycache__/regression_agent.cpython-37.pyc +0 -0
  407. /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-37.pyc +0 -0
  408. /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-38.pyc +0 -0
  409. /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-37.pyc +0 -0
  410. /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-38.pyc +0 -0
  411. /package/{knowledge_base → src}/agents/__pycache__/state.cpython-37.pyc +0 -0
  412. /package/{knowledge_base → src}/agents/__pycache__/state.cpython-38.pyc +0 -0
  413. /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-37.pyc +0 -0
  414. /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-38.pyc +0 -0
  415. /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-37.pyc +0 -0
  416. /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-38.pyc +0 -0
  417. /package/{knowledge_base → src}/agents/state.py +0 -0
  418. /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-37.pyc +0 -0
  419. /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-38.pyc +0 -0
  420. /package/{knowledge_base → src}/alembic/versions/.gitkeep +0 -0
  421. /package/{knowledge_base → src}/alembic/versions/001_phase0_feedback.py +0 -0
  422. /package/{knowledge_base → src}/alembic/versions/002_feedback_promotions.py +0 -0
  423. /package/{knowledge_base → src}/alembic/versions/003_enterprise_hardening.py +0 -0
  424. /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-37.pyc +0 -0
  425. /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-38.pyc +0 -0
  426. /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-37.pyc +0 -0
  427. /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-38.pyc +0 -0
  428. /package/{knowledge_base → src}/api/__init__.py +0 -0
  429. /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-37.pyc +0 -0
  430. /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-38.pyc +0 -0
  431. /package/{knowledge_base → src}/api/__pycache__/middleware.cpython-38.pyc +0 -0
  432. /package/{knowledge_base → src}/api/__pycache__/server.cpython-37.pyc +0 -0
  433. /package/{knowledge_base → src}/api/__pycache__/server.cpython-38.pyc +0 -0
  434. /package/{knowledge_base → src}/chunking/__init__.py +0 -0
  435. /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-37.pyc +0 -0
  436. /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-38.pyc +0 -0
  437. /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-37.pyc +0 -0
  438. /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-38.pyc +0 -0
  439. /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-37.pyc +0 -0
  440. /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-38.pyc +0 -0
  441. /package/{knowledge_base → src}/chunking/validators.py +0 -0
  442. /package/{knowledge_base → src}/cli/__init__.py +0 -0
  443. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-37.pyc +0 -0
  444. /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-38.pyc +0 -0
  445. /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-37.pyc +0 -0
  446. /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-38.pyc +0 -0
  447. /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-37.pyc +0 -0
  448. /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-38.pyc +0 -0
  449. /package/{knowledge_base → src}/cli/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
  450. /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-37.pyc +0 -0
  451. /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-38.pyc +0 -0
  452. /package/{knowledge_base → src}/config/__pycache__/settings.cpython-37.pyc +0 -0
  453. /package/{knowledge_base → src}/config/__pycache__/settings.cpython-38.pyc +0 -0
  454. /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-37.pyc +0 -0
  455. /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-38.pyc +0 -0
  456. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-37.pyc +0 -0
  457. /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-38.pyc +0 -0
  458. /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-37.pyc +0 -0
  459. /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-38.pyc +0 -0
  460. /package/{knowledge_base → src}/connectors/__pycache__/community_connector.cpython-38.pyc +0 -0
  461. /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-37.pyc +0 -0
  462. /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-38.pyc +0 -0
  463. /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-37.pyc +0 -0
  464. /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-38.pyc +0 -0
  465. /package/{knowledge_base → src}/connectors/__pycache__/kb_igel_connector.cpython-38.pyc +0 -0
  466. /package/{knowledge_base → src}/connectors/__pycache__/playwright_fetcher.cpython-38.pyc +0 -0
  467. /package/{knowledge_base → src}/connectors/__pycache__/query_bridge.cpython-38.pyc +0 -0
  468. /package/{knowledge_base → src}/connectors/__pycache__/search_backends.cpython-38.pyc +0 -0
  469. /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-37.pyc +0 -0
  470. /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-38.pyc +0 -0
  471. /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-37.pyc +0 -0
  472. /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-38.pyc +0 -0
  473. /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-37.pyc +0 -0
  474. /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-38.pyc +0 -0
  475. /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-37.pyc +0 -0
  476. /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-38.pyc +0 -0
  477. /package/{knowledge_base → src}/connectors/__pycache__/web_fetcher.cpython-38.pyc +0 -0
  478. /package/{knowledge_base → src}/connectors/base.py +0 -0
  479. /package/{knowledge_base → src}/connectors/playwright_fetcher.py +0 -0
  480. /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-37.pyc +0 -0
  481. /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-38.pyc +0 -0
  482. /package/{knowledge_base → src}/core/__pycache__/cache.cpython-38.pyc +0 -0
  483. /package/{knowledge_base → src}/core/__pycache__/circuit_breaker.cpython-38.pyc +0 -0
  484. /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-37.pyc +0 -0
  485. /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-38.pyc +0 -0
  486. /package/{knowledge_base → src}/core/__pycache__/logging_setup.cpython-38.pyc +0 -0
  487. /package/{knowledge_base → src}/core/__pycache__/metrics.cpython-38.pyc +0 -0
  488. /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-37.pyc +0 -0
  489. /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-38.pyc +0 -0
  490. /package/{knowledge_base → src}/core/__pycache__/request_context.cpython-38.pyc +0 -0
  491. /package/{knowledge_base → src}/core/circuit_breaker.py +0 -0
  492. /package/{knowledge_base → src}/core/metrics.py +0 -0
  493. /package/{knowledge_base → src}/core/precedence.py +0 -0
  494. /package/{knowledge_base → src}/core/request_context.py +0 -0
  495. /package/{knowledge_base → src}/db/__init__.py +0 -0
  496. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-37.pyc +0 -0
  497. /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-38.pyc +0 -0
  498. /package/{knowledge_base → src}/db/__pycache__/client.cpython-37.pyc +0 -0
  499. /package/{knowledge_base → src}/db/__pycache__/client.cpython-38.pyc +0 -0
  500. /package/{knowledge_base → src}/db/__pycache__/connector_sync.cpython-38.pyc +0 -0
  501. /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-37.pyc +0 -0
  502. /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-38.pyc +0 -0
  503. /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-37.pyc +0 -0
  504. /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-38.pyc +0 -0
  505. /package/{knowledge_base → src}/db/__pycache__/schema.cpython-37.pyc +0 -0
  506. /package/{knowledge_base → src}/db/__pycache__/schema.cpython-38.pyc +0 -0
  507. /package/{knowledge_base → src}/embeddings/__init__.py +0 -0
  508. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-37.pyc +0 -0
  509. /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-38.pyc +0 -0
  510. /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-37.pyc +0 -0
  511. /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-38.pyc +0 -0
  512. /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-37.pyc +0 -0
  513. /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-38.pyc +0 -0
  514. /package/{knowledge_base → src}/eval/__pycache__/__main__.cpython-37.pyc +0 -0
  515. /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-37.pyc +0 -0
  516. /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-38.pyc +0 -0
  517. /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-37.pyc +0 -0
  518. /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-38.pyc +0 -0
  519. /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-37.pyc +0 -0
  520. /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-38.pyc +0 -0
  521. /package/{knowledge_base → src}/eval/baseline.py +0 -0
  522. /package/{knowledge_base → src}/eval/queries_50.json +0 -0
  523. /package/{knowledge_base → src}/eval/scorers.py +0 -0
  524. /package/{knowledge_base → src}/exemplars/README.md +0 -0
  525. /package/{knowledge_base → src}/exemplars/__pycache__/pytest_reference_snippet.cpython-37.pyc +0 -0
  526. /package/{knowledge_base → src}/exemplars/gold_manual_concise_snippet.md +0 -0
  527. /package/{knowledge_base → src}/exemplars/gold_manual_detailed_snippet.md +0 -0
  528. /package/{knowledge_base → src}/exemplars/pytest_reference_snippet.py +0 -0
  529. /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-37.pyc +0 -0
  530. /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-38.pyc +0 -0
  531. /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-37.pyc +0 -0
  532. /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-38.pyc +0 -0
  533. /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-37.pyc +0 -0
  534. /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-38.pyc +0 -0
  535. /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-37.pyc +0 -0
  536. /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-38.pyc +0 -0
  537. /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-37.pyc +0 -0
  538. /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-38.pyc +0 -0
  539. /package/{knowledge_base → src}/generation/__init__.py +0 -0
  540. /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-37.pyc +0 -0
  541. /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-38.pyc +0 -0
  542. /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-37.pyc +0 -0
  543. /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-38.pyc +0 -0
  544. /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
  545. /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-38.pyc +0 -0
  546. /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-37.pyc +0 -0
  547. /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-38.pyc +0 -0
  548. /package/{knowledge_base → src}/generation/__pycache__/tc_transformer.cpython-37.pyc +0 -0
  549. /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-37.pyc +0 -0
  550. /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-38.pyc +0 -0
  551. /package/{knowledge_base → src}/generation/manual_tc_parser.py +0 -0
  552. /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-37.pyc +0 -0
  553. /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-38.pyc +0 -0
  554. /package/{knowledge_base → src}/graph_db/__pycache__/graphiti_client.cpython-37.pyc +0 -0
  555. /package/{knowledge_base → src}/graph_db/__pycache__/kg_traversal.cpython-37.pyc +0 -0
  556. /package/{knowledge_base → src}/graph_db/__pycache__/migrate_kg.cpython-37.pyc +0 -0
  557. /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-37.pyc +0 -0
  558. /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-38.pyc +0 -0
  559. /package/{knowledge_base → src}/graph_db/__pycache__/schema.cpython-37.pyc +0 -0
  560. /package/{knowledge_base → src}/graph_db/__pycache__/temporal_ingest.cpython-37.pyc +0 -0
  561. /package/{knowledge_base → src}/graph_db/schema.py +0 -0
  562. /package/{knowledge_base → src}/ingestion/__init__.py +0 -0
  563. /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-37.pyc +0 -0
  564. /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-38.pyc +0 -0
  565. /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-37.pyc +0 -0
  566. /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-38.pyc +0 -0
  567. /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-37.pyc +0 -0
  568. /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-38.pyc +0 -0
  569. /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-37.pyc +0 -0
  570. /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-38.pyc +0 -0
  571. /package/{knowledge_base → src}/ingestion/__pycache__/web_ingest.cpython-38.pyc +0 -0
  572. /package/{knowledge_base → src}/intelligence/__init__.py +0 -0
  573. /package/{knowledge_base → src}/intelligence/__pycache__/__init__.cpython-37.pyc +0 -0
  574. /package/{knowledge_base → src}/intelligence/__pycache__/execution_ingest.cpython-37.pyc +0 -0
  575. /package/{knowledge_base → src}/intelligence/__pycache__/predictive_engine.cpython-37.pyc +0 -0
  576. /package/{knowledge_base → src}/intelligence/__pycache__/risk_scorer.cpython-37.pyc +0 -0
  577. /package/{knowledge_base → src}/intelligence/predictive_engine.py +0 -0
  578. /package/{knowledge_base → src}/intelligence/risk_scorer.py +0 -0
  579. /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-37.pyc +0 -0
  580. /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-38.pyc +0 -0
  581. /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-37.pyc +0 -0
  582. /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-38.pyc +0 -0
  583. /package/{knowledge_base → src}/memory/__pycache__/ingest_memory.cpython-37.pyc +0 -0
  584. /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-37.pyc +0 -0
  585. /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-38.pyc +0 -0
  586. /package/{knowledge_base → src}/memory/memory_types.py +0 -0
  587. /package/{knowledge_base → src}/parsers/__init__.py +0 -0
  588. /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-37.pyc +0 -0
  589. /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-38.pyc +0 -0
  590. /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-37.pyc +0 -0
  591. /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-38.pyc +0 -0
  592. /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-37.pyc +0 -0
  593. /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-38.pyc +0 -0
  594. /package/{knowledge_base → src}/parsers/__pycache__/html_parser.cpython-38.pyc +0 -0
  595. /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-37.pyc +0 -0
  596. /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-38.pyc +0 -0
  597. /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-37.pyc +0 -0
  598. /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-38.pyc +0 -0
  599. /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-37.pyc +0 -0
  600. /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-38.pyc +0 -0
  601. /package/{knowledge_base → src}/parsers/image_extractor.py +0 -0
  602. /package/{knowledge_base → src}/parsers/markdown_parser.py +0 -0
  603. /package/{knowledge_base/vision → src/project}/__init__.py +0 -0
  604. /package/{knowledge_base → src}/retrieval/__init__.py +0 -0
  605. /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-37.pyc +0 -0
  606. /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-38.pyc +0 -0
  607. /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-37.pyc +0 -0
  608. /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-38.pyc +0 -0
  609. /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
  610. /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-38.pyc +0 -0
  611. /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-37.pyc +0 -0
  612. /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-38.pyc +0 -0
  613. /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
  614. /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-38.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-38.pyc +0 -0
  618. /package/{knowledge_base → src}/retrieval/__pycache__/web_retriever.cpython-38.pyc +0 -0
  619. /package/{knowledge_base → src}/retrieval/retrieval_debug.py +0 -0
  620. /package/{knowledge_base → src}/validators/__init__.py +0 -0
  621. /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-314.pyc +0 -0
  622. /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-37.pyc +0 -0
  623. /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-314.pyc +0 -0
  624. /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-37.pyc +0 -0
  625. /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-37.pyc +0 -0
  626. /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-38.pyc +0 -0
  627. /package/{knowledge_base → src}/vision/__pycache__/image_describer.cpython-37.pyc +0 -0
  628. /package/{knowledge_base → src}/vision/__pycache__/image_describer.cpython-38.pyc +0 -0
@@ -0,0 +1,163 @@
1
+ import json
2
+ import logging
3
+ from typing import List, Dict, Any
4
+ from src.core.llm_executor import get_executor, executor_enabled_for
5
+ from src.core.orchestration_contracts import GenerationContext, LLMRequest
6
+ from src.config import cfg
7
+ from src.models.test_requirement import (
8
+ TestRequirement,
9
+ ScenarioWithRules,
10
+ GeneratedTestCase,
11
+ ManualTestStep,
12
+ BusinessRule
13
+ )
14
+ from src.agents.requirement_agent import _get_llm_client
15
+
16
+ from src.core.prompt_builder import PromptBuilder
17
+ from src.prompts.prompt_loader import load_prompt
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+ _ROLE = "You are an expert IGEL Quality Engineering Architect. IGEL OS12 only."
22
+
23
+ _BEHAVIORAL_INSTRUCTIONS = load_prompt(
24
+ "test_case_generator.md",
25
+ fallback=(
26
+ "Generate a detailed manual test case for the supplied business rule. "
27
+ "Do not invent behavior outside provided context."
28
+ ),
29
+ )
30
+
31
+ _TEMPLATE = """
32
+ Output MUST be valid JSON matching this schema:
33
+ {
34
+ "title": "string",
35
+ "priority": "critical" | "high" | "medium" | "low",
36
+ "preconditions": ["string"],
37
+ "steps": [
38
+ {
39
+ "step_number": 1,
40
+ "action": "string",
41
+ "data": "string",
42
+ "expected_result": "string"
43
+ }
44
+ ]
45
+ }
46
+ """
47
+
48
+ def generate_test_case(requirement: TestRequirement, scenario_rules: ScenarioWithRules, rule: BusinessRule) -> GeneratedTestCase:
49
+ """Generate a specific test case from a business rule."""
50
+ executor = get_executor()
51
+ use_executor = executor_enabled_for("TestCaseAgent")
52
+ client = None if use_executor else _get_llm_client()
53
+
54
+ # Construct context package
55
+ context_package = {
56
+ "requirement_summary": requirement.summary,
57
+ "scenario_action": scenario_rules.scenario.action,
58
+ "business_rule": {
59
+ "type": rule.rule_type,
60
+ "description": rule.description
61
+ }
62
+ }
63
+
64
+ final_system_prompt = PromptBuilder.build(
65
+ role=_ROLE,
66
+ behavioral_instructions=_BEHAVIORAL_INSTRUCTIONS,
67
+ template=_TEMPLATE,
68
+ context_package=context_package
69
+ )
70
+
71
+ # User prompt is now just the trigger
72
+ user_prompt = "Generate the test case."
73
+
74
+ try:
75
+ if use_executor:
76
+ result = executor.execute(
77
+ LLMRequest(
78
+ system_prompt=final_system_prompt,
79
+ user_prompt=user_prompt,
80
+ task_type="testcase_generation",
81
+ agent_name="TestCaseAgent",
82
+ temperature=0.2,
83
+ max_tokens=2000,
84
+ response_format={"type": "json_object"},
85
+ context=GenerationContext(
86
+ jira_key=requirement.jira_key,
87
+ task_type="testcase_generation",
88
+ agent_name="TestCaseAgent",
89
+ query=requirement.summary,
90
+ metadata={
91
+ "scenario_step": scenario_rules.scenario.step_number,
92
+ "rule_type": rule.rule_type,
93
+ },
94
+ ),
95
+ )
96
+ )
97
+ content = result.content or "{}"
98
+ else:
99
+ response = client.chat.completions.create(
100
+ model=cfg.AZURE_DEPLOYMENT,
101
+ messages=[
102
+ {"role": "system", "content": final_system_prompt},
103
+ {"role": "user", "content": user_prompt},
104
+ ],
105
+ response_format={"type": "json_object"},
106
+ temperature=0.2,
107
+ max_tokens=2000,
108
+ )
109
+ content = response.choices[0].message.content or "{}"
110
+
111
+ data = json.loads(content)
112
+
113
+ # Build manual steps
114
+ steps = []
115
+ for s in data.get("steps", []):
116
+ if isinstance(s, dict) and "action" in s and "expected_result" in s:
117
+ steps.append(ManualTestStep(
118
+ step_number=s.get("step_number", len(steps) + 1),
119
+ action=s["action"],
120
+ data=s.get("data", ""),
121
+ expected_result=s["expected_result"]
122
+ ))
123
+
124
+ tc_ref = f"TC_{requirement.jira_key}_S{scenario_rules.scenario.step_number:02d}_{rule.rule_type[:1].upper()}"
125
+
126
+ tc = GeneratedTestCase(
127
+ tc_reference=tc_ref,
128
+ business_rule=rule,
129
+ title=data.get("title", f"Test for {rule.description}"),
130
+ test_type=rule.rule_type,
131
+ priority=data.get("priority", "medium"),
132
+ preconditions=data.get("preconditions", []),
133
+ steps=steps,
134
+ confidence_score=0.0,
135
+ confidence_metrics={}
136
+ )
137
+ logger.info(f"Generated test case {tc_ref} with {len(steps)} steps")
138
+ return tc
139
+
140
+ except Exception as e:
141
+ logger.error(f"Failed to generate test case for rule '{rule.description}': {e}")
142
+ # Return a stubbed TC on failure
143
+ return GeneratedTestCase(
144
+ tc_reference=f"TC_{requirement.jira_key}_ERR",
145
+ business_rule=rule,
146
+ title="Failed to generate",
147
+ test_type=rule.rule_type,
148
+ priority="low",
149
+ preconditions=[],
150
+ steps=[],
151
+ confidence_score=0.0,
152
+ confidence_metrics={}
153
+ )
154
+
155
+ def generate_cases_for_scenario(requirement: TestRequirement, scenario_rules: ScenarioWithRules) -> List[GeneratedTestCase]:
156
+ """Generate test cases for all business rules in a scenario."""
157
+ cases = []
158
+ # Enumerate to make refs unique if there are multiple of same type
159
+ for i, rule in enumerate(scenario_rules.business_rules):
160
+ tc = generate_test_case(requirement, scenario_rules, rule)
161
+ tc.tc_reference = f"{tc.tc_reference}{i+1:02d}"
162
+ cases.append(tc)
163
+ return cases
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  from typing import Tuple, List
3
- from knowledge_base.models.test_requirement import GeneratedTestCase, ScenarioWithRules, TestRequirement
3
+ from src.models.test_requirement import GeneratedTestCase, ScenarioWithRules, TestRequirement
4
4
 
5
5
  logger = logging.getLogger(__name__)
6
6
 
@@ -0,0 +1,109 @@
1
+ import logging
2
+ from pathlib import Path
3
+ from typing import List, Tuple
4
+
5
+ from src.models.test_requirement import TestRequirement, GeneratedTestCase, TestCaseWithConfidence
6
+ from src.agents.requirement_agent import extract_understanding
7
+ from src.agents.scenario_agent import generate_all_scenarios
8
+ from src.agents.testcase_agent import generate_cases_for_scenario
9
+ from src.agents.validation_agent import run_validation_pipeline
10
+ from src.agents.confidence_agent import compute_two_level_confidence
11
+ from src.agents.automation_design_agent import design_automation_plan, AutomationPlan
12
+ from src.agents.script_generator_agent import generate_script
13
+ from src.agents.execution_validation_agent import ExecutionValidationAgent
14
+ from src.core.context_engine import ContextEngine, SourceReport
15
+ from src.core.evidence_resolver import EvidenceResolver, ResolvedContext
16
+ from src.config.policy_config import get_policy
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+ class WorkflowEngine:
21
+ """Predictable orchestration engine replacing the bottleneck Queen Agent."""
22
+
23
+ def __init__(self, repo_path: Path):
24
+ self.repo_path = repo_path
25
+ self.exec_validator = ExecutionValidationAgent(repo_path)
26
+
27
+ def run_requirement_flow(
28
+ self, req: TestRequirement
29
+ ) -> Tuple[TestRequirement, List, ResolvedContext, SourceReport]:
30
+ """Requirement -> Understanding -> Context Retrieval/Resolution -> Scenario -> Business Rules"""
31
+ logger.info(f"Starting requirement flow for {req.jira_key}")
32
+
33
+ # 1. Understanding Layer
34
+ understanding = extract_understanding(req)
35
+ req.understanding = understanding
36
+
37
+ # 2. Scenario & Business Rules Layer
38
+ scenarios_with_rules = generate_all_scenarios(req)
39
+
40
+ # 3. Context Retrieval + Evidence Resolution (once per requirement)
41
+ query = f"{req.summary or ''}\n{req.description or ''}".strip()
42
+ unified_context = ContextEngine().build(req.jira_key, query)
43
+ resolved_context = EvidenceResolver().resolve(unified_context)
44
+ source_report = unified_context.source_report
45
+
46
+ # In reality, you'd persist `scenarios_with_rules` to DB here
47
+ return req, scenarios_with_rules, resolved_context, source_report
48
+
49
+ def run_testcase_flow(
50
+ self,
51
+ req: TestRequirement,
52
+ scenarios_with_rules: List,
53
+ resolved_context: ResolvedContext,
54
+ source_report: SourceReport
55
+ ) -> List[TestCaseWithConfidence]:
56
+ """Business Rules -> Test Cases -> Validation -> Confidence"""
57
+ logger.info(f"Starting test case flow for {req.jira_key}")
58
+ all_cases = []
59
+ policy = get_policy()
60
+
61
+ for sr in scenarios_with_rules:
62
+ # 1. Generate Test Cases
63
+ tcs = generate_cases_for_scenario(req, sr)
64
+
65
+ for tc in tcs:
66
+ # 2. Structural/Traceability Validation
67
+ ok, errs = run_validation_pipeline(tc, sr)
68
+
69
+ # 3. Deterministic Confidence Scoring
70
+ tc_conf = compute_two_level_confidence(tc, sr, resolved_context, source_report, policy)
71
+ all_cases.append(tc_conf)
72
+
73
+ # Persist to igel_generated_testcases handled by PersistenceEngine now
74
+ return all_cases
75
+
76
+ def run_script_flow(
77
+ self,
78
+ req: TestRequirement,
79
+ test_cases: List[TestCaseWithConfidence],
80
+ output_path: Path,
81
+ plan: AutomationPlan = None,
82
+ ) -> Tuple[bool, str, AutomationPlan]:
83
+ """Approved Test Cases -> (Automation Design) -> Script -> Execution Validation"""
84
+ logger.info(f"Starting script flow for {req.jira_key}")
85
+
86
+ # Filter for approved
87
+ approved = [tc for tc in test_cases if tc.is_approved]
88
+ if not approved:
89
+ return False, "No approved test cases available for automation.", None
90
+
91
+ # 1. Automation Design Agent (reuse a supplied plan if present)
92
+ if plan is None:
93
+ plan = design_automation_plan(test_cases)
94
+
95
+ # 2. Script Generator
96
+ ok, code, err = generate_script(test_cases, plan, output_path)
97
+ if not ok:
98
+ return False, err, plan
99
+
100
+ # 3. Execution Validation Pipeline
101
+ ok, status, err = self.exec_validator.validate_pipeline(code, output_path)
102
+
103
+ # Persist to igel_automation_scripts here
104
+
105
+ if not ok:
106
+ logger.warning(f"Execution validation failed ({status}): {err}")
107
+ return False, err, plan
108
+
109
+ return True, "Script successfully generated and validated.", plan
@@ -12,7 +12,7 @@ This directory contains Alembic migrations for the IGEL Knowledge Base database
12
12
  ```
13
13
 
14
14
  2. **Configure database connection**:
15
- Ensure your `.env` file has PostgreSQL credentials:
15
+ Export PostgreSQL credentials in your runtime environment:
16
16
  ```
17
17
  DB_HOST=192.168.204.65
18
18
  DB_PORT=5432
@@ -23,7 +23,7 @@ This directory contains Alembic migrations for the IGEL Knowledge Base database
23
23
 
24
24
  3. **Initialize database** (if needed):
25
25
  ```bash
26
- python -m knowledge_base.db.schema # Creates base tables
26
+ python -m src.db.schema # Creates base tables
27
27
  ```
28
28
 
29
29
  ## Running Migrations
@@ -66,7 +66,7 @@ alembic revision --autogenerate -m "Add new column to feedback_events"
66
66
  alembic revision -m "Custom schema change"
67
67
  ```
68
68
 
69
- Then edit the generated file in `knowledge_base/alembic/versions/`.
69
+ Then edit the generated file in `src/alembic/versions/`.
70
70
 
71
71
  ## Migration Files
72
72
 
@@ -91,7 +91,7 @@ The table may have been created by `schema.py`. Options:
91
91
  2. Or mark migration as applied: `alembic stamp 001_phase0_feedback`
92
92
 
93
93
  ### Database connection error
94
- - Check `.env` file has correct credentials
94
+ - Check runtime environment has correct DB_* values
95
95
  - Verify PostgreSQL is running: `psql -U genai -d AI_Led_QE -h 192.168.204.65`
96
96
  - Check network connectivity to DB server
97
97
 
@@ -15,7 +15,7 @@ from pathlib import Path
15
15
  # Add parent directory to path
16
16
  sys.path.insert(0, str(Path(__file__).parent.parent.parent))
17
17
 
18
- from knowledge_base.config import cfg
18
+ from src.config import cfg
19
19
 
20
20
  # Alembic Config object
21
21
  config = context.config
@@ -1,5 +1,5 @@
1
1
  """
2
2
  Alembic migration script placeholder.
3
3
  =====================================
4
- Place migration scripts in knowledge_base/alembic/versions/
4
+ Place migration scripts in src/alembic/versions/
5
5
  """
@@ -8,9 +8,9 @@ from collections import defaultdict, deque
8
8
  from fastapi import HTTPException, Request
9
9
  from starlette.middleware.base import BaseHTTPMiddleware
10
10
 
11
- from knowledge_base.core.metrics import metrics
12
- from knowledge_base.core.request_context import get_request_id, hash_api_key, new_request_id
13
- from knowledge_base.config import cfg
11
+ from src.core.metrics import metrics
12
+ from src.core.request_context import get_request_id, hash_api_key, new_request_id
13
+ from src.config import cfg
14
14
 
15
15
 
16
16
  class RequestTracingMiddleware(BaseHTTPMiddleware):
@@ -2,7 +2,7 @@
2
2
  IGEL Test Case Generation — Always-Running REST API
3
3
  =====================================================
4
4
  Start:
5
- uvicorn knowledge_base.api.server:app --host 0.0.0.0 --port 8000
5
+ uvicorn src.api.server:app --host 0.0.0.0 --port 8000
6
6
 
7
7
  Endpoints:
8
8
  POST /query — Ask any test-case-related question; returns detailed KB-grounded steps
@@ -30,29 +30,29 @@ import anyio
30
30
  from fastapi import FastAPI, HTTPException, Depends, Header, Request
31
31
  from pydantic import BaseModel, Field, model_validator, field_validator
32
32
 
33
- from knowledge_base.config import cfg
34
- from knowledge_base.db.client import init_pool, test_connection, close_pool, get_conn
35
- from knowledge_base.db.schema import create_schema, get_stats, ensure_knowledge_graph_tables
36
- from knowledge_base.db.feedback_schema import ensure_feedback_tables
37
- from knowledge_base.feedback.handler import capture_feedback
38
- from knowledge_base.retrieval.unified_query import unified_query
39
- from knowledge_base.core.logging_setup import configure_logging
40
- from knowledge_base.core.metrics import metrics, Timer
41
- from knowledge_base.core.request_context import (
33
+ from src.config import cfg
34
+ from src.db.client import init_pool, test_connection, close_pool, get_conn
35
+ from src.db.schema import create_schema, get_stats, ensure_knowledge_graph_tables
36
+ from src.db.feedback_schema import ensure_feedback_tables
37
+ from src.feedback.handler import capture_feedback
38
+ from src.retrieval.unified_query import unified_query
39
+ from src.core.logging_setup import configure_logging
40
+ from src.core.metrics import metrics, Timer
41
+ from src.core.request_context import (
42
42
  api_key_scope_var,
43
43
  get_request_id,
44
44
  hash_api_key,
45
45
  resolve_scope,
46
46
  )
47
- from knowledge_base.api.middleware import RequestTracingMiddleware, RateLimitMiddleware
48
- from knowledge_base.generation.prompts import (
47
+ from src.api.middleware import RequestTracingMiddleware, RateLimitMiddleware
48
+ from src.generation.prompts import (
49
49
  PromptContext,
50
50
  build_system_prompt,
51
51
  build_markdown_user_prompt,
52
52
  format_kb_retrieval_references_markdown,
53
53
  kb_trace_lines,
54
54
  )
55
- from knowledge_base.generation.test_generator import (
55
+ from src.generation.test_generator import (
56
56
  generate_test_cases,
57
57
  _infer_feature_area,
58
58
  _call_gpt,
@@ -85,7 +85,7 @@ async def lifespan(app: FastAPI):
85
85
  init_pool()
86
86
  try:
87
87
  if not test_connection():
88
- raise RuntimeError("Cannot connect to PostgreSQL — check knowledge_base/.env")
88
+ raise RuntimeError("Cannot connect to PostgreSQL — check runtime DB environment/MCP configuration")
89
89
 
90
90
  create_schema()
91
91
  ensure_knowledge_graph_tables()
@@ -98,14 +98,14 @@ async def lifespan(app: FastAPI):
98
98
  stats.get("kg_nodes", 0), stats.get("kg_edges", 0),
99
99
  )
100
100
  if stats["documents"] == 0:
101
- logger.warning(" KB is EMPTY — run: python -m knowledge_base.ingestion.ingest")
101
+ logger.warning(" KB is EMPTY — run: python -m src.ingestion.ingest")
102
102
  orphans = stats.get("kg_orphan_parents (no KG entity)", 0)
103
103
  if orphans > 0:
104
- logger.warning(" %d parent chunks have no KG entity — run: python -m knowledge_base.ingestion.ingest --enrich-orphans", orphans)
104
+ logger.warning(" %d parent chunks have no KG entity — run: python -m src.ingestion.ingest --enrich-orphans", orphans)
105
105
 
106
106
  if cfg.RERANKER_BACKEND == "local":
107
107
  try:
108
- from knowledge_base.retrieval.reranker import warm_start_reranker
108
+ from src.retrieval.reranker import warm_start_reranker
109
109
  warm_start_reranker()
110
110
  logger.info(" Reranker model pre-loaded")
111
111
  except Exception as exc:
@@ -332,7 +332,7 @@ async def health():
332
332
 
333
333
  reranker_ok = True
334
334
  try:
335
- from knowledge_base.retrieval.reranker import is_reranker_loaded
335
+ from src.retrieval.reranker import is_reranker_loaded
336
336
  reranker_ok = is_reranker_loaded()
337
337
  except Exception:
338
338
  reranker_ok = False
@@ -341,7 +341,7 @@ async def health():
341
341
 
342
342
  redis_ok = None
343
343
  try:
344
- from knowledge_base.core.cache import _redis
344
+ from src.core.cache import _redis
345
345
  r = _redis()
346
346
  redis_ok = r is not None and r.ping()
347
347
  except Exception:
@@ -472,7 +472,7 @@ async def generate_full_test(req: GenerateRequest):
472
472
  mode = (req.generation_mode or cfg.DEFAULT_GENERATION_MODE or "pipeline").lower()
473
473
 
474
474
  if mode == "agentic" and cfg.AGENTIC_ENABLED:
475
- from knowledge_base.agents.graph import generate_agentic
475
+ from src.agents.graph import generate_agentic
476
476
  result = generate_agentic(
477
477
  effective_topic,
478
478
  product=req.product,
@@ -586,7 +586,7 @@ async def generate_agentic(req: AgenticGenerateRequest):
586
586
  if not cfg.AGENTIC_ENABLED:
587
587
  raise HTTPException(503, detail="Agentic pipeline disabled (AGENTIC_ENABLED=false)")
588
588
 
589
- from knowledge_base.agents.graph import generate_agentic
589
+ from src.agents.graph import generate_agentic
590
590
 
591
591
  try:
592
592
  result = generate_agentic(
@@ -622,28 +622,28 @@ async def generate_agentic(req: AgenticGenerateRequest):
622
622
  @app.post("/rca", dependencies=[Depends(require_scope("admin"))])
623
623
  async def run_rca(req: RCARequest):
624
624
  """Root cause analysis for test failures (Phase 7)."""
625
- from knowledge_base.agents.rca_agent import analyze_failure
625
+ from src.agents.rca_agent import analyze_failure
626
626
  return analyze_failure(req.test_id, req.failure_log)
627
627
 
628
628
 
629
629
  @app.post("/heal", dependencies=[Depends(require_scope("admin"))])
630
630
  async def heal_test(req: HealRequest):
631
631
  """Propose script fix for flaky test (Phase 7)."""
632
- from knowledge_base.agents.healing_agent import propose_fix
632
+ from src.agents.healing_agent import propose_fix
633
633
  return propose_fix(req.test_id, req.flaky_history)
634
634
 
635
635
 
636
636
  @app.post("/impact-analysis", dependencies=[Depends(require_scope("admin"))])
637
637
  async def analyze_impact(req: ImpactAnalysisRequest):
638
638
  """Regression impact analysis from changed files (Phase 7)."""
639
- from knowledge_base.agents.regression_agent import impact_analysis
639
+ from src.agents.regression_agent import impact_analysis
640
640
  return impact_analysis(req.changed_files)
641
641
 
642
642
 
643
643
  @app.get("/feedback/report", dependencies=[Depends(require_scope("admin"))])
644
644
  async def feedback_report(days: int = 7):
645
645
  """Weekly feedback analytics report (Phase 2)."""
646
- from knowledge_base.feedback.analytics import generate_weekly_report
646
+ from src.feedback.analytics import generate_weekly_report
647
647
  return generate_weekly_report(days=days)
648
648
 
649
649
 
@@ -753,13 +753,13 @@ def _next_test_id() -> str:
753
753
  def _component_health(component: str) -> Optional[dict]:
754
754
  try:
755
755
  if component == "neo4j":
756
- from knowledge_base.graph_db.neo4j_client import get_neo4j_client
756
+ from src.graph_db.neo4j_client import get_neo4j_client
757
757
  return get_neo4j_client().health_check()
758
758
  if component == "cognee":
759
- from knowledge_base.memory.cognee_client import get_cognee_client
759
+ from src.memory.cognee_client import get_cognee_client
760
760
  return get_cognee_client().health_check()
761
761
  if component == "graphiti":
762
- from knowledge_base.graph_db.graphiti_client import get_graphiti_client
762
+ from src.graph_db.graphiti_client import get_graphiti_client
763
763
  return get_graphiti_client().health_check()
764
764
  except Exception as e:
765
765
  return {"status": "error", "error": str(e)}
@@ -16,8 +16,8 @@ from typing import Generator
16
16
 
17
17
  import tiktoken
18
18
 
19
- from knowledge_base.parsers.markdown_parser import Section
20
- from knowledge_base.chunking.validators import (
19
+ from src.parsers.markdown_parser import Section
20
+ from src.chunking.validators import (
21
21
  ValidationResult,
22
22
  validate_chunk,
23
23
  validate_coverage,
@@ -26,7 +26,7 @@ from knowledge_base.chunking.validators import (
26
26
  detect_product,
27
27
  CHUNK_TOKEN_LIMITS,
28
28
  )
29
- from knowledge_base.config import cfg
29
+ from src.config import cfg
30
30
 
31
31
  _ENCODER = tiktoken.get_encoding("cl100k_base")
32
32
 
@@ -1,11 +1,11 @@
1
1
  """CLI for feedback curation — Phase 2.
2
2
 
3
3
  Usage:
4
- python -m knowledge_base.cli.feedback_cli curate --status pending --limit 10
5
- python -m knowledge_base.cli.feedback_cli approve --id <uuid> --curator qe1 --notes "verified"
6
- python -m knowledge_base.cli.feedback_cli reject --id <uuid> --curator qe1
7
- python -m knowledge_base.cli.feedback_cli apply --limit 5
8
- python -m knowledge_base.cli.feedback_cli report
4
+ python -m src.cli.feedback_cli curate --status pending --limit 10
5
+ python -m src.cli.feedback_cli approve --id <uuid> --curator qe1 --notes "verified"
6
+ python -m src.cli.feedback_cli reject --id <uuid> --curator qe1
7
+ python -m src.cli.feedback_cli apply --limit 5
8
+ python -m src.cli.feedback_cli report
9
9
  """
10
10
  from __future__ import annotations
11
11
 
@@ -13,11 +13,11 @@ import argparse
13
13
  import json
14
14
  import sys
15
15
 
16
- from knowledge_base.db.client import init_pool, close_pool
17
- from knowledge_base.db.feedback_schema import ensure_feedback_tables
18
- from knowledge_base.feedback.applier import apply_curated_feedback, apply_pending_promotions
19
- from knowledge_base.feedback.analytics import generate_weekly_report
20
- from knowledge_base.feedback.curator import approve, get_event, list_pending, reject
16
+ from src.db.client import init_pool, close_pool
17
+ from src.db.feedback_schema import ensure_feedback_tables
18
+ from src.feedback.applier import apply_curated_feedback, apply_pending_promotions
19
+ from src.feedback.analytics import generate_weekly_report
20
+ from src.feedback.curator import approve, get_event, list_pending, reject
21
21
 
22
22
 
23
23
  def cmd_curate(args: argparse.Namespace) -> int:
@@ -2,16 +2,16 @@
2
2
  IGEL Test Case Generator — CLI Entry Point
3
3
  ==========================================
4
4
  Usage:
5
- python -m knowledge_base.cli.generate "Entra ID SSO login validation"
6
- python -m knowledge_base.cli.generate "UMS profile assignment" --product UMS --format py
7
- python -m knowledge_base.cli.generate "Device factory reset" --format md --test-id TC015
8
- python -m knowledge_base.cli.generate --interactive
9
- python -m knowledge_base.cli.generate --batch "SSO login,UMS profile,factory reset" --format both
10
- python -m knowledge_base.cli.generate "SSO topic" --debug
11
- python -m knowledge_base.cli.generate "QCAPPS-429 chromium" --source-tc-file Manual_tcs/export.csv --detail-level detailed
5
+ python -m src.cli.generate "Entra ID SSO login validation"
6
+ python -m src.cli.generate "UMS profile assignment" --product UMS --format py
7
+ python -m src.cli.generate "Device factory reset" --format md --test-id TC015
8
+ python -m src.cli.generate --interactive
9
+ python -m src.cli.generate --batch "SSO login,UMS profile,factory reset" --format both
10
+ python -m src.cli.generate "SSO topic" --debug
11
+ python -m src.cli.generate "QCAPPS-429 chromium" --source-tc-file Manual_tcs/export.csv --detail-level detailed
12
12
 
13
13
  Operator guide (how generation uses the DB, topic phrasing, executable steps): see
14
- `knowledge_base/TEST_GENERATION_GUIDE.md` in this repo.
14
+ `src/TEST_GENERATION_GUIDE.md` in this repo.
15
15
  """
16
16
  from __future__ import annotations
17
17
  import argparse
@@ -23,8 +23,8 @@ from rich.console import Console
23
23
  from rich.panel import Panel
24
24
  from rich.table import Table
25
25
 
26
- from knowledge_base.db.client import init_pool, test_connection, close_pool
27
- from knowledge_base.generation.test_generator import (
26
+ from src.db.client import init_pool, test_connection, close_pool
27
+ from src.generation.test_generator import (
28
28
  generate_test_cases,
29
29
  batch_generate,
30
30
  DEFAULT_OUTPUT_DIR,
@@ -112,7 +112,7 @@ def main() -> None:
112
112
  init_pool()
113
113
  if not test_connection():
114
114
  console.print("[red]FAILED[/red]")
115
- console.print("[red]Cannot reach DB. Check knowledge_base/.env settings.[/red]")
115
+ console.print("[red]Cannot reach DB. Check runtime DB environment/MCP configuration.[/red]")
116
116
  sys.exit(1)
117
117
 
118
118
  # ── Dispatch mode ─────────────────────────────────────────────────────────