agent-os-kernel 1.1.0__py3-none-any.whl → 1.3.0__py3-none-any.whl
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.
- agent_os/__init__.py +66 -4
- agent_os/agents_compat.py +286 -0
- agent_os/base_agent.py +308 -0
- agent_os/cli.py +1079 -19
- agent_os/integrations/__init__.py +37 -2
- agent_os/integrations/openai_adapter.py +502 -0
- agent_os/integrations/semantic_kernel_adapter.py +569 -0
- agent_os/stateless.py +349 -0
- agent_os_kernel-1.3.0.dist-info/METADATA +676 -0
- agent_os_kernel-1.3.0.dist-info/RECORD +1053 -0
- {agent_os_kernel-1.1.0.dist-info → agent_os_kernel-1.3.0.dist-info}/entry_points.txt +0 -1
- modules/amb/.github/workflows/ci.yml +102 -0
- modules/amb/.github/workflows/publish.yml +146 -0
- modules/amb/.gitignore +134 -0
- modules/amb/CHANGELOG.md +118 -0
- modules/amb/CONTRIBUTING.md +141 -0
- modules/amb/LICENSE +21 -0
- modules/amb/README.md +188 -0
- modules/amb/amb_core/__init__.py +175 -0
- modules/amb/amb_core/adapters/__init__.py +55 -0
- modules/amb/amb_core/adapters/aws_sqs_broker.py +374 -0
- modules/amb/amb_core/adapters/azure_servicebus_broker.py +338 -0
- modules/amb/amb_core/adapters/kafka_broker.py +258 -0
- modules/amb/amb_core/adapters/nats_broker.py +283 -0
- modules/amb/amb_core/adapters/rabbitmq_broker.py +233 -0
- modules/amb/amb_core/adapters/redis_broker.py +260 -0
- modules/amb/amb_core/broker.py +143 -0
- modules/amb/amb_core/bus.py +479 -0
- modules/amb/amb_core/cloudevents.py +507 -0
- modules/amb/amb_core/dlq.py +343 -0
- modules/amb/amb_core/hf_utils.py +534 -0
- modules/amb/amb_core/memory_broker.py +408 -0
- modules/amb/amb_core/models.py +139 -0
- modules/amb/amb_core/persistence.py +527 -0
- modules/amb/amb_core/schema.py +292 -0
- modules/amb/amb_core/tracing.py +356 -0
- modules/amb/examples/advanced_features.py +223 -0
- modules/amb/examples/backpressure_demo.py +225 -0
- modules/amb/examples/basic_usage.py +117 -0
- modules/amb/examples/tracing_demo.py +104 -0
- modules/amb/experiments/README.md +52 -0
- modules/amb/experiments/reproduce_results.py +467 -0
- modules/amb/experiments/results.json +324 -0
- modules/amb/paper/README.md +40 -0
- modules/amb/paper/paper.tex +365 -0
- modules/amb/paper/whitepaper.md +377 -0
- modules/amb/pyproject.toml +117 -0
- modules/amb/tests/__init__.py +1 -0
- modules/amb/tests/test_backpressure_priority.py +280 -0
- modules/amb/tests/test_bus.py +198 -0
- modules/amb/tests/test_cloudevents.py +443 -0
- modules/amb/tests/test_features.py +531 -0
- modules/amb/tests/test_models.py +74 -0
- modules/amb/tests/test_tracing.py +254 -0
- modules/atr/.github/workflows/ci.yml +101 -0
- modules/atr/.github/workflows/publish.yml +140 -0
- modules/atr/.gitignore +134 -0
- modules/atr/.pre-commit-config.yaml +37 -0
- modules/atr/CHANGELOG.md +39 -0
- modules/atr/CONTRIBUTING.md +96 -0
- modules/atr/IMPLEMENTATION_SUMMARY.md +143 -0
- modules/atr/README.md +180 -0
- modules/atr/atr/__init__.py +638 -0
- modules/atr/atr/access.py +346 -0
- modules/atr/atr/composition.py +643 -0
- modules/atr/atr/decorator.py +355 -0
- modules/atr/atr/executor.py +382 -0
- modules/atr/atr/health.py +555 -0
- modules/atr/atr/hf_utils.py +447 -0
- modules/atr/atr/injection.py +420 -0
- modules/atr/atr/metrics.py +438 -0
- modules/atr/atr/policies.py +401 -0
- modules/atr/atr/py.typed +2 -0
- modules/atr/atr/registry.py +450 -0
- modules/atr/atr/schema.py +478 -0
- modules/atr/atr/tools/safe/__init__.py +73 -0
- modules/atr/atr/tools/safe/calculator.py +380 -0
- modules/atr/atr/tools/safe/datetime_tool.py +441 -0
- modules/atr/atr/tools/safe/file_reader.py +400 -0
- modules/atr/atr/tools/safe/http_client.py +314 -0
- modules/atr/atr/tools/safe/json_parser.py +372 -0
- modules/atr/atr/tools/safe/text_tool.py +526 -0
- modules/atr/atr/tools/safe/toolkit.py +173 -0
- modules/atr/docs/PYPI_SETUP.md +113 -0
- modules/atr/examples/README.md +27 -0
- modules/atr/examples/demo.py +144 -0
- modules/atr/examples/sandbox_demo.py +218 -0
- modules/atr/experiments/README.md +69 -0
- modules/atr/experiments/reproduce_results.py +509 -0
- modules/atr/experiments/results/.gitkeep +0 -0
- modules/atr/experiments/results/results_20260123_140334.json +71 -0
- modules/atr/paper/README.md +36 -0
- modules/atr/paper/figures/.gitkeep +0 -0
- modules/atr/paper/references.bib +84 -0
- modules/atr/paper/structure.tex +293 -0
- modules/atr/paper/whitepaper.md +234 -0
- modules/atr/pyproject.toml +148 -0
- modules/atr/requirements.txt +1 -0
- modules/atr/setup.py +30 -0
- modules/atr/tests/__init__.py +1 -0
- modules/atr/tests/test_decorator.py +317 -0
- modules/atr/tests/test_executor.py +245 -0
- modules/atr/tests/test_integration_executor.py +184 -0
- modules/atr/tests/test_registry.py +312 -0
- modules/atr/tests/test_schema.py +182 -0
- modules/atr/tests/test_v2_features.py +708 -0
- modules/caas/.dockerignore +63 -0
- modules/caas/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- modules/caas/.github/ISSUE_TEMPLATE/custom.md +10 -0
- modules/caas/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- modules/caas/.github/workflows/ci.yml +100 -0
- modules/caas/.github/workflows/lint.yml +39 -0
- modules/caas/.github/workflows/publish-pypi.yml +124 -0
- modules/caas/.gitignore +73 -0
- modules/caas/.pre-commit-config.yaml +33 -0
- modules/caas/CHANGELOG.md +58 -0
- modules/caas/CONTRIBUTING.md +346 -0
- modules/caas/Dockerfile +41 -0
- modules/caas/LICENSE +21 -0
- modules/caas/MANIFEST.in +11 -0
- modules/caas/README.md +158 -0
- modules/caas/benchmarks/README.md +255 -0
- modules/caas/benchmarks/create_hf_dataset.py +502 -0
- modules/caas/benchmarks/data/sample_corpus/README.md +86 -0
- modules/caas/benchmarks/data/sample_corpus/auth_module.py +211 -0
- modules/caas/benchmarks/data/sample_corpus/contribution_guide.md +185 -0
- modules/caas/benchmarks/data/sample_corpus/remote_work_policy.html +57 -0
- modules/caas/benchmarks/hf_dataset/README.md +214 -0
- modules/caas/benchmarks/hf_dataset/caas_benchmark_corpus.py +73 -0
- modules/caas/benchmarks/hf_dataset/corpus_preview.json +193 -0
- modules/caas/benchmarks/results/README.md +66 -0
- modules/caas/benchmarks/results/evaluation_2026-01-20.json +121 -0
- modules/caas/benchmarks/run_evaluation.py +561 -0
- modules/caas/benchmarks/statistical_tests.py +289 -0
- modules/caas/benchmarks/verify_sample_corpus.py +83 -0
- modules/caas/docker-compose.yml +38 -0
- modules/caas/docs/CONTEXT_TRIAD.md +462 -0
- modules/caas/docs/CONTRIBUTING.md +346 -0
- modules/caas/docs/ETHICS_AND_LIMITATIONS.md +336 -0
- modules/caas/docs/HEURISTIC_ROUTER.md +442 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY.md +363 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY_CONTEXT_TRIAD.md +277 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY_HEURISTIC_ROUTER.md +231 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY_METADATA_INJECTION.md +258 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY_PRAGMATIC_TRUTH.md +212 -0
- modules/caas/docs/IMPLEMENTATION_SUMMARY_TRUST_GATEWAY.md +319 -0
- modules/caas/docs/LAYER_1_PRIMITIVE.md +202 -0
- modules/caas/docs/METADATA_INJECTION.md +404 -0
- modules/caas/docs/PRAGMATIC_TRUTH.md +431 -0
- modules/caas/docs/RELATED_WORK.md +312 -0
- modules/caas/docs/RELEASE_CHECKLIST.md +219 -0
- modules/caas/docs/RELEASE_GUIDE.md +285 -0
- modules/caas/docs/REPRODUCIBILITY.md +386 -0
- modules/caas/docs/SLIDING_WINDOW.md +387 -0
- modules/caas/docs/STRUCTURE_AWARE_INDEXING.md +158 -0
- modules/caas/docs/TESTING.md +259 -0
- modules/caas/docs/THREAT_MODEL.md +247 -0
- modules/caas/docs/TRUST_GATEWAY.md +575 -0
- modules/caas/docs/VFS.md +298 -0
- modules/caas/examples/agents/enterprise_security_agent.py +414 -0
- modules/caas/examples/agents/intelligent_document_analyzer.py +380 -0
- modules/caas/examples/demos/demo.py +309 -0
- modules/caas/examples/demos/demo_context_triad.py +225 -0
- modules/caas/examples/demos/demo_conversation_manager.py +285 -0
- modules/caas/examples/demos/demo_heuristic_router.py +133 -0
- modules/caas/examples/demos/demo_metadata_injection.py +198 -0
- modules/caas/examples/demos/demo_pragmatic_truth.py +303 -0
- modules/caas/examples/demos/demo_structure_aware.py +140 -0
- modules/caas/examples/demos/demo_time_decay.py +247 -0
- modules/caas/examples/demos/demo_trust_gateway.py +383 -0
- modules/caas/examples/multi_agent/README.md +159 -0
- modules/caas/examples/multi_agent/research_team.py +369 -0
- modules/caas/examples/multi_agent/vfs_collaboration.py +393 -0
- modules/caas/examples/usage/auth_module.py +142 -0
- modules/caas/examples/usage/usage_example.py +173 -0
- modules/caas/experiments/README.md +42 -0
- modules/caas/experiments/reproduce_results.py +462 -0
- modules/caas/paper/ARXIV_METADATA.md +145 -0
- modules/caas/paper/ARXIV_README.md +47 -0
- modules/caas/paper/CHECKLIST.md +103 -0
- modules/caas/paper/GITHUB_RELEASE_NOTES.md +105 -0
- modules/caas/paper/README.md +71 -0
- modules/caas/paper/abstract.md +24 -0
- modules/caas/paper/arxiv_submission.tar +0 -0
- modules/caas/paper/arxiv_submission.zip +0 -0
- modules/caas/paper/build_pdf.py +355 -0
- modules/caas/paper/experiments.md +149 -0
- modules/caas/paper/figures/.gitkeep +0 -0
- modules/caas/paper/figures/README.md +237 -0
- modules/caas/paper/figures/fig1_system_architecture.png +0 -0
- modules/caas/paper/figures/fig1_system_architecture.svg +198 -0
- modules/caas/paper/figures/fig2_context_triad.png +0 -0
- modules/caas/paper/figures/fig2_context_triad.svg +105 -0
- modules/caas/paper/figures/fig3_ablation_results.png +0 -0
- modules/caas/paper/figures/fig3_ablation_results.svg +113 -0
- modules/caas/paper/figures/fig4_routing_latency.png +0 -0
- modules/caas/paper/figures/fig4_routing_latency.svg +97 -0
- modules/caas/paper/intro.md +103 -0
- modules/caas/paper/latex/figures/fig1_system_architecture.png +0 -0
- modules/caas/paper/latex/figures/fig2_context_triad.png +0 -0
- modules/caas/paper/latex/figures/fig3_ablation_results.png +0 -0
- modules/caas/paper/latex/figures/fig4_routing_latency.png +0 -0
- modules/caas/paper/latex/main.tex +468 -0
- modules/caas/paper/latex/references.bib +140 -0
- modules/caas/paper/method.md +350 -0
- modules/caas/paper/outline.md +123 -0
- modules/caas/paper/related_work.md +101 -0
- modules/caas/paper/tables/.gitkeep +0 -0
- modules/caas/paper/tables/results_tables.md +50 -0
- modules/caas/pyproject.toml +172 -0
- modules/caas/requirements.txt +11 -0
- modules/caas/src/caas/__init__.py +232 -0
- modules/caas/src/caas/api/__init__.py +7 -0
- modules/caas/src/caas/api/server.py +1326 -0
- modules/caas/src/caas/caching.py +832 -0
- modules/caas/src/caas/cli.py +208 -0
- modules/caas/src/caas/conversation.py +221 -0
- modules/caas/src/caas/decay.py +118 -0
- modules/caas/src/caas/detection/__init__.py +7 -0
- modules/caas/src/caas/detection/detector.py +236 -0
- modules/caas/src/caas/enrichment.py +127 -0
- modules/caas/src/caas/gateway/__init__.py +24 -0
- modules/caas/src/caas/gateway/trust_gateway.py +471 -0
- modules/caas/src/caas/hf_utils.py +477 -0
- modules/caas/src/caas/ingestion/__init__.py +21 -0
- modules/caas/src/caas/ingestion/processors.py +251 -0
- modules/caas/src/caas/ingestion/structure_parser.py +185 -0
- modules/caas/src/caas/models.py +354 -0
- modules/caas/src/caas/pragmatic_truth.py +441 -0
- modules/caas/src/caas/routing/__init__.py +8 -0
- modules/caas/src/caas/routing/heuristic_router.py +242 -0
- modules/caas/src/caas/storage/__init__.py +7 -0
- modules/caas/src/caas/storage/store.py +450 -0
- modules/caas/src/caas/triad.py +472 -0
- modules/caas/src/caas/tuning/__init__.py +7 -0
- modules/caas/src/caas/tuning/tuner.py +322 -0
- modules/caas/src/caas/vfs/__init__.py +12 -0
- modules/caas/src/caas/vfs/filesystem.py +450 -0
- modules/caas/tests/__init__.py +3 -0
- modules/caas/tests/conftest.py +8 -0
- modules/caas/tests/test_caching.py +628 -0
- modules/caas/tests/test_context_triad.py +385 -0
- modules/caas/tests/test_conversation_manager.py +289 -0
- modules/caas/tests/test_functionality.py +215 -0
- modules/caas/tests/test_heuristic_router.py +370 -0
- modules/caas/tests/test_metadata_injection.py +328 -0
- modules/caas/tests/test_pragmatic_truth.py +322 -0
- modules/caas/tests/test_structure_aware_indexing.py +283 -0
- modules/caas/tests/test_time_decay.py +268 -0
- modules/caas/tests/test_trust_gateway.py +445 -0
- modules/caas/tests/test_vfs.py +298 -0
- modules/cmvk/.github/FUNDING.yml +9 -0
- modules/cmvk/.github/dependabot.yml +54 -0
- modules/cmvk/.github/workflows/ci.yml +205 -0
- modules/cmvk/.github/workflows/publish.yml +143 -0
- modules/cmvk/.gitignore +147 -0
- modules/cmvk/.pre-commit-config.yaml +58 -0
- modules/cmvk/CHANGELOG.md +146 -0
- modules/cmvk/CITATION.cff +48 -0
- modules/cmvk/CONTRIBUTING.md +229 -0
- modules/cmvk/Dockerfile +87 -0
- modules/cmvk/HF_MODEL_CARD.md +185 -0
- modules/cmvk/LICENSE +21 -0
- modules/cmvk/README.md +149 -0
- modules/cmvk/SECURITY.md +114 -0
- modules/cmvk/config/prompts/generator_v1.txt +23 -0
- modules/cmvk/config/prompts/verifier_hostile.txt +32 -0
- modules/cmvk/config/settings.yaml +40 -0
- modules/cmvk/coverage_html/.gitignore +2 -0
- modules/cmvk/coverage_html/class_index.html +658 -0
- modules/cmvk/coverage_html/coverage_html_cb_188fc9a4.js +735 -0
- modules/cmvk/coverage_html/favicon_32_cb_c827f16f.png +0 -0
- modules/cmvk/coverage_html/function_index.html +1978 -0
- modules/cmvk/coverage_html/index.html +255 -0
- modules/cmvk/coverage_html/keybd_closed_cb_900cfef5.png +0 -0
- modules/cmvk/coverage_html/status.json +1 -0
- modules/cmvk/coverage_html/style_cb_5c747636.css +389 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38___init___py.html +315 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_audit_py.html +499 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_benchmarks_py.html +575 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_constitutional_py.html +1001 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_hf_utils_py.html +398 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_metrics_py.html +570 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_profiles_py.html +397 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_types_py.html +109 -0
- modules/cmvk/coverage_html/z_2c49bd2ed3e01e38_verification_py.html +1053 -0
- modules/cmvk/docs/DIAGRAMS.md +325 -0
- modules/cmvk/docs/architecture.md +345 -0
- modules/cmvk/docs/features.md +308 -0
- modules/cmvk/docs/getting_started.md +279 -0
- modules/cmvk/docs/innovation_layer.md +377 -0
- modules/cmvk/docs/safety.md +281 -0
- modules/cmvk/docs/traceability.md +150 -0
- modules/cmvk/examples/basic_example.py +62 -0
- modules/cmvk/examples/demo_complete_pipeline.py +209 -0
- modules/cmvk/examples/demo_innovation_layer.py +197 -0
- modules/cmvk/examples/example.py +112 -0
- modules/cmvk/examples/model_diversity_comparison.py +110 -0
- modules/cmvk/examples/real_api_integration.py +121 -0
- modules/cmvk/examples/test_full_pipeline.py +303 -0
- modules/cmvk/experiments/FEATURE_2_LATERAL_THINKING.md +187 -0
- modules/cmvk/experiments/README.md +216 -0
- modules/cmvk/experiments/ablation_runner.py +666 -0
- modules/cmvk/experiments/baseline_runner.py +158 -0
- modules/cmvk/experiments/blind_spot_benchmark.py +364 -0
- modules/cmvk/experiments/datasets/README.md +85 -0
- modules/cmvk/experiments/datasets/humaneval_50.json +352 -0
- modules/cmvk/experiments/datasets/humaneval_full.json +1150 -0
- modules/cmvk/experiments/datasets/humaneval_sample.json +32 -0
- modules/cmvk/experiments/datasets/sabotage.json +262 -0
- modules/cmvk/experiments/datasets/sample.json +40 -0
- modules/cmvk/experiments/demo_with_traces.py +110 -0
- modules/cmvk/experiments/efficiency_curve.py +259 -0
- modules/cmvk/experiments/experiment_runner.py +243 -0
- modules/cmvk/experiments/paper_data_generator.py +183 -0
- modules/cmvk/experiments/reproduce_results.py +407 -0
- modules/cmvk/experiments/reproducible_runner.py +352 -0
- modules/cmvk/experiments/sabotage_stress_test.py +311 -0
- modules/cmvk/experiments/test_lateral_thinking.py +116 -0
- modules/cmvk/experiments/test_prosecutor.py +41 -0
- modules/cmvk/experiments/visualize_results.py +735 -0
- modules/cmvk/logs/traces/demo_HumanEval_0_20260121-204900.json +36 -0
- modules/cmvk/notebooks/analysis.ipynb +124 -0
- modules/cmvk/paper/PAPER.md +561 -0
- modules/cmvk/paper/arxiv_checklist.md +230 -0
- modules/cmvk/paper/cmvk_neurips.aux +77 -0
- modules/cmvk/paper/cmvk_neurips.bbl +81 -0
- modules/cmvk/paper/cmvk_neurips.blg +48 -0
- modules/cmvk/paper/cmvk_neurips.out +16 -0
- modules/cmvk/paper/cmvk_neurips.pdf +0 -0
- modules/cmvk/paper/cmvk_neurips.tex +309 -0
- modules/cmvk/paper/figures/ablation.png +0 -0
- modules/cmvk/paper/figures/ablation.svg +39 -0
- modules/cmvk/paper/figures/architecture.png +0 -0
- modules/cmvk/paper/figures/architecture.svg +115 -0
- modules/cmvk/paper/figures/results_bar.png +0 -0
- modules/cmvk/paper/figures/results_bar.svg +70 -0
- modules/cmvk/paper/generate_figures.py +383 -0
- modules/cmvk/paper/neurips_2024.sty +101 -0
- modules/cmvk/paper/references.bib +98 -0
- modules/cmvk/paper/structure.tex +200 -0
- modules/cmvk/pyproject.toml +189 -0
- modules/cmvk/requirements-dev.txt +19 -0
- modules/cmvk/requirements.txt +14 -0
- modules/cmvk/src/cmvk/__init__.py +216 -0
- modules/cmvk/src/cmvk/audit.py +400 -0
- modules/cmvk/src/cmvk/benchmarks.py +476 -0
- modules/cmvk/src/cmvk/constitutional.py +902 -0
- modules/cmvk/src/cmvk/hf_utils.py +299 -0
- modules/cmvk/src/cmvk/metrics.py +471 -0
- modules/cmvk/src/cmvk/profiles.py +298 -0
- modules/cmvk/src/cmvk/py.typed +0 -0
- modules/cmvk/src/cmvk/types.py +10 -0
- modules/cmvk/src/cmvk/verification.py +954 -0
- modules/cmvk/src/cross_model_verification_kernel/__init__.py +91 -0
- modules/cmvk/src/cross_model_verification_kernel/__main__.py +10 -0
- modules/cmvk/src/cross_model_verification_kernel/agents/__init__.py +16 -0
- modules/cmvk/src/cross_model_verification_kernel/agents/base_agent.py +142 -0
- modules/cmvk/src/cross_model_verification_kernel/agents/generator_openai.py +223 -0
- modules/cmvk/src/cross_model_verification_kernel/agents/verifier_anthropic.py +448 -0
- modules/cmvk/src/cross_model_verification_kernel/agents/verifier_gemini.py +481 -0
- modules/cmvk/src/cross_model_verification_kernel/cli.py +570 -0
- modules/cmvk/src/cross_model_verification_kernel/core/__init__.py +26 -0
- modules/cmvk/src/cross_model_verification_kernel/core/graph_memory.py +308 -0
- modules/cmvk/src/cross_model_verification_kernel/core/kernel.py +413 -0
- modules/cmvk/src/cross_model_verification_kernel/core/trace_logger.py +75 -0
- modules/cmvk/src/cross_model_verification_kernel/core/types.py +121 -0
- modules/cmvk/src/cross_model_verification_kernel/datasets/__init__.py +20 -0
- modules/cmvk/src/cross_model_verification_kernel/datasets/humaneval_loader.py +271 -0
- modules/cmvk/src/cross_model_verification_kernel/generator.py +118 -0
- modules/cmvk/src/cross_model_verification_kernel/kernel.py +292 -0
- modules/cmvk/src/cross_model_verification_kernel/models.py +111 -0
- modules/cmvk/src/cross_model_verification_kernel/py.typed +1 -0
- modules/cmvk/src/cross_model_verification_kernel/simple_kernel.py +185 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/__init__.py +94 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/huggingface_upload.py +394 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/sandbox.py +159 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/statistics.py +468 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/visualizer.py +312 -0
- modules/cmvk/src/cross_model_verification_kernel/tools/web_search.py +86 -0
- modules/cmvk/src/cross_model_verification_kernel/verifier.py +257 -0
- modules/cmvk/tests/__init__.py +3 -0
- modules/cmvk/tests/conftest.py +61 -0
- modules/cmvk/tests/integration/__init__.py +1 -0
- modules/cmvk/tests/integration/test_anthropic_verifier.py +269 -0
- modules/cmvk/tests/integration/test_integration.py +53 -0
- modules/cmvk/tests/integration/test_lateral_thinking_integration.py +199 -0
- modules/cmvk/tests/integration/test_lateral_thinking_witness.py +208 -0
- modules/cmvk/tests/integration/test_prosecutor_mode.py +131 -0
- modules/cmvk/tests/test_constitutional.py +611 -0
- modules/cmvk/tests/test_enhanced_features.py +603 -0
- modules/cmvk/tests/test_verification.py +255 -0
- modules/cmvk/tests/unit/__init__.py +1 -0
- modules/cmvk/tests/unit/test_agents.py +64 -0
- modules/cmvk/tests/unit/test_cli.py +224 -0
- modules/cmvk/tests/unit/test_core.py +126 -0
- modules/cmvk/tests/unit/test_humaneval_loader.py +197 -0
- modules/cmvk/tests/unit/test_kernel.py +255 -0
- modules/cmvk/tests/unit/test_reproducibility.py +160 -0
- modules/cmvk/tests/unit/test_trace_logger.py +115 -0
- modules/cmvk/tests/unit/test_visualizer.py +218 -0
- modules/control-plane/.github/ISSUE_TEMPLATE/bug_report.yml +82 -0
- modules/control-plane/.github/ISSUE_TEMPLATE/config.yml +11 -0
- modules/control-plane/.github/ISSUE_TEMPLATE/feature_request.yml +104 -0
- modules/control-plane/.github/ISSUE_TEMPLATE/question.yml +70 -0
- modules/control-plane/.github/ISSUE_TEMPLATE/security_vulnerability.yml +84 -0
- modules/control-plane/.github/discussions.yml +73 -0
- modules/control-plane/.github/pull_request_template.md +82 -0
- modules/control-plane/.github/workflows/publish.yml +146 -0
- modules/control-plane/.github/workflows/release.yml +39 -0
- modules/control-plane/.github/workflows/tests.yml +58 -0
- modules/control-plane/.gitignore +55 -0
- modules/control-plane/CHANGELOG.md +203 -0
- modules/control-plane/CONTRIBUTING.md +311 -0
- modules/control-plane/CONTRIBUTORS.md +88 -0
- modules/control-plane/Dockerfile +82 -0
- modules/control-plane/LICENSE +21 -0
- modules/control-plane/MANIFEST.in +17 -0
- modules/control-plane/README.md +1264 -0
- modules/control-plane/ROADMAP.md +228 -0
- modules/control-plane/SECURITY.md +210 -0
- modules/control-plane/SUPPORT.md +106 -0
- modules/control-plane/acp-cli.py +212 -0
- modules/control-plane/benchmark/README.md +257 -0
- modules/control-plane/benchmark/__init__.py +19 -0
- modules/control-plane/benchmark/red_team_dataset.py +517 -0
- modules/control-plane/benchmark.py +563 -0
- modules/control-plane/build_and_publish.sh +130 -0
- modules/control-plane/docker-compose.yml +74 -0
- modules/control-plane/docs/ABLATION_STUDIES.md +528 -0
- modules/control-plane/docs/ADAPTER_GUIDE.md +544 -0
- modules/control-plane/docs/ADVANCED_FEATURES.md +543 -0
- modules/control-plane/docs/AIOS_COMPARISON.md +296 -0
- modules/control-plane/docs/BIBLIOGRAPHY.md +367 -0
- modules/control-plane/docs/CASE_STUDIES.md +645 -0
- modules/control-plane/docs/DOCKER_DEPLOYMENT.md +184 -0
- modules/control-plane/docs/ECOSYSTEM_STATUS.md +98 -0
- modules/control-plane/docs/HF_MODEL_CARD.md +168 -0
- modules/control-plane/docs/KERNEL_V1_RELEASE.md +454 -0
- modules/control-plane/docs/LAYER3_FRAMEWORK.md +227 -0
- modules/control-plane/docs/LIMITATIONS.md +523 -0
- modules/control-plane/docs/PYPI_PUBLISHING.md +195 -0
- modules/control-plane/docs/README.md +58 -0
- modules/control-plane/docs/RELATED_WORK.md +319 -0
- modules/control-plane/docs/RELEASE_v1.1.0.md +252 -0
- modules/control-plane/docs/REPRODUCIBILITY.md +540 -0
- modules/control-plane/docs/RESEARCH_FOUNDATION.md +197 -0
- modules/control-plane/docs/api/CORE.md +270 -0
- modules/control-plane/docs/architecture/architecture.md +120 -0
- modules/control-plane/docs/community/ANNOUNCEMENT_TEMPLATES.md +52 -0
- modules/control-plane/docs/guides/IMPLEMENTATION.md +225 -0
- modules/control-plane/docs/guides/PHILOSOPHY.md +354 -0
- modules/control-plane/docs/guides/QUICKSTART.md +217 -0
- modules/control-plane/examples/README.md +138 -0
- modules/control-plane/examples/a2a_demo.py +410 -0
- modules/control-plane/examples/adapter_demo.py +347 -0
- modules/control-plane/examples/advanced_features.py +403 -0
- modules/control-plane/examples/basic_usage.py +261 -0
- modules/control-plane/examples/benchmark_demo.py +186 -0
- modules/control-plane/examples/compliance_demo.py +333 -0
- modules/control-plane/examples/configuration.py +265 -0
- modules/control-plane/examples/getting_started.py +178 -0
- modules/control-plane/examples/hibernation_and_time_travel_demo.py +406 -0
- modules/control-plane/examples/interactive_tutorial.ipynb +497 -0
- modules/control-plane/examples/kernel_interceptor_demo.py +202 -0
- modules/control-plane/examples/kernel_v1_demo.py +273 -0
- modules/control-plane/examples/langchain_demo.py +281 -0
- modules/control-plane/examples/lifecycle_demo.py +724 -0
- modules/control-plane/examples/mcp_demo.py +378 -0
- modules/control-plane/examples/ml_safety_demo.py +157 -0
- modules/control-plane/examples/multimodal_demo.py +347 -0
- modules/control-plane/examples/observability_demo.py +370 -0
- modules/control-plane/examples/use_cases.py +336 -0
- modules/control-plane/experiments/long_horizon_purge.py +235 -0
- modules/control-plane/experiments/multi_agent_rag.py +165 -0
- modules/control-plane/experiments/reproduce_results.py +667 -0
- modules/control-plane/paper/ARXIV_SUBMISSION_INFO.txt +122 -0
- modules/control-plane/paper/ETHICS_STATEMENT.md +248 -0
- modules/control-plane/paper/PAPER_CHECKLIST.md +72 -0
- modules/control-plane/paper/Paper.pdf +0 -0
- modules/control-plane/paper/README.md +71 -0
- modules/control-plane/paper/appendix.md +152 -0
- modules/control-plane/paper/architecture.md +15 -0
- modules/control-plane/paper/arxiv/figures/ablation_chart.png +0 -0
- modules/control-plane/paper/arxiv/figures/architecture.png +0 -0
- modules/control-plane/paper/arxiv/figures/constraint_graphs.png +0 -0
- modules/control-plane/paper/arxiv/figures/results_chart.png +0 -0
- modules/control-plane/paper/arxiv/main.aux +97 -0
- modules/control-plane/paper/arxiv/main.bbl +112 -0
- modules/control-plane/paper/arxiv/main.blg +48 -0
- modules/control-plane/paper/arxiv/main.out +33 -0
- modules/control-plane/paper/arxiv/main.pdf +0 -0
- modules/control-plane/paper/arxiv/main.tex +479 -0
- modules/control-plane/paper/arxiv/references.bib +234 -0
- modules/control-plane/paper/arxiv_submission.tar +0 -0
- modules/control-plane/paper/arxiv_submission.zip +0 -0
- modules/control-plane/paper/build.sh +68 -0
- modules/control-plane/paper/figures/README.md +47 -0
- modules/control-plane/paper/figures/ablation_chart.pdf +0 -0
- modules/control-plane/paper/figures/ablation_chart.png +0 -0
- modules/control-plane/paper/figures/architecture.pdf +0 -0
- modules/control-plane/paper/figures/architecture.png +0 -0
- modules/control-plane/paper/figures/constraint_graphs.pdf +0 -0
- modules/control-plane/paper/figures/constraint_graphs.png +0 -0
- modules/control-plane/paper/figures/generate_figures.py +252 -0
- modules/control-plane/paper/figures/results_chart.pdf +0 -0
- modules/control-plane/paper/figures/results_chart.png +0 -0
- modules/control-plane/paper/main.md +273 -0
- modules/control-plane/paper/main.tex +214 -0
- modules/control-plane/paper/main_arxiv.aux +53 -0
- modules/control-plane/paper/main_arxiv.out +17 -0
- modules/control-plane/paper/main_arxiv.pdf +0 -0
- modules/control-plane/paper/main_arxiv.tex +264 -0
- modules/control-plane/paper/references.bib +234 -0
- modules/control-plane/pyproject.toml +124 -0
- modules/control-plane/reproducibility/ABLATIONS.md +136 -0
- modules/control-plane/reproducibility/README.md +288 -0
- modules/control-plane/reproducibility/commands.md +467 -0
- modules/control-plane/reproducibility/docker_config/Dockerfile +39 -0
- modules/control-plane/reproducibility/experiment_configs/purge_config.json +46 -0
- modules/control-plane/reproducibility/experiment_configs/rag_config.json +36 -0
- modules/control-plane/reproducibility/hardware_specs.md +317 -0
- modules/control-plane/reproducibility/requirements_frozen.txt +0 -0
- modules/control-plane/reproducibility/run_all_experiments.sh +45 -0
- modules/control-plane/reproducibility/seeds.json +106 -0
- modules/control-plane/scripts/prepare_pypi.py +46 -0
- modules/control-plane/scripts/prepare_release.py +176 -0
- modules/control-plane/scripts/upload_dataset_to_hf.py +316 -0
- modules/control-plane/setup.py +69 -0
- modules/control-plane/src/agent_control_plane/__init__.py +639 -0
- modules/control-plane/src/agent_control_plane/a2a_adapter.py +541 -0
- modules/control-plane/src/agent_control_plane/adapter.py +415 -0
- modules/control-plane/src/agent_control_plane/agent_hibernation.py +364 -0
- modules/control-plane/src/agent_control_plane/agent_kernel.py +464 -0
- modules/control-plane/src/agent_control_plane/compliance.py +718 -0
- modules/control-plane/src/agent_control_plane/constraint_graphs.py +475 -0
- modules/control-plane/src/agent_control_plane/control_plane.py +848 -0
- modules/control-plane/src/agent_control_plane/example_executors.py +193 -0
- modules/control-plane/src/agent_control_plane/execution_engine.py +229 -0
- modules/control-plane/src/agent_control_plane/flight_recorder.py +600 -0
- modules/control-plane/src/agent_control_plane/governance_layer.py +432 -0
- modules/control-plane/src/agent_control_plane/hf_utils.py +561 -0
- modules/control-plane/src/agent_control_plane/interfaces/__init__.py +53 -0
- modules/control-plane/src/agent_control_plane/interfaces/kernel_interface.py +359 -0
- modules/control-plane/src/agent_control_plane/interfaces/plugin_interface.py +495 -0
- modules/control-plane/src/agent_control_plane/interfaces/protocol_interfaces.py +385 -0
- modules/control-plane/src/agent_control_plane/kernel_space.py +707 -0
- modules/control-plane/src/agent_control_plane/langchain_adapter.py +422 -0
- modules/control-plane/src/agent_control_plane/lifecycle.py +3111 -0
- modules/control-plane/src/agent_control_plane/mcp_adapter.py +517 -0
- modules/control-plane/src/agent_control_plane/ml_safety.py +560 -0
- modules/control-plane/src/agent_control_plane/multimodal.py +724 -0
- modules/control-plane/src/agent_control_plane/mute_agent.py +419 -0
- modules/control-plane/src/agent_control_plane/observability.py +785 -0
- modules/control-plane/src/agent_control_plane/orchestrator.py +480 -0
- modules/control-plane/src/agent_control_plane/plugin_registry.py +748 -0
- modules/control-plane/src/agent_control_plane/policy_engine.py +525 -0
- modules/control-plane/src/agent_control_plane/shadow_mode.py +307 -0
- modules/control-plane/src/agent_control_plane/signals.py +491 -0
- modules/control-plane/src/agent_control_plane/supervisor_agents.py +427 -0
- modules/control-plane/src/agent_control_plane/time_travel_debugger.py +554 -0
- modules/control-plane/src/agent_control_plane/tool_registry.py +350 -0
- modules/control-plane/src/agent_control_plane/vfs.py +695 -0
- modules/control-plane/tests/README.md +33 -0
- modules/control-plane/tests/test_a2a_adapter.py +336 -0
- modules/control-plane/tests/test_adapter.py +422 -0
- modules/control-plane/tests/test_advanced_features.py +389 -0
- modules/control-plane/tests/test_benchmark.py +223 -0
- modules/control-plane/tests/test_compliance.py +214 -0
- modules/control-plane/tests/test_control_plane.py +295 -0
- modules/control-plane/tests/test_hibernation.py +274 -0
- modules/control-plane/tests/test_kernel_interception.py +284 -0
- modules/control-plane/tests/test_langchain_adapter.py +258 -0
- modules/control-plane/tests/test_lifecycle.py +1174 -0
- modules/control-plane/tests/test_mcp_adapter.py +293 -0
- modules/control-plane/tests/test_ml_safety.py +142 -0
- modules/control-plane/tests/test_multimodal.py +317 -0
- modules/control-plane/tests/test_new_features.py +435 -0
- modules/control-plane/tests/test_observability.py +338 -0
- modules/control-plane/tests/test_time_travel.py +387 -0
- modules/emk/.github/workflows/ci.yml +105 -0
- modules/emk/.github/workflows/publish.yml +144 -0
- modules/emk/.gitignore +74 -0
- modules/emk/CHANGELOG.md +41 -0
- modules/emk/CONTRIBUTING.md +295 -0
- modules/emk/IMPLEMENTATION.md +174 -0
- modules/emk/LICENSE +21 -0
- modules/emk/MANIFEST.in +8 -0
- modules/emk/README.md +135 -0
- modules/emk/RELEASE_NOTES.md +82 -0
- modules/emk/SECURITY.md +52 -0
- modules/emk/codecov.yml +39 -0
- modules/emk/docs/MEMORY_MANAGEMENT.md +285 -0
- modules/emk/emk/__init__.py +106 -0
- modules/emk/emk/hf_utils.py +419 -0
- modules/emk/emk/indexer.py +144 -0
- modules/emk/emk/py.typed +0 -0
- modules/emk/emk/schema.py +204 -0
- modules/emk/emk/sleep_cycle.py +345 -0
- modules/emk/emk/store.py +479 -0
- modules/emk/examples/basic_usage.py +123 -0
- modules/emk/examples/memory_features_demo.py +154 -0
- modules/emk/experiments/README.md +59 -0
- modules/emk/experiments/reproduce_results.py +461 -0
- modules/emk/experiments/results.json +61 -0
- modules/emk/paper/structure.tex +192 -0
- modules/emk/paper/whitepaper.md +273 -0
- modules/emk/pyproject.toml +91 -0
- modules/emk/setup.py +5 -0
- modules/emk/tests/test_file_adapter.py +195 -0
- modules/emk/tests/test_indexer.py +174 -0
- modules/emk/tests/test_init.py +55 -0
- modules/emk/tests/test_negative_memory.py +83 -0
- modules/emk/tests/test_schema.py +150 -0
- modules/emk/tests/test_semantic_rules.py +175 -0
- modules/emk/tests/test_sleep_cycle.py +335 -0
- modules/emk/tests/test_store_anti_patterns.py +239 -0
- modules/iatp/.github/workflows/docker-build.yml +124 -0
- modules/iatp/.github/workflows/publish.yml +174 -0
- modules/iatp/.github/workflows/python-package.yml +121 -0
- modules/iatp/.gitignore +67 -0
- modules/iatp/.pre-commit-config.yaml +64 -0
- modules/iatp/CHANGELOG.md +120 -0
- modules/iatp/Dockerfile +91 -0
- modules/iatp/IMPLEMENTATION_SUMMARY.md +218 -0
- modules/iatp/MANIFEST.in +9 -0
- modules/iatp/README.md +180 -0
- modules/iatp/docker/Dockerfile.agent +27 -0
- modules/iatp/docker/Dockerfile.sidecar-python +86 -0
- modules/iatp/docker/README.md +258 -0
- modules/iatp/docker-compose.yml +194 -0
- modules/iatp/docs/ARCHITECTURE.md +243 -0
- modules/iatp/docs/CLI_GUIDE.md +220 -0
- modules/iatp/docs/DEPLOYMENT.md +304 -0
- modules/iatp/examples/README.md +132 -0
- modules/iatp/examples/backend_agent.py +39 -0
- modules/iatp/examples/client.py +168 -0
- modules/iatp/examples/demo_attestation_reputation.py +274 -0
- modules/iatp/examples/demo_client.py +240 -0
- modules/iatp/examples/demo_rbac.py +143 -0
- modules/iatp/examples/integration_demo.py +245 -0
- modules/iatp/examples/manifests/coder_agent.json +20 -0
- modules/iatp/examples/manifests/reviewer_agent.json +19 -0
- modules/iatp/examples/manifests/secure_bank.json +14 -0
- modules/iatp/examples/manifests/standard_agent.json +14 -0
- modules/iatp/examples/manifests/untrusted_honeypot.json +14 -0
- modules/iatp/examples/run_secure_bank_sidecar.py +85 -0
- modules/iatp/examples/run_sidecar.py +105 -0
- modules/iatp/examples/run_untrusted_sidecar.py +77 -0
- modules/iatp/examples/secure_bank_agent.py +138 -0
- modules/iatp/examples/test_untrusted.py +82 -0
- modules/iatp/examples/untrusted_agent.py +119 -0
- modules/iatp/experiments/README.md +58 -0
- modules/iatp/experiments/cascading_hallucination/README.md +149 -0
- modules/iatp/experiments/cascading_hallucination/agent_a_user.py +41 -0
- modules/iatp/experiments/cascading_hallucination/agent_b_summarizer.py +54 -0
- modules/iatp/experiments/cascading_hallucination/agent_c_database.py +47 -0
- modules/iatp/experiments/cascading_hallucination/proof_of_concept.py +290 -0
- modules/iatp/experiments/cascading_hallucination/run_experiment.py +226 -0
- modules/iatp/experiments/cascading_hallucination/sidecar_c.py +61 -0
- modules/iatp/experiments/reproduce_results.py +574 -0
- modules/iatp/experiments/results.json +2336 -0
- modules/iatp/iatp/__init__.py +164 -0
- modules/iatp/iatp/attestation.py +401 -0
- modules/iatp/iatp/cli.py +253 -0
- modules/iatp/iatp/hf_utils.py +469 -0
- modules/iatp/iatp/ipc_pipes.py +578 -0
- modules/iatp/iatp/main.py +410 -0
- modules/iatp/iatp/models/__init__.py +445 -0
- modules/iatp/iatp/policy_engine.py +335 -0
- modules/iatp/iatp/py.typed +2 -0
- modules/iatp/iatp/recovery.py +319 -0
- modules/iatp/iatp/security/__init__.py +268 -0
- modules/iatp/iatp/sidecar/__init__.py +517 -0
- modules/iatp/iatp/telemetry/__init__.py +162 -0
- modules/iatp/iatp/tests/__init__.py +1 -0
- modules/iatp/iatp/tests/test_attestation.py +368 -0
- modules/iatp/iatp/tests/test_cli.py +129 -0
- modules/iatp/iatp/tests/test_models.py +128 -0
- modules/iatp/iatp/tests/test_policy_engine.py +345 -0
- modules/iatp/iatp/tests/test_recovery.py +279 -0
- modules/iatp/iatp/tests/test_security.py +220 -0
- modules/iatp/iatp/tests/test_sidecar.py +165 -0
- modules/iatp/iatp/tests/test_telemetry.py +173 -0
- modules/iatp/paper/BLOG.md +307 -0
- modules/iatp/paper/PAPER.md +236 -0
- modules/iatp/paper/RFC_SUBMISSION.md +299 -0
- modules/iatp/paper/whitepaper.md +369 -0
- modules/iatp/proto/README.md +200 -0
- modules/iatp/proto/generate_stubs.py +81 -0
- modules/iatp/proto/iatp.proto +552 -0
- modules/iatp/pyproject.toml +180 -0
- modules/iatp/requirements-dev.txt +2 -0
- modules/iatp/requirements.txt +6 -0
- modules/iatp/setup.py +60 -0
- modules/iatp/sidecar/README.md +487 -0
- modules/iatp/sidecar/go/Dockerfile +32 -0
- modules/iatp/sidecar/go/README.md +237 -0
- modules/iatp/sidecar/go/go.mod +8 -0
- modules/iatp/sidecar/go/main.go +488 -0
- modules/iatp/spec/001-handshake.md +436 -0
- modules/iatp/spec/002-reversibility.md +394 -0
- modules/iatp/spec/schema/capability_manifest.json +266 -0
- modules/iatp/test_integration.py +310 -0
- modules/mcp-kernel-server/README.md +261 -0
- modules/mcp-kernel-server/pyproject.toml +60 -0
- modules/mcp-kernel-server/src/mcp_kernel_server/__init__.py +26 -0
- modules/mcp-kernel-server/src/mcp_kernel_server/cli.py +229 -0
- modules/mcp-kernel-server/src/mcp_kernel_server/resources.py +215 -0
- modules/mcp-kernel-server/src/mcp_kernel_server/server.py +562 -0
- modules/mcp-kernel-server/src/mcp_kernel_server/tools.py +1172 -0
- modules/mute-agent/.github/workflows/safety_check.yml +45 -0
- modules/mute-agent/.gitignore +53 -0
- modules/mute-agent/ARCHITECTURE.md +531 -0
- modules/mute-agent/BENCHMARK_GUIDE.md +384 -0
- modules/mute-agent/COMPLETION_SUMMARY.md +293 -0
- modules/mute-agent/EXPERIMENT_SUMMARY.md +318 -0
- modules/mute-agent/IMPLEMENTATION_SUMMARY.md +212 -0
- modules/mute-agent/LICENSE +21 -0
- modules/mute-agent/PHASE3_SUMMARY.md +297 -0
- modules/mute-agent/README.md +360 -0
- modules/mute-agent/STEEL_MAN_RESULTS.md +353 -0
- modules/mute-agent/USAGE.md +505 -0
- modules/mute-agent/V2_IMPLEMENTATION_SUMMARY.md +253 -0
- modules/mute-agent/V2_STEEL_MAN_IMPLEMENTATION.md +274 -0
- modules/mute-agent/VERIFICATION_REPORT.md +435 -0
- modules/mute-agent/charts/cost_comparison.png +0 -0
- modules/mute-agent/charts/cost_vs_ambiguity.png +0 -0
- modules/mute-agent/charts/metrics_comparison.png +0 -0
- modules/mute-agent/charts/scenario_breakdown.png +0 -0
- modules/mute-agent/charts/trace_attack_blocked.html +140 -0
- modules/mute-agent/charts/trace_attack_blocked.png +0 -0
- modules/mute-agent/charts/trace_failure.html +140 -0
- modules/mute-agent/charts/trace_failure.png +0 -0
- modules/mute-agent/charts/trace_success.html +140 -0
- modules/mute-agent/charts/trace_success.png +0 -0
- modules/mute-agent/examples/__init__.py +1 -0
- modules/mute-agent/examples/advanced_example.py +384 -0
- modules/mute-agent/examples/graph_debugger_demo.py +241 -0
- modules/mute-agent/examples/listener_example.py +297 -0
- modules/mute-agent/examples/simple_example.py +242 -0
- modules/mute-agent/examples/steel_man_demo.py +297 -0
- modules/mute-agent/experiments/README.md +135 -0
- modules/mute-agent/experiments/__init__.py +3 -0
- modules/mute-agent/experiments/agent_comparison.csv +6 -0
- modules/mute-agent/experiments/agent_comparison_50runs.csv +6 -0
- modules/mute-agent/experiments/ambiguity_test.py +335 -0
- modules/mute-agent/experiments/ambiguity_test_results.csv +31 -0
- modules/mute-agent/experiments/ambiguity_test_results_50runs.csv +51 -0
- modules/mute-agent/experiments/baseline_agent.py +189 -0
- modules/mute-agent/experiments/benchmark.py +402 -0
- modules/mute-agent/experiments/demo.py +172 -0
- modules/mute-agent/experiments/generate_cost_curve.py +474 -0
- modules/mute-agent/experiments/jailbreak_test.py +137 -0
- modules/mute-agent/experiments/latent_state_scenario.py +361 -0
- modules/mute-agent/experiments/mute_agent_experiment.py +349 -0
- modules/mute-agent/experiments/run_extended_experiment.py +40 -0
- modules/mute-agent/experiments/run_v2_experiments.py +266 -0
- modules/mute-agent/experiments/run_v2_experiments_auto.py +247 -0
- modules/mute-agent/experiments/v2_scenarios/README.md +214 -0
- modules/mute-agent/experiments/v2_scenarios/__init__.py +4 -0
- modules/mute-agent/experiments/v2_scenarios/scenario_1_deep_dependency.py +325 -0
- modules/mute-agent/experiments/v2_scenarios/scenario_2_adversarial.py +328 -0
- modules/mute-agent/experiments/v2_scenarios/scenario_3_false_positive.py +303 -0
- modules/mute-agent/experiments/v2_scenarios/scenario_4_performance.py +319 -0
- modules/mute-agent/experiments/visualize.py +400 -0
- modules/mute-agent/mute_agent/__init__.py +66 -0
- modules/mute-agent/mute_agent/core/__init__.py +1 -0
- modules/mute-agent/mute_agent/core/execution_agent.py +164 -0
- modules/mute-agent/mute_agent/core/handshake_protocol.py +199 -0
- modules/mute-agent/mute_agent/core/reasoning_agent.py +236 -0
- modules/mute-agent/mute_agent/knowledge_graph/__init__.py +1 -0
- modules/mute-agent/mute_agent/knowledge_graph/graph_elements.py +63 -0
- modules/mute-agent/mute_agent/knowledge_graph/multidimensional_graph.py +168 -0
- modules/mute-agent/mute_agent/knowledge_graph/subgraph.py +222 -0
- modules/mute-agent/mute_agent/listener/__init__.py +41 -0
- modules/mute-agent/mute_agent/listener/adapters/__init__.py +29 -0
- modules/mute-agent/mute_agent/listener/adapters/base_adapter.py +187 -0
- modules/mute-agent/mute_agent/listener/adapters/caas_adapter.py +342 -0
- modules/mute-agent/mute_agent/listener/adapters/control_plane_adapter.py +434 -0
- modules/mute-agent/mute_agent/listener/adapters/iatp_adapter.py +330 -0
- modules/mute-agent/mute_agent/listener/adapters/scak_adapter.py +249 -0
- modules/mute-agent/mute_agent/listener/listener.py +608 -0
- modules/mute-agent/mute_agent/listener/state_observer.py +434 -0
- modules/mute-agent/mute_agent/listener/threshold_config.py +311 -0
- modules/mute-agent/mute_agent/super_system/__init__.py +1 -0
- modules/mute-agent/mute_agent/super_system/router.py +202 -0
- modules/mute-agent/mute_agent/visualization/__init__.py +8 -0
- modules/mute-agent/mute_agent/visualization/graph_debugger.py +495 -0
- modules/mute-agent/requirements-dev.txt +6 -0
- modules/mute-agent/requirements.txt +9 -0
- modules/mute-agent/setup.py +64 -0
- modules/mute-agent/src/__init__.py +0 -0
- modules/mute-agent/src/agents/__init__.py +0 -0
- modules/mute-agent/src/agents/baseline_agent.py +524 -0
- modules/mute-agent/src/agents/interactive_agent.py +113 -0
- modules/mute-agent/src/agents/mute_agent.py +622 -0
- modules/mute-agent/src/benchmarks/__init__.py +0 -0
- modules/mute-agent/src/benchmarks/evaluator.py +481 -0
- modules/mute-agent/src/benchmarks/scenarios.json +985 -0
- modules/mute-agent/src/core/__init__.py +0 -0
- modules/mute-agent/src/core/mock_state.py +320 -0
- modules/mute-agent/src/core/tools.py +441 -0
- modules/nexus/__init__.py +49 -0
- modules/nexus/arbiter.py +357 -0
- modules/nexus/client.py +464 -0
- modules/nexus/dmz.py +417 -0
- modules/nexus/escrow.py +428 -0
- modules/nexus/exceptions.py +284 -0
- modules/nexus/registry.py +391 -0
- modules/nexus/reputation.py +423 -0
- modules/nexus/schemas/__init__.py +49 -0
- modules/nexus/schemas/compliance.py +274 -0
- modules/nexus/schemas/escrow.py +249 -0
- modules/nexus/schemas/manifest.py +223 -0
- modules/nexus/schemas/receipt.py +206 -0
- modules/observability/README.md +192 -0
- modules/observability/alertmanager/alertmanager.yml +116 -0
- modules/observability/alerts/agent-os-alerts.yaml +197 -0
- modules/observability/docker-compose.yml +128 -0
- modules/observability/grafana/dashboards/agent-os-amb.json +448 -0
- modules/observability/grafana/dashboards/agent-os-cmvk.json +441 -0
- modules/observability/grafana/dashboards/agent-os-overview.json +268 -0
- modules/observability/grafana/dashboards/agent-os-performance.json +15 -0
- modules/observability/grafana/dashboards/agent-os-safety.json +50 -0
- modules/observability/grafana/provisioning/dashboards/dashboards.yml +15 -0
- modules/observability/grafana/provisioning/datasources/datasources.yml +33 -0
- modules/observability/otel/otel-collector-config.yml +61 -0
- modules/observability/prometheus/prometheus.yml +63 -0
- modules/observability/pyproject.toml +53 -0
- modules/observability/scripts/export_dashboards.py +55 -0
- modules/observability/src/agent_os_observability/__init__.py +25 -0
- modules/observability/src/agent_os_observability/dashboards.py +896 -0
- modules/observability/src/agent_os_observability/metrics.py +396 -0
- modules/observability/src/agent_os_observability/server.py +221 -0
- modules/observability/src/agent_os_observability/tracer.py +226 -0
- modules/primitives/.gitignore +8 -0
- modules/primitives/README.md +62 -0
- modules/primitives/agent_primitives/__init__.py +22 -0
- modules/primitives/agent_primitives/failures.py +82 -0
- modules/primitives/agent_primitives/py.typed +0 -0
- modules/primitives/pyproject.toml +68 -0
- modules/scak/.github/copilot-instructions.md +396 -0
- modules/scak/.github/workflows/release.yml +117 -0
- modules/scak/.gitignore +32 -0
- modules/scak/CHANGELOG.md +173 -0
- modules/scak/CITATION.cff +62 -0
- modules/scak/CONTRIBUTING.md +429 -0
- modules/scak/Dockerfile +58 -0
- modules/scak/ENTERPRISE_FEATURES.md +518 -0
- modules/scak/IMPLEMENTATION_SUMMARY.md +206 -0
- modules/scak/LIMITATIONS.md +565 -0
- modules/scak/MANIFEST.in +16 -0
- modules/scak/NOVELTY.md +535 -0
- modules/scak/README.md +928 -0
- modules/scak/RESEARCH.md +670 -0
- modules/scak/agent_kernel/__init__.py +66 -0
- modules/scak/agent_kernel/analyzer.py +432 -0
- modules/scak/agent_kernel/auditor.py +31 -0
- modules/scak/agent_kernel/completeness_auditor.py +234 -0
- modules/scak/agent_kernel/detector.py +200 -0
- modules/scak/agent_kernel/kernel.py +741 -0
- modules/scak/agent_kernel/memory_manager.py +82 -0
- modules/scak/agent_kernel/models.py +372 -0
- modules/scak/agent_kernel/nudge_mechanism.py +260 -0
- modules/scak/agent_kernel/outcome_analyzer.py +335 -0
- modules/scak/agent_kernel/patcher.py +579 -0
- modules/scak/agent_kernel/semantic_analyzer.py +313 -0
- modules/scak/agent_kernel/semantic_purge.py +346 -0
- modules/scak/agent_kernel/simulator.py +447 -0
- modules/scak/agent_kernel/teacher.py +82 -0
- modules/scak/agent_kernel/triage.py +149 -0
- modules/scak/build_and_publish.ps1 +74 -0
- modules/scak/build_and_publish.sh +74 -0
- modules/scak/cli.py +471 -0
- modules/scak/dashboard.py +462 -0
- modules/scak/datasets/DATASET_CARD.md +219 -0
- modules/scak/datasets/README.md +143 -0
- modules/scak/datasets/gaia_vague_queries/vague_queries.json +262 -0
- modules/scak/datasets/hf_upload/README.md +219 -0
- modules/scak/datasets/hf_upload/scak_gaia_laziness.jsonl +50 -0
- modules/scak/datasets/prepare_hf_datasets.py +145 -0
- modules/scak/datasets/red_team/jailbreak_patterns.json +202 -0
- modules/scak/docker-compose.yml +99 -0
- modules/scak/docs/Adaptive-Memory-Hierarchy.md +319 -0
- modules/scak/docs/Data-Contracts-and-Schemas.md +285 -0
- modules/scak/docs/Dual-Loop-Architecture.md +344 -0
- modules/scak/docs/Enhanced-Features.md +612 -0
- modules/scak/docs/LANGCHAIN_INTEGRATION.md +572 -0
- modules/scak/docs/README.md +128 -0
- modules/scak/docs/Reference-Implementations.md +163 -0
- modules/scak/docs/SCAK_V2.md +374 -0
- modules/scak/docs/Three-Failure-Types.md +178 -0
- modules/scak/examples/basic_example.py +155 -0
- modules/scak/examples/circuit_breaker_lazy_eval_demo.py +243 -0
- modules/scak/examples/langchain_integration_example.py +339 -0
- modules/scak/examples/layer4_demo.py +243 -0
- modules/scak/examples/production_features_demo.py +353 -0
- modules/scak/examples/quick_demo.py +79 -0
- modules/scak/examples/scak_v2_demo.py +252 -0
- modules/scak/experiments/README.md +438 -0
- modules/scak/experiments/ablation_studies/README.md +192 -0
- modules/scak/experiments/ablation_studies/ablation_no_audit.py +116 -0
- modules/scak/experiments/ablation_studies/ablation_no_purge.py +133 -0
- modules/scak/experiments/chaos_engineering/README.md +332 -0
- modules/scak/experiments/context_efficiency_test.py +328 -0
- modules/scak/experiments/gaia_benchmark/README.md +208 -0
- modules/scak/experiments/laziness_benchmark.py +179 -0
- modules/scak/experiments/long_horizon_task_experiment.py +252 -0
- modules/scak/experiments/multi_agent_rag_experiment.py +284 -0
- modules/scak/experiments/results/ablation_table.md +12 -0
- modules/scak/experiments/results/long_horizon.json +36 -0
- modules/scak/experiments/results/multi_agent_rag.json +66 -0
- modules/scak/experiments/run_comprehensive_ablations.py +332 -0
- modules/scak/experiments/test_auditor_patcher_integration.py +251 -0
- modules/scak/notebooks/getting_started.ipynb +33 -0
- modules/scak/paper/ARXIV_SUBMISSION_METADATA.txt +109 -0
- modules/scak/paper/PAPER_CHECKLIST.md +304 -0
- modules/scak/paper/Paper.pdf +0 -0
- modules/scak/paper/README.md +113 -0
- modules/scak/paper/appendix.md +351 -0
- modules/scak/paper/arxiv/bibliography.bib +284 -0
- modules/scak/paper/arxiv/fig1_ooda_architecture.pdf +0 -0
- modules/scak/paper/arxiv/fig2_memory_hierarchy.pdf +0 -0
- modules/scak/paper/arxiv/fig3_gaia_results.pdf +0 -0
- modules/scak/paper/arxiv/fig4_ablation_heatmap.pdf +0 -0
- modules/scak/paper/arxiv/fig5_context_reduction.pdf +0 -0
- modules/scak/paper/arxiv/fig6_mttr_boxplot.pdf +0 -0
- modules/scak/paper/arxiv/main.aux +103 -0
- modules/scak/paper/arxiv/main.bbl +113 -0
- modules/scak/paper/arxiv/main.blg +55 -0
- modules/scak/paper/arxiv/main.out +31 -0
- modules/scak/paper/arxiv/main.pdf +0 -0
- modules/scak/paper/arxiv/main.tex +482 -0
- modules/scak/paper/arxiv_submission/bibliography.bib +284 -0
- modules/scak/paper/arxiv_submission/fig1_ooda_architecture.pdf +0 -0
- modules/scak/paper/arxiv_submission/fig2_memory_hierarchy.pdf +0 -0
- modules/scak/paper/arxiv_submission/fig3_gaia_results.pdf +0 -0
- modules/scak/paper/arxiv_submission/fig4_ablation_heatmap.pdf +0 -0
- modules/scak/paper/arxiv_submission/fig5_context_reduction.pdf +0 -0
- modules/scak/paper/arxiv_submission/fig6_mttr_boxplot.pdf +0 -0
- modules/scak/paper/arxiv_submission/main.aux +103 -0
- modules/scak/paper/arxiv_submission/main.bbl +113 -0
- modules/scak/paper/arxiv_submission/main.blg +55 -0
- modules/scak/paper/arxiv_submission/main.out +31 -0
- modules/scak/paper/arxiv_submission/main.pdf +0 -0
- modules/scak/paper/arxiv_submission/main.tex +482 -0
- modules/scak/paper/arxiv_submission.tar.gz +0 -0
- modules/scak/paper/bibliography.bib +284 -0
- modules/scak/paper/build.sh +55 -0
- modules/scak/paper/figures/README.md +32 -0
- modules/scak/paper/figures/fig1_ooda_architecture.md +75 -0
- modules/scak/paper/figures/fig1_ooda_architecture.pdf +0 -0
- modules/scak/paper/figures/fig1_ooda_architecture.png +0 -0
- modules/scak/paper/figures/fig2_memory_hierarchy.md +83 -0
- modules/scak/paper/figures/fig2_memory_hierarchy.pdf +0 -0
- modules/scak/paper/figures/fig2_memory_hierarchy.png +0 -0
- modules/scak/paper/figures/fig3_gaia_results.md +64 -0
- modules/scak/paper/figures/fig3_gaia_results.pdf +0 -0
- modules/scak/paper/figures/fig3_gaia_results.png +0 -0
- modules/scak/paper/figures/fig4_ablation_heatmap.md +64 -0
- modules/scak/paper/figures/fig4_ablation_heatmap.pdf +0 -0
- modules/scak/paper/figures/fig4_ablation_heatmap.png +0 -0
- modules/scak/paper/figures/fig5_context_reduction.md +71 -0
- modules/scak/paper/figures/fig5_context_reduction.pdf +0 -0
- modules/scak/paper/figures/fig5_context_reduction.png +0 -0
- modules/scak/paper/figures/fig6_mttr_boxplot.md +80 -0
- modules/scak/paper/figures/fig6_mttr_boxplot.pdf +0 -0
- modules/scak/paper/figures/fig6_mttr_boxplot.png +0 -0
- modules/scak/paper/figures/generate_figures.py +463 -0
- modules/scak/paper/main.aux +103 -0
- modules/scak/paper/main.bbl +113 -0
- modules/scak/paper/main.blg +55 -0
- modules/scak/paper/main.md +192 -0
- modules/scak/paper/main.out +31 -0
- modules/scak/paper/main.pdf +0 -0
- modules/scak/paper/main.tex +482 -0
- modules/scak/reproducibility/ABLATIONS.md +225 -0
- modules/scak/reproducibility/Dockerfile.reproducibility +34 -0
- modules/scak/reproducibility/README.md +421 -0
- modules/scak/reproducibility/requirements-pinned.txt +32 -0
- modules/scak/reproducibility/run_all_experiments.py +395 -0
- modules/scak/reproducibility/seed_control.py +53 -0
- modules/scak/reproducibility/statistical_analysis.py +302 -0
- modules/scak/requirements.txt +50 -0
- modules/scak/setup.py +93 -0
- modules/scak/src/__init__.py +124 -0
- modules/scak/src/agents/__init__.py +13 -0
- modules/scak/src/agents/conflict_resolution.py +732 -0
- modules/scak/src/agents/orchestrator.py +761 -0
- modules/scak/src/agents/pubsub.py +484 -0
- modules/scak/src/agents/shadow_teacher.py +344 -0
- modules/scak/src/agents/swarm.py +661 -0
- modules/scak/src/agents/worker.py +357 -0
- modules/scak/src/integrations/__init__.py +81 -0
- modules/scak/src/integrations/cmvk_adapter.py +430 -0
- modules/scak/src/integrations/control_plane_adapter.py +601 -0
- modules/scak/src/integrations/langchain_integration.py +902 -0
- modules/scak/src/interfaces/__init__.py +59 -0
- modules/scak/src/interfaces/llm_clients.py +505 -0
- modules/scak/src/interfaces/openapi_tools.py +611 -0
- modules/scak/src/interfaces/plugin_system.py +605 -0
- modules/scak/src/interfaces/protocols.py +365 -0
- modules/scak/src/interfaces/telemetry.py +464 -0
- modules/scak/src/interfaces/tool_registry.py +547 -0
- modules/scak/src/kernel/__init__.py +100 -0
- modules/scak/src/kernel/auditor.py +305 -0
- modules/scak/src/kernel/circuit_breaker.py +398 -0
- modules/scak/src/kernel/core.py +724 -0
- modules/scak/src/kernel/distributed.py +667 -0
- modules/scak/src/kernel/evolution.py +455 -0
- modules/scak/src/kernel/failover.py +621 -0
- modules/scak/src/kernel/governance.py +710 -0
- modules/scak/src/kernel/governance_v2.py +603 -0
- modules/scak/src/kernel/lazy_evaluator.py +514 -0
- modules/scak/src/kernel/load_testing.py +633 -0
- modules/scak/src/kernel/memory.py +945 -0
- modules/scak/src/kernel/patcher.py +581 -0
- modules/scak/src/kernel/rubric.py +419 -0
- modules/scak/src/kernel/schemas.py +390 -0
- modules/scak/src/kernel/skill_mapper.py +309 -0
- modules/scak/src/kernel/triage.py +149 -0
- modules/scak/src/mocks/__init__.py +99 -0
- modules/scak/tests/__init__.py +1 -0
- modules/scak/tests/test_circuit_breaker.py +403 -0
- modules/scak/tests/test_conflict_resolution.py +287 -0
- modules/scak/tests/test_dual_loop.py +463 -0
- modules/scak/tests/test_enhanced_features.py +421 -0
- modules/scak/tests/test_failover_and_load.py +438 -0
- modules/scak/tests/test_governance.py +185 -0
- modules/scak/tests/test_kernel.py +359 -0
- modules/scak/tests/test_langchain_integration.py +451 -0
- modules/scak/tests/test_lazy_evaluator.py +465 -0
- modules/scak/tests/test_llm_clients.py +122 -0
- modules/scak/tests/test_memory_controller.py +528 -0
- modules/scak/tests/test_orchestrator.py +181 -0
- modules/scak/tests/test_phase3_integration.py +265 -0
- modules/scak/tests/test_pubsub_swarm.py +203 -0
- modules/scak/tests/test_reference_implementations.py +240 -0
- modules/scak/tests/test_rubric.py +363 -0
- modules/scak/tests/test_scak_v2.py +651 -0
- modules/scak/tests/test_skill_mapper.py +217 -0
- modules/scak/tests/test_specific_failures.py +393 -0
- modules/scak/tests/test_tool_registry.py +264 -0
- modules/scak/tests/test_tools_and_plugins.py +303 -0
- modules/scak/tests/test_triage.py +596 -0
- modules/scak/tests/test_write_through.py +319 -0
- agent_os_kernel-1.1.0.dist-info/METADATA +0 -400
- agent_os_kernel-1.1.0.dist-info/RECORD +0 -12
- {agent_os_kernel-1.1.0.dist-info → agent_os_kernel-1.3.0.dist-info}/WHEEL +0 -0
- {agent_os_kernel-1.1.0.dist-info → agent_os_kernel-1.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,848 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Agent Control Plane - Main Interface
|
|
3
|
+
|
|
4
|
+
Layer 3: The Framework - The Governance Layer
|
|
5
|
+
|
|
6
|
+
The main control plane that integrates all components:
|
|
7
|
+
- Agent Kernel (via KernelInterface for dependency injection)
|
|
8
|
+
- Policy Engine
|
|
9
|
+
- Execution Engine
|
|
10
|
+
- Audit System
|
|
11
|
+
- Shadow Mode (simulation)
|
|
12
|
+
- Validators (via ValidatorInterface - MuteAgent pattern is now optional)
|
|
13
|
+
- Constraint Graphs (multi-dimensional)
|
|
14
|
+
- Supervisor Agents (via SupervisorInterface)
|
|
15
|
+
|
|
16
|
+
Allowed Dependencies:
|
|
17
|
+
- iatp (for message security)
|
|
18
|
+
- cmvk (for verification)
|
|
19
|
+
- caas (for context routing)
|
|
20
|
+
|
|
21
|
+
Forbidden Dependencies:
|
|
22
|
+
- scak (should implement KernelInterface instead)
|
|
23
|
+
- mute-agent as hard dependency (should use ValidatorInterface)
|
|
24
|
+
|
|
25
|
+
Pattern: Components are injected at runtime via PluginRegistry.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from typing import Dict, List, Optional, Any, Union
|
|
29
|
+
from datetime import datetime
|
|
30
|
+
import warnings
|
|
31
|
+
|
|
32
|
+
from .agent_kernel import (
|
|
33
|
+
AgentKernel, AgentContext, ExecutionRequest, ExecutionResult,
|
|
34
|
+
ActionType, PermissionLevel, PolicyRule, ExecutionStatus
|
|
35
|
+
)
|
|
36
|
+
from .policy_engine import PolicyEngine, ResourceQuota, RiskPolicy, create_default_policies
|
|
37
|
+
from .execution_engine import (
|
|
38
|
+
ExecutionEngine, ExecutionContext, SandboxLevel
|
|
39
|
+
)
|
|
40
|
+
from .example_executors import (
|
|
41
|
+
file_read_executor, code_execution_executor, api_call_executor
|
|
42
|
+
)
|
|
43
|
+
from .shadow_mode import ShadowModeExecutor, ShadowModeConfig, ReasoningStep
|
|
44
|
+
from .constraint_graphs import (
|
|
45
|
+
DataGraph, PolicyGraph, TemporalGraph, ConstraintGraphValidator
|
|
46
|
+
)
|
|
47
|
+
from .supervisor_agents import SupervisorAgent, SupervisorNetwork
|
|
48
|
+
from .agent_hibernation import HibernationManager, HibernationConfig
|
|
49
|
+
from .time_travel_debugger import TimeTravelDebugger, TimeTravelConfig
|
|
50
|
+
|
|
51
|
+
# Import interfaces for dependency injection
|
|
52
|
+
from .interfaces.kernel_interface import KernelInterface, KernelCapability
|
|
53
|
+
from .interfaces.plugin_interface import (
|
|
54
|
+
ValidatorInterface,
|
|
55
|
+
ExecutorInterface,
|
|
56
|
+
ContextRouterInterface,
|
|
57
|
+
SupervisorInterface,
|
|
58
|
+
ValidationResult,
|
|
59
|
+
)
|
|
60
|
+
from .interfaces.protocol_interfaces import (
|
|
61
|
+
MessageSecurityInterface,
|
|
62
|
+
VerificationInterface,
|
|
63
|
+
ContextRoutingInterface,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Import plugin registry for dependency injection
|
|
67
|
+
from .plugin_registry import PluginRegistry, PluginType, get_registry
|
|
68
|
+
|
|
69
|
+
# Import mute_agent for backward compatibility (deprecated pattern)
|
|
70
|
+
# New code should use PluginRegistry to register validators
|
|
71
|
+
from .mute_agent import MuteAgentValidator, MuteAgentConfig
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class AgentControlPlane:
|
|
75
|
+
"""
|
|
76
|
+
Agent Control Plane - Main interface for governed agent execution
|
|
77
|
+
|
|
78
|
+
Layer 3: The Framework - The Governance Layer
|
|
79
|
+
|
|
80
|
+
This is the primary interface for applications to interact with
|
|
81
|
+
the control plane. It integrates all governance, safety, and
|
|
82
|
+
execution components including:
|
|
83
|
+
- Shadow Mode for simulation
|
|
84
|
+
- Validators (via ValidatorInterface - replaces hard-coded Mute Agent)
|
|
85
|
+
- Constraint Graphs for multi-dimensional context
|
|
86
|
+
- Supervisor Agents (via SupervisorInterface)
|
|
87
|
+
|
|
88
|
+
Dependency Injection:
|
|
89
|
+
Components can be injected via the PluginRegistry:
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
from agent_control_plane import AgentControlPlane, PluginRegistry
|
|
93
|
+
|
|
94
|
+
# Get the registry
|
|
95
|
+
registry = PluginRegistry()
|
|
96
|
+
|
|
97
|
+
# Register custom kernel (e.g., SCAK)
|
|
98
|
+
registry.register_kernel(my_custom_kernel)
|
|
99
|
+
|
|
100
|
+
# Register validators
|
|
101
|
+
registry.register_validator(my_validator, action_types=["code_execution"])
|
|
102
|
+
|
|
103
|
+
# Create control plane (will use registered components)
|
|
104
|
+
control_plane = AgentControlPlane(use_plugin_registry=True)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Allowed Protocol Dependencies:
|
|
108
|
+
- iatp: Inter-Agent Transport Protocol (message security)
|
|
109
|
+
- cmvk: Cryptographic Message Verification Kit
|
|
110
|
+
- caas: Context-as-a-Service (context routing)
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
def __init__(
|
|
114
|
+
self,
|
|
115
|
+
enable_default_policies: bool = True,
|
|
116
|
+
enable_shadow_mode: bool = False,
|
|
117
|
+
enable_constraint_graphs: bool = False,
|
|
118
|
+
enable_hibernation: bool = False,
|
|
119
|
+
enable_time_travel: bool = False,
|
|
120
|
+
use_plugin_registry: bool = False,
|
|
121
|
+
kernel: Optional[KernelInterface] = None,
|
|
122
|
+
validators: Optional[List[ValidatorInterface]] = None,
|
|
123
|
+
context_router: Optional[Union[ContextRouterInterface, ContextRoutingInterface]] = None,
|
|
124
|
+
message_security: Optional[MessageSecurityInterface] = None,
|
|
125
|
+
verifier: Optional[VerificationInterface] = None,
|
|
126
|
+
hibernation_config: Optional[HibernationConfig] = None,
|
|
127
|
+
time_travel_config: Optional[TimeTravelConfig] = None,
|
|
128
|
+
):
|
|
129
|
+
"""
|
|
130
|
+
Initialize the Agent Control Plane.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
enable_default_policies: Whether to load default security policies
|
|
134
|
+
enable_shadow_mode: Whether to enable shadow/simulation mode
|
|
135
|
+
enable_constraint_graphs: Whether to enable constraint graph validation
|
|
136
|
+
enable_hibernation: Whether to enable agent hibernation (serverless agents)
|
|
137
|
+
enable_time_travel: Whether to enable time-travel debugging
|
|
138
|
+
use_plugin_registry: If True, use components from PluginRegistry
|
|
139
|
+
kernel: Optional custom kernel implementing KernelInterface
|
|
140
|
+
validators: Optional list of validators implementing ValidatorInterface
|
|
141
|
+
context_router: Optional context router for caas integration
|
|
142
|
+
message_security: Optional message security provider for iatp integration
|
|
143
|
+
verifier: Optional verifier for cmvk integration
|
|
144
|
+
hibernation_config: Optional configuration for hibernation
|
|
145
|
+
time_travel_config: Optional configuration for time-travel debugging
|
|
146
|
+
"""
|
|
147
|
+
# Plugin registry integration
|
|
148
|
+
self._use_plugin_registry = use_plugin_registry
|
|
149
|
+
self._registry = get_registry() if use_plugin_registry else None
|
|
150
|
+
|
|
151
|
+
# Use injected kernel or fall back to default AgentKernel
|
|
152
|
+
if kernel is not None:
|
|
153
|
+
self._custom_kernel = kernel
|
|
154
|
+
# Wrap custom kernel in compatibility layer
|
|
155
|
+
self.kernel = AgentKernel() # Default for now, custom kernel used via interface
|
|
156
|
+
elif use_plugin_registry and self._registry:
|
|
157
|
+
registered_kernel = self._registry.get_kernel()
|
|
158
|
+
self._custom_kernel = registered_kernel
|
|
159
|
+
self.kernel = AgentKernel() # Default fallback
|
|
160
|
+
else:
|
|
161
|
+
self._custom_kernel = None
|
|
162
|
+
self.kernel = AgentKernel()
|
|
163
|
+
|
|
164
|
+
self.policy_engine = PolicyEngine()
|
|
165
|
+
self.execution_engine = ExecutionEngine()
|
|
166
|
+
|
|
167
|
+
# Shadow Mode for simulation
|
|
168
|
+
self.shadow_mode_enabled = enable_shadow_mode
|
|
169
|
+
self.shadow_executor = ShadowModeExecutor(ShadowModeConfig(enabled=enable_shadow_mode))
|
|
170
|
+
|
|
171
|
+
# Validators (replaces hard-coded mute_validators)
|
|
172
|
+
# Support both legacy MuteAgentValidator and new ValidatorInterface
|
|
173
|
+
self.mute_validators: Dict[str, MuteAgentValidator] = {} # Legacy support
|
|
174
|
+
self._validators: List[ValidatorInterface] = [] # New interface-based validators
|
|
175
|
+
|
|
176
|
+
if validators:
|
|
177
|
+
self._validators.extend(validators)
|
|
178
|
+
elif use_plugin_registry and self._registry:
|
|
179
|
+
self._validators.extend(self._registry.get_all_validators())
|
|
180
|
+
|
|
181
|
+
# Protocol integrations (iatp, cmvk, caas)
|
|
182
|
+
self._context_router = context_router
|
|
183
|
+
self._message_security = message_security
|
|
184
|
+
self._verifier = verifier
|
|
185
|
+
|
|
186
|
+
if use_plugin_registry and self._registry:
|
|
187
|
+
if not self._context_router:
|
|
188
|
+
self._context_router = self._registry.get_context_router()
|
|
189
|
+
if not self._message_security:
|
|
190
|
+
self._message_security = self._registry.get_message_security()
|
|
191
|
+
if not self._verifier:
|
|
192
|
+
self._verifier = self._registry.get_verifier()
|
|
193
|
+
|
|
194
|
+
# Constraint Graphs
|
|
195
|
+
self.constraint_graphs_enabled = enable_constraint_graphs
|
|
196
|
+
if enable_constraint_graphs:
|
|
197
|
+
self.data_graph = DataGraph()
|
|
198
|
+
self.policy_graph = PolicyGraph()
|
|
199
|
+
self.temporal_graph = TemporalGraph()
|
|
200
|
+
self.constraint_validator = ConstraintGraphValidator(
|
|
201
|
+
self.data_graph,
|
|
202
|
+
self.policy_graph,
|
|
203
|
+
self.temporal_graph
|
|
204
|
+
)
|
|
205
|
+
else:
|
|
206
|
+
self.data_graph = None
|
|
207
|
+
self.policy_graph = None
|
|
208
|
+
self.temporal_graph = None
|
|
209
|
+
self.constraint_validator = None
|
|
210
|
+
|
|
211
|
+
# Supervisor Network
|
|
212
|
+
self.supervisor_network = SupervisorNetwork()
|
|
213
|
+
|
|
214
|
+
# Agent Hibernation (Serverless Agents)
|
|
215
|
+
self.hibernation_enabled = enable_hibernation
|
|
216
|
+
if enable_hibernation:
|
|
217
|
+
self.hibernation_manager = HibernationManager(hibernation_config or HibernationConfig())
|
|
218
|
+
else:
|
|
219
|
+
self.hibernation_manager = None
|
|
220
|
+
|
|
221
|
+
# Time-Travel Debugging
|
|
222
|
+
self.time_travel_enabled = enable_time_travel
|
|
223
|
+
if enable_time_travel:
|
|
224
|
+
# Pass FlightRecorder if kernel has audit_logger
|
|
225
|
+
flight_recorder = getattr(self.kernel, 'audit_logger', None)
|
|
226
|
+
self.time_travel_debugger = TimeTravelDebugger(
|
|
227
|
+
flight_recorder=flight_recorder,
|
|
228
|
+
config=time_travel_config or TimeTravelConfig()
|
|
229
|
+
)
|
|
230
|
+
else:
|
|
231
|
+
self.time_travel_debugger = None
|
|
232
|
+
|
|
233
|
+
# Register default executors
|
|
234
|
+
self._register_default_executors()
|
|
235
|
+
|
|
236
|
+
# Add default policies if requested
|
|
237
|
+
if enable_default_policies:
|
|
238
|
+
self._add_default_policies()
|
|
239
|
+
|
|
240
|
+
def create_agent(
|
|
241
|
+
self,
|
|
242
|
+
agent_id: str,
|
|
243
|
+
permissions: Optional[Dict[ActionType, PermissionLevel]] = None,
|
|
244
|
+
quota: Optional[ResourceQuota] = None
|
|
245
|
+
) -> AgentContext:
|
|
246
|
+
"""
|
|
247
|
+
Create a new agent with specified permissions and quotas
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
agent_id: Unique identifier for the agent
|
|
251
|
+
permissions: Dictionary of action types to permission levels
|
|
252
|
+
quota: Resource quota for the agent
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
AgentContext for the created agent session
|
|
256
|
+
"""
|
|
257
|
+
# Create agent session in kernel
|
|
258
|
+
context = self.kernel.create_agent_session(agent_id, permissions)
|
|
259
|
+
|
|
260
|
+
# Set quota if provided
|
|
261
|
+
if quota:
|
|
262
|
+
self.policy_engine.set_quota(agent_id, quota)
|
|
263
|
+
|
|
264
|
+
return context
|
|
265
|
+
|
|
266
|
+
def execute_action(
|
|
267
|
+
self,
|
|
268
|
+
agent_context: AgentContext,
|
|
269
|
+
action_type: ActionType,
|
|
270
|
+
parameters: Dict[str, Any],
|
|
271
|
+
execution_context: Optional[ExecutionContext] = None,
|
|
272
|
+
reasoning_chain: Optional[List[ReasoningStep]] = None
|
|
273
|
+
) -> Dict[str, Any]:
|
|
274
|
+
"""
|
|
275
|
+
Execute an action on behalf of an agent
|
|
276
|
+
|
|
277
|
+
This is the main entry point for agent actions. It goes through
|
|
278
|
+
the complete governance pipeline:
|
|
279
|
+
1. Validator validation (includes legacy Mute Agent support)
|
|
280
|
+
2. Permission check (Kernel)
|
|
281
|
+
3. Constraint Graph validation (if enabled)
|
|
282
|
+
4. Policy validation (Policy Engine)
|
|
283
|
+
5. Risk assessment (Kernel)
|
|
284
|
+
6. Rate limiting (Policy Engine)
|
|
285
|
+
7. Shadow Mode or Real Execution
|
|
286
|
+
8. Audit logging (Kernel)
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
agent_context: Context for the agent making the request
|
|
290
|
+
action_type: Type of action to execute
|
|
291
|
+
parameters: Parameters for the action
|
|
292
|
+
execution_context: Optional execution context (sandboxing, timeouts, etc.)
|
|
293
|
+
reasoning_chain: Optional reasoning steps that led to this action
|
|
294
|
+
|
|
295
|
+
Returns:
|
|
296
|
+
Dictionary with execution results and metadata
|
|
297
|
+
"""
|
|
298
|
+
# Create a temporary request for validation
|
|
299
|
+
temp_request = ExecutionRequest(
|
|
300
|
+
request_id="temp",
|
|
301
|
+
agent_context=agent_context,
|
|
302
|
+
action_type=action_type,
|
|
303
|
+
parameters=parameters,
|
|
304
|
+
timestamp=datetime.now()
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
# 1a. Validate against registered validators (new pattern)
|
|
308
|
+
for validator in self._validators:
|
|
309
|
+
result = validator.validate_request(temp_request)
|
|
310
|
+
if not result.is_valid:
|
|
311
|
+
return {
|
|
312
|
+
"success": False,
|
|
313
|
+
"error": result.reason,
|
|
314
|
+
"status": "validator_rejected",
|
|
315
|
+
"details": result.details
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
# 1b. Validate against legacy Mute Agent capabilities (backward compatibility)
|
|
319
|
+
if agent_context.agent_id in self.mute_validators:
|
|
320
|
+
validator = self.mute_validators[agent_context.agent_id]
|
|
321
|
+
result = validator.validate_request(temp_request)
|
|
322
|
+
if not result.is_valid:
|
|
323
|
+
return {
|
|
324
|
+
"success": False,
|
|
325
|
+
"error": result.reason,
|
|
326
|
+
"status": "capability_mismatch"
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
# 2. Submit request to kernel for permission check
|
|
330
|
+
request = self.kernel.submit_request(agent_context, action_type, parameters)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
if request.status == ExecutionStatus.DENIED:
|
|
334
|
+
return {
|
|
335
|
+
"success": False,
|
|
336
|
+
"error": "Request denied by kernel",
|
|
337
|
+
"request_id": request.request_id,
|
|
338
|
+
"status": request.status.value
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
# 3. Validate against Constraint Graphs (if enabled)
|
|
342
|
+
if self.constraint_graphs_enabled and self.constraint_validator:
|
|
343
|
+
is_valid, violations = self.constraint_validator.validate_request(request)
|
|
344
|
+
if not is_valid:
|
|
345
|
+
return {
|
|
346
|
+
"success": False,
|
|
347
|
+
"error": f"Constraint graph violations: {', '.join(violations)}",
|
|
348
|
+
"request_id": request.request_id,
|
|
349
|
+
"status": "constraint_violation",
|
|
350
|
+
"violations": violations
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
# 4. Validate with policy engine
|
|
354
|
+
is_valid, reason = self.policy_engine.validate_request(request)
|
|
355
|
+
if not is_valid:
|
|
356
|
+
return {
|
|
357
|
+
"success": False,
|
|
358
|
+
"error": f"Policy validation failed: {reason}",
|
|
359
|
+
"request_id": request.request_id,
|
|
360
|
+
"status": "policy_violation"
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
# 5. Validate risk level
|
|
364
|
+
if not self.policy_engine.validate_risk(request, request.risk_score):
|
|
365
|
+
return {
|
|
366
|
+
"success": False,
|
|
367
|
+
"error": "Request risk level too high",
|
|
368
|
+
"request_id": request.request_id,
|
|
369
|
+
"risk_score": request.risk_score,
|
|
370
|
+
"status": "risk_denied"
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
# 6. Execute in Shadow Mode or Real Mode
|
|
374
|
+
if self.shadow_mode_enabled:
|
|
375
|
+
# Shadow mode: simulate without executing
|
|
376
|
+
simulation = self.shadow_executor.execute_in_shadow(request, reasoning_chain)
|
|
377
|
+
return {
|
|
378
|
+
"success": True,
|
|
379
|
+
"result": simulation.simulated_result,
|
|
380
|
+
"request_id": request.request_id,
|
|
381
|
+
"status": "simulated",
|
|
382
|
+
"outcome": simulation.outcome.value,
|
|
383
|
+
"actual_impact": simulation.actual_impact,
|
|
384
|
+
"risk_score": request.risk_score,
|
|
385
|
+
"note": "This was executed in SHADOW MODE - no actual execution occurred"
|
|
386
|
+
}
|
|
387
|
+
else:
|
|
388
|
+
# Real execution
|
|
389
|
+
execution_result = self.execution_engine.execute(request, execution_context)
|
|
390
|
+
|
|
391
|
+
# Update kernel with execution result
|
|
392
|
+
if execution_result["success"]:
|
|
393
|
+
kernel_result = self.kernel.execute(request)
|
|
394
|
+
return {
|
|
395
|
+
"success": True,
|
|
396
|
+
"result": execution_result["result"],
|
|
397
|
+
"request_id": request.request_id,
|
|
398
|
+
"metrics": execution_result.get("metrics", {}),
|
|
399
|
+
"risk_score": request.risk_score
|
|
400
|
+
}
|
|
401
|
+
else:
|
|
402
|
+
return execution_result
|
|
403
|
+
|
|
404
|
+
def add_policy_rule(self, rule: PolicyRule):
|
|
405
|
+
"""Add a custom policy rule"""
|
|
406
|
+
self.kernel.add_policy_rule(rule)
|
|
407
|
+
self.policy_engine.add_custom_rule(rule)
|
|
408
|
+
|
|
409
|
+
def set_agent_quota(self, agent_id: str, quota: ResourceQuota):
|
|
410
|
+
"""Set resource quota for an agent"""
|
|
411
|
+
self.policy_engine.set_quota(agent_id, quota)
|
|
412
|
+
|
|
413
|
+
def set_risk_policy(self, policy_id: str, policy: RiskPolicy):
|
|
414
|
+
"""Set a risk policy"""
|
|
415
|
+
self.policy_engine.set_risk_policy(policy_id, policy)
|
|
416
|
+
|
|
417
|
+
def get_agent_status(self, agent_id: str) -> Dict[str, Any]:
|
|
418
|
+
"""Get comprehensive status for an agent"""
|
|
419
|
+
return {
|
|
420
|
+
"agent_id": agent_id,
|
|
421
|
+
"quota_status": self.policy_engine.get_quota_status(agent_id),
|
|
422
|
+
"active_executions": len([
|
|
423
|
+
ctx for ctx in self.execution_engine.get_active_executions().values()
|
|
424
|
+
]),
|
|
425
|
+
"execution_history": self.execution_engine.get_execution_history(agent_id, limit=10)
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
def get_audit_log(self, limit: int = 100) -> List[Dict[str, Any]]:
|
|
429
|
+
"""Get audit log entries"""
|
|
430
|
+
return self.kernel.get_audit_log()[-limit:]
|
|
431
|
+
|
|
432
|
+
def get_execution_history(
|
|
433
|
+
self,
|
|
434
|
+
agent_id: Optional[str] = None,
|
|
435
|
+
limit: int = 100
|
|
436
|
+
) -> List[Dict[str, Any]]:
|
|
437
|
+
"""Get execution history"""
|
|
438
|
+
return self.execution_engine.get_execution_history(agent_id, limit)
|
|
439
|
+
|
|
440
|
+
def _register_default_executors(self):
|
|
441
|
+
"""Register default executors for common action types"""
|
|
442
|
+
self.execution_engine.register_executor(ActionType.FILE_READ, file_read_executor)
|
|
443
|
+
self.execution_engine.register_executor(ActionType.CODE_EXECUTION, code_execution_executor)
|
|
444
|
+
self.execution_engine.register_executor(ActionType.API_CALL, api_call_executor)
|
|
445
|
+
|
|
446
|
+
def _add_default_policies(self):
|
|
447
|
+
"""Add default security policies"""
|
|
448
|
+
for policy in create_default_policies():
|
|
449
|
+
self.add_policy_rule(policy)
|
|
450
|
+
|
|
451
|
+
# ===== New Methods for Advanced Features =====
|
|
452
|
+
|
|
453
|
+
def enable_mute_agent(self, agent_id: str, config: MuteAgentConfig):
|
|
454
|
+
"""
|
|
455
|
+
Enable Mute Agent mode for an agent.
|
|
456
|
+
|
|
457
|
+
The agent will only execute actions that match its defined capabilities
|
|
458
|
+
and return NULL for out-of-scope requests.
|
|
459
|
+
"""
|
|
460
|
+
self.mute_validators[agent_id] = MuteAgentValidator(config)
|
|
461
|
+
|
|
462
|
+
def enable_shadow_mode(self, enabled: bool = True):
|
|
463
|
+
"""
|
|
464
|
+
Enable or disable shadow mode for all executions.
|
|
465
|
+
|
|
466
|
+
In shadow mode, actions are simulated but not actually executed.
|
|
467
|
+
"""
|
|
468
|
+
self.shadow_mode_enabled = enabled
|
|
469
|
+
self.shadow_executor.config.enabled = enabled
|
|
470
|
+
|
|
471
|
+
def get_shadow_simulations(self, agent_id: Optional[str] = None) -> List[Any]:
|
|
472
|
+
"""Get shadow mode simulation log"""
|
|
473
|
+
return self.shadow_executor.get_simulation_log(agent_id)
|
|
474
|
+
|
|
475
|
+
def get_shadow_statistics(self) -> Dict[str, Any]:
|
|
476
|
+
"""Get statistics about shadow mode executions"""
|
|
477
|
+
return self.shadow_executor.get_statistics()
|
|
478
|
+
|
|
479
|
+
def add_supervisor(self, supervisor: SupervisorAgent):
|
|
480
|
+
"""Add a supervisor agent to monitor worker agents"""
|
|
481
|
+
self.supervisor_network.add_supervisor(supervisor)
|
|
482
|
+
|
|
483
|
+
def run_supervision(self) -> Dict[str, List[Any]]:
|
|
484
|
+
"""
|
|
485
|
+
Run a supervision cycle to check for violations.
|
|
486
|
+
|
|
487
|
+
Returns violations detected by all supervisors.
|
|
488
|
+
"""
|
|
489
|
+
execution_log = self.get_execution_history()
|
|
490
|
+
audit_log = self.get_audit_log()
|
|
491
|
+
return self.supervisor_network.run_supervision_cycle(execution_log, audit_log)
|
|
492
|
+
|
|
493
|
+
def get_supervisor_summary(self) -> Dict[str, Any]:
|
|
494
|
+
"""Get summary of supervisor network activity"""
|
|
495
|
+
return self.supervisor_network.get_network_summary()
|
|
496
|
+
|
|
497
|
+
# ===== Plugin Registry Integration Methods =====
|
|
498
|
+
|
|
499
|
+
def register_validator(
|
|
500
|
+
self,
|
|
501
|
+
validator: ValidatorInterface,
|
|
502
|
+
action_types: Optional[List[str]] = None
|
|
503
|
+
) -> None:
|
|
504
|
+
"""
|
|
505
|
+
Register a validator with the control plane.
|
|
506
|
+
|
|
507
|
+
This is the preferred method for adding validators instead of
|
|
508
|
+
using enable_mute_agent() directly.
|
|
509
|
+
|
|
510
|
+
Args:
|
|
511
|
+
validator: Validator implementing ValidatorInterface
|
|
512
|
+
action_types: Optional list of action types this validator handles
|
|
513
|
+
"""
|
|
514
|
+
self._validators.append(validator)
|
|
515
|
+
|
|
516
|
+
# Also register with plugin registry if available
|
|
517
|
+
if self._registry:
|
|
518
|
+
self._registry.register_validator(validator, action_types=action_types)
|
|
519
|
+
|
|
520
|
+
def register_kernel(self, kernel: KernelInterface) -> None:
|
|
521
|
+
"""
|
|
522
|
+
Register a custom kernel with the control plane.
|
|
523
|
+
|
|
524
|
+
This allows injecting custom kernels like SCAK without hard imports.
|
|
525
|
+
|
|
526
|
+
Args:
|
|
527
|
+
kernel: Kernel implementing KernelInterface
|
|
528
|
+
"""
|
|
529
|
+
self._custom_kernel = kernel
|
|
530
|
+
|
|
531
|
+
# Also register with plugin registry if available
|
|
532
|
+
if self._registry:
|
|
533
|
+
self._registry.register_kernel(kernel)
|
|
534
|
+
|
|
535
|
+
def register_context_router(
|
|
536
|
+
self,
|
|
537
|
+
router: Union[ContextRouterInterface, ContextRoutingInterface]
|
|
538
|
+
) -> None:
|
|
539
|
+
"""
|
|
540
|
+
Register a context router for caas integration.
|
|
541
|
+
|
|
542
|
+
Args:
|
|
543
|
+
router: Context router implementing ContextRouterInterface
|
|
544
|
+
"""
|
|
545
|
+
self._context_router = router
|
|
546
|
+
|
|
547
|
+
if self._registry:
|
|
548
|
+
self._registry.register_context_router(router)
|
|
549
|
+
|
|
550
|
+
def register_message_security(self, security: MessageSecurityInterface) -> None:
|
|
551
|
+
"""
|
|
552
|
+
Register a message security provider for iatp integration.
|
|
553
|
+
|
|
554
|
+
Args:
|
|
555
|
+
security: Security provider implementing MessageSecurityInterface
|
|
556
|
+
"""
|
|
557
|
+
self._message_security = security
|
|
558
|
+
|
|
559
|
+
if self._registry:
|
|
560
|
+
self._registry.register_message_security(security)
|
|
561
|
+
|
|
562
|
+
def register_verifier(self, verifier: VerificationInterface) -> None:
|
|
563
|
+
"""
|
|
564
|
+
Register a verifier for cmvk integration.
|
|
565
|
+
|
|
566
|
+
Args:
|
|
567
|
+
verifier: Verifier implementing VerificationInterface
|
|
568
|
+
"""
|
|
569
|
+
self._verifier = verifier
|
|
570
|
+
|
|
571
|
+
if self._registry:
|
|
572
|
+
self._registry.register_verifier(verifier)
|
|
573
|
+
|
|
574
|
+
def get_registered_validators(self) -> List[ValidatorInterface]:
|
|
575
|
+
"""Get all registered validators"""
|
|
576
|
+
return self._validators.copy()
|
|
577
|
+
|
|
578
|
+
def get_plugin_registry(self) -> Optional[PluginRegistry]:
|
|
579
|
+
"""Get the plugin registry if enabled"""
|
|
580
|
+
return self._registry
|
|
581
|
+
|
|
582
|
+
# Constraint Graph methods
|
|
583
|
+
|
|
584
|
+
def add_data_table(self, table_name: str, schema: Dict[str, Any], metadata: Optional[Dict] = None):
|
|
585
|
+
"""Add a database table to the data graph"""
|
|
586
|
+
if self.data_graph:
|
|
587
|
+
self.data_graph.add_database_table(table_name, schema, metadata)
|
|
588
|
+
|
|
589
|
+
def add_data_path(self, path: str, access_level: str = "read", metadata: Optional[Dict] = None):
|
|
590
|
+
"""Add a file path to the data graph"""
|
|
591
|
+
if self.data_graph:
|
|
592
|
+
self.data_graph.add_file_path(path, access_level, metadata)
|
|
593
|
+
|
|
594
|
+
def add_policy_constraint(self, rule_id: str, name: str, applies_to: List[str], rule_type: str):
|
|
595
|
+
"""Add a policy constraint to the policy graph"""
|
|
596
|
+
if self.policy_graph:
|
|
597
|
+
self.policy_graph.add_policy_rule(rule_id, name, applies_to, rule_type)
|
|
598
|
+
|
|
599
|
+
def add_maintenance_window(self, window_id: str, start_time, end_time, blocked_actions: List[ActionType]):
|
|
600
|
+
"""Add a maintenance window to the temporal graph"""
|
|
601
|
+
if self.temporal_graph:
|
|
602
|
+
self.temporal_graph.add_maintenance_window(window_id, start_time, end_time, blocked_actions)
|
|
603
|
+
|
|
604
|
+
def get_constraint_validation_log(self) -> List[Dict[str, Any]]:
|
|
605
|
+
"""Get log of constraint graph validations"""
|
|
606
|
+
if self.constraint_validator:
|
|
607
|
+
return self.constraint_validator.get_validation_log()
|
|
608
|
+
return []
|
|
609
|
+
|
|
610
|
+
# ===== Agent Hibernation Methods (Serverless Agents) =====
|
|
611
|
+
|
|
612
|
+
def hibernate_agent(
|
|
613
|
+
self,
|
|
614
|
+
agent_id: str,
|
|
615
|
+
agent_context: AgentContext,
|
|
616
|
+
caas_pointer: Optional[str] = None,
|
|
617
|
+
additional_state: Optional[Dict[str, Any]] = None
|
|
618
|
+
):
|
|
619
|
+
"""
|
|
620
|
+
Hibernate an agent by serializing its state to disk.
|
|
621
|
+
|
|
622
|
+
This implements the "Serverless Agents" pattern - agents sitting idle
|
|
623
|
+
in memory are hibernated to disk, removing the need for "always-on" servers.
|
|
624
|
+
|
|
625
|
+
Args:
|
|
626
|
+
agent_id: Agent identifier
|
|
627
|
+
agent_context: Agent context to hibernate
|
|
628
|
+
caas_pointer: Optional pointer to context in caas (Context-as-a-Service)
|
|
629
|
+
additional_state: Optional additional state to serialize
|
|
630
|
+
|
|
631
|
+
Returns:
|
|
632
|
+
Metadata about the hibernated agent
|
|
633
|
+
"""
|
|
634
|
+
if not self.hibernation_enabled or not self.hibernation_manager:
|
|
635
|
+
raise RuntimeError("Hibernation is not enabled")
|
|
636
|
+
|
|
637
|
+
return self.hibernation_manager.hibernate_agent(
|
|
638
|
+
agent_id, agent_context, caas_pointer, additional_state
|
|
639
|
+
)
|
|
640
|
+
|
|
641
|
+
def wake_agent(self, agent_id: str) -> Dict[str, Any]:
|
|
642
|
+
"""
|
|
643
|
+
Wake up a hibernated agent and restore its state.
|
|
644
|
+
|
|
645
|
+
Args:
|
|
646
|
+
agent_id: Agent identifier to wake
|
|
647
|
+
|
|
648
|
+
Returns:
|
|
649
|
+
Restored agent state
|
|
650
|
+
"""
|
|
651
|
+
if not self.hibernation_enabled or not self.hibernation_manager:
|
|
652
|
+
raise RuntimeError("Hibernation is not enabled")
|
|
653
|
+
|
|
654
|
+
return self.hibernation_manager.wake_agent(agent_id)
|
|
655
|
+
|
|
656
|
+
def is_agent_hibernated(self, agent_id: str) -> bool:
|
|
657
|
+
"""Check if an agent is currently hibernated"""
|
|
658
|
+
if not self.hibernation_enabled or not self.hibernation_manager:
|
|
659
|
+
return False
|
|
660
|
+
|
|
661
|
+
return self.hibernation_manager.is_agent_hibernated(agent_id)
|
|
662
|
+
|
|
663
|
+
def record_agent_activity(self, agent_id: str):
|
|
664
|
+
"""Record activity for an agent (resets idle timer)"""
|
|
665
|
+
if self.hibernation_enabled and self.hibernation_manager:
|
|
666
|
+
self.hibernation_manager.record_agent_activity(agent_id)
|
|
667
|
+
|
|
668
|
+
def hibernate_idle_agents(self, min_idle_seconds: Optional[int] = None) -> List[str]:
|
|
669
|
+
"""
|
|
670
|
+
Automatically hibernate agents that have been idle.
|
|
671
|
+
|
|
672
|
+
Args:
|
|
673
|
+
min_idle_seconds: Minimum idle time (uses config default if None)
|
|
674
|
+
|
|
675
|
+
Returns:
|
|
676
|
+
List of agent IDs that were hibernated
|
|
677
|
+
"""
|
|
678
|
+
if not self.hibernation_enabled or not self.hibernation_manager:
|
|
679
|
+
return []
|
|
680
|
+
|
|
681
|
+
idle_agents = self.hibernation_manager.get_idle_agents(min_idle_seconds)
|
|
682
|
+
hibernated = []
|
|
683
|
+
|
|
684
|
+
for agent_id in idle_agents:
|
|
685
|
+
# Get agent context from active sessions
|
|
686
|
+
if agent_id in self.kernel.active_sessions:
|
|
687
|
+
session_id = None
|
|
688
|
+
for sid, ctx in self.kernel.active_sessions.items():
|
|
689
|
+
if ctx.agent_id == agent_id:
|
|
690
|
+
session_id = sid
|
|
691
|
+
break
|
|
692
|
+
|
|
693
|
+
if session_id:
|
|
694
|
+
agent_context = self.kernel.active_sessions[session_id]
|
|
695
|
+
try:
|
|
696
|
+
self.hibernate_agent(agent_id, agent_context)
|
|
697
|
+
hibernated.append(agent_id)
|
|
698
|
+
# Remove from active sessions
|
|
699
|
+
del self.kernel.active_sessions[session_id]
|
|
700
|
+
except Exception as e:
|
|
701
|
+
self.kernel.logger.error(f"Failed to hibernate idle agent {agent_id}: {e}")
|
|
702
|
+
|
|
703
|
+
return hibernated
|
|
704
|
+
|
|
705
|
+
def get_hibernation_statistics(self) -> Dict[str, Any]:
|
|
706
|
+
"""Get statistics about agent hibernation"""
|
|
707
|
+
if not self.hibernation_enabled or not self.hibernation_manager:
|
|
708
|
+
return {"enabled": False}
|
|
709
|
+
|
|
710
|
+
return self.hibernation_manager.get_statistics()
|
|
711
|
+
|
|
712
|
+
# ===== Time-Travel Debugging Methods =====
|
|
713
|
+
|
|
714
|
+
def replay_agent_history(
|
|
715
|
+
self,
|
|
716
|
+
agent_id: str,
|
|
717
|
+
minutes: int,
|
|
718
|
+
callback: Optional[callable] = None
|
|
719
|
+
):
|
|
720
|
+
"""
|
|
721
|
+
Replay the last N minutes of an agent's life exactly as it happened.
|
|
722
|
+
|
|
723
|
+
This implements "Time-Travel Debugging" - re-run agent actions from history
|
|
724
|
+
for debugging and analysis.
|
|
725
|
+
|
|
726
|
+
Args:
|
|
727
|
+
agent_id: Agent identifier
|
|
728
|
+
minutes: Number of minutes to replay
|
|
729
|
+
callback: Optional callback for each replayed event
|
|
730
|
+
|
|
731
|
+
Returns:
|
|
732
|
+
ReplaySession for the replay
|
|
733
|
+
"""
|
|
734
|
+
if not self.time_travel_enabled or not self.time_travel_debugger:
|
|
735
|
+
raise RuntimeError("Time-travel debugging is not enabled")
|
|
736
|
+
|
|
737
|
+
session = self.time_travel_debugger.replay_time_window(agent_id, minutes)
|
|
738
|
+
|
|
739
|
+
if callback:
|
|
740
|
+
self.time_travel_debugger.replay_agent_history(
|
|
741
|
+
agent_id, session.session_id, callback
|
|
742
|
+
)
|
|
743
|
+
|
|
744
|
+
return session
|
|
745
|
+
|
|
746
|
+
def capture_agent_state_snapshot(
|
|
747
|
+
self,
|
|
748
|
+
agent_id: str,
|
|
749
|
+
agent_context: AgentContext,
|
|
750
|
+
metadata: Optional[Dict[str, Any]] = None
|
|
751
|
+
):
|
|
752
|
+
"""
|
|
753
|
+
Capture a point-in-time snapshot of agent state for time-travel debugging.
|
|
754
|
+
|
|
755
|
+
Args:
|
|
756
|
+
agent_id: Agent identifier
|
|
757
|
+
agent_context: Agent context to snapshot
|
|
758
|
+
metadata: Optional metadata
|
|
759
|
+
"""
|
|
760
|
+
if not self.time_travel_enabled or not self.time_travel_debugger:
|
|
761
|
+
return
|
|
762
|
+
|
|
763
|
+
# Convert agent context to serializable state
|
|
764
|
+
state = {
|
|
765
|
+
"session_id": agent_context.session_id,
|
|
766
|
+
"created_at": agent_context.created_at.isoformat(),
|
|
767
|
+
"permissions": {str(k): v.value for k, v in agent_context.permissions.items()},
|
|
768
|
+
"metadata": agent_context.metadata
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
self.time_travel_debugger.capture_state_snapshot(agent_id, state, metadata)
|
|
772
|
+
|
|
773
|
+
def get_replay_summary(self, session_id: str) -> Dict[str, Any]:
|
|
774
|
+
"""Get summary of a replay session"""
|
|
775
|
+
if not self.time_travel_enabled or not self.time_travel_debugger:
|
|
776
|
+
raise RuntimeError("Time-travel debugging is not enabled")
|
|
777
|
+
|
|
778
|
+
return self.time_travel_debugger.get_replay_summary(session_id)
|
|
779
|
+
|
|
780
|
+
def get_time_travel_statistics(self) -> Dict[str, Any]:
|
|
781
|
+
"""Get statistics about time-travel debugging"""
|
|
782
|
+
if not self.time_travel_enabled or not self.time_travel_debugger:
|
|
783
|
+
return {"enabled": False}
|
|
784
|
+
|
|
785
|
+
return self.time_travel_debugger.get_statistics()
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
# Convenience functions for common operations
|
|
790
|
+
|
|
791
|
+
def create_read_only_agent(control_plane: AgentControlPlane, agent_id: str) -> AgentContext:
|
|
792
|
+
"""Create an agent with read-only permissions"""
|
|
793
|
+
permissions = {
|
|
794
|
+
ActionType.FILE_READ: PermissionLevel.READ_ONLY,
|
|
795
|
+
ActionType.DATABASE_QUERY: PermissionLevel.READ_ONLY,
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
quota = ResourceQuota(
|
|
799
|
+
agent_id=agent_id,
|
|
800
|
+
max_requests_per_minute=30,
|
|
801
|
+
max_requests_per_hour=500,
|
|
802
|
+
allowed_action_types=[ActionType.FILE_READ, ActionType.DATABASE_QUERY]
|
|
803
|
+
)
|
|
804
|
+
|
|
805
|
+
return control_plane.create_agent(agent_id, permissions, quota)
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
def create_standard_agent(control_plane: AgentControlPlane, agent_id: str) -> AgentContext:
|
|
809
|
+
"""Create an agent with standard permissions"""
|
|
810
|
+
permissions = {
|
|
811
|
+
ActionType.FILE_READ: PermissionLevel.READ_ONLY,
|
|
812
|
+
ActionType.FILE_WRITE: PermissionLevel.READ_WRITE,
|
|
813
|
+
ActionType.API_CALL: PermissionLevel.READ_WRITE,
|
|
814
|
+
ActionType.DATABASE_QUERY: PermissionLevel.READ_ONLY,
|
|
815
|
+
ActionType.CODE_EXECUTION: PermissionLevel.READ_WRITE,
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
quota = ResourceQuota(
|
|
819
|
+
agent_id=agent_id,
|
|
820
|
+
max_requests_per_minute=60,
|
|
821
|
+
max_requests_per_hour=1000,
|
|
822
|
+
allowed_action_types=[
|
|
823
|
+
ActionType.FILE_READ,
|
|
824
|
+
ActionType.FILE_WRITE,
|
|
825
|
+
ActionType.API_CALL,
|
|
826
|
+
ActionType.DATABASE_QUERY,
|
|
827
|
+
ActionType.CODE_EXECUTION,
|
|
828
|
+
]
|
|
829
|
+
)
|
|
830
|
+
|
|
831
|
+
return control_plane.create_agent(agent_id, permissions, quota)
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
def create_admin_agent(control_plane: AgentControlPlane, agent_id: str) -> AgentContext:
|
|
835
|
+
"""Create an agent with admin permissions"""
|
|
836
|
+
permissions = {
|
|
837
|
+
action_type: PermissionLevel.ADMIN
|
|
838
|
+
for action_type in ActionType
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
quota = ResourceQuota(
|
|
842
|
+
agent_id=agent_id,
|
|
843
|
+
max_requests_per_minute=120,
|
|
844
|
+
max_requests_per_hour=5000,
|
|
845
|
+
allowed_action_types=list(ActionType)
|
|
846
|
+
)
|
|
847
|
+
|
|
848
|
+
return control_plane.create_agent(agent_id, permissions, quota)
|