arbora 0.1.8.dev4__tar.gz → 0.1.8.dev5__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.dev5}/PKG-INFO +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/_version.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/authority.py +6 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/action_policy.py +114 -14
- arbora-0.1.8.dev5/arbora/access/action_policy_source.py +215 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_runs.py +4 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/descriptors.json +25 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/engine_errors.py +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/registry.json +396 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/task_plan_schema.json +4 -4
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/pipeline.py +53 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/browser.py +13 -0
- arbora-0.1.8.dev5/arbora/api/ops/run_graph.py +238 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/runs.py +27 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/task_plan_schema.py +17 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_api.py +13 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_binding.py +7 -4
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_channel.py +8 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_client.py +9 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_dispatch.py +9 -0
- arbora-0.1.8.dev5/arbora/browser_control/browser_control_proposals.py +314 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_provenance.py +1 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_runtime.py +3 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_server.py +34 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_service.py +6 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_state.py +21 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/trace_bundle.py +33 -0
- arbora-0.1.8.dev5/arbora/client/__init__.py +5 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/client/_generated_models.py +3 -1
- arbora-0.1.8.dev5/arbora/client/browser_boundary.py +20 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/production_ops.py +21 -17
- arbora-0.1.8.dev5/arbora/fleet/catalog_graph.py +241 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/onboarding.py +28 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/host_bindings.py +29 -1
- arbora-0.1.8.dev5/arbora/identity/local_browser.py +99 -0
- arbora-0.1.8.dev5/arbora/local_browser_channel.py +403 -0
- arbora-0.1.8.dev5/arbora/mcp_server/browser_state.py +122 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/current_plan_reader.py +12 -9
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/run_reader.py +59 -3
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/runtime.py +29 -18
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/served_engine.py +37 -2
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/served_invocation.py +105 -6
- arbora-0.1.8.dev5/arbora/run_origin.py +192 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/PKG-INFO +1 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/SOURCES.txt +12 -0
- arbora-0.1.8.dev5/tests/test_a2a_extension_lifespan.py +158 -0
- arbora-0.1.8.dev5/tests/test_run_origin.py +259 -0
- arbora-0.1.8.dev5/tests/test_served_engine_native_labels.py +108 -0
- arbora-0.1.8.dev4/arbora/client/__init__.py +0 -1
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/LICENSE +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/README.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/anonymous.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/anonymous_native.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/application.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/mcp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/routing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/run_usage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/sdk_app.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/terminal_event.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/tool_task.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/tool_task_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/tool_task_requests.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/a2a/work_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/assurance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/external_policy_sync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/host_start.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/priority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/access/task_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/acp/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/acp/coding_session.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/acp/session_policy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/log_access.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/log_replay.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/log_routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/log_runtime.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/log_sink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/managed_web.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/start_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/agent_host/start_configuration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/agent_control_contracts.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/agent_control_plane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/provisioning.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/contracts/session.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/evidence/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/evidence/bundle.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/evidence/contradiction.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/method.request.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.cluster.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.compute.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.coordination.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.graph.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.ingestion.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.messaging.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.query.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.reasoning.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.security.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.storage.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/generated/schemas/result.transactions.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/app.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/browser_app.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/browser_auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/checkout.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/openapi.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/protocol_routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/http/routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/bootstrap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/eg_audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/executor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/plan.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/invoke/steps.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/caller.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/discovery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/resolve.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/resources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/serving.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/mcp/verbs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/_common.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/access.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/agents.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/capacity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/decide.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/fleet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/fleet_deploy_watch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/ingest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/memory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/plans.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/policy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/query.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/registry_factory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/research.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/retrieval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/run_replay.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/security.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/source.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/swarm.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/telemetry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/usage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/work.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/write_back.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/ops/write_back_models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/cache.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/default_policy.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/defaults.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/domain_scopes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/eunomia.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/policy/pdp_remote.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/contract_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/digest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/eg_binding.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/eg_exclusions.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/scopes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/spec.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/api/registry/surface_gate.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/architecture/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/architecture/boundary_census.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/architecture/capability_layers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_attendance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_attendance_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_attended.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_cancellation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_common.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_descriptor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_durability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_lease.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_outcome.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_policy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_port.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/browser_control_validation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/browser_control/mcp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/client/_schema.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/client/http.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/client/invoke.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/connector_runner.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/console.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/admission/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/admission/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/admission/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/agents/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/agents/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/agents/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/agents/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/connectors/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/connectors/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/connectors/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/connectors/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/economics/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/economics/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/economics/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/economics/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/fleet_watch/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/fleet_watch/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/foundation/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/foundation/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/foundation/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/foundation/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/migrations/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/migrations/authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/migrations/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/migrations/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/policy/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/policy/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/policy/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/projector.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/projection/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/retrieval/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/audit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/capacity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/runs/observations.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/sources/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/sources/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/sources/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/sources/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/errors.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/protocols.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/webui/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/workflows/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/workflows/domain.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/control_plane/workflows/repository.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/agent_config_admin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/capability_contract.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/config_admin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/event_loop.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/provider_materialization.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/providers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/settings.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/core/transport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/certification_assets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/cli.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/codex_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/config_generator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_certification.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_coverage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_graph.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_lakehouse.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/doctor_support.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/engine_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/exit_criteria.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/file_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/genesis_environments.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/host_config.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/host_lock.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/kubernetes_first_boot.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/live_mount_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/local_gates.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/preflight.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/profile_guard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/public_ingress_identity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/release_canary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/release_candidate.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/repo_templates.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/self_deploy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/semantic_provisioning.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/venv_autosync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/venv_sync.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/venv_sync_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/deployment/webui_reference_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/agent_manager_dashboard.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/ard_federation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/ard_registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/ard_signing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ecosystem/hook_installer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/epistemic.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/evolution/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/evolution/wiring_sweep.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/finance/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/finance/alerts.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/finance/dca.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/finance/markets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/finance/schedule.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/access_contracts.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/catalog_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/catalog_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/catalog_reader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/catalog_sources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/child_resilience.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/client_toolsets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/connector_count_pins.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/declarations.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/discovery_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/epistemic_adapter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/error_budget.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/feeds.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/gateway_ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/local_skill_catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/mcp_resource_reconciliation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/multiplexer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/multiplexer_ops.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/plan_confirmation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/protocol_compat.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/_model.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/development_lane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/resource_pool_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/resource_reservation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/scaling_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/scaling_intent_reconciler.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/scaling_signal_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/scaling/service_scale_units.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/service_child.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/session_loads.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/session_notifications.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/shared_multiplexer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/source_executor.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/surfaces.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet/throttle_service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/fleet_tool_call.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/aggregator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/config.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/daemon.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/dashboard_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/enhanced_catalog_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/fleet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/fleet_events.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/graph_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/ontology_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/rate_limit.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/registry_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/remote_oauth_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schema_context_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schema_context_service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schemas/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schemas/connector.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schemas/graph_core.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/schemas/schema_context.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/ansible_tower.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/archivebox.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/aris.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/arr.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/atlassian.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/audio_transcriber.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/audiobookshelf.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/base.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/caddy.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/camunda.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/ciso_assistant.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/clarity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/container_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/data_science.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/dockerhub.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/documentdb.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/ear.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/egeria.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/emerald_exchange.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/erpnext.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/fan_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/firefly_iii.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/fleet_client.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/freshrss.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/github.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/gitlab.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/google_workspace.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/gramps.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/hdhomerun.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/home_assistant.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/jellyfin.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/jena.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/kafka.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/keycloak.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/langfuse.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/leanix.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/legal_peripherals.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/lgtm.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/listmonk.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/mattermost.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/mealie.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/media_downloader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/microsoft.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/nextcloud.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/okta.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/ollama.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/onetrust.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/openbao.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/orchestrator.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/owncast.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/paperless_ngx.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/plane.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/portainer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/postiz.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/pulselink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/qbittorrent.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/repository_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/rom_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/scholarx.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/searxng.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/sentry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/servicenow.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/stirlingpdf.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/systems_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/technitium.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/teleport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/tunnel_manager.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/twenty.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/uptime_kuma.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/vector_db.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/wger.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/gateway/widgets/zulip.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/admin_console.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/api_keys.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/approval.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/approval_engine.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/approval_registration.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/bootstrap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/broker.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/browser.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/client_entry_points.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/engine.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/engine_ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/issuer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/ldap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/mail_capability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/mfa.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/oidc.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/saml.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/identity/scim.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ingest/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ingest/connector_sources.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ingest/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ingest/source_catalog.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/agent_control.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/arbora_operations.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/_arbora_action_manifest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/action_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/arbora_capabilities.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/arbora_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/client_credentials.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/concurrency.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/connector_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/context_helpers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/delegated_auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/engine_routing.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/engine_surface_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/eunomia_principal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/httpx_boundary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/intent_contract.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/middlewares.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/oauth_log_hygiene.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/ontology_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/optional_tool_features.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/remote_oauth_broker.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/server_factory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/skill_coverage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tasks_extension.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tool_specs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/_surface_selection.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/analysis_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/analyze_suite.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/audit_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/candidate_claim_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/compliance_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/config_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/domain_ops_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/engine_surface_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/engine_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/epistemic_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/governance_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/graph_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/intent_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/mcp_apps.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/ontology_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/query_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/reach_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/secret_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/state_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/tools/write_ingest_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/verbose_tools.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/backing/write_ingest_types.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/bootstrap.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/catalog_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/decide_wiring.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/effect_journal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/fleet_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/harness_host.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/hosted_invocation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/legacy_action_mapping.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/operation_registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/routes.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/server.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/source_reader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/task_plan.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/mcp_server/task_plan_runtime.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/action_dispatch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/alert_intake.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/discord.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/googlechat.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/googlemeet.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/imessage.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/irc.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/line.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/matrix.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/mattermost.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/nextcloud.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/signal.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/slack.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/synology.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/teams.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/telegram.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/twitch.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/voicecall.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/backends/whatsapp.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/base.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/capabilities.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/coalescer.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/commands.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/governed_send.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/host_ports.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/inbox.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/intake.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/lease.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/models.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/planner_handler.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/polling.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/reach.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/render.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/router.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/supervision.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/messaging/transport.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/native_run_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/correlation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/custom_observability.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/error_detail_sink.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/gateway_health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/gateway_metrics.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/langfuse_exporter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/langfuse_trust.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/readiness.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/runtime_health.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/runtime_signals.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/telemetry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/observability/trace_ontology.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/ontology/shapes/runtime.shapes.ttl +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-01.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-02.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-03.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-04.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-05.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-06.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-07.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-08.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-09.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cmdb-trm-10.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-a.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-b.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-c.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d1.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d10.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d2.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d3.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d4.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d5.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d6.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d7.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d8.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/cq-d9.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/delegation-cycle-refused.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/delegation-fan-out.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/delegation-gitlab-servicenow-plane.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/delegation-ordered-dag.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/delegation-plan-persisted.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/prompts/incident-triage-system.json +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/actor_context.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/anonymous.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/auth.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/config_sensitivity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/conformance/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/conformance/surface_inventory.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/conformance/surface_manifest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/elevation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/error_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/http_boundary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/identifiers.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/identity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/log_redaction.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/oidc_discovery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/operation_result.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/prompt_injection.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/request_identity.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/run_authority.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/run_token.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/scope_registry.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/secrets.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/security_policy_middleware.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/security/settings.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/semantic_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/agent-utilities-source-integration/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/references/first-boot-verification.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/references/identity-and-access.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/references/secrets-and-federation.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-deployment/references/telemetry.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-development/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-development/references/bootstrap.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-evolution/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-evolution/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-evolution/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/bare-metal.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/compose-and-podman.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/data-plane-substrate.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/deployment-contract.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/development-workspace.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/docker-swarm.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/engine-identity-admission.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/runtime-topology.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-genesis/references/security-and-operations.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/arbora-repository-development/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/autonomous-contribution/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/autonomous-contribution/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/autonomous-contribution/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/core-pack.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-engine-and-modalities/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-ingestion-and-integration/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-modeling-and-mutation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-orchestration-and-automation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-query-and-explanation/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-query-and-explanation/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-query-and-explanation/references/uql-reference.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-research-and-analysis/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-research-and-analysis/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-runtime-and-governance/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/skills/using-arbora/SKILL.md +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/unique_records.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/__init__.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/contact_delivery.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/contact_governance.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/mcp_delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/package_layout_expectation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/session_boundary.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/voice_delegation.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/webui_host/webui_co_service.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora/work_items.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/dependency_links.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/entry_points.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/requires.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/arbora.egg-info/top_level.txt +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/pyproject.toml +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/setup.cfg +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_agent_runs.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_agents_run_end_to_end.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_check_acceptance_evidence.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_check_connector_count_pins.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_check_core_skills.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_check_wiring.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_component_registry_boundary_seeds.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_connector_pack_typed_publisher.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_connector_runner_composition.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_dependency_manifest.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_docs_surface.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_epistemic_adapter.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_epistemic_loop_lifecycle.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_fleet_catalog_reader.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_host_bindings.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_installed_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_native_run_admission.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_native_run_scope.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_package_layout.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_real_anonymous_boot.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_real_boot.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_real_boot_messaging.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_run_event_payloads.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_semantic_content.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_served_operation_api.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/tests/test_unique_records.py +0 -0
- {arbora-0.1.8.dev4 → arbora-0.1.8.dev5}/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.dev5
|
|
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
|
|
@@ -1072,10 +1072,15 @@ class WorkItemA2AAuthority:
|
|
|
1072
1072
|
return tasks, next_cursor
|
|
1073
1073
|
|
|
1074
1074
|
async def cancel(self, task_id: str) -> A2ATask:
|
|
1075
|
+
from arbora.run_origin import revoke_run_origins
|
|
1076
|
+
|
|
1077
|
+
cancellation_session = self._session("kg:write")
|
|
1075
1078
|
item = await asyncio.to_thread(self._authorized_item, task_id, "kg:write")
|
|
1076
1079
|
if item is None:
|
|
1077
1080
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
1081
|
+
run_id = str(item["metadata"].get("a2a_run_id") or task_id)
|
|
1078
1082
|
if item.get("status") == "cancelled":
|
|
1083
|
+
revoke_run_origins(cancellation_session, run_id)
|
|
1079
1084
|
return self._project(item, task_id=task_id)
|
|
1080
1085
|
if item.get("status") in _TERMINAL:
|
|
1081
1086
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
@@ -1087,6 +1092,7 @@ class WorkItemA2AAuthority:
|
|
|
1087
1092
|
work_items.cancel_work_item, work_engine, item_id
|
|
1088
1093
|
):
|
|
1089
1094
|
raise A2ATaskNotCancelable("A2A task is not cancelable")
|
|
1095
|
+
revoke_run_origins(cancellation_session, run_id)
|
|
1090
1096
|
current = await asyncio.to_thread(
|
|
1091
1097
|
work_items.get_work_item, work_engine, item_id
|
|
1092
1098
|
)
|
|
@@ -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."""
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"""Strict source snapshots for the canonical ActionPolicy owner.
|
|
2
|
+
|
|
3
|
+
A source revision is descriptive evidence, never an action grant. Legacy
|
|
4
|
+
best-effort policy loading remains unchanged; opted-in boundaries use this
|
|
5
|
+
stricter source contract before requesting an exact canonical decision.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
import contextvars
|
|
10
|
+
import hashlib
|
|
11
|
+
import json
|
|
12
|
+
from dataclasses import asdict, dataclass, field
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
_MAX_POLICY_BYTES = 1_048_576
|
|
17
|
+
_MAX_OVERRIDE_RULES = 100
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True, slots=True)
|
|
21
|
+
class _QualifiedPolicySource:
|
|
22
|
+
revision: str
|
|
23
|
+
configuration_origin: str
|
|
24
|
+
normalized_document: str = field(repr=False)
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def irreversibility_aversion(self) -> bool:
|
|
28
|
+
return bool(json.loads(self.normalized_document)["irreversibility_aversion"])
|
|
29
|
+
|
|
30
|
+
def inputs(self) -> tuple[dict[str, Any], list[Any]]:
|
|
31
|
+
from arbora.access.action_policy import ActionRule
|
|
32
|
+
|
|
33
|
+
data = json.loads(self.normalized_document)
|
|
34
|
+
return data["file"], [ActionRule(**rule) for rule in data["graph_overrides"]]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _configured_document(path: Path | None) -> dict[str, Any]:
|
|
38
|
+
if path is None:
|
|
39
|
+
raise RuntimeError("Explicitly configured action policy required")
|
|
40
|
+
import yaml
|
|
41
|
+
|
|
42
|
+
with path.open("rb") as stream:
|
|
43
|
+
raw = stream.read(_MAX_POLICY_BYTES + 1)
|
|
44
|
+
if len(raw) > _MAX_POLICY_BYTES:
|
|
45
|
+
raise RuntimeError("Configured action policy exceeds the size bound")
|
|
46
|
+
data = yaml.safe_load(raw.decode("utf-8"))
|
|
47
|
+
if not isinstance(data, dict) or not isinstance(data.get("rules"), list):
|
|
48
|
+
raise RuntimeError("Configured action policy rules are unavailable")
|
|
49
|
+
return data
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _override_rules(engine: Any) -> list[Any]:
|
|
53
|
+
if engine is None:
|
|
54
|
+
raise RuntimeError("Canonical policy override authority required")
|
|
55
|
+
rows = engine.query_cypher(
|
|
56
|
+
"MATCH (r:governance_rule {scope: 'action_policy'}) RETURN r LIMIT 101"
|
|
57
|
+
)
|
|
58
|
+
return _rules_from_rows(rows)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _rules_from_rows(rows: Any) -> list[Any]:
|
|
62
|
+
if not isinstance(rows, list) or len(rows) > _MAX_OVERRIDE_RULES:
|
|
63
|
+
raise RuntimeError("Complete bounded policy overrides required")
|
|
64
|
+
rules = []
|
|
65
|
+
for row in rows:
|
|
66
|
+
rule = _override_rule(row)
|
|
67
|
+
if rule is not None:
|
|
68
|
+
rules.append(rule)
|
|
69
|
+
rules.sort(key=lambda rule: -rule.priority)
|
|
70
|
+
return rules
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _override_rule(row: Any) -> Any:
|
|
74
|
+
from arbora.access.action_policy import _coerce_rule
|
|
75
|
+
|
|
76
|
+
props = row.get("r") if isinstance(row, dict) else None
|
|
77
|
+
if not isinstance(props, dict):
|
|
78
|
+
raise RuntimeError("Malformed policy override")
|
|
79
|
+
if str(props.get("active", "true")).lower() in {"false", "0", "no"}:
|
|
80
|
+
return None
|
|
81
|
+
raw = props
|
|
82
|
+
if props.get("rule_json"):
|
|
83
|
+
payload = json.loads(props["rule_json"])
|
|
84
|
+
if not isinstance(payload, dict):
|
|
85
|
+
raise RuntimeError("Malformed policy override payload")
|
|
86
|
+
raw = {**props, **payload}
|
|
87
|
+
_validate_rule(raw)
|
|
88
|
+
rule = _coerce_rule(raw, origin="kg")
|
|
89
|
+
if rule is None:
|
|
90
|
+
raise RuntimeError("Malformed effective policy override")
|
|
91
|
+
return rule
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _validate_rule(raw: Any) -> None:
|
|
95
|
+
from arbora.access.action_policy import _TIERS, TIER_APPROVAL
|
|
96
|
+
|
|
97
|
+
if not isinstance(raw, dict):
|
|
98
|
+
raise RuntimeError("Malformed configured policy rule")
|
|
99
|
+
tier = raw.get("tier") or TIER_APPROVAL
|
|
100
|
+
if not isinstance(tier, str) or tier not in _TIERS:
|
|
101
|
+
raise RuntimeError("Unknown configured policy tier")
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _validated_document(path: Path | None) -> dict[str, Any]:
|
|
105
|
+
from arbora.access.action_policy import _coerce_rule
|
|
106
|
+
|
|
107
|
+
document = _configured_document(path)
|
|
108
|
+
for raw in document["rules"]:
|
|
109
|
+
_validate_rule(raw)
|
|
110
|
+
if _coerce_rule(raw, origin="file") is None:
|
|
111
|
+
raise RuntimeError("Malformed configured policy rule")
|
|
112
|
+
return document
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _source_from_inputs(
|
|
116
|
+
document: dict[str, Any], overrides: list[Any], aversion: bool
|
|
117
|
+
) -> _QualifiedPolicySource:
|
|
118
|
+
from arbora.access.action_policy import _canonical_policy_value
|
|
119
|
+
|
|
120
|
+
normalized = json.dumps(
|
|
121
|
+
_canonical_policy_value(
|
|
122
|
+
{
|
|
123
|
+
"schema": "action-policy-source.v1",
|
|
124
|
+
"configuration_origin": "configured_file",
|
|
125
|
+
"file": document,
|
|
126
|
+
"graph_overrides": [asdict(rule) for rule in overrides],
|
|
127
|
+
"irreversibility_aversion": aversion,
|
|
128
|
+
}
|
|
129
|
+
),
|
|
130
|
+
ensure_ascii=False,
|
|
131
|
+
sort_keys=True,
|
|
132
|
+
separators=(",", ":"),
|
|
133
|
+
allow_nan=False,
|
|
134
|
+
)
|
|
135
|
+
return _QualifiedPolicySource(
|
|
136
|
+
revision="sha256:" + hashlib.sha256(normalized.encode("utf-8")).hexdigest(),
|
|
137
|
+
configuration_origin="configured_file",
|
|
138
|
+
normalized_document=normalized,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def qualified_policy_source(policy: Any) -> _QualifiedPolicySource:
|
|
143
|
+
"""Capture complete source evidence without changing decisions or state."""
|
|
144
|
+
try:
|
|
145
|
+
source = _source_from_inputs(
|
|
146
|
+
_validated_document(policy.policy_path),
|
|
147
|
+
_override_rules(policy.engine),
|
|
148
|
+
policy._irreversibility_aversion,
|
|
149
|
+
)
|
|
150
|
+
except Exception: # noqa: BLE001 - redact source failures before refusal
|
|
151
|
+
source = None
|
|
152
|
+
if source is None:
|
|
153
|
+
raise RuntimeError("Qualified configured action policy unavailable")
|
|
154
|
+
return source
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
async def _retained_file_document(path: Path | None) -> dict[str, Any]:
|
|
158
|
+
"""Cancellation retains this task until its exact file worker completes."""
|
|
159
|
+
context = contextvars.copy_context()
|
|
160
|
+
worker = asyncio.get_running_loop().run_in_executor(
|
|
161
|
+
None, context.run, _validated_document, path
|
|
162
|
+
)
|
|
163
|
+
cancelled = None
|
|
164
|
+
while not worker.done():
|
|
165
|
+
try:
|
|
166
|
+
await asyncio.shield(worker)
|
|
167
|
+
except asyncio.CancelledError as error:
|
|
168
|
+
cancelled = error
|
|
169
|
+
except Exception: # noqa: BLE001 - retrieve and redact in source owner
|
|
170
|
+
break
|
|
171
|
+
if cancelled is not None:
|
|
172
|
+
# Retrieve any failure without leaking it through the cancellation chain.
|
|
173
|
+
if not worker.cancelled():
|
|
174
|
+
worker.exception()
|
|
175
|
+
raise cancelled
|
|
176
|
+
return worker.result()
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def _check_selection(policy: Any, engine: Any, path: Any, aversion: bool) -> None:
|
|
180
|
+
if (
|
|
181
|
+
policy.engine is not engine
|
|
182
|
+
or policy.policy_path != path
|
|
183
|
+
or policy._irreversibility_aversion != aversion
|
|
184
|
+
):
|
|
185
|
+
raise RuntimeError("Configured policy selection changed")
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
async def qualified_policy_source_async(policy: Any) -> _QualifiedPolicySource:
|
|
189
|
+
"""Use one captured caller and source selection; issue no effect authority.
|
|
190
|
+
|
|
191
|
+
Callers must retain capacity until this task completes, even if cancelled.
|
|
192
|
+
A stalled file worker therefore denies capacity rather than accumulating
|
|
193
|
+
detached workers. File latency and parsing CPU are not wall-clock bounded.
|
|
194
|
+
"""
|
|
195
|
+
from arbora.api.contracts.session import resolve_session
|
|
196
|
+
|
|
197
|
+
try:
|
|
198
|
+
engine, path = policy.engine, policy.policy_path
|
|
199
|
+
aversion = policy._irreversibility_aversion
|
|
200
|
+
caller = resolve_session(None, required_scope="kg:read")
|
|
201
|
+
document = await _retained_file_document(path)
|
|
202
|
+
_check_selection(policy, engine, path, aversion)
|
|
203
|
+
resolve_session(caller, required_scope="kg:read")
|
|
204
|
+
rows = await engine.query_cypher_async(
|
|
205
|
+
"MATCH (r:governance_rule {scope: 'action_policy'}) RETURN r LIMIT 101",
|
|
206
|
+
session=caller,
|
|
207
|
+
)
|
|
208
|
+
_check_selection(policy, engine, path, aversion)
|
|
209
|
+
resolve_session(caller, required_scope="kg:read")
|
|
210
|
+
source = _source_from_inputs(document, _rules_from_rows(rows), aversion)
|
|
211
|
+
except Exception: # noqa: BLE001 - redact source failures before refusal
|
|
212
|
+
source = None
|
|
213
|
+
if source is None:
|
|
214
|
+
raise RuntimeError("Qualified configured action policy unavailable")
|
|
215
|
+
return source
|
|
@@ -443,10 +443,13 @@ class AgentRunPort:
|
|
|
443
443
|
async def execute_agent(
|
|
444
444
|
self, request: AgentExecutionRequest, *, session: GraphSession
|
|
445
445
|
) -> AgentExecutionResult:
|
|
446
|
+
from arbora.run_origin import agent_run_origin_scope
|
|
447
|
+
|
|
446
448
|
ownership = current_native_run(request)
|
|
447
449
|
if ownership is not None and ownership.session != session:
|
|
448
450
|
raise RuntimeError("native run session does not match the host scope")
|
|
449
|
-
|
|
451
|
+
with agent_run_origin_scope(session, request.agent_name, request.run_id):
|
|
452
|
+
result = await self._executor.execute_agent(request, session=session)
|
|
450
453
|
return AgentExecutionResult(
|
|
451
454
|
run_id=result.run_id,
|
|
452
455
|
output=result.output,
|
|
@@ -217,6 +217,18 @@
|
|
|
217
217
|
],
|
|
218
218
|
"verb": "act"
|
|
219
219
|
},
|
|
220
|
+
{
|
|
221
|
+
"domain": "browser",
|
|
222
|
+
"examples": [
|
|
223
|
+
"ask the attended browser owner to navigate"
|
|
224
|
+
],
|
|
225
|
+
"id": "browser.request_call",
|
|
226
|
+
"summary": "Propose an exact browser action for attended human acceptance",
|
|
227
|
+
"tags": [
|
|
228
|
+
"browser"
|
|
229
|
+
],
|
|
230
|
+
"verb": "act"
|
|
231
|
+
},
|
|
220
232
|
{
|
|
221
233
|
"domain": "browser",
|
|
222
234
|
"examples": [
|
|
@@ -6161,6 +6173,18 @@
|
|
|
6161
6173
|
],
|
|
6162
6174
|
"verb": "ask"
|
|
6163
6175
|
},
|
|
6176
|
+
{
|
|
6177
|
+
"domain": "runs",
|
|
6178
|
+
"examples": [
|
|
6179
|
+
"show the declared steps and evidenced lifecycle of this run"
|
|
6180
|
+
],
|
|
6181
|
+
"id": "runs.execution_graph",
|
|
6182
|
+
"summary": "Read a bounded flat execution graph of an owned run",
|
|
6183
|
+
"tags": [
|
|
6184
|
+
"runs"
|
|
6185
|
+
],
|
|
6186
|
+
"verb": "ask"
|
|
6187
|
+
},
|
|
6164
6188
|
{
|
|
6165
6189
|
"domain": "runs",
|
|
6166
6190
|
"examples": [
|
|
@@ -6306,5 +6330,5 @@
|
|
|
6306
6330
|
"verb": "act"
|
|
6307
6331
|
}
|
|
6308
6332
|
],
|
|
6309
|
-
"registry_digest": "
|
|
6333
|
+
"registry_digest": "27b9f48df91b04f699c016125c221c290c42ff651cbecf5b00c44e9136f55506"
|
|
6310
6334
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Generated engine error contract. Do not edit."""
|
|
2
2
|
|
|
3
|
-
REGISTRY_DIGEST = "
|
|
3
|
+
REGISTRY_DIGEST = "27b9f48df91b04f699c016125c221c290c42ff651cbecf5b00c44e9136f55506"
|
|
4
4
|
EG_RECEIPT_DIGEST = "5bd7b375a923a5832a8cf493826fdba369916a0cfc4163e5cd9be7a4303d19bc"
|
|
5
5
|
ENGINE_ERRORS: dict[str, tuple[int, bool]] = {
|
|
6
6
|
"ABORTED_ATOMIC_GRAPH_BATCH": (400, False),
|