agent_hypervisor 3.3.0__tar.gz → 3.5.0__tar.gz
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_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/.gitignore +3 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/PKG-INFO +1 -1
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/dashboard/requirements.txt +1 -1
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/pyproject.toml +1 -1
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/api/server.py +29 -1
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/CHANGELOG.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/LICENSE +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/SECURITY.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/benchmarks/bench_hypervisor.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/benchmarks/results/BENCHMARKS.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/benchmarks/results/benchmarks.json +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/docs/api-reference.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/docs/joint-liability-guide.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/dashboard/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/dashboard/app.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/demo.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/Dockerfile +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/app/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/app/dashboard.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/app/sample_workflow.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/app/server.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/config/hypervisor.yaml +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/docker-compose.yml +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/requirements.txt +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/notebooks/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/notebooks/hypervisor-exploration.ipynb +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/api/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/api/models.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/audit/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/audit/commitment.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/audit/delta.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/audit/gc.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/cli/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/cli/formatters.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/cli/session_commands.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/constants.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/core.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/iatp_adapter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/nexus_adapter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/verification_adapter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/attribution.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/ledger.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/quarantine.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/slashing.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/liability/vouching.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/models.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/causal_trace.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/event_bus.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/prometheus_collector.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/saga_span_exporter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/providers.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/py.typed +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/reversibility/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/reversibility/registry.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/rings/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/rings/breach_detector.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/rings/classifier.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/rings/elevation.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/rings/enforcer.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/checkpoint.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/dsl.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/fan_out.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/orchestrator.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/schema.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/saga/state_machine.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/security/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/security/kill_switch.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/security/rate_limiter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/session/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/session/intent_locks.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/session/isolation.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/session/sso.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/session/vector_clock.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/verification/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/verification/history.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/integration/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/integration/test_hypervisor_e2e.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/integration/test_scenarios.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_agent_manager.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_breach_detector.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_classifier.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_kill_switch.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_rate_limiter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/test_shapley_attribution.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/__init__.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_audit.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_cli.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_config_validation.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_liability.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_liability_improvements.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_models.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_observability.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_prometheus_collector.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_reversibility_registry.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_ring_improvements.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_rings.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_saga.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_saga_improvements.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_saga_schema.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_saga_span_exporter.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_session.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_session_security.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_slashing.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tests/unit/test_vfs_substrate.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/execution-rings-workflow/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/execution-rings-workflow/demo.py +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/saga-compensation/README.md +0 -0
- {agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/saga-compensation/demo.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent_hypervisor
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: Public Preview — Agent Hypervisor: Runtime supervisor for multi-agent Shared Sessions with Execution Rings, Joint Liability, Saga Orchestration, and hash-chained audit trails
|
|
5
5
|
Project-URL: Homepage, https://github.com/microsoft/agent-governance-toolkit
|
|
6
6
|
Project-URL: Repository, https://github.com/microsoft/agent-governance-toolkit
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent_hypervisor"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.5.0"
|
|
8
8
|
description = "Public Preview — Agent Hypervisor: Runtime supervisor for multi-agent Shared Sessions with Execution Rings, Joint Liability, Saga Orchestration, and hash-chained audit trails"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -58,6 +58,34 @@ from hypervisor.observability.event_bus import EventType, HypervisorEventBus
|
|
|
58
58
|
|
|
59
59
|
logger = logging.getLogger(__name__)
|
|
60
60
|
|
|
61
|
+
|
|
62
|
+
def _parse_cors_origins(raw: str) -> list[str]:
|
|
63
|
+
"""Parse, validate, and return CORS origins.
|
|
64
|
+
|
|
65
|
+
Rejects ``*`` when credentials are enabled, and validates that each
|
|
66
|
+
origin has a scheme and a non-empty hostname.
|
|
67
|
+
"""
|
|
68
|
+
origins: list[str] = []
|
|
69
|
+
for origin in raw.split(","):
|
|
70
|
+
origin = origin.strip()
|
|
71
|
+
if not origin:
|
|
72
|
+
continue
|
|
73
|
+
if origin == "*":
|
|
74
|
+
logger.warning(
|
|
75
|
+
"CORS origin '*' is not allowed with allow_credentials=True — skipping"
|
|
76
|
+
)
|
|
77
|
+
continue
|
|
78
|
+
from urllib.parse import urlparse
|
|
79
|
+
parsed = urlparse(origin)
|
|
80
|
+
if not parsed.scheme or not parsed.hostname:
|
|
81
|
+
logger.warning("Invalid CORS origin (missing scheme or host): %s — skipping", origin)
|
|
82
|
+
continue
|
|
83
|
+
origins.append(origin)
|
|
84
|
+
if not origins:
|
|
85
|
+
logger.warning("No valid CORS origins configured — falling back to localhost defaults")
|
|
86
|
+
origins = ["http://localhost:3000", "http://localhost:8080"]
|
|
87
|
+
return origins
|
|
88
|
+
|
|
61
89
|
# ── Global state ────────────────────────────────────────────────────────────
|
|
62
90
|
|
|
63
91
|
_hypervisor: Hypervisor | None = None
|
|
@@ -127,7 +155,7 @@ def create_app() -> FastAPI:
|
|
|
127
155
|
|
|
128
156
|
application.add_middleware(
|
|
129
157
|
CORSMiddleware,
|
|
130
|
-
allow_origins=os.environ.get("CORS_ALLOWED_ORIGINS", "http://localhost:3000,http://localhost:8080")
|
|
158
|
+
allow_origins=_parse_cors_origins(os.environ.get("CORS_ALLOWED_ORIGINS", "http://localhost:3000,http://localhost:8080")),
|
|
131
159
|
allow_credentials=True,
|
|
132
160
|
allow_methods=["*"],
|
|
133
161
|
allow_headers=["*"],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/app/sample_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/config/hypervisor.yaml
RENAMED
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/examples/docker-compose/docker-compose.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/iatp_adapter.py
RENAMED
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/integrations/nexus_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/causal_trace.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/src/hypervisor/observability/saga_span_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/execution-rings-workflow/README.md
RENAMED
|
File without changes
|
{agent_hypervisor-3.3.0 → agent_hypervisor-3.5.0}/tutorials/execution-rings-workflow/demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|