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
@@ -0,0 +1,214 @@
1
+ """init_check.py — Pre-flight connectivity checker for igel-qe init.
2
+
3
+ Failure semantics:
4
+ REQUIRED (hard block — init fails if these are down):
5
+ - PostgreSQL + pgvector extension
6
+ - Azure OpenAI (embedding + LLM endpoint)
7
+
8
+ OPTIONAL (soft warn — init continues; integration is just disabled):
9
+ - Jira
10
+ - Confluence
11
+ - Bitbucket
12
+ - Xray
13
+
14
+ Security:
15
+ - Error messages are sanitised before output: auth headers, tokens, passwords
16
+ are stripped from any exception text and replaced with [REDACTED].
17
+ - The summary JSON never echoes back credential values.
18
+
19
+ Output: single JSON object to stdout, suitable for Node.js IPC.
20
+ """
21
+ from __future__ import annotations
22
+
23
+ import json
24
+ import re
25
+ import sys
26
+ import time
27
+ from pathlib import Path
28
+
29
+ _PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent
30
+ if str(_PROJECT_ROOT) not in sys.path:
31
+ sys.path.insert(0, str(_PROJECT_ROOT))
32
+
33
+ from src.config import cfg # noqa: E402
34
+
35
+ # ── secret sanitiser ──────────────────────────────────────────────────────────
36
+
37
+ _SECRET_PATTERNS = [
38
+ re.compile(r"(Authorization:\s*(?:Bearer|Basic)\s+)\S+", re.IGNORECASE),
39
+ re.compile(r"(api[_-]?key\s*=\s*)[^\s,&]+", re.IGNORECASE),
40
+ re.compile(r"(token\s*=\s*)[^\s,&]+", re.IGNORECASE),
41
+ re.compile(r"(password\s*=\s*)[^\s,&]+", re.IGNORECASE),
42
+ re.compile(r"(secret\s*=\s*)[^\s,&]+", re.IGNORECASE),
43
+ ]
44
+
45
+
46
+ def _sanitise(text: str) -> str:
47
+ for pattern in _SECRET_PATTERNS:
48
+ text = pattern.sub(r"\g<1>[REDACTED]", text)
49
+ # Also strip any value that looks like a JWT or long base64 token
50
+ text = re.sub(r"ey[A-Za-z0-9_\-]{20,}\.[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+", "[REDACTED_JWT]", text)
51
+ return text
52
+
53
+
54
+ def _safe_error(exc: Exception) -> str:
55
+ return _sanitise(str(exc))
56
+
57
+
58
+ # ── individual checks ─────────────────────────────────────────────────────────
59
+
60
+ def _check_postgres() -> dict:
61
+ """Required: PostgreSQL connection + pgvector extension."""
62
+ t0 = time.perf_counter()
63
+ try:
64
+ from src.db.client import get_conn
65
+ with get_conn() as conn:
66
+ with conn.cursor() as cur:
67
+ cur.execute("SELECT 1")
68
+ cur.execute("SELECT extname FROM pg_extension WHERE extname = 'vector'")
69
+ has_vector = cur.fetchone() is not None
70
+ ms = round((time.perf_counter() - t0) * 1000)
71
+ if not has_vector:
72
+ return {"status": "fail", "message": "pgvector extension not installed. Run: CREATE EXTENSION vector;", "ms": ms}
73
+ return {"status": "ok", "message": "PostgreSQL + pgvector ready", "ms": ms}
74
+ except Exception as e:
75
+ return {"status": "fail", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
76
+
77
+
78
+ def _check_azure_openai() -> dict:
79
+ """Required: Azure OpenAI endpoint reachable with valid credentials."""
80
+ t0 = time.perf_counter()
81
+ if not cfg.AZURE_API_KEY or not cfg.AZURE_ENDPOINT:
82
+ return {"status": "fail", "message": "AZURE_API_KEY or AZURE_ENDPOINT not set", "ms": 0}
83
+ try:
84
+ import httpx
85
+ with httpx.Client(timeout=10.0) as client:
86
+ resp = client.get(
87
+ f"{cfg.AZURE_ENDPOINT.rstrip('/')}/openai/models?api-version={cfg.AZURE_API_VERSION}",
88
+ headers={"api-key": cfg.AZURE_API_KEY},
89
+ )
90
+ # 200 or 401 both mean the endpoint is reachable; 401 means bad key
91
+ if resp.status_code == 401:
92
+ return {"status": "fail", "message": "Azure OpenAI credentials rejected (401)", "ms": round((time.perf_counter() - t0) * 1000)}
93
+ resp.raise_for_status()
94
+ return {"status": "ok", "message": "Azure OpenAI endpoint reachable", "ms": round((time.perf_counter() - t0) * 1000)}
95
+ except Exception as e:
96
+ return {"status": "fail", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
97
+
98
+
99
+ def _check_jira() -> dict:
100
+ """Optional: Jira connectivity check."""
101
+ t0 = time.perf_counter()
102
+ if not cfg.JIRA_ENABLED:
103
+ return {"status": "skipped", "message": "JIRA_ENABLED=false", "ms": 0}
104
+ try:
105
+ from src.connectors.jira_connector import JiraConnector
106
+ c = JiraConnector()
107
+ ok = c.connect()
108
+ ms = round((time.perf_counter() - t0) * 1000)
109
+ return {"status": "ok" if ok else "warn", "message": "Jira connected" if ok else "Jira connection failed — check credentials", "ms": ms}
110
+ except Exception as e:
111
+ return {"status": "warn", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
112
+
113
+
114
+ def _check_confluence() -> dict:
115
+ """Optional: Confluence connectivity check."""
116
+ t0 = time.perf_counter()
117
+ if not cfg.CONFLUENCE_ENABLED:
118
+ return {"status": "skipped", "message": "CONFLUENCE_ENABLED=false", "ms": 0}
119
+ try:
120
+ from src.connectors.confluence_connector import ConfluenceConnector
121
+ c = ConfluenceConnector()
122
+ ok = c.connect()
123
+ ms = round((time.perf_counter() - t0) * 1000)
124
+ return {"status": "ok" if ok else "warn", "message": "Confluence connected" if ok else "Confluence connection failed", "ms": ms}
125
+ except Exception as e:
126
+ return {"status": "warn", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
127
+
128
+
129
+ def _check_bitbucket() -> dict:
130
+ """Optional: Bitbucket connectivity check."""
131
+ t0 = time.perf_counter()
132
+ if not cfg.BITBUCKET_ENABLED:
133
+ return {"status": "skipped", "message": "BITBUCKET_ENABLED=false", "ms": 0}
134
+ try:
135
+ from src.connectors.bitbucket_connector import BitbucketConnector
136
+ c = BitbucketConnector()
137
+ ok = c.connect()
138
+ ms = round((time.perf_counter() - t0) * 1000)
139
+ return {"status": "ok" if ok else "warn", "message": "Bitbucket connected" if ok else "Bitbucket connection failed", "ms": ms}
140
+ except Exception as e:
141
+ return {"status": "warn", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
142
+
143
+
144
+ def _check_xray() -> dict:
145
+ """Optional: Xray connectivity check."""
146
+ t0 = time.perf_counter()
147
+ if not cfg.XRAY_ENABLED:
148
+ return {"status": "skipped", "message": "XRAY_ENABLED=false", "ms": 0}
149
+ try:
150
+ from src.connectors.xray_connector import XrayConnector
151
+ c = XrayConnector()
152
+ ok = c.connect()
153
+ ms = round((time.perf_counter() - t0) * 1000)
154
+ return {"status": "ok" if ok else "warn", "message": "Xray connected" if ok else "Xray authentication failed", "ms": ms}
155
+ except Exception as e:
156
+ return {"status": "warn", "message": _safe_error(e), "ms": round((time.perf_counter() - t0) * 1000)}
157
+
158
+
159
+ # ── runner ────────────────────────────────────────────────────────────────────
160
+
161
+ def run_checks() -> dict:
162
+ """Run all checks and return a structured summary.
163
+
164
+ Returns:
165
+ {
166
+ "ready": bool, # True only if all REQUIRED checks pass
167
+ "checks": { ... }, # per-check results
168
+ "required_failed": [], # list of failed required check names
169
+ "warnings": [], # list of optional check names that warned
170
+ }
171
+ """
172
+ required = {
173
+ "postgres": _check_postgres,
174
+ "azure_openai": _check_azure_openai,
175
+ }
176
+ optional = {
177
+ "jira": _check_jira,
178
+ "confluence": _check_confluence,
179
+ "bitbucket": _check_bitbucket,
180
+ "xray": _check_xray,
181
+ }
182
+
183
+ results: dict[str, dict] = {}
184
+ required_failed: list[str] = []
185
+ warnings: list[str] = []
186
+
187
+ for name, fn in required.items():
188
+ result = fn()
189
+ results[name] = result
190
+ if result["status"] == "fail":
191
+ required_failed.append(name)
192
+
193
+ for name, fn in optional.items():
194
+ result = fn()
195
+ results[name] = result
196
+ if result["status"] == "warn":
197
+ warnings.append(name)
198
+
199
+ return {
200
+ "ready": len(required_failed) == 0,
201
+ "checks": results,
202
+ "required_failed": required_failed,
203
+ "warnings": warnings,
204
+ }
205
+
206
+
207
+ def main() -> None:
208
+ summary = run_checks()
209
+ print(json.dumps(summary, indent=2))
210
+ sys.exit(0 if summary["ready"] else 1)
211
+
212
+
213
+ if __name__ == "__main__":
214
+ main()
@@ -0,0 +1,12 @@
1
+ # Automation Design Prompt
2
+
3
+ {{include:policies/guardrails.md}}
4
+ {{include:policies/automation_generation_policy.md}}
5
+
6
+ You are the IGEL Test Script Planning specialist.
7
+ Your job is to design an automation plan from approved test cases and discovered assets.
8
+
9
+ Rules:
10
+ - Planning only. No code generation.
11
+ - Select only from provided available asset lists.
12
+ - Output MUST be valid JSON with keys: page_objects, fixtures, utilities.
@@ -0,0 +1,11 @@
1
+ # Automation Generation Policy
2
+
3
+ - Maximize reuse in this order:
4
+ 1. Existing business components
5
+ 2. Existing APIs
6
+ 3. Existing fixtures
7
+ 4. Existing utilities
8
+ 5. Existing page objects
9
+ - Never modify working framework assets without explicit approval.
10
+ - Keep script placement under tests/<category> and respect existing layer boundaries.
11
+ - Avoid hallucinated imports or utility calls.
@@ -0,0 +1,24 @@
1
+ # Generation Instructions
2
+
3
+ Purpose: enforce enterprise-grade detailedness and executability.
4
+
5
+ Detailedness rules:
6
+ - Assume executor has no IGEL or domain background.
7
+ - Outputs must be self-explanatory and directly actionable.
8
+
9
+ Test case rules:
10
+ - Cover positive, negative, and edge scenarios.
11
+ - Include objective, preconditions, dependencies, environment, data, explicit steps, expected result per step, cleanup, and post-conditions.
12
+
13
+ Step quality rules:
14
+ - One clear action per step.
15
+ - One explicit expected result per step.
16
+ - Avoid vague verbs like verify/check/open/navigate when they hide execution detail.
17
+
18
+ Token and context rules:
19
+ - Prefer context.md guidance before deep file traversal.
20
+ - Minimize unnecessary repo scanning.
21
+
22
+ Failure policy:
23
+ - Do not hallucinate missing context.
24
+ - Report context gaps and request clarification or SME review.
@@ -0,0 +1,6 @@
1
+ # Guardrails
2
+
3
+ - IGEL OS12 only. Do not reference OS11.
4
+ - Do not invent APIs, fixtures, page objects, utilities, or behavior not grounded in supplied context.
5
+ - Preserve business intent and traceability from requirement -> rule -> testcase -> script.
6
+ - When constraints conflict, document conflict and require approval.
@@ -0,0 +1,9 @@
1
+ # Traceability Policy
2
+
3
+ Every generated artifact must maintain links to:
4
+ - Requirement key
5
+ - Scenario / business rule source
6
+ - Test case identifier
7
+ - Referenced framework assets
8
+
9
+ Output should clearly indicate source assumptions, risks, and review recommendation where confidence is low.
@@ -0,0 +1,56 @@
1
+ """Prompt loader with lightweight include support.
2
+
3
+ Supported include syntax inside prompt files:
4
+ {{include:relative/path/from/src/prompts.md}}
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import logging
9
+ import re
10
+ from functools import lru_cache
11
+ from pathlib import Path
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+ _PROMPTS_ROOT = Path(__file__).resolve().parent
16
+ _INCLUDE_RE = re.compile(r"\{\{include:([^}]+)\}\}")
17
+
18
+
19
+ def _resolve_with_includes(path: Path, seen: set[Path], depth: int = 0) -> str:
20
+ if depth > 8:
21
+ raise ValueError(f"Prompt include depth too large for {path}")
22
+
23
+ full = path.resolve()
24
+ if full in seen:
25
+ raise ValueError(f"Circular prompt include detected at {full}")
26
+ seen.add(full)
27
+
28
+ text = full.read_text(encoding="utf-8")
29
+
30
+ def _replace(match: re.Match) -> str:
31
+ rel = match.group(1).strip()
32
+ include_path = (_PROMPTS_ROOT / rel).resolve()
33
+ if not include_path.exists() or not include_path.is_file():
34
+ raise FileNotFoundError(f"Prompt include not found: {rel}")
35
+ return _resolve_with_includes(include_path, seen=set(seen), depth=depth + 1)
36
+
37
+ return _INCLUDE_RE.sub(_replace, text)
38
+
39
+
40
+ @lru_cache(maxsize=64)
41
+ def load_prompt(rel_path: str, fallback: str = "") -> str:
42
+ """Load a prompt from src/prompts with include expansion.
43
+
44
+ Args:
45
+ rel_path: Path relative to src/prompts (e.g. "test_case_generator.md").
46
+ fallback: Returned when file cannot be loaded.
47
+ """
48
+ try:
49
+ path = (_PROMPTS_ROOT / rel_path).resolve()
50
+ if not path.exists() or not path.is_file():
51
+ logger.warning("Prompt file missing: %s", rel_path)
52
+ return fallback
53
+ return _resolve_with_includes(path, seen=set())
54
+ except Exception as exc:
55
+ logger.warning("Failed to load prompt '%s': %s", rel_path, exc)
56
+ return fallback
@@ -0,0 +1,17 @@
1
+ # Requirement Understanding Prompt
2
+
3
+ {{include:policies/guardrails.md}}
4
+ {{include:policies/generation_instructions.md}}
5
+
6
+ You are the IGEL Test Case Planning specialist.
7
+ Analyze a Jira/Xray requirement and extract normalized semantic understanding.
8
+
9
+ Output MUST be valid JSON:
10
+ {
11
+ "actors": ["string"],
12
+ "entities": ["string"],
13
+ "business_rules": ["string"],
14
+ "validations": ["string"],
15
+ "constraints": ["string"],
16
+ "dependencies": ["string"]
17
+ }
@@ -0,0 +1,17 @@
1
+ # Scenario Generator Prompt
2
+
3
+ {{include:policies/guardrails.md}}
4
+ {{include:policies/generation_instructions.md}}
5
+
6
+ Generate exhaustive business rules for a single scenario step.
7
+ Include positive, negative, and edge rule candidates.
8
+
9
+ Output MUST be valid JSON:
10
+ {
11
+ "business_rules": [
12
+ {
13
+ "rule_type": "positive" | "negative" | "edge",
14
+ "description": "string"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,13 @@
1
+ # Script Generator Prompt
2
+
3
+ {{include:policies/guardrails.md}}
4
+ {{include:policies/automation_generation_policy.md}}
5
+ {{include:policies/generation_instructions.md}}
6
+ {{include:policies/traceability_policy.md}}
7
+
8
+ You generate enterprise-grade pytest automation scripts from approved test cases and automation plan.
9
+
10
+ Hard constraints:
11
+ - Use ONLY fixtures/page objects/utilities provided in the automation plan.
12
+ - Do not hallucinate imports or helpers.
13
+ - Produce valid Python 3 code.
@@ -0,0 +1,23 @@
1
+ # Test Case Generator Prompt
2
+
3
+ {{include:policies/guardrails.md}}
4
+ {{include:policies/generation_instructions.md}}
5
+ {{include:policies/traceability_policy.md}}
6
+
7
+ Generate a detailed manual test case for the supplied business rule and scenario context.
8
+ Do not invent product behavior outside provided context.
9
+
10
+ Output MUST be valid JSON:
11
+ {
12
+ "title": "string",
13
+ "priority": "critical" | "high" | "medium" | "low",
14
+ "preconditions": ["string"],
15
+ "steps": [
16
+ {
17
+ "step_number": 1,
18
+ "action": "string",
19
+ "data": "string",
20
+ "expected_result": "string"
21
+ }
22
+ ]
23
+ }
@@ -5,15 +5,15 @@ from __future__ import annotations
5
5
  import logging
6
6
  from typing import TYPE_CHECKING
7
7
 
8
- from knowledge_base.config import cfg
9
- from knowledge_base.core.precedence import (
8
+ from src.config import cfg
9
+ from src.core.precedence import (
10
10
  apply_precedence_filter,
11
11
  detect_precedence_conflicts,
12
12
  infer_source_type,
13
13
  )
14
14
 
15
15
  if TYPE_CHECKING:
16
- from knowledge_base.retrieval.retriever import SearchResult
16
+ from src.retrieval.retriever import SearchResult
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
@@ -6,8 +6,8 @@ import logging
6
6
  import re
7
7
  from dataclasses import dataclass
8
8
 
9
- from knowledge_base.db.client import get_conn
10
- from knowledge_base.db.kg_introspect import get_kg_layout
9
+ from src.db.client import get_conn
10
+ from src.db.kg_introspect import get_kg_layout
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
@@ -146,10 +146,10 @@ def retrieve_kg_context(
146
146
  Expand around nodes matching query terms (+ optional anchor parent chunks).
147
147
  Routes to Neo4j when KG_BACKEND=neo4j, else PostgreSQL.
148
148
  """
149
- from knowledge_base.config import cfg
149
+ from src.config import cfg
150
150
 
151
151
  if cfg.KG_BACKEND == "neo4j":
152
- from knowledge_base.graph_db.kg_traversal import retrieve_kg_context_neo4j
152
+ from src.graph_db.kg_traversal import retrieve_kg_context_neo4j
153
153
 
154
154
  return retrieve_kg_context_neo4j(
155
155
  query,
@@ -22,7 +22,7 @@ import os
22
22
  from dataclasses import dataclass, field
23
23
  from time import perf_counter
24
24
 
25
- from knowledge_base.config import cfg
25
+ from src.config import cfg
26
26
 
27
27
  logger = logging.getLogger(__name__)
28
28
 
@@ -93,7 +93,7 @@ def _load_cross_encoder(model_name: str):
93
93
  except ImportError as e:
94
94
  raise ImportError(
95
95
  "sentence-transformers not available. Run: "
96
- "bash knowledge_base/deploy/install_reranker.sh"
96
+ "bash src/deploy/install_reranker.sh"
97
97
  ) from e
98
98
 
99
99
  logger.info(
@@ -18,9 +18,9 @@ from time import perf_counter
18
18
 
19
19
  import psycopg2
20
20
 
21
- from knowledge_base.db.client import get_conn, init_pool
22
- from knowledge_base.embeddings.azure_embedder import embed_single, format_for_pgvector
23
- from knowledge_base.retrieval.knowledge_graph import (
21
+ from src.db.client import get_conn, init_pool
22
+ from src.embeddings.azure_embedder import embed_single, format_for_pgvector
23
+ from src.retrieval.knowledge_graph import (
24
24
  KGContext,
25
25
  classify_query_style,
26
26
  retrieve_kg_context,
@@ -99,7 +99,7 @@ def retrieve(
99
99
  if "vector" in str(e).lower():
100
100
  logger.error(
101
101
  "pgvector extension not available. Run: CREATE EXTENSION IF NOT EXISTS vector; "
102
- "then re-run knowledge_base.ingestion.ingest"
102
+ "then re-run src.ingestion.ingest"
103
103
  )
104
104
  else:
105
105
  logger.error("Vector search failed: %s", e)
@@ -184,7 +184,7 @@ def _embed_query(query: str) -> list[float]:
184
184
  return embed_single(query)
185
185
  except Exception as e:
186
186
  logger.warning("Embedding failed for query, falling back to FTS only: %s", e)
187
- from knowledge_base.config import cfg
187
+ from src.config import cfg
188
188
  return [0.0] * cfg.EMBEDDING_DIM
189
189
 
190
190
 
@@ -346,10 +346,10 @@ def retrieve_v3(
346
346
  """
347
347
  Hybrid retrieval with RRF, optional cross-encoder reranking, KG context, fusion, debug traces.
348
348
  """
349
- from knowledge_base.config import cfg
350
- from knowledge_base.retrieval.context_fusion import fuse_retrieval_context
351
- from knowledge_base.retrieval.reranker import RerankItem, rerank_passages
352
- from knowledge_base.retrieval.retrieval_debug import ChunkScoreTrace, RetrievalDebugReport
349
+ from src.config import cfg
350
+ from src.retrieval.context_fusion import fuse_retrieval_context
351
+ from src.retrieval.reranker import RerankItem, rerank_passages
352
+ from src.retrieval.retrieval_debug import ChunkScoreTrace, RetrievalDebugReport
353
353
 
354
354
  timings: dict[str, float] = {}
355
355
  debug = RetrievalDebugReport(
@@ -420,7 +420,7 @@ def retrieve_v3(
420
420
  t_web = perf_counter()
421
421
  if getattr(cfg, "WEB_RETRIEVAL_ENABLED", False):
422
422
  try:
423
- from knowledge_base.retrieval.web_retriever import retrieve_web_context, format_web_block
423
+ from src.retrieval.web_retriever import retrieve_web_context, format_web_block
424
424
 
425
425
  web_hits = retrieve_web_context(
426
426
  query,
@@ -606,7 +606,7 @@ def retrieve_v3(
606
606
  local_top_score = min(1.0, (0.6 * sorted_scores[0]) + (0.4 * margin))
607
607
  if getattr(cfg, "WEB_RETRIEVAL_ENABLED", False):
608
608
  try:
609
- from knowledge_base.retrieval.web_retriever import retrieve_web_context, format_web_block
609
+ from src.retrieval.web_retriever import retrieve_web_context, format_web_block
610
610
 
611
611
  web_hits = retrieve_web_context(
612
612
  query,
@@ -9,17 +9,17 @@ import random
9
9
  from dataclasses import dataclass, field
10
10
  from time import perf_counter
11
11
 
12
- from knowledge_base.config import cfg
13
- from knowledge_base.connectors.query_bridge import ExternalContext, query_mcp_sources
14
- from knowledge_base.retrieval.retriever import RetrievalBundle, retrieve_v3
12
+ from src.config import cfg
13
+ from src.connectors.query_bridge import ExternalContext, query_mcp_sources
14
+ from src.retrieval.retriever import RetrievalBundle, retrieve_v3
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
18
18
 
19
19
  def _empty_bundle(query: str, *, reason: str) -> RetrievalBundle:
20
20
  """Build a safe empty fallback bundle for timeout/error paths."""
21
- from knowledge_base.retrieval.knowledge_graph import KGContext
22
- from knowledge_base.retrieval.retrieval_debug import RetrievalDebugReport
21
+ from src.retrieval.knowledge_graph import KGContext
22
+ from src.retrieval.retrieval_debug import RetrievalDebugReport
23
23
 
24
24
  return RetrievalBundle(
25
25
  results=[],
@@ -95,8 +95,8 @@ def _maybe_persist_trace(query: str, result: "UnifiedQueryResult") -> None:
95
95
  if rate <= 0 or random.random() > rate:
96
96
  return
97
97
  try:
98
- from knowledge_base.core.request_context import get_request_id
99
- from knowledge_base.db.client import get_conn
98
+ from src.core.request_context import get_request_id
99
+ from src.db.client import get_conn
100
100
  import json
101
101
  with get_conn() as conn:
102
102
  with conn.cursor() as cur:
@@ -9,11 +9,11 @@ from dataclasses import dataclass, field
9
9
  from time import perf_counter
10
10
  from urllib.parse import urlparse
11
11
 
12
- from knowledge_base.config import cfg
13
- from knowledge_base.connectors.search_backends import get_configured_backends
14
- from knowledge_base.connectors.web_fetcher import fetch_url, is_safe_fetch_target
15
- from knowledge_base.parsers.html_parser import parse_html_page
16
- from knowledge_base.retrieval.reranker import rerank_web_pages
12
+ from src.config import cfg
13
+ from src.connectors.search_backends import get_configured_backends
14
+ from src.connectors.web_fetcher import fetch_url, is_safe_fetch_target
15
+ from src.parsers.html_parser import parse_html_page
16
+ from src.retrieval.reranker import rerank_web_pages
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
@@ -136,7 +136,7 @@ async def _fetch_page_content_crawl4ai(url: str, query: str) -> tuple[str, str]:
136
136
 
137
137
 
138
138
  def _fetch_page_content_playwright(url: str) -> tuple[str, str]:
139
- from knowledge_base.connectors.playwright_fetcher import fetch_page_playwright, playwright_available
139
+ from src.connectors.playwright_fetcher import fetch_page_playwright, playwright_available
140
140
 
141
141
  if not playwright_available():
142
142
  raise ImportError("playwright not installed")
@@ -7,7 +7,7 @@ import re
7
7
  from typing import TYPE_CHECKING
8
8
 
9
9
  if TYPE_CHECKING:
10
- from knowledge_base.generation.manual_tc_parser import ParsedStep
10
+ from src.generation.manual_tc_parser import ParsedStep
11
11
 
12
12
 
13
13
  _VAGUE_PHRASES = (
File without changes
@@ -16,7 +16,7 @@ from dataclasses import dataclass, field
16
16
  from openai import AzureOpenAI
17
17
  from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type
18
18
 
19
- from knowledge_base.config import cfg
19
+ from src.config import cfg
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
22