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.
- package/dist/cli/index.js +638 -54
- package/dist/cli/platform.js +115 -72
- package/dist/mcp/server.js +258 -17
- package/package.json +4 -4
- package/src/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/agents/__init__.py +3 -0
- package/src/agents/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/automation_design_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/automation_design_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/automation_design_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/code_intelligence_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/code_intelligence_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/confidence_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/confidence_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/confidence_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/execution_validation_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/execution_validation_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/execution_validation_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/framework_analyzer_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/framework_analyzer_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/fusion_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/graph.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/intent_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/intent_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/kg_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/memory_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/reflection_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/regression_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/regression_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/requirement_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/requirement_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/requirement_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/retrieval_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/scenario_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/scenario_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/scenario_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/script_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/script_generator_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/script_generator_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/script_generator_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/state.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/temporal_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/testcase_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/testcase_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/testcase_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/validation_agent.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/validation_agent.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/validation_agent.cpython-314.pyc +0 -0
- package/src/agents/__pycache__/workflow_engine.cpython-311.pyc +0 -0
- package/src/agents/__pycache__/workflow_engine.cpython-313.pyc +0 -0
- package/src/agents/__pycache__/workflow_engine.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/agents/automation_design_agent.py +14 -17
- package/{knowledge_base → src}/agents/code_intelligence_agent.py +2 -2
- package/src/agents/confidence_agent.py +114 -0
- package/{knowledge_base → src}/agents/execution_validation_agent.py +1 -1
- package/src/agents/feedback_agent.py +89 -0
- package/src/agents/framework_analyzer_agent.py +43 -0
- package/{knowledge_base → src}/agents/fusion_agent.py +3 -3
- package/{knowledge_base → src}/agents/graph.py +10 -10
- package/{knowledge_base → src}/agents/healing_agent.py +4 -4
- package/src/agents/intent_agent.py +30 -0
- package/src/agents/internal/__init__.py +3 -0
- package/src/agents/internal/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/agents/internal/__pycache__/approval_manager.cpython-313.pyc +0 -0
- package/src/agents/internal/__pycache__/question_engine.cpython-313.pyc +0 -0
- package/src/agents/internal/approval_manager.py +111 -0
- package/src/agents/internal/question_engine.py +111 -0
- package/src/agents/internal/workflow_engine.py +28 -0
- package/{knowledge_base → src}/agents/kg_agent.py +3 -3
- package/{knowledge_base → src}/agents/memory_agent.py +4 -4
- package/src/agents/orchestrator/__init__.py +3 -0
- package/src/agents/orchestrator/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/agents/orchestrator/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/src/agents/orchestrator/orchestrator.py +63 -0
- package/{knowledge_base → src}/agents/rca_agent.py +4 -4
- package/{knowledge_base → src}/agents/reflection_agent.py +1 -1
- package/{knowledge_base → src}/agents/regression_agent.py +2 -2
- package/src/agents/requirement_agent.py +97 -0
- package/{knowledge_base → src}/agents/retrieval_agent.py +2 -2
- package/{knowledge_base → src}/agents/scenario_agent.py +11 -17
- package/{knowledge_base → src}/agents/script_agent.py +6 -6
- package/{knowledge_base → src}/agents/script_generator_agent.py +12 -10
- package/{knowledge_base → src}/agents/temporal_agent.py +3 -3
- package/src/agents/testcase_agent.py +163 -0
- package/{knowledge_base → src}/agents/validation_agent.py +1 -1
- package/src/agents/workflow_engine.py +109 -0
- package/{knowledge_base → src}/alembic/README.md +4 -4
- package/{knowledge_base → src}/alembic/env.py +1 -1
- package/{knowledge_base → src}/alembic/script.py.mako +1 -1
- package/{knowledge_base → src}/api/middleware.py +3 -3
- package/{knowledge_base → src}/api/server.py +28 -28
- package/{knowledge_base → src}/chunking/chunker.py +3 -3
- package/src/cli/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/cli/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/cli/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/cli/__pycache__/workflow_cli.cpython-311.pyc +0 -0
- package/src/cli/__pycache__/workflow_cli.cpython-313.pyc +0 -0
- package/src/cli/__pycache__/workflow_cli.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/cli/feedback_cli.py +10 -10
- package/{knowledge_base → src}/cli/generate.py +11 -11
- package/src/cli/index.ts +704 -0
- package/src/cli/platform.ts +147 -0
- package/src/cli/workflow_cli.py +930 -0
- package/{knowledge_base → src}/config/__init__.py +1 -1
- package/src/config/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/config/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/config/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/config/__pycache__/policy_config.cpython-311.pyc +0 -0
- package/src/config/__pycache__/policy_config.cpython-313.pyc +0 -0
- package/src/config/__pycache__/settings.cpython-311.pyc +0 -0
- package/src/config/__pycache__/settings.cpython-313.pyc +0 -0
- package/src/config/__pycache__/settings.cpython-314.pyc +0 -0
- package/src/config/policy_config.py +85 -0
- package/src/config/policy_rules.yaml +50 -0
- package/{knowledge_base → src}/config/settings.py +51 -6
- package/{knowledge_base → src}/connectors/__init__.py +1 -1
- package/src/connectors/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/connectors/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/connectors/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/connectors/__pycache__/base.cpython-311.pyc +0 -0
- package/src/connectors/__pycache__/base.cpython-313.pyc +0 -0
- package/src/connectors/__pycache__/base.cpython-314.pyc +0 -0
- package/src/connectors/__pycache__/jira_connector.cpython-311.pyc +0 -0
- package/src/connectors/__pycache__/jira_connector.cpython-313.pyc +0 -0
- package/src/connectors/__pycache__/jira_connector.cpython-314.pyc +0 -0
- package/src/connectors/__pycache__/query_bridge.cpython-313.pyc +0 -0
- package/src/connectors/__pycache__/query_bridge.cpython-314.pyc +0 -0
- package/src/connectors/bitbucket_connector.py +334 -0
- package/{knowledge_base → src}/connectors/community_connector.py +6 -6
- package/{knowledge_base → src}/connectors/confluence_connector.py +4 -4
- package/{knowledge_base → src}/connectors/jira_connector.py +7 -11
- package/{knowledge_base → src}/connectors/kb_igel_connector.py +6 -6
- package/{knowledge_base → src}/connectors/query_bridge.py +11 -11
- package/{knowledge_base → src}/connectors/search_backends.py +1 -1
- package/{knowledge_base → src}/connectors/serviceNow_connector.py +2 -2
- package/{knowledge_base → src}/connectors/sync_scheduler.py +12 -10
- package/{knowledge_base → src}/connectors/teamcity_connector.py +2 -2
- package/{knowledge_base → src}/connectors/testRail_connector.py +2 -2
- package/{knowledge_base → src}/connectors/web_fetcher.py +1 -1
- package/src/connectors/xray_connector.py +337 -0
- package/{knowledge_base → src}/core/__init__.py +1 -1
- package/src/core/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/core/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/core/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/core/__pycache__/circuit_breaker.cpython-313.pyc +0 -0
- package/src/core/__pycache__/circuit_breaker.cpython-314.pyc +0 -0
- package/src/core/__pycache__/confidence.cpython-311.pyc +0 -0
- package/src/core/__pycache__/confidence.cpython-313.pyc +0 -0
- package/src/core/__pycache__/confidence.cpython-314.pyc +0 -0
- package/src/core/__pycache__/context_engine.cpython-311.pyc +0 -0
- package/src/core/__pycache__/context_engine.cpython-313.pyc +0 -0
- package/src/core/__pycache__/evidence_resolver.cpython-311.pyc +0 -0
- package/src/core/__pycache__/evidence_resolver.cpython-313.pyc +0 -0
- package/src/core/__pycache__/guardrails.cpython-311.pyc +0 -0
- package/src/core/__pycache__/guardrails.cpython-313.pyc +0 -0
- package/src/core/__pycache__/hooks.cpython-311.pyc +0 -0
- package/src/core/__pycache__/hooks.cpython-313.pyc +0 -0
- package/src/core/__pycache__/intent_service.cpython-313.pyc +0 -0
- package/src/core/__pycache__/llm_executor.cpython-311.pyc +0 -0
- package/src/core/__pycache__/llm_executor.cpython-313.pyc +0 -0
- package/src/core/__pycache__/model_router.cpython-311.pyc +0 -0
- package/src/core/__pycache__/model_router.cpython-313.pyc +0 -0
- package/src/core/__pycache__/orchestration_contracts.cpython-311.pyc +0 -0
- package/src/core/__pycache__/orchestration_contracts.cpython-313.pyc +0 -0
- package/src/core/__pycache__/precedence.cpython-311.pyc +0 -0
- package/src/core/__pycache__/precedence.cpython-313.pyc +0 -0
- package/src/core/__pycache__/prompt_builder.cpython-311.pyc +0 -0
- package/src/core/__pycache__/prompt_builder.cpython-313.pyc +0 -0
- package/src/core/__pycache__/prompt_policy_engine.cpython-311.pyc +0 -0
- package/src/core/__pycache__/prompt_policy_engine.cpython-313.pyc +0 -0
- package/{knowledge_base → src}/core/cache.py +2 -2
- package/{knowledge_base → src}/core/confidence.py +2 -2
- package/src/core/context_engine.py +138 -0
- package/src/core/evidence_resolver.py +72 -0
- package/src/core/guardrails.py +22 -0
- package/src/core/hooks.py +57 -0
- package/src/core/intent_service.py +74 -0
- package/src/core/llm_executor.py +138 -0
- package/{knowledge_base → src}/core/logging_setup.py +1 -1
- package/src/core/model_router.py +246 -0
- package/src/core/orchestration_contracts.py +66 -0
- package/src/core/persistence_engine.py +159 -0
- package/src/core/prompt_builder.py +49 -0
- package/src/core/prompt_policy_engine.py +35 -0
- package/src/core/traceability_engine.py +56 -0
- package/src/db/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/db/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/db/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/db/__pycache__/client.cpython-311.pyc +0 -0
- package/src/db/__pycache__/client.cpython-313.pyc +0 -0
- package/src/db/__pycache__/client.cpython-314.pyc +0 -0
- package/src/db/__pycache__/igel_schema.cpython-311.pyc +0 -0
- package/src/db/__pycache__/igel_schema.cpython-313.pyc +0 -0
- package/src/db/__pycache__/igel_schema.cpython-314.pyc +0 -0
- package/src/db/__pycache__/kg_introspect.cpython-311.pyc +0 -0
- package/src/db/__pycache__/kg_introspect.cpython-313.pyc +0 -0
- package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/db/client.py +1 -1
- package/{knowledge_base → src}/db/connector_sync.py +1 -1
- package/{knowledge_base → src}/db/feedback_schema.py +2 -2
- package/{knowledge_base → src}/db/igel_schema.py +29 -4
- package/{knowledge_base → src}/db/kg_introspect.py +1 -1
- package/src/db/migrations.py +237 -0
- package/{knowledge_base → src}/db/schema.py +6 -6
- package/{knowledge_base → src}/deploy/Dockerfile +3 -3
- package/{knowledge_base → src}/deploy/feedback_automation.sh +3 -3
- package/{knowledge_base → src}/deploy/firecrawl-docker.sh +4 -4
- package/{knowledge_base → src}/deploy/igel-testgen.service +2 -2
- package/{knowledge_base → src}/deploy/install_reranker.sh +1 -1
- package/{knowledge_base → src}/deploy/requirements.txt +1 -2
- package/{knowledge_base → src}/deploy/run_server.sh +1 -1
- package/{knowledge_base → src}/docs/TEST_GENERATION_GUIDE.md +15 -15
- package/src/embeddings/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/embeddings/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/embeddings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/embeddings/__pycache__/azure_embedder.cpython-311.pyc +0 -0
- package/src/embeddings/__pycache__/azure_embedder.cpython-313.pyc +0 -0
- package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/embeddings/azure_embedder.py +10 -1
- package/{knowledge_base → src}/eval/__init__.py +3 -3
- package/{knowledge_base → src}/eval/__main__.py +7 -7
- package/src/eval/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/eval/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/eval/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/eval/__pycache__/baseline.cpython-311.pyc +0 -0
- package/src/eval/__pycache__/baseline.cpython-313.pyc +0 -0
- package/src/eval/__pycache__/baseline.cpython-314.pyc +0 -0
- package/src/eval/__pycache__/harness.cpython-311.pyc +0 -0
- package/src/eval/__pycache__/harness.cpython-313.pyc +0 -0
- package/src/eval/__pycache__/harness.cpython-314.pyc +0 -0
- package/src/eval/__pycache__/scorers.cpython-311.pyc +0 -0
- package/src/eval/__pycache__/scorers.cpython-313.pyc +0 -0
- package/src/eval/__pycache__/scorers.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/eval/harness.py +6 -6
- package/{knowledge_base → src}/feedback/__init__.py +1 -1
- package/{knowledge_base → src}/feedback/analytics.py +1 -1
- package/{knowledge_base → src}/feedback/applier.py +4 -4
- package/{knowledge_base → src}/feedback/curator.py +2 -2
- package/{knowledge_base → src}/feedback/handler.py +1 -1
- package/src/generation/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/generation/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/generation/__pycache__/input_classifier.cpython-313.pyc +0 -0
- package/src/generation/__pycache__/manual_tc_parser.cpython-313.pyc +0 -0
- package/src/generation/__pycache__/prompts.cpython-313.pyc +0 -0
- package/src/generation/__pycache__/prompts.cpython-314.pyc +0 -0
- package/src/generation/__pycache__/test_generator.cpython-313.pyc +0 -0
- package/src/generation/__pycache__/test_generator.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/generation/input_classifier.py +1 -1
- package/{knowledge_base → src}/generation/prompts.py +1 -1
- package/{knowledge_base → src}/generation/tc_transformer.py +10 -10
- package/{knowledge_base → src}/generation/test_generator.py +56 -10
- package/{knowledge_base → src}/graph_db/__init__.py +1 -1
- package/{knowledge_base → src}/graph_db/graphiti_client.py +2 -2
- package/{knowledge_base → src}/graph_db/kg_traversal.py +3 -3
- package/{knowledge_base → src}/graph_db/migrate_kg.py +4 -4
- package/{knowledge_base → src}/graph_db/neo4j_client.py +1 -1
- package/{knowledge_base → src}/graph_db/temporal_ingest.py +1 -1
- package/{knowledge_base → src}/ingestion/kg_extractor.py +6 -6
- package/{knowledge_base → src}/ingestion/web_ingest.py +6 -6
- package/src/intelligence/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/intelligence/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/intelligence/__pycache__/diff_analyzer.cpython-311.pyc +0 -0
- package/src/intelligence/__pycache__/diff_analyzer.cpython-313.pyc +0 -0
- package/src/intelligence/__pycache__/routing_engine.cpython-311.pyc +0 -0
- package/src/intelligence/__pycache__/routing_engine.cpython-313.pyc +0 -0
- package/src/intelligence/diff_analyzer.py +109 -0
- package/{knowledge_base → src}/intelligence/execution_ingest.py +3 -3
- package/src/intelligence/routing_engine.py +74 -0
- package/src/mcp/server.ts +384 -0
- package/src/memory/__init__.py +6 -0
- package/src/memory/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/memory/__pycache__/cognee_client.cpython-314.pyc +0 -0
- package/src/memory/__pycache__/memory_types.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/memory/cognee_client.py +3 -3
- package/src/models/__pycache__/test_requirement.cpython-311.pyc +0 -0
- package/src/models/__pycache__/test_requirement.cpython-313.pyc +0 -0
- package/src/models/__pycache__/test_requirement.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/models/test_requirement.py +12 -7
- package/{knowledge_base → src}/parsers/csv_parser.py +1 -1
- package/{knowledge_base → src}/parsers/doc_parser.py +1 -1
- package/{knowledge_base → src}/parsers/html_parser.py +1 -1
- package/{knowledge_base → src}/parsers/pdf_parser.py +1 -1
- package/src/project/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/project/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/project/__pycache__/ai_folder.cpython-311.pyc +0 -0
- package/src/project/__pycache__/ai_folder.cpython-313.pyc +0 -0
- package/src/project/__pycache__/context_enricher.cpython-313.pyc +0 -0
- package/src/project/__pycache__/context_projection_builder.cpython-311.pyc +0 -0
- package/src/project/__pycache__/context_projection_builder.cpython-313.pyc +0 -0
- package/src/project/__pycache__/context_requirement_sync.cpython-311.pyc +0 -0
- package/src/project/__pycache__/context_requirement_sync.cpython-313.pyc +0 -0
- package/src/project/ai_folder.py +602 -0
- package/src/project/context_enricher.py +333 -0
- package/src/project/context_projection_builder.py +167 -0
- package/src/project/context_requirement_sync.py +205 -0
- package/src/project/init_check.py +214 -0
- package/src/prompts/__pycache__/prompt_loader.cpython-313.pyc +0 -0
- package/src/prompts/automation_design.md +12 -0
- package/src/prompts/policies/automation_generation_policy.md +11 -0
- package/src/prompts/policies/generation_instructions.md +24 -0
- package/src/prompts/policies/guardrails.md +6 -0
- package/src/prompts/policies/traceability_policy.md +9 -0
- package/src/prompts/prompt_loader.py +56 -0
- package/src/prompts/requirement_understanding.md +17 -0
- package/src/prompts/scenario_generator.md +17 -0
- package/src/prompts/script_generator.md +13 -0
- package/src/prompts/test_case_generator.md +23 -0
- package/src/retrieval/__pycache__/__init__.cpython-311.pyc +0 -0
- package/src/retrieval/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/retrieval/__pycache__/__init__.cpython-314.pyc +0 -0
- package/src/retrieval/__pycache__/knowledge_graph.cpython-311.pyc +0 -0
- package/src/retrieval/__pycache__/knowledge_graph.cpython-313.pyc +0 -0
- package/src/retrieval/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
- package/src/retrieval/__pycache__/retriever.cpython-311.pyc +0 -0
- package/src/retrieval/__pycache__/retriever.cpython-313.pyc +0 -0
- package/src/retrieval/__pycache__/retriever.cpython-314.pyc +0 -0
- package/src/retrieval/__pycache__/unified_query.cpython-313.pyc +0 -0
- package/src/retrieval/__pycache__/unified_query.cpython-314.pyc +0 -0
- package/{knowledge_base → src}/retrieval/context_fusion.py +3 -3
- package/{knowledge_base → src}/retrieval/knowledge_graph.py +4 -4
- package/{knowledge_base → src}/retrieval/reranker.py +2 -2
- package/{knowledge_base → src}/retrieval/retriever.py +11 -11
- package/{knowledge_base → src}/retrieval/unified_query.py +7 -7
- package/{knowledge_base → src}/retrieval/web_retriever.py +6 -6
- package/{knowledge_base → src}/validators/step_fidelity.py +1 -1
- package/src/vision/__init__.py +0 -0
- package/{knowledge_base → src}/vision/image_describer.py +1 -1
- package/knowledge_base/__pycache__/__init__.cpython-314.pyc +0 -0
- package/knowledge_base/agents/__init__.py +0 -6
- package/knowledge_base/agents/confidence_agent.py +0 -94
- package/knowledge_base/agents/feedback_agent.py +0 -56
- package/knowledge_base/agents/intent_agent.py +0 -76
- package/knowledge_base/agents/requirement_agent.py +0 -71
- package/knowledge_base/agents/testcase_agent.py +0 -111
- package/knowledge_base/agents/workflow_engine.py +0 -87
- package/knowledge_base/cli/generate_qcapps134.py +0 -391
- package/knowledge_base/cli/workflow_cli.py +0 -93
- package/knowledge_base/config/.env +0 -100
- package/knowledge_base/config/.env.example +0 -75
- package/knowledge_base/connectors/bitbucket_connector.py +0 -25
- package/knowledge_base/db/__pycache__/__init__.cpython-314.pyc +0 -0
- package/knowledge_base/db/__pycache__/client.cpython-314.pyc +0 -0
- package/knowledge_base/db/migrations.py +0 -22
- package/knowledge_base/embeddings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/knowledge_base/ingestion/ingest.py +0 -346
- package/knowledge_base/ingestion/ingest_images.py +0 -330
- package/knowledge_base/memory/__init__.py +0 -6
- package/knowledge_base/memory/ingest_memory.py +0 -60
- /package/{knowledge_base → src}/__init__.py +0 -0
- /package/{knowledge_base → src}/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/confidence.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/config.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/config.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/config.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/context_fusion.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/feedback_analytics.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/feedback_applier.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/feedback_cli.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/feedback_curator.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/feedback_handler.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/generate.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/input_classifier.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/kg_extractor.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/precedence.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/prompts.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/prompts.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/reranker.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/reranker.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/retriever.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/retriever.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/server.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/tc_transformer.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/test_generator.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/__pycache__/test_generator.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/fusion_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/graph.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/healing_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/intent_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/kg_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/memory_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/rca_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/reflection_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/regression_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/retrieval_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/script_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/state.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/state.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/temporal_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/agents/__pycache__/validation_agent.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/agents/state.py +0 -0
- /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/alembic/__pycache__/env.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/alembic/versions/.gitkeep +0 -0
- /package/{knowledge_base → src}/alembic/versions/001_phase0_feedback.py +0 -0
- /package/{knowledge_base → src}/alembic/versions/002_feedback_promotions.py +0 -0
- /package/{knowledge_base → src}/alembic/versions/003_enterprise_hardening.py +0 -0
- /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/alembic/versions/__pycache__/001_phase0_feedback.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/alembic/versions/__pycache__/002_feedback_promotions.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/api/__init__.py +0 -0
- /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/api/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/api/__pycache__/middleware.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/api/__pycache__/server.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/api/__pycache__/server.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__init__.py +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/chunker.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/chunking/__pycache__/validators.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/chunking/validators.py +0 -0
- /package/{knowledge_base → src}/cli/__init__.py +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/feedback_cli.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/generate.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/cli/__pycache__/generate_qcapps134.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/config/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/config/__pycache__/settings.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/config/__pycache__/settings.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/base.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/bitbucket_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/community_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/confluence_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/jira_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/kb_igel_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/playwright_fetcher.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/query_bridge.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/search_backends.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/serviceNow_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/sync_scheduler.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/teamcity_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/testRail_connector.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/__pycache__/web_fetcher.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/connectors/base.py +0 -0
- /package/{knowledge_base → src}/connectors/playwright_fetcher.py +0 -0
- /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/cache.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/circuit_breaker.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/confidence.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/logging_setup.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/metrics.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/precedence.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/__pycache__/request_context.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/core/circuit_breaker.py +0 -0
- /package/{knowledge_base → src}/core/metrics.py +0 -0
- /package/{knowledge_base → src}/core/precedence.py +0 -0
- /package/{knowledge_base → src}/core/request_context.py +0 -0
- /package/{knowledge_base → src}/db/__init__.py +0 -0
- /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/client.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/client.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/connector_sync.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/feedback_schema.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/kg_introspect.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/schema.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/db/__pycache__/schema.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/embeddings/__init__.py +0 -0
- /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/embeddings/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/embeddings/__pycache__/azure_embedder.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/__main__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/baseline.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/harness.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/eval/__pycache__/scorers.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/eval/baseline.py +0 -0
- /package/{knowledge_base → src}/eval/queries_50.json +0 -0
- /package/{knowledge_base → src}/eval/scorers.py +0 -0
- /package/{knowledge_base → src}/exemplars/README.md +0 -0
- /package/{knowledge_base → src}/exemplars/__pycache__/pytest_reference_snippet.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/exemplars/gold_manual_concise_snippet.md +0 -0
- /package/{knowledge_base → src}/exemplars/gold_manual_detailed_snippet.md +0 -0
- /package/{knowledge_base → src}/exemplars/pytest_reference_snippet.py +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/analytics.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/applier.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/curator.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/feedback/__pycache__/handler.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/__init__.py +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/input_classifier.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/manual_tc_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/prompts.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/tc_transformer.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/generation/__pycache__/test_generator.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/generation/manual_tc_parser.py +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/graphiti_client.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/kg_traversal.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/migrate_kg.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/neo4j_client.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/schema.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/__pycache__/temporal_ingest.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/graph_db/schema.py +0 -0
- /package/{knowledge_base → src}/ingestion/__init__.py +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/ingest.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/ingest_images.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/kg_extractor.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/ingestion/__pycache__/web_ingest.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/intelligence/__init__.py +0 -0
- /package/{knowledge_base → src}/intelligence/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/intelligence/__pycache__/execution_ingest.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/intelligence/__pycache__/predictive_engine.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/intelligence/__pycache__/risk_scorer.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/intelligence/predictive_engine.py +0 -0
- /package/{knowledge_base → src}/intelligence/risk_scorer.py +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/cognee_client.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/ingest_memory.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/memory/__pycache__/memory_types.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/memory/memory_types.py +0 -0
- /package/{knowledge_base → src}/parsers/__init__.py +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/csv_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/doc_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/html_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/image_extractor.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/markdown_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/parsers/__pycache__/pdf_parser.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/parsers/image_extractor.py +0 -0
- /package/{knowledge_base → src}/parsers/markdown_parser.py +0 -0
- /package/{knowledge_base/vision → src/project}/__init__.py +0 -0
- /package/{knowledge_base → src}/retrieval/__init__.py +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/context_fusion.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/knowledge_graph.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/reranker.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/retrieval_debug.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/retriever.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/retriever.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/unified_query.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/__pycache__/web_retriever.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/retrieval/retrieval_debug.py +0 -0
- /package/{knowledge_base → src}/validators/__init__.py +0 -0
- /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/validators/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-314.pyc +0 -0
- /package/{knowledge_base → src}/validators/__pycache__/step_fidelity.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-37.pyc +0 -0
- /package/{knowledge_base → src}/vision/__pycache__/__init__.cpython-38.pyc +0 -0
- /package/{knowledge_base → src}/vision/__pycache__/image_describer.cpython-37.pyc +0 -0
- /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
|
|
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
|
-
|
|
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
|
|
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 `
|
|
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
|
|
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
|
|
|
@@ -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
|
|
12
|
-
from
|
|
13
|
-
from
|
|
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
|
|
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
|
|
34
|
-
from
|
|
35
|
-
from
|
|
36
|
-
from
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
from
|
|
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
|
|
48
|
-
from
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
20
|
-
from
|
|
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
|
|
29
|
+
from src.config import cfg
|
|
30
30
|
|
|
31
31
|
_ENCODER = tiktoken.get_encoding("cl100k_base")
|
|
32
32
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"""CLI for feedback curation — Phase 2.
|
|
2
2
|
|
|
3
3
|
Usage:
|
|
4
|
-
python -m
|
|
5
|
-
python -m
|
|
6
|
-
python -m
|
|
7
|
-
python -m
|
|
8
|
-
python -m
|
|
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
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
20
|
-
from
|
|
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
|
|
6
|
-
python -m
|
|
7
|
-
python -m
|
|
8
|
-
python -m
|
|
9
|
-
python -m
|
|
10
|
-
python -m
|
|
11
|
-
python -m
|
|
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
|
-
`
|
|
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
|
|
27
|
-
from
|
|
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
|
|
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 ─────────────────────────────────────────────────────────
|