arbora 0.1.8.dev4__tar.gz → 0.1.8.dev6__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.
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/PKG-INFO +23 -16
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/README.md +8 -8
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/__init__.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/_version.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/authority.py +83 -11
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/action_policy.py +114 -14
- arbora-0.1.8.dev6/arbora/access/action_policy_source.py +215 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/acp/__init__.py +11 -0
- arbora-0.1.8.dev6/arbora/acp/adapter.py +462 -0
- arbora-0.1.8.dev6/arbora/acp/central_runtime.py +283 -0
- arbora-0.1.8.dev6/arbora/acp/http_transport.py +485 -0
- arbora-0.1.8.dev6/arbora/acp/local_history.py +159 -0
- arbora-0.1.8.dev6/arbora/acp/local_runtime.py +144 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/acp/session_policy.py +25 -0
- arbora-0.1.8.dev6/arbora/acp/stdio_transport.py +55 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/log_access.py +50 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/log_routes.py +82 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_runs.py +161 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/descriptors.json +266 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/engine_errors.py +56 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/registry.json +2268 -832
- arbora-0.1.8.dev6/arbora/api/generated/schemas/method.request.json +1 -0
- arbora-0.1.8.dev6/arbora/api/generated/schemas/result.compute.json +1 -0
- arbora-0.1.8.dev6/arbora/api/generated/schemas/result.coordination.json +1 -0
- arbora-0.1.8.dev6/arbora/api/generated/schemas/result.query.json +1 -0
- arbora-0.1.8.dev6/arbora/api/generated/schemas/result.storage.json +1 -0
- arbora-0.1.8.dev6/arbora/api/generated/task_plan_schema.json +44 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/browser_app.py +9 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/bootstrap.py +52 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/executor.py +5 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/pipeline.py +57 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/steps.py +24 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/browser.py +13 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/plans.py +539 -22
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/query.py +6 -3
- arbora-0.1.8.dev6/arbora/api/ops/query_federation.py +630 -0
- arbora-0.1.8.dev6/arbora/api/ops/run_graph.py +238 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/runs.py +27 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/source.py +63 -4
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/task_plan_schema.py +40 -6
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_api.py +13 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_binding.py +7 -4
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_channel.py +8 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_client.py +9 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_dispatch.py +9 -0
- arbora-0.1.8.dev6/arbora/browser_control/browser_control_proposals.py +314 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_provenance.py +1 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_runtime.py +3 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_server.py +34 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_service.py +6 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_state.py +21 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/trace_bundle.py +33 -0
- arbora-0.1.8.dev6/arbora/certification/__init__.py +5 -0
- arbora-0.1.8.dev6/arbora/certification/oidc.py +988 -0
- arbora-0.1.8.dev6/arbora/client/__init__.py +5 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/client/_generated_models.py +23 -1
- arbora-0.1.8.dev6/arbora/client/browser_boundary.py +26 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/console.py +19 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/settings.py +16 -0
- arbora-0.1.8.dev6/arbora/current_plan_publication.py +292 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_certification.py +1 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/genesis_environments.py +2 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/production_ops.py +23 -17
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/release_canary.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/semantic_provisioning.py +14 -4
- arbora-0.1.8.dev6/arbora/fleet/access_contracts.py +667 -0
- arbora-0.1.8.dev6/arbora/fleet/catalog_graph.py +241 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/onboarding.py +343 -22
- arbora-0.1.8.dev6/arbora/fleet/source_executor.py +715 -0
- arbora-0.1.8.dev6/arbora/fleet/virtual_catalog.py +276 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/config.py +5 -6
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/graph_api.py +4 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/host_bindings.py +29 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/admission.py +2 -2
- arbora-0.1.8.dev6/arbora/identity/browser_broker.py +70 -0
- arbora-0.1.8.dev6/arbora/identity/browser_composition.py +169 -0
- arbora-0.1.8.dev6/arbora/identity/browser_runtime.py +382 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/composition.py +4 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/engine_ports.py +23 -14
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/issuer.py +5 -1
- arbora-0.1.8.dev6/arbora/identity/local_browser.py +99 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/ports.py +17 -2
- arbora-0.1.8.dev6/arbora/local_browser_boundary.py +98 -0
- arbora-0.1.8.dev6/arbora/local_browser_channel.py +403 -0
- arbora-0.1.8.dev6/arbora/mcp_server/browser_dispatch.py +150 -0
- arbora-0.1.8.dev6/arbora/mcp_server/browser_state.py +122 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/catalog_composition.py +19 -12
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/composition.py +9 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/current_plan_reader.py +78 -9
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/hosted_invocation.py +12 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/run_reader.py +59 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/runtime.py +29 -18
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/served_engine.py +37 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/served_invocation.py +327 -8
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/server.py +28 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/source_reader.py +4 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/task_plan.py +65 -11
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/task_plan_runtime.py +16 -2
- arbora-0.1.8.dev6/arbora/run_origin.py +192 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/request_identity.py +13 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/scope_registry.py +4 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-repository-development/SKILL.md +5 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/session_boundary.py +15 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/webui_co_service.py +6 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/PKG-INFO +23 -16
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/SOURCES.txt +32 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/entry_points.txt +2 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/requires.txt +17 -7
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/pyproject.toml +21 -14
- arbora-0.1.8.dev6/tests/test_a2a_extension_lifespan.py +158 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_agents_run_end_to_end.py +8 -4
- arbora-0.1.8.dev6/tests/test_boot_diagnostics.py +147 -0
- arbora-0.1.8.dev6/tests/test_current_plan_publication.py +645 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_dependency_manifest.py +3 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_docs_surface.py +5 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_host_bindings.py +1 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_native_run_scope.py +16 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_real_anonymous_boot.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_real_boot.py +427 -36
- arbora-0.1.8.dev6/tests/test_real_boot_ports.py +87 -0
- arbora-0.1.8.dev6/tests/test_real_boot_read_assertions.py +139 -0
- arbora-0.1.8.dev6/tests/test_run_origin.py +259 -0
- arbora-0.1.8.dev6/tests/test_served_engine_native_labels.py +108 -0
- arbora-0.1.8.dev4/arbora/api/generated/schemas/method.request.json +0 -1
- arbora-0.1.8.dev4/arbora/api/generated/schemas/result.compute.json +0 -1
- arbora-0.1.8.dev4/arbora/api/generated/schemas/result.coordination.json +0 -1
- arbora-0.1.8.dev4/arbora/api/generated/schemas/result.query.json +0 -1
- arbora-0.1.8.dev4/arbora/api/generated/schemas/result.storage.json +0 -1
- arbora-0.1.8.dev4/arbora/api/generated/task_plan_schema.json +0 -24
- arbora-0.1.8.dev4/arbora/client/__init__.py +0 -1
- arbora-0.1.8.dev4/arbora/fleet/access_contracts.py +0 -157
- arbora-0.1.8.dev4/arbora/fleet/source_executor.py +0 -193
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/LICENSE +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/anonymous.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/anonymous_native.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/application.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/mcp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/routing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/run_usage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/sdk_app.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/terminal_event.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/tool_task.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/tool_task_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/tool_task_requests.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/a2a/work_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/assurance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/external_policy_sync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/host_start.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/priority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/access/task_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/acp/coding_session.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/log_replay.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/log_runtime.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/log_sink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/managed_web.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/start_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/agent_host/start_configuration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/agent_control_contracts.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/agent_control_plane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/provisioning.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/contracts/session.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/evidence/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/evidence/bundle.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/evidence/contradiction.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.cluster.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.graph.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.ingestion.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.messaging.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.reasoning.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.security.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/generated/schemas/result.transactions.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/app.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/browser_auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/checkout.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/openapi.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/protocol_routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/http/routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/eg_audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/invoke/plan.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/caller.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/discovery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/resolve.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/resources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/serving.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/mcp/verbs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/_common.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/access.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/agents.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/capacity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/decide.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/fleet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/fleet_deploy_watch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/ingest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/memory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/policy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/registry_factory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/research.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/retrieval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/run_replay.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/security.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/swarm.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/telemetry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/usage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/work.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/write_back.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/ops/write_back_models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/cache.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/default_policy.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/defaults.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/domain_scopes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/eunomia.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/policy/pdp_remote.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/contract_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/digest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/eg_binding.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/eg_exclusions.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/scopes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/spec.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/api/registry/surface_gate.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/architecture/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/architecture/boundary_census.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/architecture/capability_layers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_attendance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_attendance_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_attended.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_cancellation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_common.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_descriptor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_durability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_lease.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_outcome.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_policy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_port.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/browser_control_validation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/browser_control/mcp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/client/_schema.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/client/http.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/client/invoke.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/connector_runner.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/admission/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/admission/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/admission/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/agents/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/agents/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/agents/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/agents/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/connectors/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/connectors/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/connectors/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/connectors/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/economics/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/economics/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/economics/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/economics/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/fleet_watch/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/fleet_watch/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/foundation/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/foundation/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/foundation/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/foundation/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/migrations/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/migrations/authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/migrations/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/migrations/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/policy/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/policy/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/policy/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/projector.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/projection/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/retrieval/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/capacity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/runs/observations.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/sources/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/sources/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/sources/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/sources/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/webui/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/workflows/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/workflows/domain.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/control_plane/workflows/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/agent_config_admin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/capability_contract.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/config_admin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/event_loop.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/provider_materialization.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/providers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/core/transport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/certification_assets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/cli.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/codex_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/config_generator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_coverage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_graph.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_lakehouse.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/doctor_support.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/engine_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/exit_criteria.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/file_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/host_config.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/host_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/kubernetes_first_boot.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/live_mount_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/local_gates.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/preflight.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/profile_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/public_ingress_identity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/release_candidate.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/repo_templates.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/self_deploy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/venv_autosync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/venv_sync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/venv_sync_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/deployment/webui_reference_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/agent_manager_dashboard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/ard_federation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/ard_registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/ard_signing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ecosystem/hook_installer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/epistemic.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/evolution/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/evolution/wiring_sweep.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/finance/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/finance/alerts.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/finance/dca.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/finance/markets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/finance/schedule.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/catalog_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/catalog_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/catalog_reader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/catalog_sources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/child_resilience.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/client_toolsets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/connector_count_pins.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/declarations.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/discovery_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/epistemic_adapter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/error_budget.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/feeds.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/gateway_ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/local_skill_catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/mcp_resource_reconciliation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/multiplexer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/multiplexer_ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/plan_confirmation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/protocol_compat.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/development_lane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/resource_pool_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/resource_reservation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/scaling_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/scaling_intent_reconciler.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/scaling_signal_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/scaling/service_scale_units.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/service_child.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/session_loads.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/session_notifications.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/shared_multiplexer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/surfaces.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet/throttle_service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/fleet_tool_call.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/aggregator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/daemon.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/dashboard_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/enhanced_catalog_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/fleet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/fleet_events.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/ontology_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/rate_limit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/registry_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/remote_oauth_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schema_context_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schema_context_service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schemas/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schemas/connector.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schemas/graph_core.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/schemas/schema_context.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/ansible_tower.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/archivebox.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/aris.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/arr.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/atlassian.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/audio_transcriber.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/audiobookshelf.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/base.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/caddy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/camunda.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/ciso_assistant.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/clarity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/container_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/data_science.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/dockerhub.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/documentdb.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/ear.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/egeria.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/emerald_exchange.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/erpnext.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/fan_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/firefly_iii.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/fleet_client.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/freshrss.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/github.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/gitlab.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/google_workspace.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/gramps.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/hdhomerun.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/home_assistant.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/jellyfin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/jena.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/kafka.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/keycloak.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/langfuse.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/leanix.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/legal_peripherals.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/lgtm.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/listmonk.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/mattermost.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/mealie.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/media_downloader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/microsoft.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/nextcloud.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/okta.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/ollama.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/onetrust.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/openbao.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/orchestrator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/owncast.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/paperless_ngx.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/plane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/portainer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/postiz.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/pulselink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/qbittorrent.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/repository_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/rom_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/scholarx.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/searxng.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/sentry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/servicenow.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/stirlingpdf.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/systems_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/technitium.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/teleport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/tunnel_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/twenty.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/uptime_kuma.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/vector_db.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/wger.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/gateway/widgets/zulip.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/admin_console.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/api_keys.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/approval_engine.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/approval_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/bootstrap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/broker.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/browser.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/client_entry_points.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/engine.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/ldap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/mail_capability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/mfa.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/oidc.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/saml.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/identity/scim.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ingest/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ingest/connector_sources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ingest/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ingest/source_catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/agent_control.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/arbora_operations.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/_arbora_action_manifest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/action_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/arbora_capabilities.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/arbora_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/client_credentials.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/concurrency.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/connector_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/context_helpers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/delegated_auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/engine_routing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/engine_surface_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/eunomia_principal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/httpx_boundary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/intent_contract.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/middlewares.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/oauth_log_hygiene.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/ontology_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/optional_tool_features.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/remote_oauth_broker.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/server_factory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/skill_coverage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tasks_extension.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tool_specs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/_surface_selection.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/analysis_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/analyze_suite.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/audit_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/candidate_claim_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/compliance_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/config_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/domain_ops_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/engine_surface_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/engine_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/epistemic_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/governance_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/graph_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/intent_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/mcp_apps.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/ontology_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/query_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/reach_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/secret_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/state_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/tools/write_ingest_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/verbose_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/backing/write_ingest_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/bootstrap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/decide_wiring.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/effect_journal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/fleet_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/harness_host.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/legacy_action_mapping.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/operation_registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/mcp_server/routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/action_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/alert_intake.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/discord.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/googlechat.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/googlemeet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/imessage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/irc.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/line.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/matrix.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/mattermost.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/nextcloud.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/signal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/slack.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/synology.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/teams.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/telegram.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/twitch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/voicecall.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/backends/whatsapp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/base.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/capabilities.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/coalescer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/commands.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/governed_send.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/host_ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/inbox.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/intake.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/lease.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/planner_handler.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/polling.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/reach.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/render.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/router.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/supervision.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/messaging/transport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/native_run_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/correlation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/custom_observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/error_detail_sink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/gateway_health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/gateway_metrics.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/langfuse_exporter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/langfuse_trust.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/readiness.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/runtime_health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/runtime_signals.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/telemetry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/observability/trace_ontology.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/ontology/shapes/runtime.shapes.ttl +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-01.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-02.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-03.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-04.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-05.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-06.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-07.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-08.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-09.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cmdb-trm-10.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-a.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-b.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-c.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d1.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d10.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d2.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d3.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d4.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d5.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d6.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d7.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d8.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/cq-d9.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/delegation-cycle-refused.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/delegation-fan-out.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/delegation-gitlab-servicenow-plane.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/delegation-ordered-dag.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/delegation-plan-persisted.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/prompts/incident-triage-system.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/actor_context.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/anonymous.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/config_sensitivity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/conformance/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/conformance/surface_inventory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/conformance/surface_manifest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/elevation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/error_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/http_boundary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/identifiers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/identity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/log_redaction.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/oidc_discovery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/operation_result.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/prompt_injection.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/run_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/run_token.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/secrets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/security_policy_middleware.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/security/settings.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/semantic_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/agent-utilities-source-integration/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/references/first-boot-verification.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/references/identity-and-access.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/references/secrets-and-federation.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-deployment/references/telemetry.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-development/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-development/references/bootstrap.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-evolution/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-evolution/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-evolution/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/bare-metal.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/compose-and-podman.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/data-plane-substrate.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/deployment-contract.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/development-workspace.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/docker-swarm.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/engine-identity-admission.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/runtime-topology.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/arbora-genesis/references/security-and-operations.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/autonomous-contribution/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/autonomous-contribution/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/autonomous-contribution/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/core-pack.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-engine-and-modalities/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-ingestion-and-integration/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-modeling-and-mutation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-orchestration-and-automation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-query-and-explanation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-query-and-explanation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-query-and-explanation/references/uql-reference.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-research-and-analysis/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-research-and-analysis/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-runtime-and-governance/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/skills/using-arbora/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/unique_records.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/contact_delivery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/contact_governance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/mcp_delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/package_layout_expectation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/webui_host/voice_delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora/work_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/dependency_links.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/arbora.egg-info/top_level.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/setup.cfg +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_agent_runs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_check_acceptance_evidence.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_check_connector_count_pins.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_check_core_skills.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_check_wiring.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_component_registry_boundary_seeds.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_connector_pack_typed_publisher.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_connector_runner_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_epistemic_adapter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_epistemic_loop_lifecycle.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_fleet_catalog_reader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_installed_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_native_run_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_package_layout.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_real_boot_messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_run_event_payloads.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_semantic_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_served_operation_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_unique_records.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev6}/tests/test_work_items.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arbora
|
|
3
|
-
Version: 0.1.8.
|
|
3
|
+
Version: 0.1.8.dev6
|
|
4
4
|
Summary: The deployable MCP, REST, control-plane, fleet, WebUI, and operations composition for the Knuckles agent platform.
|
|
5
5
|
Author-email: Repository Maintainers <maintainers@knuckles.team>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,16 +14,17 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
14
|
Requires-Python: >=3.12
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist:
|
|
17
|
+
Requires-Dist: meristem<5.0.0,>=4.0.1
|
|
18
18
|
Requires-Dist: eunomia-core>=0.3.10
|
|
19
19
|
Requires-Dist: httpx>=0.28.1
|
|
20
20
|
Requires-Dist: pyjwt>=2.15.1
|
|
21
21
|
Requires-Dist: joserfc>=1.7.5
|
|
22
22
|
Requires-Dist: python-multipart>=0.0.32
|
|
23
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: scion-sdk[a2a,mcp]<0.6.0,>=0.5.9
|
|
24
24
|
Requires-Dist: aiohttp>=3.14.5
|
|
25
25
|
Requires-Dist: anyio>=4.15.1
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: medulla<3.0.0,>=2.27.10
|
|
27
|
+
Requires-Dist: medulla-stem<3.0.0,>=2.27.10
|
|
27
28
|
Requires-Dist: fastapi>=0.143.3
|
|
28
29
|
Requires-Dist: filelock>=4.2.0
|
|
29
30
|
Requires-Dist: msgpack>=1.2.1
|
|
@@ -34,10 +35,16 @@ Requires-Dist: starlette>=1.8.0
|
|
|
34
35
|
Requires-Dist: fastmcp>=4.1.0
|
|
35
36
|
Requires-Dist: mcp<3.0.0,>=2.3.0
|
|
36
37
|
Requires-Dist: opentelemetry-api>=1.45.1
|
|
37
|
-
Requires-Dist: pydantic-ai-slim[openai]==2.
|
|
38
|
+
Requires-Dist: pydantic-ai-slim[openai]==2.63.0
|
|
38
39
|
Requires-Dist: universal-skills<2.0.0,>=1.3.11
|
|
40
|
+
Requires-Dist: cryptography>=50.0.2
|
|
41
|
+
Provides-Extra: acp
|
|
42
|
+
Requires-Dist: agent-client-protocol==0.11.0; extra == "acp"
|
|
43
|
+
Requires-Dist: pydantic-ai-harness[acp]==0.63.0; extra == "acp"
|
|
39
44
|
Provides-Extra: test
|
|
40
|
-
Requires-Dist: agent-
|
|
45
|
+
Requires-Dist: agent-client-protocol==0.11.0; extra == "test"
|
|
46
|
+
Requires-Dist: tuig==2.3.6; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) and extra == "test"
|
|
47
|
+
Requires-Dist: pyte==0.8.2; extra == "test"
|
|
41
48
|
Requires-Dist: pytest>=9.1.1; extra == "test"
|
|
42
49
|
Requires-Dist: pytest-asyncio>=1.4.0; extra == "test"
|
|
43
50
|
Requires-Dist: pytest-cov>=7.1.0; extra == "test"
|
|
@@ -49,10 +56,10 @@ Requires-Dist: types-PyYAML>=6.0.12.20260906; extra == "test"
|
|
|
49
56
|
Requires-Dist: python-telegram-bot>=22.8; extra == "test"
|
|
50
57
|
Requires-Dist: setuptools>=84.0.0; extra == "test"
|
|
51
58
|
Provides-Extra: webui
|
|
52
|
-
Requires-Dist: agent-webui<3.0.0,>=2.8.
|
|
59
|
+
Requires-Dist: agent-webui<3.0.0,>=2.8.3; extra == "webui"
|
|
53
60
|
Requires-Dist: uvicorn>=0.54.0; extra == "webui"
|
|
54
61
|
Provides-Extra: gateway-widgets
|
|
55
|
-
Requires-Dist:
|
|
62
|
+
Requires-Dist: scion-sdk[a2a,mcp]<0.6.0,>=0.5.9; extra == "gateway-widgets"
|
|
56
63
|
Provides-Extra: vault
|
|
57
64
|
Requires-Dist: hvac>=2.4.0; extra == "vault"
|
|
58
65
|
Provides-Extra: messaging-telegram
|
|
@@ -153,7 +160,7 @@ the durable database, a connector implementation, or the browser UI.
|
|
|
153
160
|
- Project the same governed operations through REST and unary A2A.
|
|
154
161
|
- Discover, admit, supervise, and route the MCP connector fleet.
|
|
155
162
|
- Apply identity, tenant, action-policy, idempotency, and provenance controls.
|
|
156
|
-
- Host
|
|
163
|
+
- Host Overstory and coordinate terminal, desktop, messaging, and attended
|
|
157
164
|
browser capabilities.
|
|
158
165
|
- Generate deployment configuration and report live readiness through `/health`.
|
|
159
166
|
|
|
@@ -173,20 +180,20 @@ then use the task-oriented references:
|
|
|
173
180
|
|
|
174
181
|
| Layer | Authority | Relationship to Arbora |
|
|
175
182
|
|---|---|---|
|
|
176
|
-
| [
|
|
177
|
-
|
|
|
178
|
-
|
|
|
183
|
+
| [Overstory](https://knuckles-team.github.io/overstory/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
|
|
184
|
+
| Tuig | Terminal and headless interaction | Uses the governed Arbora REST interface. |
|
|
185
|
+
| Axil | Desktop GUI | Uses the governed Arbora gateway for its primary panels. |
|
|
179
186
|
| Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; agent-utilities owns adapters and routing. |
|
|
180
187
|
| **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
|
|
181
|
-
| [
|
|
182
|
-
| [
|
|
183
|
-
| [
|
|
188
|
+
| [Meristem](https://knuckles-team.github.io/meristem/) | In-run execution harness | Arbora supplies run plans through typed harness contracts. |
|
|
189
|
+
| [Medulla](https://knuckles-team.github.io/medulla/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses its generated client contracts. |
|
|
190
|
+
| [Scion SDK](https://knuckles-team.github.io/scion-sdk/) | Connector servers, source synchronization, and governed effects | Arbora discovers and routes SDK-based connector services. |
|
|
184
191
|
|
|
185
192
|
The boundary is deliberate: Arbora authenticates, composes, routes,
|
|
186
193
|
supervises, and projects. Each sibling remains the source of truth for its own
|
|
187
194
|
domain.
|
|
188
195
|
|
|
189
|
-
[](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
190
197
|
|
|
191
198
|
[Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
192
199
|
|
|
@@ -57,7 +57,7 @@ the durable database, a connector implementation, or the browser UI.
|
|
|
57
57
|
- Project the same governed operations through REST and unary A2A.
|
|
58
58
|
- Discover, admit, supervise, and route the MCP connector fleet.
|
|
59
59
|
- Apply identity, tenant, action-policy, idempotency, and provenance controls.
|
|
60
|
-
- Host
|
|
60
|
+
- Host Overstory and coordinate terminal, desktop, messaging, and attended
|
|
61
61
|
browser capabilities.
|
|
62
62
|
- Generate deployment configuration and report live readiness through `/health`.
|
|
63
63
|
|
|
@@ -77,20 +77,20 @@ then use the task-oriented references:
|
|
|
77
77
|
|
|
78
78
|
| Layer | Authority | Relationship to Arbora |
|
|
79
79
|
|---|---|---|
|
|
80
|
-
| [
|
|
81
|
-
|
|
|
82
|
-
|
|
|
80
|
+
| [Overstory](https://knuckles-team.github.io/overstory/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
|
|
81
|
+
| Tuig | Terminal and headless interaction | Uses the governed Arbora REST interface. |
|
|
82
|
+
| Axil | Desktop GUI | Uses the governed Arbora gateway for its primary panels. |
|
|
83
83
|
| Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; agent-utilities owns adapters and routing. |
|
|
84
84
|
| **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
|
|
85
|
-
| [
|
|
86
|
-
| [
|
|
87
|
-
| [
|
|
85
|
+
| [Meristem](https://knuckles-team.github.io/meristem/) | In-run execution harness | Arbora supplies run plans through typed harness contracts. |
|
|
86
|
+
| [Medulla](https://knuckles-team.github.io/medulla/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses its generated client contracts. |
|
|
87
|
+
| [Scion SDK](https://knuckles-team.github.io/scion-sdk/) | Connector servers, source synchronization, and governed effects | Arbora discovers and routes SDK-based connector services. |
|
|
88
88
|
|
|
89
89
|
The boundary is deliberate: Arbora authenticates, composes, routes,
|
|
90
90
|
supervises, and projects. Each sibling remains the source of truth for its own
|
|
91
91
|
domain.
|
|
92
92
|
|
|
93
|
-
[](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
94
94
|
|
|
95
95
|
[Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
96
96
|
|
|
@@ -16,7 +16,7 @@ The live package layout is:
|
|
|
16
16
|
- `arbora.deployment` — configuration, diagnostics, canaries, and operations.
|
|
17
17
|
|
|
18
18
|
The ``arbora`` console command serves
|
|
19
|
-
``arbora.
|
|
19
|
+
``arbora.console:main`` over stdio or authenticated
|
|
20
20
|
streamable HTTP. Capability limits that depend on unfinished upstream
|
|
21
21
|
contracts are documented in ``docs/status.md`` and fail closed; no legacy
|
|
22
22
|
fallback is implied by this package description.
|
|
@@ -300,8 +300,12 @@ class WorkItemA2AAuthority:
|
|
|
300
300
|
def _request_digest(
|
|
301
301
|
message: A2AMessage, context_id: str, decision: A2ARouteDecision
|
|
302
302
|
) -> str:
|
|
303
|
+
from arbora.agent_runs import native_stream_protocol
|
|
304
|
+
|
|
305
|
+
protocol = native_stream_protocol()
|
|
303
306
|
return _digest(
|
|
304
307
|
{
|
|
308
|
+
**({"host_transport_protocol": protocol} if protocol else {}),
|
|
305
309
|
"context_id": context_id,
|
|
306
310
|
"decision": decision.model_dump(mode="json"),
|
|
307
311
|
"message": message.model_dump(mode="json", by_alias=True),
|
|
@@ -317,7 +321,11 @@ class WorkItemA2AAuthority:
|
|
|
317
321
|
request_digest: str,
|
|
318
322
|
decision: A2ARouteDecision,
|
|
319
323
|
) -> dict[str, Any]:
|
|
324
|
+
from arbora.agent_runs import native_stream_protocol
|
|
325
|
+
|
|
326
|
+
protocol = native_stream_protocol()
|
|
320
327
|
return {
|
|
328
|
+
**({"host_transport_protocol": protocol} if protocol else {}),
|
|
321
329
|
"a2a_schema": _A2A_METADATA_SCHEMA,
|
|
322
330
|
"a2a_context_id": context_id,
|
|
323
331
|
"a2a_message_ref": persistence_reference(
|
|
@@ -421,22 +429,40 @@ class WorkItemA2AAuthority:
|
|
|
421
429
|
|
|
422
430
|
if self.task_plan_config is not None and self.hosted_invocation is None:
|
|
423
431
|
raise RuntimeError("UPGRADE_REQUIRED: hosted task-plan invocation")
|
|
432
|
+
from contextlib import nullcontext
|
|
433
|
+
|
|
424
434
|
from arbora.agent_runs import native_run_scope
|
|
435
|
+
from arbora.current_plan_publication import bind_admitted_claim
|
|
425
436
|
from arbora.host_bindings import preloaded_agent_tools
|
|
426
437
|
|
|
427
|
-
with
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
438
|
+
with (
|
|
439
|
+
native_run_scope(
|
|
440
|
+
run_id=run_id or task_id,
|
|
441
|
+
task_id=task_id,
|
|
442
|
+
context_id=context_id,
|
|
443
|
+
work_item_id=item_id,
|
|
444
|
+
session=session,
|
|
445
|
+
claim=claim,
|
|
446
|
+
owner_graph=(
|
|
447
|
+
work_items.native_owner_graph(work_engine)
|
|
448
|
+
if self.task_plan_config is not None
|
|
449
|
+
else None
|
|
450
|
+
),
|
|
451
|
+
hosted_invocation=self.hosted_invocation,
|
|
452
|
+
),
|
|
453
|
+
(
|
|
454
|
+
bind_admitted_claim(
|
|
455
|
+
work_engine,
|
|
456
|
+
session=session,
|
|
457
|
+
run_id=run_id or task_id,
|
|
458
|
+
work_item_id=item_id,
|
|
459
|
+
claim=claim,
|
|
460
|
+
hosted_invocation=self.hosted_invocation,
|
|
461
|
+
owner_graph=work_items.native_owner_graph(work_engine),
|
|
462
|
+
)
|
|
436
463
|
if self.task_plan_config is not None
|
|
437
|
-
else
|
|
464
|
+
else nullcontext()
|
|
438
465
|
),
|
|
439
|
-
hosted_invocation=self.hosted_invocation,
|
|
440
466
|
):
|
|
441
467
|
return await self._agent_executor().execute_agent(
|
|
442
468
|
AgentExecutionRequest(
|
|
@@ -555,6 +581,39 @@ class WorkItemA2AAuthority:
|
|
|
555
581
|
raise A2AIdempotencyConflict("A2A native run identity conflicts")
|
|
556
582
|
return item
|
|
557
583
|
|
|
584
|
+
async def _notify_admission_or_settle(
|
|
585
|
+
self, session: Any, *, task_id: str, run_id: str, context_id: str, item_id: str
|
|
586
|
+
) -> None:
|
|
587
|
+
"""Settle only notification failures, never rerun or undo admission."""
|
|
588
|
+
from arbora.agent_runs import NativeRunAdmission, notify_native_admission
|
|
589
|
+
|
|
590
|
+
try:
|
|
591
|
+
notify_native_admission(
|
|
592
|
+
session, NativeRunAdmission(task_id, run_id, context_id, item_id)
|
|
593
|
+
)
|
|
594
|
+
except (Exception, asyncio.CancelledError) as failure:
|
|
595
|
+
try:
|
|
596
|
+
async with asyncio.timeout(5):
|
|
597
|
+
cancelled = await self.cancel(task_id)
|
|
598
|
+
readback = await asyncio.to_thread(
|
|
599
|
+
self._authorized_item, task_id, "kg:write"
|
|
600
|
+
)
|
|
601
|
+
if (
|
|
602
|
+
cancelled.status.state != "canceled"
|
|
603
|
+
or not isinstance(readback, dict)
|
|
604
|
+
or readback.get("status") != "cancelled"
|
|
605
|
+
):
|
|
606
|
+
raise RuntimeError("cancellation not confirmed")
|
|
607
|
+
except (Exception, asyncio.CancelledError):
|
|
608
|
+
raise RuntimeError(
|
|
609
|
+
"native admission notification failed: settlement unavailable"
|
|
610
|
+
) from None
|
|
611
|
+
if isinstance(failure, asyncio.CancelledError):
|
|
612
|
+
raise
|
|
613
|
+
raise RuntimeError(
|
|
614
|
+
"native admission notification failed: admitted task canceled"
|
|
615
|
+
) from None
|
|
616
|
+
|
|
558
617
|
async def dispatch(
|
|
559
618
|
self,
|
|
560
619
|
*,
|
|
@@ -612,6 +671,13 @@ class WorkItemA2AAuthority:
|
|
|
612
671
|
request_digest=request_digest,
|
|
613
672
|
run_id=run_id,
|
|
614
673
|
)
|
|
674
|
+
await self._notify_admission_or_settle(
|
|
675
|
+
session,
|
|
676
|
+
task_id=task_id,
|
|
677
|
+
run_id=run_id,
|
|
678
|
+
context_id=context_id,
|
|
679
|
+
item_id=item_id,
|
|
680
|
+
)
|
|
615
681
|
if not created and item.get("status") in _TERMINAL:
|
|
616
682
|
recovered = await self.get(task_id)
|
|
617
683
|
if recovered is None:
|
|
@@ -1072,10 +1138,15 @@ class WorkItemA2AAuthority:
|
|
|
1072
1138
|
return tasks, next_cursor
|
|
1073
1139
|
|
|
1074
1140
|
async def cancel(self, task_id: str) -> A2ATask:
|
|
1141
|
+
from arbora.run_origin import revoke_run_origins
|
|
1142
|
+
|
|
1143
|
+
cancellation_session = self._session("kg:write")
|
|
1075
1144
|
item = await asyncio.to_thread(self._authorized_item, task_id, "kg:write")
|
|
1076
1145
|
if item is None:
|
|
1077
1146
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
1147
|
+
run_id = str(item["metadata"].get("a2a_run_id") or task_id)
|
|
1078
1148
|
if item.get("status") == "cancelled":
|
|
1149
|
+
revoke_run_origins(cancellation_session, run_id)
|
|
1079
1150
|
return self._project(item, task_id=task_id)
|
|
1080
1151
|
if item.get("status") in _TERMINAL:
|
|
1081
1152
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
@@ -1087,6 +1158,7 @@ class WorkItemA2AAuthority:
|
|
|
1087
1158
|
work_items.cancel_work_item, work_engine, item_id
|
|
1088
1159
|
):
|
|
1089
1160
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
1161
|
+
revoke_run_origins(cancellation_session, run_id)
|
|
1090
1162
|
current = await asyncio.to_thread(
|
|
1091
1163
|
work_items.get_work_item, work_engine, item_id
|
|
1092
1164
|
)
|
|
@@ -52,7 +52,7 @@ import threading
|
|
|
52
52
|
import time
|
|
53
53
|
import uuid
|
|
54
54
|
from collections.abc import Callable, Mapping
|
|
55
|
-
from dataclasses import dataclass, field
|
|
55
|
+
from dataclasses import dataclass, field, replace
|
|
56
56
|
from enum import StrEnum
|
|
57
57
|
from pathlib import Path
|
|
58
58
|
from typing import Any, ClassVar
|
|
@@ -612,6 +612,18 @@ class ActionPolicy:
|
|
|
612
612
|
setting("ACTION_IRREVERSIBILITY_AVERSION", False, cast=bool)
|
|
613
613
|
)
|
|
614
614
|
|
|
615
|
+
def qualified_source_revision(self) -> str:
|
|
616
|
+
"""Read explicit source evidence; this revision grants no action."""
|
|
617
|
+
from arbora.access.action_policy_source import qualified_policy_source
|
|
618
|
+
|
|
619
|
+
return qualified_policy_source(self).revision
|
|
620
|
+
|
|
621
|
+
async def qualified_source_revision_async(self) -> str:
|
|
622
|
+
"""Capture source evidence without switching the native client loop."""
|
|
623
|
+
from arbora.access.action_policy_source import qualified_policy_source_async
|
|
624
|
+
|
|
625
|
+
return (await qualified_policy_source_async(self)).revision
|
|
626
|
+
|
|
615
627
|
# ── policy loading ──────────────────────────────────────────────
|
|
616
628
|
|
|
617
629
|
def _load_file_policy(self) -> dict[str, Any]:
|
|
@@ -686,14 +698,22 @@ class ActionPolicy:
|
|
|
686
698
|
rules.sort(key=lambda r: -r.priority)
|
|
687
699
|
return rules
|
|
688
700
|
|
|
689
|
-
def
|
|
701
|
+
def _rule_inputs(self, source: Any) -> tuple[dict[str, Any], list[ActionRule]]:
|
|
702
|
+
"""Select live policy inputs or the already captured qualified snapshot."""
|
|
703
|
+
if source is None:
|
|
704
|
+
return self._load_file_policy(), self._kg_rules()
|
|
705
|
+
return source.inputs()
|
|
706
|
+
|
|
707
|
+
def _match(
|
|
708
|
+
self, request: ActionRequest, *, source: Any = None
|
|
709
|
+
) -> tuple[ActionRule, dict[str, Any]]:
|
|
690
710
|
"""First matching rule — KG overrides first, then file order — plus defaults."""
|
|
691
|
-
data = self.
|
|
711
|
+
data, graph_rules = self._rule_inputs(source)
|
|
692
712
|
raw_defaults = data.get("defaults")
|
|
693
713
|
defaults: dict[str, Any] = (
|
|
694
714
|
raw_defaults if isinstance(raw_defaults, dict) else {}
|
|
695
715
|
)
|
|
696
|
-
for rule in
|
|
716
|
+
for rule in graph_rules:
|
|
697
717
|
if rule.matches(request):
|
|
698
718
|
return rule, defaults
|
|
699
719
|
for raw in data.get("rules") or []:
|
|
@@ -721,6 +741,13 @@ class ActionPolicy:
|
|
|
721
741
|
if self.engine is None:
|
|
722
742
|
return []
|
|
723
743
|
try:
|
|
744
|
+
legacy = self.engine.query_cypher(
|
|
745
|
+
"MATCH (d {type: 'ActionDecision', kind: $kind}) "
|
|
746
|
+
"WHERE d.node_type IS NULL RETURN d.id AS id LIMIT 1",
|
|
747
|
+
{"kind": kind},
|
|
748
|
+
)
|
|
749
|
+
if legacy:
|
|
750
|
+
return None
|
|
724
751
|
rows = self.engine.query_cypher(
|
|
725
752
|
"MATCH (d:ActionDecision {kind: $kind}) "
|
|
726
753
|
"RETURN d.id AS id, d.target AS target, d.decision AS decision, "
|
|
@@ -777,7 +804,7 @@ class ActionPolicy:
|
|
|
777
804
|
|
|
778
805
|
# ── assurance verifier (CONCEPT:AU-OS.governance.assurance-state-machine-verifier) ──
|
|
779
806
|
|
|
780
|
-
def _verify(self, request: ActionRequest):
|
|
807
|
+
def _verify(self, request: ActionRequest, *, source: Any = None):
|
|
781
808
|
"""Run the deterministic invariant verifier for ``request``.
|
|
782
809
|
|
|
783
810
|
The reference-existence check (invariant 4) is best-effort: it only
|
|
@@ -785,8 +812,14 @@ class ActionPolicy:
|
|
|
785
812
|
``known_tools``/``known_targets`` registries (empty/absent ⇒ skipped,
|
|
786
813
|
never a false deny — CONCEPT:AU-OS.governance.fail-closed-claim-check).
|
|
787
814
|
"""
|
|
788
|
-
|
|
789
|
-
|
|
815
|
+
if source is None:
|
|
816
|
+
known_tools = self.option("known_tools")
|
|
817
|
+
known_targets = self.option("known_targets")
|
|
818
|
+
else:
|
|
819
|
+
document, _rules = source.inputs()
|
|
820
|
+
options = document.get("options") or {}
|
|
821
|
+
known_tools = options.get("known_tools")
|
|
822
|
+
known_targets = options.get("known_targets")
|
|
790
823
|
return verify_action(
|
|
791
824
|
request,
|
|
792
825
|
known_tools=frozenset(known_tools) if known_tools else None,
|
|
@@ -930,6 +963,58 @@ class ActionPolicy:
|
|
|
930
963
|
reason=f"policy unavailable (fail closed): {e}",
|
|
931
964
|
rule_origin="unavailable",
|
|
932
965
|
)
|
|
966
|
+
return self._finish_decision(decision)
|
|
967
|
+
|
|
968
|
+
def decide_qualified(
|
|
969
|
+
self, request: ActionRequest, *, expected_revision: str
|
|
970
|
+
) -> ActionDecision:
|
|
971
|
+
"""Evaluate one explicit source snapshot through the shared evaluator.
|
|
972
|
+
|
|
973
|
+
The exact request must bind its source revision. Source evidence is
|
|
974
|
+
rechecked after evaluation and audit, never inferred from shipped
|
|
975
|
+
defaults. The browser owner must still recheck after its own awaits.
|
|
976
|
+
"""
|
|
977
|
+
from arbora.access.action_policy_source import qualified_policy_source
|
|
978
|
+
|
|
979
|
+
try:
|
|
980
|
+
digest = request.digest()
|
|
981
|
+
captured = replace(request, params=_canonical_policy_value(request.params))
|
|
982
|
+
source = qualified_policy_source(self)
|
|
983
|
+
if (
|
|
984
|
+
source.revision != expected_revision
|
|
985
|
+
or request.params.get("policy_source_revision") != expected_revision
|
|
986
|
+
):
|
|
987
|
+
raise RuntimeError("Policy source revision changed")
|
|
988
|
+
self._check_qualified_request(request, captured, digest)
|
|
989
|
+
decision = self._decide_inner(captured, source=source)
|
|
990
|
+
self._check_qualified_request(request, captured, digest)
|
|
991
|
+
if self.qualified_source_revision() != expected_revision:
|
|
992
|
+
raise RuntimeError("Policy source changed during evaluation")
|
|
993
|
+
decision = self._finish_decision(decision)
|
|
994
|
+
if self.qualified_source_revision() != expected_revision:
|
|
995
|
+
raise RuntimeError("Policy source changed during audit")
|
|
996
|
+
self._check_qualified_request(request, captured, digest)
|
|
997
|
+
return decision
|
|
998
|
+
except Exception: # noqa: BLE001 - qualified source absence never widens authority
|
|
999
|
+
return self._bind_decision_receipt(
|
|
1000
|
+
ActionDecision(
|
|
1001
|
+
decision=DECISION_UNAVAILABLE,
|
|
1002
|
+
tier=TIER_FORBIDDEN,
|
|
1003
|
+
request=request,
|
|
1004
|
+
reason="qualified policy source unavailable or changed",
|
|
1005
|
+
rule_origin="unavailable",
|
|
1006
|
+
)
|
|
1007
|
+
)
|
|
1008
|
+
|
|
1009
|
+
@staticmethod
|
|
1010
|
+
def _check_qualified_request(
|
|
1011
|
+
request: ActionRequest, captured: ActionRequest, digest: str
|
|
1012
|
+
) -> None:
|
|
1013
|
+
if request.digest() != digest or captured.digest() != digest:
|
|
1014
|
+
raise RuntimeError("Qualified action request changed")
|
|
1015
|
+
|
|
1016
|
+
def _finish_decision(self, decision: ActionDecision) -> ActionDecision:
|
|
1017
|
+
request = decision.request
|
|
933
1018
|
decision = self._bind_decision_receipt(decision)
|
|
934
1019
|
if decision.decision == DECISION_ALLOW_NOTIFY:
|
|
935
1020
|
self._notify(
|
|
@@ -981,13 +1066,27 @@ class ActionPolicy:
|
|
|
981
1066
|
return self._hold(base, "tier requires human approval")
|
|
982
1067
|
return None
|
|
983
1068
|
|
|
984
|
-
def
|
|
1069
|
+
def _verify_selected_source(self, request: ActionRequest, source: Any):
|
|
1070
|
+
"""Preserve the legacy verifier call unless a snapshot was selected."""
|
|
1071
|
+
if source is None:
|
|
1072
|
+
return self._verify(request)
|
|
1073
|
+
return self._verify(request, source=source)
|
|
1074
|
+
|
|
1075
|
+
def _selected_irreversibility_aversion(self, source: Any) -> bool:
|
|
1076
|
+
"""Read the selected setting only when evaluation reaches this guard."""
|
|
1077
|
+
if source is None:
|
|
1078
|
+
return self._irreversibility_aversion
|
|
1079
|
+
return source.irreversibility_aversion
|
|
1080
|
+
|
|
1081
|
+
def _decide_inner(
|
|
1082
|
+
self, request: ActionRequest, *, source: Any = None
|
|
1083
|
+
) -> ActionDecision:
|
|
985
1084
|
# CONCEPT:AU-OS.governance.assurance-state-machine-verifier — the deterministic
|
|
986
1085
|
# invariant verifier runs BEFORE the rule/tier pipeline: a payload that fails
|
|
987
1086
|
# role/schema/precondition/reference checks is denied outright (fail-closed),
|
|
988
1087
|
# regardless of what tier its kind/target would otherwise match. This is the
|
|
989
1088
|
# enforced half of the gate — the caller's action genuinely does not execute.
|
|
990
|
-
verify = self.
|
|
1089
|
+
verify = self._verify_selected_source(request, source)
|
|
991
1090
|
if not verify.ok:
|
|
992
1091
|
return ActionDecision(
|
|
993
1092
|
decision=DECISION_DENY,
|
|
@@ -999,7 +1098,7 @@ class ActionPolicy:
|
|
|
999
1098
|
verify_ms=verify.latency_ms,
|
|
1000
1099
|
)
|
|
1001
1100
|
|
|
1002
|
-
rule, defaults = self._match(request)
|
|
1101
|
+
rule, defaults = self._match(request, source=source)
|
|
1003
1102
|
base = ActionDecision(
|
|
1004
1103
|
decision=DECISION_DENY,
|
|
1005
1104
|
tier=rule.tier,
|
|
@@ -1033,7 +1132,8 @@ class ActionPolicy:
|
|
|
1033
1132
|
# CONCEPT:AU-OS.safety.irreversibility-aversion — irreversibility aversion (opt-in). An irreversible
|
|
1034
1133
|
# action that would otherwise auto-execute is routed to a human, since
|
|
1035
1134
|
# policy-gating alone is brittle as autonomy rises.
|
|
1036
|
-
|
|
1135
|
+
aversion = self._selected_irreversibility_aversion(source)
|
|
1136
|
+
if aversion:
|
|
1037
1137
|
if is_irreversible(request.kind):
|
|
1038
1138
|
return self._hold(
|
|
1039
1139
|
base, "irreversible action — queued for approval (SAFE-1.5)"
|
|
@@ -1144,7 +1244,7 @@ class ActionPolicy:
|
|
|
1144
1244
|
audit_id = f"action_decision:{uuid.uuid4().hex}"
|
|
1145
1245
|
req = decision.request
|
|
1146
1246
|
try:
|
|
1147
|
-
create_record(
|
|
1247
|
+
created = create_record(
|
|
1148
1248
|
self.engine,
|
|
1149
1249
|
audit_id,
|
|
1150
1250
|
"ActionDecision",
|
|
@@ -1164,10 +1264,10 @@ class ActionPolicy:
|
|
|
1164
1264
|
"decided_unix": _now(),
|
|
1165
1265
|
},
|
|
1166
1266
|
)
|
|
1167
|
-
except Exception as e: # noqa: BLE001 — audit
|
|
1267
|
+
except Exception as e: # noqa: BLE001 — missing audit evidence cannot authorize
|
|
1168
1268
|
logger.debug("action_policy: audit write failed: %s", e)
|
|
1169
1269
|
return None
|
|
1170
|
-
return audit_id
|
|
1270
|
+
return audit_id if created else None
|
|
1171
1271
|
|
|
1172
1272
|
def _notify(self, message: str) -> None:
|
|
1173
1273
|
"""Send ``message`` to the bound operator notifier, else log it."""
|