arbora 0.1.8.dev1__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.dev1/LICENSE +21 -0
- arbora-0.1.8.dev1/PKG-INFO +231 -0
- arbora-0.1.8.dev1/README.md +135 -0
- arbora-0.1.8.dev1/arbora/__init__.py +29 -0
- arbora-0.1.8.dev1/arbora/_version.py +6 -0
- arbora-0.1.8.dev1/arbora/a2a/__init__.py +78 -0
- arbora-0.1.8.dev1/arbora/a2a/admission.py +116 -0
- arbora-0.1.8.dev1/arbora/a2a/application.py +526 -0
- arbora-0.1.8.dev1/arbora/a2a/approval.py +152 -0
- arbora-0.1.8.dev1/arbora/a2a/authority.py +789 -0
- arbora-0.1.8.dev1/arbora/a2a/composition.py +41 -0
- arbora-0.1.8.dev1/arbora/a2a/mcp.py +120 -0
- arbora-0.1.8.dev1/arbora/a2a/models.py +308 -0
- arbora-0.1.8.dev1/arbora/a2a/routing.py +73 -0
- arbora-0.1.8.dev1/arbora/a2a/sdk_app.py +124 -0
- arbora-0.1.8.dev1/arbora/a2a/service.py +111 -0
- arbora-0.1.8.dev1/arbora/a2a/terminal_event.py +140 -0
- arbora-0.1.8.dev1/arbora/a2a/tool_task.py +321 -0
- arbora-0.1.8.dev1/arbora/a2a/tool_task_dispatch.py +111 -0
- arbora-0.1.8.dev1/arbora/a2a/tool_task_requests.py +174 -0
- arbora-0.1.8.dev1/arbora/a2a/work_items.py +98 -0
- arbora-0.1.8.dev1/arbora/access/__init__.py +1 -0
- arbora-0.1.8.dev1/arbora/access/action_policy.py +1268 -0
- arbora-0.1.8.dev1/arbora/access/approval.py +53 -0
- arbora-0.1.8.dev1/arbora/access/assurance.py +247 -0
- arbora-0.1.8.dev1/arbora/access/external_policy_sync.py +754 -0
- arbora-0.1.8.dev1/arbora/access/host_start.py +191 -0
- arbora-0.1.8.dev1/arbora/access/priority.py +88 -0
- arbora-0.1.8.dev1/arbora/access/service.py +176 -0
- arbora-0.1.8.dev1/arbora/access/task_guard.py +21 -0
- arbora-0.1.8.dev1/arbora/acp/__init__.py +31 -0
- arbora-0.1.8.dev1/arbora/acp/coding_session.py +123 -0
- arbora-0.1.8.dev1/arbora/acp/session_policy.py +139 -0
- arbora-0.1.8.dev1/arbora/agent_host/__init__.py +428 -0
- arbora-0.1.8.dev1/arbora/agent_host/log_access.py +297 -0
- arbora-0.1.8.dev1/arbora/agent_host/log_replay.py +174 -0
- arbora-0.1.8.dev1/arbora/agent_host/log_routes.py +118 -0
- arbora-0.1.8.dev1/arbora/agent_host/log_runtime.py +82 -0
- arbora-0.1.8.dev1/arbora/agent_host/log_sink.py +284 -0
- arbora-0.1.8.dev1/arbora/agent_host/managed_web.py +63 -0
- arbora-0.1.8.dev1/arbora/agent_host/start_admission.py +473 -0
- arbora-0.1.8.dev1/arbora/agent_host/start_configuration.py +145 -0
- arbora-0.1.8.dev1/arbora/agent_runs.py +237 -0
- arbora-0.1.8.dev1/arbora/api/__init__.py +19 -0
- arbora-0.1.8.dev1/arbora/api/contracts/__init__.py +133 -0
- arbora-0.1.8.dev1/arbora/api/contracts/agent_control_contracts.py +307 -0
- arbora-0.1.8.dev1/arbora/api/contracts/agent_control_plane.py +505 -0
- arbora-0.1.8.dev1/arbora/api/contracts/catalog.py +388 -0
- arbora-0.1.8.dev1/arbora/api/contracts/messaging.py +42 -0
- arbora-0.1.8.dev1/arbora/api/contracts/provisioning.py +250 -0
- arbora-0.1.8.dev1/arbora/api/contracts/session.py +569 -0
- arbora-0.1.8.dev1/arbora/api/errors.py +472 -0
- arbora-0.1.8.dev1/arbora/api/evidence/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/api/evidence/bundle.py +1077 -0
- arbora-0.1.8.dev1/arbora/api/evidence/contradiction.py +353 -0
- arbora-0.1.8.dev1/arbora/api/generated/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/api/generated/descriptors.json +6250 -0
- arbora-0.1.8.dev1/arbora/api/generated/engine_errors.py +296 -0
- arbora-0.1.8.dev1/arbora/api/generated/registry.json +26700 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/method.request.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.cluster.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.compute.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.coordination.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.graph.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.ingestion.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.messaging.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.query.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.reasoning.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.security.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.storage.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/schemas/result.transactions.json +1 -0
- arbora-0.1.8.dev1/arbora/api/generated/task_plan_schema.json +10 -0
- arbora-0.1.8.dev1/arbora/api/http/__init__.py +6 -0
- arbora-0.1.8.dev1/arbora/api/http/app.py +213 -0
- arbora-0.1.8.dev1/arbora/api/http/auth.py +246 -0
- arbora-0.1.8.dev1/arbora/api/http/checkout.py +302 -0
- arbora-0.1.8.dev1/arbora/api/http/openapi.py +57 -0
- arbora-0.1.8.dev1/arbora/api/http/protocol_routes.py +34 -0
- arbora-0.1.8.dev1/arbora/api/http/routes.py +164 -0
- arbora-0.1.8.dev1/arbora/api/invoke/__init__.py +13 -0
- arbora-0.1.8.dev1/arbora/api/invoke/audit.py +67 -0
- arbora-0.1.8.dev1/arbora/api/invoke/bootstrap.py +285 -0
- arbora-0.1.8.dev1/arbora/api/invoke/eg_audit.py +199 -0
- arbora-0.1.8.dev1/arbora/api/invoke/executor.py +304 -0
- arbora-0.1.8.dev1/arbora/api/invoke/pipeline.py +1013 -0
- arbora-0.1.8.dev1/arbora/api/invoke/plan.py +232 -0
- arbora-0.1.8.dev1/arbora/api/invoke/steps.py +235 -0
- arbora-0.1.8.dev1/arbora/api/mcp/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/api/mcp/caller.py +182 -0
- arbora-0.1.8.dev1/arbora/api/mcp/discovery.py +166 -0
- arbora-0.1.8.dev1/arbora/api/mcp/registration.py +250 -0
- arbora-0.1.8.dev1/arbora/api/mcp/resolve.py +410 -0
- arbora-0.1.8.dev1/arbora/api/mcp/resources.py +58 -0
- arbora-0.1.8.dev1/arbora/api/mcp/serving.py +78 -0
- arbora-0.1.8.dev1/arbora/api/mcp/verbs.py +456 -0
- arbora-0.1.8.dev1/arbora/api/ops/__init__.py +8 -0
- arbora-0.1.8.dev1/arbora/api/ops/_common.py +147 -0
- arbora-0.1.8.dev1/arbora/api/ops/access.py +232 -0
- arbora-0.1.8.dev1/arbora/api/ops/agents.py +172 -0
- arbora-0.1.8.dev1/arbora/api/ops/browser.py +76 -0
- arbora-0.1.8.dev1/arbora/api/ops/capacity.py +147 -0
- arbora-0.1.8.dev1/arbora/api/ops/decide.py +82 -0
- arbora-0.1.8.dev1/arbora/api/ops/fleet.py +326 -0
- arbora-0.1.8.dev1/arbora/api/ops/fleet_deploy_watch.py +94 -0
- arbora-0.1.8.dev1/arbora/api/ops/ingest.py +186 -0
- arbora-0.1.8.dev1/arbora/api/ops/memory.py +321 -0
- arbora-0.1.8.dev1/arbora/api/ops/messaging.py +188 -0
- arbora-0.1.8.dev1/arbora/api/ops/ops.py +273 -0
- arbora-0.1.8.dev1/arbora/api/ops/plans.py +379 -0
- arbora-0.1.8.dev1/arbora/api/ops/policy.py +71 -0
- arbora-0.1.8.dev1/arbora/api/ops/query.py +43 -0
- arbora-0.1.8.dev1/arbora/api/ops/registry_factory.py +92 -0
- arbora-0.1.8.dev1/arbora/api/ops/research.py +814 -0
- arbora-0.1.8.dev1/arbora/api/ops/retrieval.py +151 -0
- arbora-0.1.8.dev1/arbora/api/ops/runs.py +110 -0
- arbora-0.1.8.dev1/arbora/api/ops/security.py +71 -0
- arbora-0.1.8.dev1/arbora/api/ops/source.py +383 -0
- arbora-0.1.8.dev1/arbora/api/ops/swarm.py +70 -0
- arbora-0.1.8.dev1/arbora/api/ops/telemetry.py +70 -0
- arbora-0.1.8.dev1/arbora/api/ops/usage.py +70 -0
- arbora-0.1.8.dev1/arbora/api/ops/work.py +128 -0
- arbora-0.1.8.dev1/arbora/api/ops/write_back.py +79 -0
- arbora-0.1.8.dev1/arbora/api/ops/write_back_models.py +118 -0
- arbora-0.1.8.dev1/arbora/api/policy/__init__.py +17 -0
- arbora-0.1.8.dev1/arbora/api/policy/cache.py +46 -0
- arbora-0.1.8.dev1/arbora/api/policy/default_policy.json +25 -0
- arbora-0.1.8.dev1/arbora/api/policy/defaults.py +25 -0
- arbora-0.1.8.dev1/arbora/api/policy/domain_scopes.py +84 -0
- arbora-0.1.8.dev1/arbora/api/policy/eunomia.py +333 -0
- arbora-0.1.8.dev1/arbora/api/policy/pdp_remote.py +266 -0
- arbora-0.1.8.dev1/arbora/api/registry/__init__.py +73 -0
- arbora-0.1.8.dev1/arbora/api/registry/contract_admission.py +167 -0
- arbora-0.1.8.dev1/arbora/api/registry/digest.py +106 -0
- arbora-0.1.8.dev1/arbora/api/registry/eg_binding.py +403 -0
- arbora-0.1.8.dev1/arbora/api/registry/eg_exclusions.yaml +4 -0
- arbora-0.1.8.dev1/arbora/api/registry/registry.py +110 -0
- arbora-0.1.8.dev1/arbora/api/registry/scopes.py +48 -0
- arbora-0.1.8.dev1/arbora/api/registry/spec.py +197 -0
- arbora-0.1.8.dev1/arbora/api/registry/surface_gate.py +145 -0
- arbora-0.1.8.dev1/arbora/api/task_plan_schema.py +289 -0
- arbora-0.1.8.dev1/arbora/architecture/__init__.py +1 -0
- arbora-0.1.8.dev1/arbora/architecture/boundary_census.py +153 -0
- arbora-0.1.8.dev1/arbora/architecture/capability_layers.py +88 -0
- arbora-0.1.8.dev1/arbora/browser_control/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_api.py +239 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_attendance.py +114 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_attendance_api.py +112 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_attended.py +212 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_binding.py +144 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_cancellation.py +166 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_channel.py +307 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_client.py +97 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_common.py +210 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_descriptor.py +81 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_dispatch.py +255 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_durability.py +336 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_lease.py +245 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_outcome.py +302 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_policy.py +159 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_port.py +21 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_provenance.py +266 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_registration.py +324 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_runtime.py +127 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_server.py +80 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_service.py +156 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_state.py +191 -0
- arbora-0.1.8.dev1/arbora/browser_control/browser_control_validation.py +148 -0
- arbora-0.1.8.dev1/arbora/browser_control/mcp.py +42 -0
- arbora-0.1.8.dev1/arbora/browser_control/trace_bundle.py +268 -0
- arbora-0.1.8.dev1/arbora/client/__init__.py +1 -0
- arbora-0.1.8.dev1/arbora/client/_generated_models.py +557 -0
- arbora-0.1.8.dev1/arbora/client/_schema.py +74 -0
- arbora-0.1.8.dev1/arbora/client/http.py +71 -0
- arbora-0.1.8.dev1/arbora/client/invoke.py +26 -0
- arbora-0.1.8.dev1/arbora/connector_runner.py +166 -0
- arbora-0.1.8.dev1/arbora/console.py +29 -0
- arbora-0.1.8.dev1/arbora/content.py +22 -0
- arbora-0.1.8.dev1/arbora/control_plane/__init__.py +7 -0
- arbora-0.1.8.dev1/arbora/control_plane/_model.py +11 -0
- arbora-0.1.8.dev1/arbora/control_plane/admission/__init__.py +6 -0
- arbora-0.1.8.dev1/arbora/control_plane/admission/models.py +57 -0
- arbora-0.1.8.dev1/arbora/control_plane/admission/service.py +69 -0
- arbora-0.1.8.dev1/arbora/control_plane/agents/__init__.py +93 -0
- arbora-0.1.8.dev1/arbora/control_plane/agents/models.py +804 -0
- arbora-0.1.8.dev1/arbora/control_plane/agents/repository.py +94 -0
- arbora-0.1.8.dev1/arbora/control_plane/agents/service.py +547 -0
- arbora-0.1.8.dev1/arbora/control_plane/connectors/__init__.py +103 -0
- arbora-0.1.8.dev1/arbora/control_plane/connectors/models.py +665 -0
- arbora-0.1.8.dev1/arbora/control_plane/connectors/repository.py +115 -0
- arbora-0.1.8.dev1/arbora/control_plane/connectors/service.py +477 -0
- arbora-0.1.8.dev1/arbora/control_plane/economics/__init__.py +104 -0
- arbora-0.1.8.dev1/arbora/control_plane/economics/models.py +1149 -0
- arbora-0.1.8.dev1/arbora/control_plane/economics/repository.py +341 -0
- arbora-0.1.8.dev1/arbora/control_plane/economics/service.py +518 -0
- arbora-0.1.8.dev1/arbora/control_plane/fleet_watch/__init__.py +26 -0
- arbora-0.1.8.dev1/arbora/control_plane/fleet_watch/service.py +86 -0
- arbora-0.1.8.dev1/arbora/control_plane/foundation/__init__.py +121 -0
- arbora-0.1.8.dev1/arbora/control_plane/foundation/models.py +829 -0
- arbora-0.1.8.dev1/arbora/control_plane/foundation/repository.py +161 -0
- arbora-0.1.8.dev1/arbora/control_plane/foundation/service.py +916 -0
- arbora-0.1.8.dev1/arbora/control_plane/migrations/__init__.py +89 -0
- arbora-0.1.8.dev1/arbora/control_plane/migrations/authority.py +918 -0
- arbora-0.1.8.dev1/arbora/control_plane/migrations/errors.py +53 -0
- arbora-0.1.8.dev1/arbora/control_plane/migrations/models.py +656 -0
- arbora-0.1.8.dev1/arbora/control_plane/policy/__init__.py +63 -0
- arbora-0.1.8.dev1/arbora/control_plane/policy/models.py +376 -0
- arbora-0.1.8.dev1/arbora/control_plane/policy/repository.py +445 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/__init__.py +95 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/authority.py +28 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/models.py +870 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/observability.py +15 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/projector.py +751 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/protocols.py +86 -0
- arbora-0.1.8.dev1/arbora/control_plane/projection/repository.py +164 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/__init__.py +85 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/errors.py +45 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/models.py +682 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/protocols.py +97 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/repository.py +176 -0
- arbora-0.1.8.dev1/arbora/control_plane/retrieval/service.py +321 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/__init__.py +71 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/admission.py +232 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/audit.py +134 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/capacity.py +129 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/models.py +381 -0
- arbora-0.1.8.dev1/arbora/control_plane/runs/observations.py +88 -0
- arbora-0.1.8.dev1/arbora/control_plane/sources/__init__.py +84 -0
- arbora-0.1.8.dev1/arbora/control_plane/sources/models.py +871 -0
- arbora-0.1.8.dev1/arbora/control_plane/sources/repository.py +84 -0
- arbora-0.1.8.dev1/arbora/control_plane/sources/service.py +502 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/__init__.py +102 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/errors.py +60 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/models.py +517 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/protocols.py +60 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/repository.py +559 -0
- arbora-0.1.8.dev1/arbora/control_plane/webui/service.py +442 -0
- arbora-0.1.8.dev1/arbora/control_plane/workflows/__init__.py +83 -0
- arbora-0.1.8.dev1/arbora/control_plane/workflows/domain.py +528 -0
- arbora-0.1.8.dev1/arbora/control_plane/workflows/repository.py +363 -0
- arbora-0.1.8.dev1/arbora/core/__init__.py +9 -0
- arbora-0.1.8.dev1/arbora/core/agent_config_admin.py +558 -0
- arbora-0.1.8.dev1/arbora/core/capability_contract.py +158 -0
- arbora-0.1.8.dev1/arbora/core/config_admin.py +97 -0
- arbora-0.1.8.dev1/arbora/core/event_loop.py +164 -0
- arbora-0.1.8.dev1/arbora/core/provider_materialization.py +711 -0
- arbora-0.1.8.dev1/arbora/core/providers.py +720 -0
- arbora-0.1.8.dev1/arbora/core/settings.py +1121 -0
- arbora-0.1.8.dev1/arbora/core/transport.py +224 -0
- arbora-0.1.8.dev1/arbora/deployment/__init__.py +151 -0
- arbora-0.1.8.dev1/arbora/deployment/certification_assets.py +394 -0
- arbora-0.1.8.dev1/arbora/deployment/cli.py +239 -0
- arbora-0.1.8.dev1/arbora/deployment/codex_registration.py +157 -0
- arbora-0.1.8.dev1/arbora/deployment/config_generator.py +1283 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor.py +2433 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_certification.py +413 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_coverage.py +226 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_graph.py +305 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_lakehouse.py +660 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_observability.py +570 -0
- arbora-0.1.8.dev1/arbora/deployment/doctor_support.py +47 -0
- arbora-0.1.8.dev1/arbora/deployment/engine_lock.py +155 -0
- arbora-0.1.8.dev1/arbora/deployment/exit_criteria.py +69 -0
- arbora-0.1.8.dev1/arbora/deployment/file_lock.py +266 -0
- arbora-0.1.8.dev1/arbora/deployment/genesis_environments.py +1150 -0
- arbora-0.1.8.dev1/arbora/deployment/host_config.py +76 -0
- arbora-0.1.8.dev1/arbora/deployment/host_lock.py +250 -0
- arbora-0.1.8.dev1/arbora/deployment/kubernetes_first_boot.py +827 -0
- arbora-0.1.8.dev1/arbora/deployment/live_mount_guard.py +296 -0
- arbora-0.1.8.dev1/arbora/deployment/local_gates.py +83 -0
- arbora-0.1.8.dev1/arbora/deployment/preflight.py +462 -0
- arbora-0.1.8.dev1/arbora/deployment/production_ops.py +546 -0
- arbora-0.1.8.dev1/arbora/deployment/profile_guard.py +589 -0
- arbora-0.1.8.dev1/arbora/deployment/public_ingress_identity.py +208 -0
- arbora-0.1.8.dev1/arbora/deployment/release_canary.py +125 -0
- arbora-0.1.8.dev1/arbora/deployment/release_candidate.py +332 -0
- arbora-0.1.8.dev1/arbora/deployment/repo_templates.py +570 -0
- arbora-0.1.8.dev1/arbora/deployment/self_deploy.py +130 -0
- arbora-0.1.8.dev1/arbora/deployment/semantic_provisioning.py +539 -0
- arbora-0.1.8.dev1/arbora/deployment/venv_autosync.py +973 -0
- arbora-0.1.8.dev1/arbora/deployment/venv_sync.py +2918 -0
- arbora-0.1.8.dev1/arbora/deployment/venv_sync_types.py +257 -0
- arbora-0.1.8.dev1/arbora/deployment/webui_reference_model.py +101 -0
- arbora-0.1.8.dev1/arbora/ecosystem/__init__.py +12 -0
- arbora-0.1.8.dev1/arbora/ecosystem/agent_manager_dashboard.py +350 -0
- arbora-0.1.8.dev1/arbora/ecosystem/ard_federation.py +191 -0
- arbora-0.1.8.dev1/arbora/ecosystem/ard_registry.py +331 -0
- arbora-0.1.8.dev1/arbora/ecosystem/ard_signing.py +157 -0
- arbora-0.1.8.dev1/arbora/ecosystem/hook_installer.py +368 -0
- arbora-0.1.8.dev1/arbora/epistemic.py +447 -0
- arbora-0.1.8.dev1/arbora/evolution/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/evolution/wiring_sweep.py +918 -0
- arbora-0.1.8.dev1/arbora/finance/__init__.py +70 -0
- arbora-0.1.8.dev1/arbora/finance/alerts.py +79 -0
- arbora-0.1.8.dev1/arbora/finance/dca.py +104 -0
- arbora-0.1.8.dev1/arbora/finance/markets.py +116 -0
- arbora-0.1.8.dev1/arbora/finance/schedule.py +84 -0
- arbora-0.1.8.dev1/arbora/fleet/__init__.py +90 -0
- arbora-0.1.8.dev1/arbora/fleet/access_contracts.py +164 -0
- arbora-0.1.8.dev1/arbora/fleet/catalog_composition.py +146 -0
- arbora-0.1.8.dev1/arbora/fleet/catalog_items.py +360 -0
- arbora-0.1.8.dev1/arbora/fleet/catalog_reader.py +677 -0
- arbora-0.1.8.dev1/arbora/fleet/catalog_sources.py +212 -0
- arbora-0.1.8.dev1/arbora/fleet/child_resilience.py +1373 -0
- arbora-0.1.8.dev1/arbora/fleet/client_toolsets.py +175 -0
- arbora-0.1.8.dev1/arbora/fleet/connector_count_pins.py +121 -0
- arbora-0.1.8.dev1/arbora/fleet/discovery_authority.py +78 -0
- arbora-0.1.8.dev1/arbora/fleet/epistemic_adapter.py +243 -0
- arbora-0.1.8.dev1/arbora/fleet/error_budget.py +232 -0
- arbora-0.1.8.dev1/arbora/fleet/feeds.py +98 -0
- arbora-0.1.8.dev1/arbora/fleet/gateway_ops.py +597 -0
- arbora-0.1.8.dev1/arbora/fleet/health.py +583 -0
- arbora-0.1.8.dev1/arbora/fleet/local_skill_catalog.py +207 -0
- arbora-0.1.8.dev1/arbora/fleet/mcp_resource_reconciliation.py +147 -0
- arbora-0.1.8.dev1/arbora/fleet/multiplexer.py +7561 -0
- arbora-0.1.8.dev1/arbora/fleet/multiplexer_ops.py +480 -0
- arbora-0.1.8.dev1/arbora/fleet/onboarding.py +801 -0
- arbora-0.1.8.dev1/arbora/fleet/protocol_compat.py +487 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/__init__.py +26 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/_model.py +11 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/development_lane.py +200 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/resource_pool_authority.py +1149 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/resource_reservation.py +151 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/scaling_authority.py +1086 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/scaling_intent_reconciler.py +1501 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/scaling_signal_authority.py +1018 -0
- arbora-0.1.8.dev1/arbora/fleet/scaling/service_scale_units.py +1850 -0
- arbora-0.1.8.dev1/arbora/fleet/service_child.py +352 -0
- arbora-0.1.8.dev1/arbora/fleet/session_loads.py +278 -0
- arbora-0.1.8.dev1/arbora/fleet/session_notifications.py +37 -0
- arbora-0.1.8.dev1/arbora/fleet/shared_multiplexer.py +160 -0
- arbora-0.1.8.dev1/arbora/fleet/source_executor.py +193 -0
- arbora-0.1.8.dev1/arbora/fleet/surfaces.py +84 -0
- arbora-0.1.8.dev1/arbora/fleet/throttle_service.py +84 -0
- arbora-0.1.8.dev1/arbora/fleet_tool_call.py +100 -0
- arbora-0.1.8.dev1/arbora/gateway/__init__.py +45 -0
- arbora-0.1.8.dev1/arbora/gateway/aggregator.py +241 -0
- arbora-0.1.8.dev1/arbora/gateway/config.py +595 -0
- arbora-0.1.8.dev1/arbora/gateway/daemon.py +347 -0
- arbora-0.1.8.dev1/arbora/gateway/dashboard_api.py +407 -0
- arbora-0.1.8.dev1/arbora/gateway/enhanced_catalog_api.py +320 -0
- arbora-0.1.8.dev1/arbora/gateway/fleet.py +567 -0
- arbora-0.1.8.dev1/arbora/gateway/fleet_events.py +502 -0
- arbora-0.1.8.dev1/arbora/gateway/graph_api.py +325 -0
- arbora-0.1.8.dev1/arbora/gateway/models.py +232 -0
- arbora-0.1.8.dev1/arbora/gateway/ontology_api.py +495 -0
- arbora-0.1.8.dev1/arbora/gateway/ports.py +61 -0
- arbora-0.1.8.dev1/arbora/gateway/rate_limit.py +169 -0
- arbora-0.1.8.dev1/arbora/gateway/registry.py +206 -0
- arbora-0.1.8.dev1/arbora/gateway/registry_api.py +1682 -0
- arbora-0.1.8.dev1/arbora/gateway/remote_oauth_api.py +435 -0
- arbora-0.1.8.dev1/arbora/gateway/schema_context_api.py +81 -0
- arbora-0.1.8.dev1/arbora/gateway/schema_context_service.py +53 -0
- arbora-0.1.8.dev1/arbora/gateway/schemas/__init__.py +7 -0
- arbora-0.1.8.dev1/arbora/gateway/schemas/connector.py +67 -0
- arbora-0.1.8.dev1/arbora/gateway/schemas/graph_core.py +790 -0
- arbora-0.1.8.dev1/arbora/gateway/schemas/schema_context.py +121 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/ansible_tower.py +59 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/archivebox.py +46 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/aris.py +47 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/arr.py +40 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/atlassian.py +44 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/audio_transcriber.py +35 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/audiobookshelf.py +47 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/base.py +374 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/caddy.py +96 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/camunda.py +58 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/ciso_assistant.py +62 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/clarity.py +45 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/container_manager.py +52 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/data_science.py +33 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/dockerhub.py +50 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/documentdb.py +48 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/ear.py +57 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/egeria.py +54 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/emerald_exchange.py +32 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/erpnext.py +52 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/fan_manager.py +59 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/firefly_iii.py +47 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/fleet_client.py +260 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/freshrss.py +69 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/github.py +45 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/gitlab.py +74 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/google_workspace.py +29 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/gramps.py +54 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/hdhomerun.py +46 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/home_assistant.py +61 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/jellyfin.py +63 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/jena.py +42 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/kafka.py +57 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/keycloak.py +56 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/langfuse.py +59 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/leanix.py +58 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/legal_peripherals.py +30 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/lgtm.py +65 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/listmonk.py +53 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/mattermost.py +55 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/mealie.py +56 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/media_downloader.py +48 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/microsoft.py +45 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/nextcloud.py +59 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/okta.py +47 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/ollama.py +54 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/onetrust.py +46 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/openbao.py +49 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/orchestrator.py +34 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/owncast.py +48 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/paperless_ngx.py +46 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/plane.py +56 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/portainer.py +99 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/postiz.py +50 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/pulselink.py +46 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/qbittorrent.py +55 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/repository_manager.py +44 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/rom_manager.py +63 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/scholarx.py +36 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/searxng.py +49 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/sentry.py +58 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/servicenow.py +54 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/stirlingpdf.py +45 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/systems_manager.py +36 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/technitium.py +73 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/teleport.py +28 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/tunnel_manager.py +44 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/twenty.py +44 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/uptime_kuma.py +71 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/vector_db.py +64 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/wger.py +50 -0
- arbora-0.1.8.dev1/arbora/gateway/widgets/zulip.py +58 -0
- arbora-0.1.8.dev1/arbora/host_bindings.py +278 -0
- arbora-0.1.8.dev1/arbora/identity/__init__.py +28 -0
- arbora-0.1.8.dev1/arbora/identity/admin_console.py +54 -0
- arbora-0.1.8.dev1/arbora/identity/admission.py +82 -0
- arbora-0.1.8.dev1/arbora/identity/api_keys.py +54 -0
- arbora-0.1.8.dev1/arbora/identity/approval.py +224 -0
- arbora-0.1.8.dev1/arbora/identity/approval_engine.py +150 -0
- arbora-0.1.8.dev1/arbora/identity/approval_registration.py +145 -0
- arbora-0.1.8.dev1/arbora/identity/bootstrap.py +76 -0
- arbora-0.1.8.dev1/arbora/identity/broker.py +304 -0
- arbora-0.1.8.dev1/arbora/identity/browser.py +261 -0
- arbora-0.1.8.dev1/arbora/identity/client_entry_points.py +70 -0
- arbora-0.1.8.dev1/arbora/identity/composition.py +68 -0
- arbora-0.1.8.dev1/arbora/identity/engine.py +213 -0
- arbora-0.1.8.dev1/arbora/identity/engine_ports.py +91 -0
- arbora-0.1.8.dev1/arbora/identity/issuer.py +180 -0
- arbora-0.1.8.dev1/arbora/identity/ldap.py +140 -0
- arbora-0.1.8.dev1/arbora/identity/mail_capability.py +88 -0
- arbora-0.1.8.dev1/arbora/identity/mfa.py +77 -0
- arbora-0.1.8.dev1/arbora/identity/oidc.py +142 -0
- arbora-0.1.8.dev1/arbora/identity/ports.py +83 -0
- arbora-0.1.8.dev1/arbora/identity/saml.py +173 -0
- arbora-0.1.8.dev1/arbora/identity/scim.py +132 -0
- arbora-0.1.8.dev1/arbora/ingest/__init__.py +32 -0
- arbora-0.1.8.dev1/arbora/ingest/connector_sources.py +417 -0
- arbora-0.1.8.dev1/arbora/ingest/service.py +218 -0
- arbora-0.1.8.dev1/arbora/ingest/source_catalog.py +1002 -0
- arbora-0.1.8.dev1/arbora/mcp_server/__init__.py +15 -0
- arbora-0.1.8.dev1/arbora/mcp_server/agent_control.py +48 -0
- arbora-0.1.8.dev1/arbora/mcp_server/arbora_operations.json +1675 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/__init__.py +20 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/_arbora_action_manifest.py +2242 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/action_dispatch.py +256 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/arbora_capabilities.json +23321 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/arbora_surface.py +294 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/client_credentials.py +767 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/concurrency.py +142 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/connector_surface.py +244 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/content_resources.py +64 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/context_helpers.py +402 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/delegated_auth.py +580 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/engine_routing.py +1064 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/engine_surface_types.py +67 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/eunomia_principal.py +807 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/httpx_boundary.py +157 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/intent_contract.py +221 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/middlewares.py +243 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/oauth_log_hygiene.py +100 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/ontology_types.py +30 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/optional_tool_features.py +44 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/remote_oauth_broker.py +1521 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/server_factory.py +2753 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/skill_coverage.py +553 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tasks_extension.py +1400 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tool_specs.py +349 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/__init__.py +51 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/_surface_selection.py +37 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/analysis_tools.py +2656 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/analyze_suite.py +220 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/audit_tools.py +106 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/candidate_claim_tools.py +173 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/compliance_tools.py +396 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/config_tools.py +106 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/domain_ops_tools.py +114 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/engine_surface_tools.py +3618 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/engine_tools.py +715 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/epistemic_tools.py +265 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/governance_tools.py +275 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/graph_tools.py +352 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/intent_tools.py +2821 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/mcp_apps.py +434 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/ontology_tools.py +1771 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/query_tools.py +3505 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/reach_tools.py +98 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/secret_tools.py +110 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/state_tools.py +245 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/tools/write_ingest_tools.py +1684 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/verbose_tools.py +808 -0
- arbora-0.1.8.dev1/arbora/mcp_server/backing/write_ingest_types.py +41 -0
- arbora-0.1.8.dev1/arbora/mcp_server/bootstrap.py +901 -0
- arbora-0.1.8.dev1/arbora/mcp_server/catalog_composition.py +145 -0
- arbora-0.1.8.dev1/arbora/mcp_server/composition.py +321 -0
- arbora-0.1.8.dev1/arbora/mcp_server/current_plan_reader.py +97 -0
- arbora-0.1.8.dev1/arbora/mcp_server/decide_wiring.py +246 -0
- arbora-0.1.8.dev1/arbora/mcp_server/effect_journal.py +244 -0
- arbora-0.1.8.dev1/arbora/mcp_server/fleet_composition.py +180 -0
- arbora-0.1.8.dev1/arbora/mcp_server/harness_host.py +125 -0
- arbora-0.1.8.dev1/arbora/mcp_server/hosted_invocation.py +58 -0
- arbora-0.1.8.dev1/arbora/mcp_server/legacy_action_mapping.py +87 -0
- arbora-0.1.8.dev1/arbora/mcp_server/operation_registry.py +107 -0
- arbora-0.1.8.dev1/arbora/mcp_server/routes.py +26 -0
- arbora-0.1.8.dev1/arbora/mcp_server/runtime.py +1019 -0
- arbora-0.1.8.dev1/arbora/mcp_server/served_engine.py +369 -0
- arbora-0.1.8.dev1/arbora/mcp_server/served_invocation.py +423 -0
- arbora-0.1.8.dev1/arbora/mcp_server/server.py +422 -0
- arbora-0.1.8.dev1/arbora/mcp_server/source_reader.py +533 -0
- arbora-0.1.8.dev1/arbora/messaging/__init__.py +5 -0
- arbora-0.1.8.dev1/arbora/messaging/action_dispatch.py +119 -0
- arbora-0.1.8.dev1/arbora/messaging/alert_intake.py +215 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/__init__.py +21 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/discord.py +344 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/googlechat.py +160 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/googlemeet.py +113 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/imessage.py +147 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/irc.py +139 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/line.py +121 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/matrix.py +149 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/mattermost.py +440 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/nextcloud.py +165 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/signal.py +113 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/slack.py +276 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/synology.py +110 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/teams.py +224 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/telegram.py +482 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/twitch.py +128 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/voicecall.py +121 -0
- arbora-0.1.8.dev1/arbora/messaging/backends/whatsapp.py +211 -0
- arbora-0.1.8.dev1/arbora/messaging/base.py +420 -0
- arbora-0.1.8.dev1/arbora/messaging/capabilities.py +444 -0
- arbora-0.1.8.dev1/arbora/messaging/coalescer.py +101 -0
- arbora-0.1.8.dev1/arbora/messaging/commands.py +177 -0
- arbora-0.1.8.dev1/arbora/messaging/governed_send.py +46 -0
- arbora-0.1.8.dev1/arbora/messaging/host_ports.py +63 -0
- arbora-0.1.8.dev1/arbora/messaging/inbox.py +180 -0
- arbora-0.1.8.dev1/arbora/messaging/intake.py +76 -0
- arbora-0.1.8.dev1/arbora/messaging/lease.py +467 -0
- arbora-0.1.8.dev1/arbora/messaging/models.py +303 -0
- arbora-0.1.8.dev1/arbora/messaging/planner_handler.py +130 -0
- arbora-0.1.8.dev1/arbora/messaging/polling.py +171 -0
- arbora-0.1.8.dev1/arbora/messaging/reach.py +19 -0
- arbora-0.1.8.dev1/arbora/messaging/registry.py +415 -0
- arbora-0.1.8.dev1/arbora/messaging/render.py +85 -0
- arbora-0.1.8.dev1/arbora/messaging/router.py +474 -0
- arbora-0.1.8.dev1/arbora/messaging/service.py +565 -0
- arbora-0.1.8.dev1/arbora/messaging/supervision.py +122 -0
- arbora-0.1.8.dev1/arbora/messaging/transport.py +40 -0
- arbora-0.1.8.dev1/arbora/observability/__init__.py +36 -0
- arbora-0.1.8.dev1/arbora/observability/correlation.py +127 -0
- arbora-0.1.8.dev1/arbora/observability/custom_observability.py +1102 -0
- arbora-0.1.8.dev1/arbora/observability/error_detail_sink.py +153 -0
- arbora-0.1.8.dev1/arbora/observability/gateway_health.py +164 -0
- arbora-0.1.8.dev1/arbora/observability/gateway_metrics.py +1338 -0
- arbora-0.1.8.dev1/arbora/observability/health.py +348 -0
- arbora-0.1.8.dev1/arbora/observability/langfuse_exporter.py +385 -0
- arbora-0.1.8.dev1/arbora/observability/langfuse_trust.py +1246 -0
- arbora-0.1.8.dev1/arbora/observability/readiness.py +115 -0
- arbora-0.1.8.dev1/arbora/observability/runtime_health.py +808 -0
- arbora-0.1.8.dev1/arbora/observability/runtime_signals.py +593 -0
- arbora-0.1.8.dev1/arbora/observability/telemetry.py +90 -0
- arbora-0.1.8.dev1/arbora/observability/trace_ontology.py +488 -0
- arbora-0.1.8.dev1/arbora/ontology/shapes/runtime.shapes.ttl +51 -0
- arbora-0.1.8.dev1/arbora/security/__init__.py +13 -0
- arbora-0.1.8.dev1/arbora/security/actor_context.py +207 -0
- arbora-0.1.8.dev1/arbora/security/auth.py +286 -0
- arbora-0.1.8.dev1/arbora/security/config_sensitivity.py +131 -0
- arbora-0.1.8.dev1/arbora/security/conformance/__init__.py +72 -0
- arbora-0.1.8.dev1/arbora/security/conformance/surface_inventory.py +183 -0
- arbora-0.1.8.dev1/arbora/security/conformance/surface_manifest.py +363 -0
- arbora-0.1.8.dev1/arbora/security/delegation.py +459 -0
- arbora-0.1.8.dev1/arbora/security/elevation.py +266 -0
- arbora-0.1.8.dev1/arbora/security/error_surface.py +561 -0
- arbora-0.1.8.dev1/arbora/security/http_boundary.py +441 -0
- arbora-0.1.8.dev1/arbora/security/identifiers.py +120 -0
- arbora-0.1.8.dev1/arbora/security/identity.py +218 -0
- arbora-0.1.8.dev1/arbora/security/log_redaction.py +38 -0
- arbora-0.1.8.dev1/arbora/security/oidc_discovery.py +152 -0
- arbora-0.1.8.dev1/arbora/security/operation_result.py +41 -0
- arbora-0.1.8.dev1/arbora/security/prompt_injection.py +512 -0
- arbora-0.1.8.dev1/arbora/security/request_identity.py +1483 -0
- arbora-0.1.8.dev1/arbora/security/run_authority.py +307 -0
- arbora-0.1.8.dev1/arbora/security/run_token.py +190 -0
- arbora-0.1.8.dev1/arbora/security/scope_registry.py +225 -0
- arbora-0.1.8.dev1/arbora/security/secrets.py +663 -0
- arbora-0.1.8.dev1/arbora/security/security_policy_middleware.py +56 -0
- arbora-0.1.8.dev1/arbora/security/settings.py +112 -0
- arbora-0.1.8.dev1/arbora/semantic_content.py +200 -0
- arbora-0.1.8.dev1/arbora/skills/__init__.py +15 -0
- arbora-0.1.8.dev1/arbora/skills/agent-utilities-source-integration/SKILL.md +181 -0
- arbora-0.1.8.dev1/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +5 -0
- arbora-0.1.8.dev1/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/SKILL.md +203 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/agents/arbora.yaml +5 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/references/first-boot-verification.md +80 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +85 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/references/identity-and-access.md +147 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/references/secrets-and-federation.md +67 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-deployment/references/telemetry.md +29 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-development/SKILL.md +144 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-development/references/bootstrap.md +88 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-evolution/SKILL.md +542 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-evolution/agents/arbora.yaml +5 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-evolution/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/SKILL.md +347 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/agents/arbora.yaml +5 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +39 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/bare-metal.md +45 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/compose-and-podman.md +83 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/data-plane-substrate.md +246 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/deployment-contract.md +99 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/development-workspace.md +62 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/docker-swarm.md +63 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/engine-identity-admission.md +218 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +111 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +68 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/runtime-topology.md +90 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-genesis/references/security-and-operations.md +128 -0
- arbora-0.1.8.dev1/arbora/skills/arbora-repository-development/SKILL.md +286 -0
- arbora-0.1.8.dev1/arbora/skills/autonomous-contribution/SKILL.md +42 -0
- arbora-0.1.8.dev1/arbora/skills/autonomous-contribution/agents/arbora.yaml +5 -0
- arbora-0.1.8.dev1/arbora/skills/autonomous-contribution/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/core-pack.txt +15 -0
- arbora-0.1.8.dev1/arbora/skills/graph-engine-and-modalities/SKILL.md +127 -0
- arbora-0.1.8.dev1/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +37 -0
- arbora-0.1.8.dev1/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-ingestion-and-integration/SKILL.md +191 -0
- arbora-0.1.8.dev1/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +15 -0
- arbora-0.1.8.dev1/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +261 -0
- arbora-0.1.8.dev1/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +77 -0
- arbora-0.1.8.dev1/arbora/skills/graph-modeling-and-mutation/SKILL.md +136 -0
- arbora-0.1.8.dev1/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +22 -0
- arbora-0.1.8.dev1/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-orchestration-and-automation/SKILL.md +128 -0
- arbora-0.1.8.dev1/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +12 -0
- arbora-0.1.8.dev1/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-query-and-explanation/SKILL.md +166 -0
- arbora-0.1.8.dev1/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +28 -0
- arbora-0.1.8.dev1/arbora/skills/graph-query-and-explanation/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-query-and-explanation/references/uql-reference.md +432 -0
- arbora-0.1.8.dev1/arbora/skills/graph-research-and-analysis/SKILL.md +160 -0
- arbora-0.1.8.dev1/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +11 -0
- arbora-0.1.8.dev1/arbora/skills/graph-research-and-analysis/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/graph-runtime-and-governance/SKILL.md +165 -0
- arbora-0.1.8.dev1/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +17 -0
- arbora-0.1.8.dev1/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +4 -0
- arbora-0.1.8.dev1/arbora/skills/using-arbora/SKILL.md +114 -0
- arbora-0.1.8.dev1/arbora/unique_records.py +52 -0
- arbora-0.1.8.dev1/arbora/webui_host/__init__.py +10 -0
- arbora-0.1.8.dev1/arbora/webui_host/contact_delivery.py +259 -0
- arbora-0.1.8.dev1/arbora/webui_host/contact_governance.py +282 -0
- arbora-0.1.8.dev1/arbora/webui_host/mcp_delegation.py +136 -0
- arbora-0.1.8.dev1/arbora/webui_host/package_layout_expectation.py +70 -0
- arbora-0.1.8.dev1/arbora/webui_host/voice_delegation.py +74 -0
- arbora-0.1.8.dev1/arbora/webui_host/webui_co_service.py +251 -0
- arbora-0.1.8.dev1/arbora/work_items.py +294 -0
- arbora-0.1.8.dev1/arbora.egg-info/PKG-INFO +231 -0
- arbora-0.1.8.dev1/arbora.egg-info/SOURCES.txt +703 -0
- arbora-0.1.8.dev1/arbora.egg-info/dependency_links.txt +1 -0
- arbora-0.1.8.dev1/arbora.egg-info/entry_points.txt +39 -0
- arbora-0.1.8.dev1/arbora.egg-info/requires.txt +100 -0
- arbora-0.1.8.dev1/arbora.egg-info/top_level.txt +1 -0
- arbora-0.1.8.dev1/pyproject.toml +287 -0
- arbora-0.1.8.dev1/setup.cfg +4 -0
- arbora-0.1.8.dev1/tests/test_agent_runs.py +123 -0
- arbora-0.1.8.dev1/tests/test_agents_run_end_to_end.py +393 -0
- arbora-0.1.8.dev1/tests/test_check_acceptance_evidence.py +307 -0
- arbora-0.1.8.dev1/tests/test_check_connector_count_pins.py +77 -0
- arbora-0.1.8.dev1/tests/test_check_core_skills.py +122 -0
- arbora-0.1.8.dev1/tests/test_check_wiring.py +176 -0
- arbora-0.1.8.dev1/tests/test_component_registry_boundary_seeds.py +67 -0
- arbora-0.1.8.dev1/tests/test_connector_pack_typed_publisher.py +71 -0
- arbora-0.1.8.dev1/tests/test_connector_runner_composition.py +251 -0
- arbora-0.1.8.dev1/tests/test_dependency_manifest.py +122 -0
- arbora-0.1.8.dev1/tests/test_docs_surface.py +61 -0
- arbora-0.1.8.dev1/tests/test_epistemic_adapter.py +190 -0
- arbora-0.1.8.dev1/tests/test_fleet_catalog_reader.py +388 -0
- arbora-0.1.8.dev1/tests/test_host_bindings.py +84 -0
- arbora-0.1.8.dev1/tests/test_package_layout.py +142 -0
- arbora-0.1.8.dev1/tests/test_real_boot.py +968 -0
- arbora-0.1.8.dev1/tests/test_real_boot_messaging.py +133 -0
- arbora-0.1.8.dev1/tests/test_semantic_content.py +170 -0
- arbora-0.1.8.dev1/tests/test_served_operation_api.py +332 -0
- arbora-0.1.8.dev1/tests/test_unique_records.py +137 -0
- arbora-0.1.8.dev1/tests/test_work_items.py +171 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Knuckles Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: arbora
|
|
3
|
+
Version: 0.1.8.dev1
|
|
4
|
+
Summary: The deployable MCP, REST, control-plane, fleet, WebUI, and operations composition for the Knuckles agent platform.
|
|
5
|
+
Author-email: Repository Maintainers <maintainers@knuckles.team>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
8
|
+
Classifier: Environment :: Console
|
|
9
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: agent-utilities<4.0.0,>=3.1.0
|
|
18
|
+
Requires-Dist: eunomia-core>=0.3.10
|
|
19
|
+
Requires-Dist: httpx>=0.28.1
|
|
20
|
+
Requires-Dist: pyjwt>=2.15.1
|
|
21
|
+
Requires-Dist: joserfc>=1.7.5
|
|
22
|
+
Requires-Dist: python-multipart>=0.0.32
|
|
23
|
+
Requires-Dist: agent-connector-sdk[a2a,mcp]<0.4.0,>=0.3.18
|
|
24
|
+
Requires-Dist: aiohttp>=3.14.5
|
|
25
|
+
Requires-Dist: anyio>=4.15.1
|
|
26
|
+
Requires-Dist: epistemic-graph[server]<3.0.0,>=2.27.5
|
|
27
|
+
Requires-Dist: fastapi>=0.143.3
|
|
28
|
+
Requires-Dist: filelock>=4.2.0
|
|
29
|
+
Requires-Dist: msgpack>=1.2.1
|
|
30
|
+
Requires-Dist: prometheus-client>=0.26.0
|
|
31
|
+
Requires-Dist: pydantic<3.0.0,>=2.14.1
|
|
32
|
+
Requires-Dist: PyYAML>=6.0.3
|
|
33
|
+
Requires-Dist: starlette>=1.8.0
|
|
34
|
+
Requires-Dist: fastmcp>=4.1.0
|
|
35
|
+
Requires-Dist: mcp<3.0.0,>=2.3.0
|
|
36
|
+
Requires-Dist: opentelemetry-api>=1.45.1
|
|
37
|
+
Requires-Dist: pydantic-ai-slim[openai]==2.57.0
|
|
38
|
+
Requires-Dist: universal-skills<2.0.0,>=1.3.11
|
|
39
|
+
Provides-Extra: test
|
|
40
|
+
Requires-Dist: agent-terminal-ui>=2.3.1; extra == "test"
|
|
41
|
+
Requires-Dist: pytest>=9.1.1; extra == "test"
|
|
42
|
+
Requires-Dist: pytest-asyncio>=1.4.0; extra == "test"
|
|
43
|
+
Requires-Dist: pytest-cov>=7.1.0; extra == "test"
|
|
44
|
+
Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
|
|
45
|
+
Requires-Dist: pytest-timeout>=2.4.0; extra == "test"
|
|
46
|
+
Requires-Dist: mypy>=2.4.0; extra == "test"
|
|
47
|
+
Requires-Dist: ruff==0.17.1; extra == "test"
|
|
48
|
+
Requires-Dist: types-PyYAML>=6.0.12.20260906; extra == "test"
|
|
49
|
+
Requires-Dist: python-telegram-bot>=22.8; extra == "test"
|
|
50
|
+
Requires-Dist: setuptools>=84.0.0; extra == "test"
|
|
51
|
+
Provides-Extra: webui
|
|
52
|
+
Requires-Dist: agent-webui<3.0.0,>=2.7.1; extra == "webui"
|
|
53
|
+
Requires-Dist: uvicorn>=0.54.0; extra == "webui"
|
|
54
|
+
Provides-Extra: gateway-widgets
|
|
55
|
+
Requires-Dist: agent-connector-sdk[a2a,mcp]<0.4.0,>=0.3.18; extra == "gateway-widgets"
|
|
56
|
+
Provides-Extra: vault
|
|
57
|
+
Requires-Dist: hvac>=2.4.0; extra == "vault"
|
|
58
|
+
Provides-Extra: messaging-telegram
|
|
59
|
+
Requires-Dist: python-telegram-bot>=22.8; extra == "messaging-telegram"
|
|
60
|
+
Provides-Extra: messaging-mattermost
|
|
61
|
+
Requires-Dist: mattermostdriver>=7.3.2; extra == "messaging-mattermost"
|
|
62
|
+
Provides-Extra: messaging-discord
|
|
63
|
+
Requires-Dist: discord.py>=2.7.1; extra == "messaging-discord"
|
|
64
|
+
Provides-Extra: messaging-slack
|
|
65
|
+
Requires-Dist: slack-bolt>=1.30.0; extra == "messaging-slack"
|
|
66
|
+
Provides-Extra: messaging-whatsapp
|
|
67
|
+
Requires-Dist: neonize>=0.5.2; extra == "messaging-whatsapp"
|
|
68
|
+
Requires-Dist: httpx>=0.28.1; extra == "messaging-whatsapp"
|
|
69
|
+
Provides-Extra: messaging-teams
|
|
70
|
+
Requires-Dist: botbuilder-core>=4.17.1; extra == "messaging-teams"
|
|
71
|
+
Provides-Extra: messaging-googlechat
|
|
72
|
+
Requires-Dist: google-api-python-client>=2.198.0; extra == "messaging-googlechat"
|
|
73
|
+
Requires-Dist: google-auth>=2.62.0; extra == "messaging-googlechat"
|
|
74
|
+
Provides-Extra: messaging-googlemeet
|
|
75
|
+
Requires-Dist: google-api-python-client>=2.198.0; extra == "messaging-googlemeet"
|
|
76
|
+
Requires-Dist: google-auth>=2.62.0; extra == "messaging-googlemeet"
|
|
77
|
+
Provides-Extra: messaging-matrix
|
|
78
|
+
Requires-Dist: matrix-nio>=0.26.0; extra == "messaging-matrix"
|
|
79
|
+
Provides-Extra: messaging-irc
|
|
80
|
+
Requires-Dist: irc>=20.5.0; extra == "messaging-irc"
|
|
81
|
+
Provides-Extra: messaging-signal
|
|
82
|
+
Provides-Extra: messaging-imessage
|
|
83
|
+
Provides-Extra: messaging-line
|
|
84
|
+
Requires-Dist: line-bot-sdk>=3.26.0; extra == "messaging-line"
|
|
85
|
+
Provides-Extra: messaging-twitch
|
|
86
|
+
Requires-Dist: twitchio>=3.3.2; extra == "messaging-twitch"
|
|
87
|
+
Provides-Extra: messaging-synology
|
|
88
|
+
Requires-Dist: httpx>=0.28.1; extra == "messaging-synology"
|
|
89
|
+
Provides-Extra: messaging-voicecall
|
|
90
|
+
Requires-Dist: twilio>=9.12.0; extra == "messaging-voicecall"
|
|
91
|
+
Provides-Extra: messaging-nextcloud
|
|
92
|
+
Requires-Dist: httpx>=0.28.1; extra == "messaging-nextcloud"
|
|
93
|
+
Provides-Extra: messaging
|
|
94
|
+
Requires-Dist: arbora[messaging-discord,messaging-googlechat,messaging-googlemeet,messaging-irc,messaging-line,messaging-matrix,messaging-mattermost,messaging-nextcloud,messaging-signal,messaging-slack,messaging-synology,messaging-teams,messaging-telegram,messaging-twitch,messaging-voicecall,messaging-whatsapp]; extra == "messaging"
|
|
95
|
+
Dynamic: license-file
|
|
96
|
+
|
|
97
|
+
# Arbora
|
|
98
|
+
|
|
99
|
+
<p align="center">
|
|
100
|
+
<img src="docs/assets/brands/arbora-logo-v1.png" alt="Arbora logo" width="176">
|
|
101
|
+
</p>
|
|
102
|
+
|
|
103
|
+
<p align="center">
|
|
104
|
+
<strong>The process the operator runs to open the Knuckles agent platform.</strong><br>
|
|
105
|
+
<sub>MCP · REST · A2A · identity policy · fleet supervision · hosted interfaces</sub>
|
|
106
|
+
</p>
|
|
107
|
+
|
|
108
|
+
<p align="center">
|
|
109
|
+
|
|
110
|
+
[](https://pypi.org/project/arbora/)
|
|
111
|
+
[](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml)
|
|
112
|
+
[](https://knuckles-team.github.io/arbora/)
|
|
113
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
114
|
+
[](https://github.com/Knuckles-Team/arbora/stargazers)
|
|
115
|
+
[](https://github.com/Knuckles-Team/arbora/forks)
|
|
116
|
+
[](https://github.com/Knuckles-Team/arbora/graphs/contributors)
|
|
117
|
+
[](LICENSE)
|
|
118
|
+
[](https://github.com/Knuckles-Team/arbora/commits/main)
|
|
119
|
+
[](https://github.com/Knuckles-Team/arbora/pulls)
|
|
120
|
+
[](https://github.com/Knuckles-Team/arbora/pulls?q=is%3Apr+is%3Aclosed)
|
|
121
|
+
[](https://github.com/Knuckles-Team/arbora/issues)
|
|
122
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
123
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
124
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
125
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
126
|
+
[](https://pypi.org/project/arbora/)
|
|
127
|
+
[](https://pypi.org/project/arbora/)
|
|
128
|
+
[](https://pypi.org/project/arbora/)
|
|
129
|
+
[](https://pypi.org/project/arbora/)
|
|
130
|
+
|
|
131
|
+
</p>
|
|
132
|
+
|
|
133
|
+
<p align="center">
|
|
134
|
+
<a href="https://knuckles-team.github.io/arbora/">Documentation</a> ·
|
|
135
|
+
<a href="https://knuckles-team.github.io/arbora/capabilities/">Capabilities</a> ·
|
|
136
|
+
<a href="https://knuckles-team.github.io/arbora/interfaces/">Interfaces</a> ·
|
|
137
|
+
<a href="https://knuckles-team.github.io/arbora/status/">Status</a>
|
|
138
|
+
</p>
|
|
139
|
+
|
|
140
|
+
## Overview
|
|
141
|
+
|
|
142
|
+
Run Arbora when an MCP client, HTTP application, A2A peer, or hosted interface
|
|
143
|
+
needs one authenticated way into the platform. One serving lifecycle composes
|
|
144
|
+
the same application services across transports, applies identity and tenant
|
|
145
|
+
policy, and keeps tool discovery tied to the live fleet catalog.
|
|
146
|
+
|
|
147
|
+
Arbora is the platform edge and composition root. It is not the agent harness,
|
|
148
|
+
the durable database, a connector implementation, or the browser UI.
|
|
149
|
+
|
|
150
|
+
## Key Capabilities
|
|
151
|
+
|
|
152
|
+
- Serve local MCP over `stdio` and authenticated MCP over streamable HTTP.
|
|
153
|
+
- Project the same governed operations through REST and unary A2A.
|
|
154
|
+
- Discover, admit, supervise, and route the MCP connector fleet.
|
|
155
|
+
- Apply identity, tenant, action-policy, idempotency, and provenance controls.
|
|
156
|
+
- Host Agent Web UI and coordinate terminal, desktop, messaging, and attended
|
|
157
|
+
browser capabilities.
|
|
158
|
+
- Generate deployment configuration and report live readiness through `/health`.
|
|
159
|
+
|
|
160
|
+
## Documentation
|
|
161
|
+
|
|
162
|
+
Start with the **[visual platform guide](https://knuckles-team.github.io/arbora/)**,
|
|
163
|
+
then use the task-oriented references:
|
|
164
|
+
|
|
165
|
+
- [Start Arbora](https://knuckles-team.github.io/arbora/get-started/)
|
|
166
|
+
- [Review capabilities](https://knuckles-team.github.io/arbora/capabilities/)
|
|
167
|
+
- [Choose an interface](https://knuckles-team.github.io/arbora/interfaces/)
|
|
168
|
+
- [Understand the architecture](https://knuckles-team.github.io/arbora/architecture/)
|
|
169
|
+
- [Check live status](https://knuckles-team.github.io/arbora/status/)
|
|
170
|
+
- [Configure a deployment](https://knuckles-team.github.io/arbora/deployment/)
|
|
171
|
+
|
|
172
|
+
## Architecture
|
|
173
|
+
|
|
174
|
+
| Layer | Authority | Relationship to Arbora |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| [Agent Web UI](https://knuckles-team.github.io/agent-webui/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
|
|
177
|
+
| Agent Terminal UI | Terminal and headless interaction | Uses the governed Arbora REST interface. |
|
|
178
|
+
| Geniusbot | Desktop cockpit | Uses the governed Arbora gateway for its primary panels. |
|
|
179
|
+
| Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; agent-utilities owns adapters and routing. |
|
|
180
|
+
| **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
|
|
181
|
+
| [agent-utilities](https://knuckles-team.github.io/agent-utilities/) | Agents, workflows, evaluation, and skills | Arbora invokes its typed control-plane services. |
|
|
182
|
+
| [epistemic-graph](https://knuckles-team.github.io/epistemic-graph/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses its generated client contracts. |
|
|
183
|
+
| [agent-connector-sdk](https://knuckles-team.github.io/agent-connector-sdk/) | Connector servers, source synchronization, and governed effects | Arbora discovers and routes SDK-based connector services. |
|
|
184
|
+
|
|
185
|
+
The boundary is deliberate: Arbora authenticates, composes, routes,
|
|
186
|
+
supervises, and projects. Each sibling remains the source of truth for its own
|
|
187
|
+
domain.
|
|
188
|
+
|
|
189
|
+
[](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
190
|
+
|
|
191
|
+
[Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
192
|
+
|
|
193
|
+
## Quick Start
|
|
194
|
+
|
|
195
|
+
Requires Python 3.12–3.14 and [`uv`](https://docs.astral.sh/uv/). Install the
|
|
196
|
+
bundled runtime, generate the local profile, and register its `stdio` launcher
|
|
197
|
+
with Codex:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
uv tool install "arbora[webui]"
|
|
201
|
+
setup-config generate --profile tiny
|
|
202
|
+
setup-config doctor --profile tiny
|
|
203
|
+
setup-config codex
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
The doctor command is the first observable result: it reports whether the local
|
|
207
|
+
profile and required authorities are ready before a listener starts. Arbora
|
|
208
|
+
then appears as the `arbora` MCP server in Codex. Other MCP clients can
|
|
209
|
+
start the same local transport directly:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
arbora --transport stdio
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Network deployments use the identity, TLS, and authorization settings in the
|
|
216
|
+
[deployment guide](https://knuckles-team.github.io/arbora/deployment/).
|
|
217
|
+
|
|
218
|
+
## Contributing
|
|
219
|
+
|
|
220
|
+
Issues and pull requests are welcome. Read [AGENTS.md](AGENTS.md) for source
|
|
221
|
+
boundaries and quality gates. Report vulnerabilities through
|
|
222
|
+
[GitHub Security Advisories](https://github.com/Knuckles-Team/arbora/security/advisories/new).
|
|
223
|
+
|
|
224
|
+
### Development
|
|
225
|
+
|
|
226
|
+
Run `scripts/bootstrap.sh`, then follow [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
227
|
+
for the hooks, tests, and branch and pull-request flow.
|
|
228
|
+
|
|
229
|
+
## License
|
|
230
|
+
|
|
231
|
+
Arbora is released under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Arbora
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/assets/brands/arbora-logo-v1.png" alt="Arbora logo" width="176">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>The process the operator runs to open the Knuckles agent platform.</strong><br>
|
|
9
|
+
<sub>MCP · REST · A2A · identity policy · fleet supervision · hosted interfaces</sub>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
|
|
14
|
+
[](https://pypi.org/project/arbora/)
|
|
15
|
+
[](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml)
|
|
16
|
+
[](https://knuckles-team.github.io/arbora/)
|
|
17
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
18
|
+
[](https://github.com/Knuckles-Team/arbora/stargazers)
|
|
19
|
+
[](https://github.com/Knuckles-Team/arbora/forks)
|
|
20
|
+
[](https://github.com/Knuckles-Team/arbora/graphs/contributors)
|
|
21
|
+
[](LICENSE)
|
|
22
|
+
[](https://github.com/Knuckles-Team/arbora/commits/main)
|
|
23
|
+
[](https://github.com/Knuckles-Team/arbora/pulls)
|
|
24
|
+
[](https://github.com/Knuckles-Team/arbora/pulls?q=is%3Apr+is%3Aclosed)
|
|
25
|
+
[](https://github.com/Knuckles-Team/arbora/issues)
|
|
26
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
27
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
28
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
29
|
+
[](https://github.com/Knuckles-Team/arbora)
|
|
30
|
+
[](https://pypi.org/project/arbora/)
|
|
31
|
+
[](https://pypi.org/project/arbora/)
|
|
32
|
+
[](https://pypi.org/project/arbora/)
|
|
33
|
+
[](https://pypi.org/project/arbora/)
|
|
34
|
+
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<p align="center">
|
|
38
|
+
<a href="https://knuckles-team.github.io/arbora/">Documentation</a> ·
|
|
39
|
+
<a href="https://knuckles-team.github.io/arbora/capabilities/">Capabilities</a> ·
|
|
40
|
+
<a href="https://knuckles-team.github.io/arbora/interfaces/">Interfaces</a> ·
|
|
41
|
+
<a href="https://knuckles-team.github.io/arbora/status/">Status</a>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
## Overview
|
|
45
|
+
|
|
46
|
+
Run Arbora when an MCP client, HTTP application, A2A peer, or hosted interface
|
|
47
|
+
needs one authenticated way into the platform. One serving lifecycle composes
|
|
48
|
+
the same application services across transports, applies identity and tenant
|
|
49
|
+
policy, and keeps tool discovery tied to the live fleet catalog.
|
|
50
|
+
|
|
51
|
+
Arbora is the platform edge and composition root. It is not the agent harness,
|
|
52
|
+
the durable database, a connector implementation, or the browser UI.
|
|
53
|
+
|
|
54
|
+
## Key Capabilities
|
|
55
|
+
|
|
56
|
+
- Serve local MCP over `stdio` and authenticated MCP over streamable HTTP.
|
|
57
|
+
- Project the same governed operations through REST and unary A2A.
|
|
58
|
+
- Discover, admit, supervise, and route the MCP connector fleet.
|
|
59
|
+
- Apply identity, tenant, action-policy, idempotency, and provenance controls.
|
|
60
|
+
- Host Agent Web UI and coordinate terminal, desktop, messaging, and attended
|
|
61
|
+
browser capabilities.
|
|
62
|
+
- Generate deployment configuration and report live readiness through `/health`.
|
|
63
|
+
|
|
64
|
+
## Documentation
|
|
65
|
+
|
|
66
|
+
Start with the **[visual platform guide](https://knuckles-team.github.io/arbora/)**,
|
|
67
|
+
then use the task-oriented references:
|
|
68
|
+
|
|
69
|
+
- [Start Arbora](https://knuckles-team.github.io/arbora/get-started/)
|
|
70
|
+
- [Review capabilities](https://knuckles-team.github.io/arbora/capabilities/)
|
|
71
|
+
- [Choose an interface](https://knuckles-team.github.io/arbora/interfaces/)
|
|
72
|
+
- [Understand the architecture](https://knuckles-team.github.io/arbora/architecture/)
|
|
73
|
+
- [Check live status](https://knuckles-team.github.io/arbora/status/)
|
|
74
|
+
- [Configure a deployment](https://knuckles-team.github.io/arbora/deployment/)
|
|
75
|
+
|
|
76
|
+
## Architecture
|
|
77
|
+
|
|
78
|
+
| Layer | Authority | Relationship to Arbora |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| [Agent Web UI](https://knuckles-team.github.io/agent-webui/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
|
|
81
|
+
| Agent Terminal UI | Terminal and headless interaction | Uses the governed Arbora REST interface. |
|
|
82
|
+
| Geniusbot | Desktop cockpit | Uses the governed Arbora gateway for its primary panels. |
|
|
83
|
+
| Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; agent-utilities owns adapters and routing. |
|
|
84
|
+
| **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
|
|
85
|
+
| [agent-utilities](https://knuckles-team.github.io/agent-utilities/) | Agents, workflows, evaluation, and skills | Arbora invokes its typed control-plane services. |
|
|
86
|
+
| [epistemic-graph](https://knuckles-team.github.io/epistemic-graph/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses its generated client contracts. |
|
|
87
|
+
| [agent-connector-sdk](https://knuckles-team.github.io/agent-connector-sdk/) | Connector servers, source synchronization, and governed effects | Arbora discovers and routes SDK-based connector services. |
|
|
88
|
+
|
|
89
|
+
The boundary is deliberate: Arbora authenticates, composes, routes,
|
|
90
|
+
supervises, and projects. Each sibling remains the source of truth for its own
|
|
91
|
+
domain.
|
|
92
|
+
|
|
93
|
+
[](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
94
|
+
|
|
95
|
+
[Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
|
|
96
|
+
|
|
97
|
+
## Quick Start
|
|
98
|
+
|
|
99
|
+
Requires Python 3.12–3.14 and [`uv`](https://docs.astral.sh/uv/). Install the
|
|
100
|
+
bundled runtime, generate the local profile, and register its `stdio` launcher
|
|
101
|
+
with Codex:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
uv tool install "arbora[webui]"
|
|
105
|
+
setup-config generate --profile tiny
|
|
106
|
+
setup-config doctor --profile tiny
|
|
107
|
+
setup-config codex
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The doctor command is the first observable result: it reports whether the local
|
|
111
|
+
profile and required authorities are ready before a listener starts. Arbora
|
|
112
|
+
then appears as the `arbora` MCP server in Codex. Other MCP clients can
|
|
113
|
+
start the same local transport directly:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
arbora --transport stdio
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Network deployments use the identity, TLS, and authorization settings in the
|
|
120
|
+
[deployment guide](https://knuckles-team.github.io/arbora/deployment/).
|
|
121
|
+
|
|
122
|
+
## Contributing
|
|
123
|
+
|
|
124
|
+
Issues and pull requests are welcome. Read [AGENTS.md](AGENTS.md) for source
|
|
125
|
+
boundaries and quality gates. Report vulnerabilities through
|
|
126
|
+
[GitHub Security Advisories](https://github.com/Knuckles-Team/arbora/security/advisories/new).
|
|
127
|
+
|
|
128
|
+
### Development
|
|
129
|
+
|
|
130
|
+
Run `scripts/bootstrap.sh`, then follow [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
131
|
+
for the hooks, tests, and branch and pull-request flow.
|
|
132
|
+
|
|
133
|
+
## License
|
|
134
|
+
|
|
135
|
+
Arbora is released under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Arbora: the deployable composition for the Knuckles agent platform.
|
|
2
|
+
|
|
3
|
+
RF-ADR-009 (`plans/refactor/RF-ADR-009-connector-sdk-and-arbora.md`) §2 assigns
|
|
4
|
+
this repository phase 5: **the deployable composition** — the MCP server, REST
|
|
5
|
+
gateway, control plane, fleet gateway, agent-webui hosting, and deployment
|
|
6
|
+
tooling. It must never own business logic that belongs to
|
|
7
|
+
epistemic-graph, agent-connector-sdk, or the agent-utilities agent plane.
|
|
8
|
+
|
|
9
|
+
The live package layout is:
|
|
10
|
+
|
|
11
|
+
- `arbora.mcp_server` — native MCP/REST composition and serving lifecycle.
|
|
12
|
+
- `arbora.fleet` — in-process MCP fleet gateway and child lifecycle.
|
|
13
|
+
- `arbora.gateway` — REST gateway and dashboard projections.
|
|
14
|
+
- `arbora.control_plane` — reconciliation and action policy.
|
|
15
|
+
- `arbora.webui_host` — optional Agent WebUI co-service hosting.
|
|
16
|
+
- `arbora.deployment` — configuration, diagnostics, canaries, and operations.
|
|
17
|
+
|
|
18
|
+
The ``arbora`` console command serves
|
|
19
|
+
``arbora.mcp_server.server:mcp_server`` over stdio or authenticated
|
|
20
|
+
streamable HTTP. Capability limits that depend on unfinished upstream
|
|
21
|
+
contracts are documented in ``docs/status.md`` and fail closed; no legacy
|
|
22
|
+
fallback is implied by this package description.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from arbora._version import __version__
|
|
26
|
+
|
|
27
|
+
from . import epistemic
|
|
28
|
+
|
|
29
|
+
__all__ = ["__version__", "epistemic"]
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""First-party Arbora unary A2A facade."""
|
|
2
|
+
|
|
3
|
+
from .application import (
|
|
4
|
+
A2AAuthenticator,
|
|
5
|
+
AmbientA2AAuthenticator,
|
|
6
|
+
create_a2a_application,
|
|
7
|
+
create_a2a_handlers,
|
|
8
|
+
)
|
|
9
|
+
from .authority import (
|
|
10
|
+
A2AIdempotencyConflict,
|
|
11
|
+
A2ATaskAuthority,
|
|
12
|
+
A2ATaskNotCancelable,
|
|
13
|
+
WorkItemA2AAuthority,
|
|
14
|
+
)
|
|
15
|
+
from .composition import A2AComposition, compose_a2a
|
|
16
|
+
from .models import (
|
|
17
|
+
A2AAgentCard,
|
|
18
|
+
A2AListResult,
|
|
19
|
+
A2AMessage,
|
|
20
|
+
A2ARouteDecision,
|
|
21
|
+
A2ATask,
|
|
22
|
+
)
|
|
23
|
+
from .routing import A2AAssemblyUnavailable, A2ARouter, OrchestratorA2ARouter
|
|
24
|
+
from .sdk_app import AdmittedA2AApp, create_admitted_a2a_app
|
|
25
|
+
from .service import A2ACardMetadata, A2AService
|
|
26
|
+
from .tool_task import (
|
|
27
|
+
ToolTaskCarrier,
|
|
28
|
+
ToolTaskDispatcher,
|
|
29
|
+
ToolTaskRequest,
|
|
30
|
+
ToolTaskResult,
|
|
31
|
+
WorkItemFence,
|
|
32
|
+
run_tool_task,
|
|
33
|
+
)
|
|
34
|
+
from .tool_task_dispatch import EgWorkItemFence
|
|
35
|
+
from .tool_task_requests import EgToolTaskRequestStore
|
|
36
|
+
from .work_items import (
|
|
37
|
+
WorkItemView,
|
|
38
|
+
list_work_item_views,
|
|
39
|
+
parse_work_item_view,
|
|
40
|
+
work_item_view,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
__all__ = [
|
|
44
|
+
"AdmittedA2AApp",
|
|
45
|
+
"create_admitted_a2a_app",
|
|
46
|
+
"A2AAgentCard",
|
|
47
|
+
"A2AAssemblyUnavailable",
|
|
48
|
+
"A2AAuthenticator",
|
|
49
|
+
"A2ACardMetadata",
|
|
50
|
+
"A2AComposition",
|
|
51
|
+
"A2AIdempotencyConflict",
|
|
52
|
+
"A2AListResult",
|
|
53
|
+
"A2AMessage",
|
|
54
|
+
"A2ARouteDecision",
|
|
55
|
+
"A2ARouter",
|
|
56
|
+
"A2AService",
|
|
57
|
+
"A2ATask",
|
|
58
|
+
"A2ATaskAuthority",
|
|
59
|
+
"A2ATaskNotCancelable",
|
|
60
|
+
"AmbientA2AAuthenticator",
|
|
61
|
+
"EgWorkItemFence",
|
|
62
|
+
"EgToolTaskRequestStore",
|
|
63
|
+
"OrchestratorA2ARouter",
|
|
64
|
+
"ToolTaskCarrier",
|
|
65
|
+
"ToolTaskDispatcher",
|
|
66
|
+
"ToolTaskRequest",
|
|
67
|
+
"ToolTaskResult",
|
|
68
|
+
"WorkItemA2AAuthority",
|
|
69
|
+
"WorkItemFence",
|
|
70
|
+
"WorkItemView",
|
|
71
|
+
"compose_a2a",
|
|
72
|
+
"create_a2a_application",
|
|
73
|
+
"create_a2a_handlers",
|
|
74
|
+
"list_work_item_views",
|
|
75
|
+
"parse_work_item_view",
|
|
76
|
+
"run_tool_task",
|
|
77
|
+
"work_item_view",
|
|
78
|
+
]
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Typed context-budget tool-subset admission for the A2A door.
|
|
2
|
+
|
|
3
|
+
Owned by ``ARBORA-A2A-002``: admission, refusal, and provenance for the
|
|
4
|
+
smallest authorized tool subset that covers a selected agent graph within a
|
|
5
|
+
caller's context budget (see ``docs/a2a.md``, "Tool-subset assembly
|
|
6
|
+
status"). This fails closed today because epistemic-graph's
|
|
7
|
+
``AgentAssemble`` operation returns unavailable and the signed AU
|
|
8
|
+
``AgentTurnEnvelope`` carries no allowed-tool-subset field
|
|
9
|
+
(agent-utilities ``AU-CONTROL-R035``). Neither upstream gap is bridged with a
|
|
10
|
+
local heuristic, a cached prior subset, or an advisory best-effort answer.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from typing import Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import Field, StrictStr, field_validator
|
|
18
|
+
|
|
19
|
+
from .models import A2AContextBudget, _WireModel
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"ModelProfilePreference",
|
|
23
|
+
"ModelProfileRefusalReason",
|
|
24
|
+
"ModelProfileUnavailable",
|
|
25
|
+
"refuse_model_profile_preference",
|
|
26
|
+
"ToolSubsetAdmissionDecision",
|
|
27
|
+
"ToolSubsetAdmissionRefusalReason",
|
|
28
|
+
"ToolSubsetAdmissionRequest",
|
|
29
|
+
"admit_tool_subset",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
ToolSubsetAdmissionRefusalReason = Literal[
|
|
33
|
+
"EG_ASSEMBLE_UNAVAILABLE",
|
|
34
|
+
"ENVELOPE_LACKS_ALLOWED_TOOL_SUBSET",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class ToolSubsetAdmissionRequest(_WireModel):
|
|
39
|
+
"""A caller's request to admit the smallest authorized tool subset."""
|
|
40
|
+
|
|
41
|
+
agent_graph_ref: str = Field(min_length=1, max_length=512)
|
|
42
|
+
context_budget: A2AContextBudget
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ToolSubsetAdmissionDecision(_WireModel):
|
|
46
|
+
"""The door's admit/refuse result. Never advisory; never partial."""
|
|
47
|
+
|
|
48
|
+
admitted: bool
|
|
49
|
+
admitted_tools: tuple[str, ...] = Field(default=(), max_length=64)
|
|
50
|
+
refusal_reason: ToolSubsetAdmissionRefusalReason | None = None
|
|
51
|
+
provenance: str = Field(min_length=1, max_length=256)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def admit_tool_subset(
|
|
55
|
+
request: ToolSubsetAdmissionRequest,
|
|
56
|
+
) -> ToolSubsetAdmissionDecision:
|
|
57
|
+
"""Admit the request, or fail closed with a typed, provenanced refusal.
|
|
58
|
+
|
|
59
|
+
``ARBORA-A2A-R017.1``: epistemic-graph's ``AgentAssemble`` operation
|
|
60
|
+
returns unavailable today, so no context-budget-bound tool subset can be
|
|
61
|
+
derived or cryptographically carried. This refuses closed rather than
|
|
62
|
+
returning an advisory, cached, or partial subset.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
del request
|
|
66
|
+
return ToolSubsetAdmissionDecision(
|
|
67
|
+
admitted=False,
|
|
68
|
+
admitted_tools=(),
|
|
69
|
+
refusal_reason="EG_ASSEMBLE_UNAVAILABLE",
|
|
70
|
+
provenance="eg.AgentAssemble:unavailable",
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
ModelProfileRefusalReason = Literal[
|
|
75
|
+
"AUTHORITY_UNAVAILABLE",
|
|
76
|
+
"CALLER_CHANGED",
|
|
77
|
+
"PROFILE_REVOKED",
|
|
78
|
+
"CAPABILITY_UNAVAILABLE",
|
|
79
|
+
"STALE_DECISION",
|
|
80
|
+
"INVALID_DECISION",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class ModelProfilePreference(_WireModel):
|
|
85
|
+
"""Untrusted preference only; this value conveys no execution authority."""
|
|
86
|
+
|
|
87
|
+
preferred_profile_ref: StrictStr | None = Field(default=None, max_length=512)
|
|
88
|
+
|
|
89
|
+
@field_validator("preferred_profile_ref")
|
|
90
|
+
@classmethod
|
|
91
|
+
def _printable_reference(cls, value: str | None) -> str | None:
|
|
92
|
+
if value is not None and (
|
|
93
|
+
not value.strip() or any(not character.isprintable() for character in value)
|
|
94
|
+
):
|
|
95
|
+
raise ValueError("profile reference must be nonempty printable text")
|
|
96
|
+
return value
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class ModelProfileUnavailable(_WireModel):
|
|
100
|
+
"""Closed refusal without profile data, credentials or fabricated receipts."""
|
|
101
|
+
|
|
102
|
+
status: Literal["unavailable"] = "unavailable"
|
|
103
|
+
reason: ModelProfileRefusalReason = "AUTHORITY_UNAVAILABLE"
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def refuse_model_profile_preference(
|
|
107
|
+
request: ModelProfilePreference,
|
|
108
|
+
) -> ModelProfileUnavailable:
|
|
109
|
+
"""Keep the uncomposed profile authority unavailable without reading settings.
|
|
110
|
+
|
|
111
|
+
R016.6 requires a current owner-issued profile-use decision and atomic
|
|
112
|
+
admission. Valid preference syntax, catalog visibility and provider settings
|
|
113
|
+
supply none of those. This boundary does not alter the default-agent path.
|
|
114
|
+
"""
|
|
115
|
+
del request
|
|
116
|
+
return ModelProfileUnavailable()
|