agent_hypervisor 3.3.0__tar.gz → 3.4.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.
Files changed (116) hide show
  1. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/.gitignore +3 -0
  2. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/PKG-INFO +1 -1
  3. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/dashboard/requirements.txt +1 -1
  4. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/pyproject.toml +1 -1
  5. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/api/server.py +29 -1
  6. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/CHANGELOG.md +0 -0
  7. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/LICENSE +0 -0
  8. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/README.md +0 -0
  9. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/SECURITY.md +0 -0
  10. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/benchmarks/bench_hypervisor.py +0 -0
  11. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/benchmarks/results/BENCHMARKS.md +0 -0
  12. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/benchmarks/results/benchmarks.json +0 -0
  13. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/docs/api-reference.md +0 -0
  14. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/docs/joint-liability-guide.md +0 -0
  15. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/dashboard/README.md +0 -0
  16. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/dashboard/app.py +0 -0
  17. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/demo.py +0 -0
  18. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/Dockerfile +0 -0
  19. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/README.md +0 -0
  20. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/app/__init__.py +0 -0
  21. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/app/dashboard.py +0 -0
  22. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/app/sample_workflow.py +0 -0
  23. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/app/server.py +0 -0
  24. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/config/hypervisor.yaml +0 -0
  25. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/docker-compose/docker-compose.yml +0 -0
  26. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/examples/requirements.txt +0 -0
  27. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/notebooks/README.md +0 -0
  28. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/notebooks/hypervisor-exploration.ipynb +0 -0
  29. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/__init__.py +0 -0
  30. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/api/__init__.py +0 -0
  31. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/api/models.py +0 -0
  32. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/audit/__init__.py +0 -0
  33. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/audit/commitment.py +0 -0
  34. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/audit/delta.py +0 -0
  35. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/audit/gc.py +0 -0
  36. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/cli/__init__.py +0 -0
  37. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/cli/formatters.py +0 -0
  38. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/cli/session_commands.py +0 -0
  39. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/constants.py +0 -0
  40. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/core.py +0 -0
  41. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/integrations/__init__.py +0 -0
  42. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/integrations/iatp_adapter.py +0 -0
  43. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/integrations/nexus_adapter.py +0 -0
  44. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/integrations/verification_adapter.py +0 -0
  45. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/__init__.py +0 -0
  46. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/attribution.py +0 -0
  47. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/ledger.py +0 -0
  48. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/quarantine.py +0 -0
  49. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/slashing.py +0 -0
  50. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/liability/vouching.py +0 -0
  51. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/models.py +0 -0
  52. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/observability/__init__.py +0 -0
  53. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/observability/causal_trace.py +0 -0
  54. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/observability/event_bus.py +0 -0
  55. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/observability/prometheus_collector.py +0 -0
  56. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/observability/saga_span_exporter.py +0 -0
  57. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/providers.py +0 -0
  58. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/py.typed +0 -0
  59. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/reversibility/__init__.py +0 -0
  60. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/reversibility/registry.py +0 -0
  61. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/rings/__init__.py +0 -0
  62. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/rings/breach_detector.py +0 -0
  63. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/rings/classifier.py +0 -0
  64. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/rings/elevation.py +0 -0
  65. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/rings/enforcer.py +0 -0
  66. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/__init__.py +0 -0
  67. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/checkpoint.py +0 -0
  68. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/dsl.py +0 -0
  69. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/fan_out.py +0 -0
  70. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/orchestrator.py +0 -0
  71. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/schema.py +0 -0
  72. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/saga/state_machine.py +0 -0
  73. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/security/__init__.py +0 -0
  74. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/security/kill_switch.py +0 -0
  75. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/security/rate_limiter.py +0 -0
  76. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/session/__init__.py +0 -0
  77. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/session/intent_locks.py +0 -0
  78. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/session/isolation.py +0 -0
  79. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/session/sso.py +0 -0
  80. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/session/vector_clock.py +0 -0
  81. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/verification/__init__.py +0 -0
  82. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/src/hypervisor/verification/history.py +0 -0
  83. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/__init__.py +0 -0
  84. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/integration/__init__.py +0 -0
  85. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/integration/test_hypervisor_e2e.py +0 -0
  86. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/integration/test_scenarios.py +0 -0
  87. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_agent_manager.py +0 -0
  88. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_breach_detector.py +0 -0
  89. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_classifier.py +0 -0
  90. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_kill_switch.py +0 -0
  91. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_rate_limiter.py +0 -0
  92. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/test_shapley_attribution.py +0 -0
  93. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/__init__.py +0 -0
  94. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_audit.py +0 -0
  95. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_cli.py +0 -0
  96. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_config_validation.py +0 -0
  97. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_liability.py +0 -0
  98. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_liability_improvements.py +0 -0
  99. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_models.py +0 -0
  100. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_observability.py +0 -0
  101. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_prometheus_collector.py +0 -0
  102. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_reversibility_registry.py +0 -0
  103. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_ring_improvements.py +0 -0
  104. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_rings.py +0 -0
  105. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_saga.py +0 -0
  106. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_saga_improvements.py +0 -0
  107. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_saga_schema.py +0 -0
  108. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_saga_span_exporter.py +0 -0
  109. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_session.py +0 -0
  110. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_session_security.py +0 -0
  111. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_slashing.py +0 -0
  112. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tests/unit/test_vfs_substrate.py +0 -0
  113. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tutorials/execution-rings-workflow/README.md +0 -0
  114. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tutorials/execution-rings-workflow/demo.py +0 -0
  115. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tutorials/saga-compensation/README.md +0 -0
  116. {agent_hypervisor-3.3.0 → agent_hypervisor-3.4.0}/tutorials/saga-compensation/demo.py +0 -0
@@ -462,3 +462,6 @@ dist/
462
462
  .pytest_cache/
463
463
  .ruff_cache/
464
464
  _site/
465
+
466
+ # Code Security Assessment artifacts
467
+ .security-assessment/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent_hypervisor
3
- Version: 3.3.0
3
+ Version: 3.4.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
@@ -1,4 +1,4 @@
1
- streamlit>=1.37.0
1
+ streamlit>=1.54.0
2
2
  plotly>=5.18.0
3
3
  networkx>=3.2
4
4
  pandas>=2.0.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agent_hypervisor"
7
- version = "3.3.0"
7
+ version = "3.4.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").split(","),
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=["*"],