arbora 0.1.8.dev3__tar.gz → 0.1.8.dev4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (756) hide show
  1. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/PKG-INFO +3 -3
  2. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/_version.py +1 -1
  3. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/__init__.py +16 -0
  4. arbora-0.1.8.dev4/arbora/a2a/anonymous.py +454 -0
  5. arbora-0.1.8.dev4/arbora/a2a/anonymous_native.py +84 -0
  6. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/application.py +4 -0
  7. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/authority.py +241 -50
  8. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/composition.py +7 -1
  9. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/mcp.py +6 -0
  10. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/models.py +1 -1
  11. arbora-0.1.8.dev4/arbora/a2a/run_usage.py +128 -0
  12. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/terminal_event.py +51 -22
  13. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_runs.py +172 -7
  14. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/errors.py +68 -1
  15. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/descriptors.json +37 -1
  16. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/engine_errors.py +1 -1
  17. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/registry.json +244 -1
  18. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/app.py +38 -0
  19. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/executor.py +5 -1
  20. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/pipeline.py +1 -1
  21. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/steps.py +5 -1
  22. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/resolve.py +49 -0
  23. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/fleet.py +88 -0
  24. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/plans.py +37 -4
  25. arbora-0.1.8.dev4/arbora/api/ops/run_replay.py +219 -0
  26. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/runs.py +56 -0
  27. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/client/_generated_models.py +4 -1
  28. arbora-0.1.8.dev4/arbora/content.py +128 -0
  29. arbora-0.1.8.dev4/arbora/core/providers.py +120 -0
  30. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/settings.py +21 -0
  31. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/epistemic.py +70 -8
  32. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/access_contracts.py +10 -17
  33. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/child_resilience.py +35 -3
  34. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/declarations.py +22 -0
  35. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/gateway_ops.py +73 -7
  36. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/local_skill_catalog.py +15 -26
  37. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/multiplexer.py +50 -9
  38. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/onboarding.py +7 -2
  39. arbora-0.1.8.dev4/arbora/fleet/plan_confirmation.py +108 -0
  40. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ingest/connector_sources.py +56 -5
  41. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ingest/service.py +10 -2
  42. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/server_factory.py +0 -181
  43. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/current_plan_reader.py +1 -0
  44. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/hosted_invocation.py +38 -1
  45. arbora-0.1.8.dev4/arbora/mcp_server/run_reader.py +181 -0
  46. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/runtime.py +2 -0
  47. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/served_engine.py +23 -5
  48. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/served_invocation.py +74 -5
  49. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/server.py +8 -3
  50. arbora-0.1.8.dev4/arbora/mcp_server/task_plan.py +173 -0
  51. arbora-0.1.8.dev4/arbora/mcp_server/task_plan_runtime.py +316 -0
  52. arbora-0.1.8.dev4/arbora/native_run_admission.py +79 -0
  53. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-01.json +21 -0
  54. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-02.json +21 -0
  55. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-03.json +21 -0
  56. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-04.json +21 -0
  57. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-05.json +21 -0
  58. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-06.json +21 -0
  59. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-07.json +21 -0
  60. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-08.json +21 -0
  61. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-09.json +21 -0
  62. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-10.json +21 -0
  63. arbora-0.1.8.dev4/arbora/prompts/cq-a.json +20 -0
  64. arbora-0.1.8.dev4/arbora/prompts/cq-b.json +20 -0
  65. arbora-0.1.8.dev4/arbora/prompts/cq-c.json +20 -0
  66. arbora-0.1.8.dev4/arbora/prompts/cq-d1.json +19 -0
  67. arbora-0.1.8.dev4/arbora/prompts/cq-d10.json +19 -0
  68. arbora-0.1.8.dev4/arbora/prompts/cq-d2.json +19 -0
  69. arbora-0.1.8.dev4/arbora/prompts/cq-d3.json +19 -0
  70. arbora-0.1.8.dev4/arbora/prompts/cq-d4.json +19 -0
  71. arbora-0.1.8.dev4/arbora/prompts/cq-d5.json +19 -0
  72. arbora-0.1.8.dev4/arbora/prompts/cq-d6.json +19 -0
  73. arbora-0.1.8.dev4/arbora/prompts/cq-d7.json +19 -0
  74. arbora-0.1.8.dev4/arbora/prompts/cq-d8.json +19 -0
  75. arbora-0.1.8.dev4/arbora/prompts/cq-d9.json +19 -0
  76. arbora-0.1.8.dev4/arbora/prompts/delegation-cycle-refused.json +19 -0
  77. arbora-0.1.8.dev4/arbora/prompts/delegation-fan-out.json +19 -0
  78. arbora-0.1.8.dev4/arbora/prompts/delegation-gitlab-servicenow-plane.json +19 -0
  79. arbora-0.1.8.dev4/arbora/prompts/delegation-ordered-dag.json +19 -0
  80. arbora-0.1.8.dev4/arbora/prompts/delegation-plan-persisted.json +19 -0
  81. arbora-0.1.8.dev4/arbora/prompts/incident-triage-system.json +21 -0
  82. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/actor_context.py +10 -0
  83. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/semantic_content.py +2 -2
  84. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/__init__.py +2 -2
  85. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/work_items.py +94 -22
  86. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/PKG-INFO +3 -3
  87. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/SOURCES.txt +42 -1
  88. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/entry_points.txt +0 -3
  89. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/requires.txt +2 -2
  90. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/pyproject.toml +6 -10
  91. arbora-0.1.8.dev4/tests/test_epistemic_loop_lifecycle.py +212 -0
  92. arbora-0.1.8.dev4/tests/test_installed_content.py +227 -0
  93. arbora-0.1.8.dev4/tests/test_native_run_admission.py +261 -0
  94. arbora-0.1.8.dev4/tests/test_native_run_scope.py +230 -0
  95. arbora-0.1.8.dev3/arbora/content.py +0 -22
  96. arbora-0.1.8.dev3/arbora/core/providers.py +0 -720
  97. arbora-0.1.8.dev3/arbora/mcp_server/backing/content_resources.py +0 -64
  98. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/LICENSE +0 -0
  99. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/README.md +0 -0
  100. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/__init__.py +0 -0
  101. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/admission.py +0 -0
  102. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/approval.py +0 -0
  103. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/routing.py +0 -0
  104. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/sdk_app.py +0 -0
  105. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/service.py +0 -0
  106. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/tool_task.py +0 -0
  107. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/tool_task_dispatch.py +0 -0
  108. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/tool_task_requests.py +0 -0
  109. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/a2a/work_items.py +0 -0
  110. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/__init__.py +0 -0
  111. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/action_policy.py +0 -0
  112. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/approval.py +0 -0
  113. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/assurance.py +0 -0
  114. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/external_policy_sync.py +0 -0
  115. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/host_start.py +0 -0
  116. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/priority.py +0 -0
  117. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/service.py +0 -0
  118. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/access/task_guard.py +0 -0
  119. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/acp/__init__.py +0 -0
  120. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/acp/coding_session.py +0 -0
  121. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/acp/session_policy.py +0 -0
  122. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/__init__.py +0 -0
  123. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/log_access.py +0 -0
  124. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/log_replay.py +0 -0
  125. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/log_routes.py +0 -0
  126. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/log_runtime.py +0 -0
  127. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/log_sink.py +0 -0
  128. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/managed_web.py +0 -0
  129. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/start_admission.py +0 -0
  130. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/agent_host/start_configuration.py +0 -0
  131. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/__init__.py +0 -0
  132. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/__init__.py +0 -0
  133. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/agent_control_contracts.py +0 -0
  134. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/agent_control_plane.py +0 -0
  135. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/catalog.py +0 -0
  136. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/messaging.py +0 -0
  137. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/provisioning.py +0 -0
  138. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/contracts/session.py +0 -0
  139. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/evidence/__init__.py +0 -0
  140. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/evidence/bundle.py +0 -0
  141. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/evidence/contradiction.py +0 -0
  142. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/__init__.py +0 -0
  143. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/method.request.json +0 -0
  144. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.cluster.json +0 -0
  145. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.compute.json +0 -0
  146. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.coordination.json +0 -0
  147. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.graph.json +0 -0
  148. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.ingestion.json +0 -0
  149. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.messaging.json +0 -0
  150. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.query.json +0 -0
  151. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.reasoning.json +0 -0
  152. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.security.json +0 -0
  153. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.storage.json +0 -0
  154. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.transactions.json +0 -0
  155. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/generated/task_plan_schema.json +0 -0
  156. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/__init__.py +0 -0
  157. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/auth.py +0 -0
  158. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/browser_app.py +0 -0
  159. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/browser_auth.py +0 -0
  160. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/checkout.py +0 -0
  161. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/openapi.py +0 -0
  162. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/protocol_routes.py +0 -0
  163. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/http/routes.py +0 -0
  164. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/__init__.py +0 -0
  165. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/audit.py +0 -0
  166. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/bootstrap.py +0 -0
  167. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/eg_audit.py +0 -0
  168. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/invoke/plan.py +0 -0
  169. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/__init__.py +0 -0
  170. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/caller.py +0 -0
  171. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/discovery.py +0 -0
  172. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/registration.py +0 -0
  173. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/resources.py +0 -0
  174. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/serving.py +0 -0
  175. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/mcp/verbs.py +0 -0
  176. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/__init__.py +0 -0
  177. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/_common.py +0 -0
  178. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/access.py +0 -0
  179. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/agents.py +0 -0
  180. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/browser.py +0 -0
  181. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/capacity.py +0 -0
  182. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/decide.py +0 -0
  183. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/fleet_deploy_watch.py +0 -0
  184. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/ingest.py +0 -0
  185. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/memory.py +0 -0
  186. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/messaging.py +0 -0
  187. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/ops.py +0 -0
  188. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/policy.py +0 -0
  189. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/query.py +0 -0
  190. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/registry_factory.py +0 -0
  191. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/research.py +0 -0
  192. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/retrieval.py +0 -0
  193. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/security.py +0 -0
  194. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/source.py +0 -0
  195. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/swarm.py +0 -0
  196. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/telemetry.py +0 -0
  197. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/usage.py +0 -0
  198. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/work.py +0 -0
  199. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/write_back.py +0 -0
  200. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/ops/write_back_models.py +0 -0
  201. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/__init__.py +0 -0
  202. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/cache.py +0 -0
  203. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/default_policy.json +0 -0
  204. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/defaults.py +0 -0
  205. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/domain_scopes.py +0 -0
  206. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/eunomia.py +0 -0
  207. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/policy/pdp_remote.py +0 -0
  208. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/__init__.py +0 -0
  209. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/contract_admission.py +0 -0
  210. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/digest.py +0 -0
  211. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/eg_binding.py +0 -0
  212. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/eg_exclusions.yaml +0 -0
  213. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/registry.py +0 -0
  214. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/scopes.py +0 -0
  215. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/spec.py +0 -0
  216. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/registry/surface_gate.py +0 -0
  217. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/api/task_plan_schema.py +0 -0
  218. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/architecture/__init__.py +0 -0
  219. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/architecture/boundary_census.py +0 -0
  220. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/architecture/capability_layers.py +0 -0
  221. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/__init__.py +0 -0
  222. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_api.py +0 -0
  223. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attendance.py +0 -0
  224. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attendance_api.py +0 -0
  225. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attended.py +0 -0
  226. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_binding.py +0 -0
  227. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_cancellation.py +0 -0
  228. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_channel.py +0 -0
  229. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_client.py +0 -0
  230. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_common.py +0 -0
  231. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_descriptor.py +0 -0
  232. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_dispatch.py +0 -0
  233. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_durability.py +0 -0
  234. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_lease.py +0 -0
  235. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_outcome.py +0 -0
  236. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_policy.py +0 -0
  237. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_port.py +0 -0
  238. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_provenance.py +0 -0
  239. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_registration.py +0 -0
  240. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_runtime.py +0 -0
  241. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_server.py +0 -0
  242. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_service.py +0 -0
  243. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_state.py +0 -0
  244. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_validation.py +0 -0
  245. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/mcp.py +0 -0
  246. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/browser_control/trace_bundle.py +0 -0
  247. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/client/__init__.py +0 -0
  248. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/client/_schema.py +0 -0
  249. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/client/http.py +0 -0
  250. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/client/invoke.py +0 -0
  251. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/connector_runner.py +0 -0
  252. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/console.py +0 -0
  253. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/__init__.py +0 -0
  254. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/_model.py +0 -0
  255. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/admission/__init__.py +0 -0
  256. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/admission/models.py +0 -0
  257. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/admission/service.py +0 -0
  258. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/agents/__init__.py +0 -0
  259. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/agents/models.py +0 -0
  260. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/agents/repository.py +0 -0
  261. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/agents/service.py +0 -0
  262. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/__init__.py +0 -0
  263. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/models.py +0 -0
  264. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/repository.py +0 -0
  265. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/service.py +0 -0
  266. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/economics/__init__.py +0 -0
  267. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/economics/models.py +0 -0
  268. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/economics/repository.py +0 -0
  269. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/economics/service.py +0 -0
  270. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/fleet_watch/__init__.py +0 -0
  271. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/fleet_watch/service.py +0 -0
  272. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/__init__.py +0 -0
  273. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/models.py +0 -0
  274. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/repository.py +0 -0
  275. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/service.py +0 -0
  276. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/__init__.py +0 -0
  277. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/authority.py +0 -0
  278. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/errors.py +0 -0
  279. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/models.py +0 -0
  280. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/policy/__init__.py +0 -0
  281. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/policy/models.py +0 -0
  282. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/policy/repository.py +0 -0
  283. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/__init__.py +0 -0
  284. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/authority.py +0 -0
  285. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/models.py +0 -0
  286. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/observability.py +0 -0
  287. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/projector.py +0 -0
  288. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/protocols.py +0 -0
  289. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/projection/repository.py +0 -0
  290. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/__init__.py +0 -0
  291. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/errors.py +0 -0
  292. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/models.py +0 -0
  293. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/protocols.py +0 -0
  294. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/repository.py +0 -0
  295. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/service.py +0 -0
  296. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/__init__.py +0 -0
  297. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/admission.py +0 -0
  298. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/audit.py +0 -0
  299. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/capacity.py +0 -0
  300. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/models.py +0 -0
  301. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/runs/observations.py +0 -0
  302. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/sources/__init__.py +0 -0
  303. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/sources/models.py +0 -0
  304. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/sources/repository.py +0 -0
  305. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/sources/service.py +0 -0
  306. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/__init__.py +0 -0
  307. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/errors.py +0 -0
  308. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/models.py +0 -0
  309. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/protocols.py +0 -0
  310. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/repository.py +0 -0
  311. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/webui/service.py +0 -0
  312. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/__init__.py +0 -0
  313. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/domain.py +0 -0
  314. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/repository.py +0 -0
  315. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/__init__.py +0 -0
  316. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/agent_config_admin.py +0 -0
  317. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/capability_contract.py +0 -0
  318. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/config_admin.py +0 -0
  319. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/event_loop.py +0 -0
  320. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/provider_materialization.py +0 -0
  321. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/core/transport.py +0 -0
  322. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/__init__.py +0 -0
  323. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/certification_assets.py +0 -0
  324. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/cli.py +0 -0
  325. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/codex_registration.py +0 -0
  326. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/config_generator.py +0 -0
  327. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor.py +0 -0
  328. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_certification.py +0 -0
  329. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_coverage.py +0 -0
  330. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_graph.py +0 -0
  331. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_lakehouse.py +0 -0
  332. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_observability.py +0 -0
  333. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/doctor_support.py +0 -0
  334. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/engine_lock.py +0 -0
  335. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/exit_criteria.py +0 -0
  336. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/file_lock.py +0 -0
  337. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/genesis_environments.py +0 -0
  338. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/host_config.py +0 -0
  339. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/host_lock.py +0 -0
  340. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/kubernetes_first_boot.py +0 -0
  341. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/live_mount_guard.py +0 -0
  342. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/local_gates.py +0 -0
  343. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/preflight.py +0 -0
  344. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/production_ops.py +0 -0
  345. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/profile_guard.py +0 -0
  346. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/public_ingress_identity.py +0 -0
  347. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/release_canary.py +0 -0
  348. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/release_candidate.py +0 -0
  349. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/repo_templates.py +0 -0
  350. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/self_deploy.py +0 -0
  351. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/semantic_provisioning.py +0 -0
  352. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/venv_autosync.py +0 -0
  353. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/venv_sync.py +0 -0
  354. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/venv_sync_types.py +0 -0
  355. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/deployment/webui_reference_model.py +0 -0
  356. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/__init__.py +0 -0
  357. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/agent_manager_dashboard.py +0 -0
  358. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_federation.py +0 -0
  359. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_registry.py +0 -0
  360. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_signing.py +0 -0
  361. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ecosystem/hook_installer.py +0 -0
  362. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/evolution/__init__.py +0 -0
  363. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/evolution/wiring_sweep.py +0 -0
  364. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/finance/__init__.py +0 -0
  365. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/finance/alerts.py +0 -0
  366. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/finance/dca.py +0 -0
  367. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/finance/markets.py +0 -0
  368. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/finance/schedule.py +0 -0
  369. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/__init__.py +0 -0
  370. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/catalog_composition.py +0 -0
  371. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/catalog_items.py +0 -0
  372. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/catalog_reader.py +0 -0
  373. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/catalog_sources.py +0 -0
  374. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/client_toolsets.py +0 -0
  375. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/connector_count_pins.py +0 -0
  376. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/discovery_authority.py +0 -0
  377. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/epistemic_adapter.py +0 -0
  378. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/error_budget.py +0 -0
  379. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/feeds.py +0 -0
  380. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/health.py +0 -0
  381. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/mcp_resource_reconciliation.py +0 -0
  382. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/multiplexer_ops.py +0 -0
  383. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/protocol_compat.py +0 -0
  384. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/__init__.py +0 -0
  385. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/_model.py +0 -0
  386. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/development_lane.py +0 -0
  387. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/resource_pool_authority.py +0 -0
  388. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/resource_reservation.py +0 -0
  389. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_authority.py +0 -0
  390. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_intent_reconciler.py +0 -0
  391. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_signal_authority.py +0 -0
  392. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/scaling/service_scale_units.py +0 -0
  393. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/service_child.py +0 -0
  394. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/session_loads.py +0 -0
  395. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/session_notifications.py +0 -0
  396. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/shared_multiplexer.py +0 -0
  397. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/source_executor.py +0 -0
  398. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/surfaces.py +0 -0
  399. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet/throttle_service.py +0 -0
  400. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/fleet_tool_call.py +0 -0
  401. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/__init__.py +0 -0
  402. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/aggregator.py +0 -0
  403. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/config.py +0 -0
  404. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/daemon.py +0 -0
  405. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/dashboard_api.py +0 -0
  406. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/enhanced_catalog_api.py +0 -0
  407. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/fleet.py +0 -0
  408. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/fleet_events.py +0 -0
  409. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/graph_api.py +0 -0
  410. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/models.py +0 -0
  411. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/ontology_api.py +0 -0
  412. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/ports.py +0 -0
  413. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/rate_limit.py +0 -0
  414. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/registry.py +0 -0
  415. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/registry_api.py +0 -0
  416. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/remote_oauth_api.py +0 -0
  417. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schema_context_api.py +0 -0
  418. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schema_context_service.py +0 -0
  419. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schemas/__init__.py +0 -0
  420. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schemas/connector.py +0 -0
  421. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schemas/graph_core.py +0 -0
  422. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/schemas/schema_context.py +0 -0
  423. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/__init__.py +0 -0
  424. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ansible_tower.py +0 -0
  425. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/archivebox.py +0 -0
  426. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/aris.py +0 -0
  427. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/arr.py +0 -0
  428. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/atlassian.py +0 -0
  429. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/audio_transcriber.py +0 -0
  430. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/audiobookshelf.py +0 -0
  431. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/base.py +0 -0
  432. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/caddy.py +0 -0
  433. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/camunda.py +0 -0
  434. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ciso_assistant.py +0 -0
  435. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/clarity.py +0 -0
  436. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/container_manager.py +0 -0
  437. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/data_science.py +0 -0
  438. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/dockerhub.py +0 -0
  439. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/documentdb.py +0 -0
  440. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ear.py +0 -0
  441. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/egeria.py +0 -0
  442. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/emerald_exchange.py +0 -0
  443. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/erpnext.py +0 -0
  444. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/fan_manager.py +0 -0
  445. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/firefly_iii.py +0 -0
  446. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/fleet_client.py +0 -0
  447. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/freshrss.py +0 -0
  448. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/github.py +0 -0
  449. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/gitlab.py +0 -0
  450. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/google_workspace.py +0 -0
  451. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/gramps.py +0 -0
  452. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/hdhomerun.py +0 -0
  453. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/home_assistant.py +0 -0
  454. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/jellyfin.py +0 -0
  455. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/jena.py +0 -0
  456. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/kafka.py +0 -0
  457. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/keycloak.py +0 -0
  458. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/langfuse.py +0 -0
  459. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/leanix.py +0 -0
  460. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/legal_peripherals.py +0 -0
  461. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/lgtm.py +0 -0
  462. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/listmonk.py +0 -0
  463. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/mattermost.py +0 -0
  464. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/mealie.py +0 -0
  465. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/media_downloader.py +0 -0
  466. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/microsoft.py +0 -0
  467. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/nextcloud.py +0 -0
  468. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/okta.py +0 -0
  469. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ollama.py +0 -0
  470. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/onetrust.py +0 -0
  471. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/openbao.py +0 -0
  472. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/orchestrator.py +0 -0
  473. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/owncast.py +0 -0
  474. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/paperless_ngx.py +0 -0
  475. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/plane.py +0 -0
  476. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/portainer.py +0 -0
  477. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/postiz.py +0 -0
  478. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/pulselink.py +0 -0
  479. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/qbittorrent.py +0 -0
  480. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/repository_manager.py +0 -0
  481. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/rom_manager.py +0 -0
  482. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/scholarx.py +0 -0
  483. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/searxng.py +0 -0
  484. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/sentry.py +0 -0
  485. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/servicenow.py +0 -0
  486. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/stirlingpdf.py +0 -0
  487. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/systems_manager.py +0 -0
  488. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/technitium.py +0 -0
  489. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/teleport.py +0 -0
  490. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/tunnel_manager.py +0 -0
  491. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/twenty.py +0 -0
  492. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/uptime_kuma.py +0 -0
  493. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/vector_db.py +0 -0
  494. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/wger.py +0 -0
  495. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/gateway/widgets/zulip.py +0 -0
  496. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/host_bindings.py +0 -0
  497. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/__init__.py +0 -0
  498. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/admin_console.py +0 -0
  499. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/admission.py +0 -0
  500. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/api_keys.py +0 -0
  501. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/approval.py +0 -0
  502. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/approval_engine.py +0 -0
  503. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/approval_registration.py +0 -0
  504. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/bootstrap.py +0 -0
  505. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/broker.py +0 -0
  506. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/browser.py +0 -0
  507. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/client_entry_points.py +0 -0
  508. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/composition.py +0 -0
  509. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/engine.py +0 -0
  510. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/engine_ports.py +0 -0
  511. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/issuer.py +0 -0
  512. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/ldap.py +0 -0
  513. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/mail_capability.py +0 -0
  514. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/mfa.py +0 -0
  515. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/oidc.py +0 -0
  516. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/ports.py +0 -0
  517. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/saml.py +0 -0
  518. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/identity/scim.py +0 -0
  519. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ingest/__init__.py +0 -0
  520. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ingest/source_catalog.py +0 -0
  521. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/__init__.py +0 -0
  522. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/agent_control.py +0 -0
  523. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/arbora_operations.json +0 -0
  524. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/__init__.py +0 -0
  525. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/_arbora_action_manifest.py +0 -0
  526. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/action_dispatch.py +0 -0
  527. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/arbora_capabilities.json +0 -0
  528. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/arbora_surface.py +0 -0
  529. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/client_credentials.py +0 -0
  530. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/concurrency.py +0 -0
  531. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/connector_surface.py +0 -0
  532. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/context_helpers.py +0 -0
  533. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/delegated_auth.py +0 -0
  534. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/engine_routing.py +0 -0
  535. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/engine_surface_types.py +0 -0
  536. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/eunomia_principal.py +0 -0
  537. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/httpx_boundary.py +0 -0
  538. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/intent_contract.py +0 -0
  539. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/middlewares.py +0 -0
  540. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/oauth_log_hygiene.py +0 -0
  541. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/ontology_types.py +0 -0
  542. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/optional_tool_features.py +0 -0
  543. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/remote_oauth_broker.py +0 -0
  544. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/skill_coverage.py +0 -0
  545. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tasks_extension.py +0 -0
  546. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tool_specs.py +0 -0
  547. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/__init__.py +0 -0
  548. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/_surface_selection.py +0 -0
  549. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/analysis_tools.py +0 -0
  550. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/analyze_suite.py +0 -0
  551. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/audit_tools.py +0 -0
  552. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/candidate_claim_tools.py +0 -0
  553. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/compliance_tools.py +0 -0
  554. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/config_tools.py +0 -0
  555. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/domain_ops_tools.py +0 -0
  556. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/engine_surface_tools.py +0 -0
  557. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/engine_tools.py +0 -0
  558. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/epistemic_tools.py +0 -0
  559. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/governance_tools.py +0 -0
  560. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/graph_tools.py +0 -0
  561. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/intent_tools.py +0 -0
  562. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/mcp_apps.py +0 -0
  563. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/ontology_tools.py +0 -0
  564. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/query_tools.py +0 -0
  565. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/reach_tools.py +0 -0
  566. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/secret_tools.py +0 -0
  567. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/state_tools.py +0 -0
  568. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/write_ingest_tools.py +0 -0
  569. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/verbose_tools.py +0 -0
  570. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/write_ingest_types.py +0 -0
  571. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/bootstrap.py +0 -0
  572. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/catalog_composition.py +0 -0
  573. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/composition.py +0 -0
  574. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/decide_wiring.py +0 -0
  575. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/effect_journal.py +0 -0
  576. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/fleet_composition.py +0 -0
  577. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/harness_host.py +0 -0
  578. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/legacy_action_mapping.py +0 -0
  579. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/operation_registry.py +0 -0
  580. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/routes.py +0 -0
  581. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/mcp_server/source_reader.py +0 -0
  582. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/__init__.py +0 -0
  583. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/action_dispatch.py +0 -0
  584. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/alert_intake.py +0 -0
  585. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/__init__.py +0 -0
  586. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/discord.py +0 -0
  587. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/googlechat.py +0 -0
  588. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/googlemeet.py +0 -0
  589. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/imessage.py +0 -0
  590. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/irc.py +0 -0
  591. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/line.py +0 -0
  592. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/matrix.py +0 -0
  593. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/mattermost.py +0 -0
  594. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/nextcloud.py +0 -0
  595. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/signal.py +0 -0
  596. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/slack.py +0 -0
  597. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/synology.py +0 -0
  598. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/teams.py +0 -0
  599. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/telegram.py +0 -0
  600. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/twitch.py +0 -0
  601. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/voicecall.py +0 -0
  602. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/backends/whatsapp.py +0 -0
  603. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/base.py +0 -0
  604. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/capabilities.py +0 -0
  605. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/coalescer.py +0 -0
  606. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/commands.py +0 -0
  607. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/governed_send.py +0 -0
  608. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/host_ports.py +0 -0
  609. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/inbox.py +0 -0
  610. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/intake.py +0 -0
  611. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/lease.py +0 -0
  612. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/models.py +0 -0
  613. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/planner_handler.py +0 -0
  614. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/polling.py +0 -0
  615. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/reach.py +0 -0
  616. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/registry.py +0 -0
  617. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/render.py +0 -0
  618. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/router.py +0 -0
  619. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/service.py +0 -0
  620. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/supervision.py +0 -0
  621. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/messaging/transport.py +0 -0
  622. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/__init__.py +0 -0
  623. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/correlation.py +0 -0
  624. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/custom_observability.py +0 -0
  625. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/error_detail_sink.py +0 -0
  626. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/gateway_health.py +0 -0
  627. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/gateway_metrics.py +0 -0
  628. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/health.py +0 -0
  629. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/langfuse_exporter.py +0 -0
  630. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/langfuse_trust.py +0 -0
  631. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/readiness.py +0 -0
  632. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/runtime_health.py +0 -0
  633. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/runtime_signals.py +0 -0
  634. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/telemetry.py +0 -0
  635. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/observability/trace_ontology.py +0 -0
  636. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/ontology/shapes/runtime.shapes.ttl +0 -0
  637. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/__init__.py +0 -0
  638. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/anonymous.py +0 -0
  639. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/auth.py +0 -0
  640. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/config_sensitivity.py +0 -0
  641. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/conformance/__init__.py +0 -0
  642. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/conformance/surface_inventory.py +0 -0
  643. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/conformance/surface_manifest.py +0 -0
  644. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/delegation.py +0 -0
  645. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/elevation.py +0 -0
  646. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/error_surface.py +0 -0
  647. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/http_boundary.py +0 -0
  648. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/identifiers.py +0 -0
  649. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/identity.py +0 -0
  650. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/log_redaction.py +0 -0
  651. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/oidc_discovery.py +0 -0
  652. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/operation_result.py +0 -0
  653. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/prompt_injection.py +0 -0
  654. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/request_identity.py +0 -0
  655. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/run_authority.py +0 -0
  656. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/run_token.py +0 -0
  657. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/scope_registry.py +0 -0
  658. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/secrets.py +0 -0
  659. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/security_policy_middleware.py +0 -0
  660. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/security/settings.py +0 -0
  661. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/SKILL.md +0 -0
  662. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +0 -0
  663. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +0 -0
  664. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/SKILL.md +0 -0
  665. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/agents/arbora.yaml +0 -0
  666. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/agents/openai.yaml +0 -0
  667. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/first-boot-verification.md +0 -0
  668. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +0 -0
  669. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/identity-and-access.md +0 -0
  670. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/secrets-and-federation.md +0 -0
  671. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/telemetry.md +0 -0
  672. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-development/SKILL.md +0 -0
  673. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-development/references/bootstrap.md +0 -0
  674. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/SKILL.md +0 -0
  675. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/agents/arbora.yaml +0 -0
  676. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/agents/openai.yaml +0 -0
  677. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/SKILL.md +0 -0
  678. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/agents/arbora.yaml +0 -0
  679. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/agents/openai.yaml +0 -0
  680. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +0 -0
  681. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/bare-metal.md +0 -0
  682. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/compose-and-podman.md +0 -0
  683. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/data-plane-substrate.md +0 -0
  684. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/deployment-contract.md +0 -0
  685. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/development-workspace.md +0 -0
  686. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/docker-swarm.md +0 -0
  687. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/engine-identity-admission.md +0 -0
  688. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +0 -0
  689. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +0 -0
  690. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/runtime-topology.md +0 -0
  691. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/security-and-operations.md +0 -0
  692. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/arbora-repository-development/SKILL.md +0 -0
  693. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/SKILL.md +0 -0
  694. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/agents/arbora.yaml +0 -0
  695. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/agents/openai.yaml +0 -0
  696. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/core-pack.txt +0 -0
  697. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/SKILL.md +0 -0
  698. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +0 -0
  699. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +0 -0
  700. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/SKILL.md +0 -0
  701. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +0 -0
  702. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +0 -0
  703. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +0 -0
  704. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +0 -0
  705. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/SKILL.md +0 -0
  706. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +0 -0
  707. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +0 -0
  708. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/SKILL.md +0 -0
  709. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +0 -0
  710. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +0 -0
  711. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/SKILL.md +0 -0
  712. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +0 -0
  713. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/agents/openai.yaml +0 -0
  714. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/references/uql-reference.md +0 -0
  715. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/SKILL.md +0 -0
  716. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +0 -0
  717. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/agents/openai.yaml +0 -0
  718. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/SKILL.md +0 -0
  719. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +0 -0
  720. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +0 -0
  721. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/skills/using-arbora/SKILL.md +0 -0
  722. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/unique_records.py +0 -0
  723. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/__init__.py +0 -0
  724. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/contact_delivery.py +0 -0
  725. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/contact_governance.py +0 -0
  726. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/mcp_delegation.py +0 -0
  727. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/package_layout_expectation.py +0 -0
  728. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/session_boundary.py +0 -0
  729. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/voice_delegation.py +0 -0
  730. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora/webui_host/webui_co_service.py +0 -0
  731. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/dependency_links.txt +0 -0
  732. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/arbora.egg-info/top_level.txt +0 -0
  733. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/setup.cfg +0 -0
  734. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_agent_runs.py +0 -0
  735. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_agents_run_end_to_end.py +0 -0
  736. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_check_acceptance_evidence.py +0 -0
  737. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_check_connector_count_pins.py +0 -0
  738. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_check_core_skills.py +0 -0
  739. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_check_wiring.py +0 -0
  740. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_component_registry_boundary_seeds.py +0 -0
  741. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_connector_pack_typed_publisher.py +0 -0
  742. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_connector_runner_composition.py +0 -0
  743. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_dependency_manifest.py +0 -0
  744. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_docs_surface.py +0 -0
  745. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_epistemic_adapter.py +0 -0
  746. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_fleet_catalog_reader.py +0 -0
  747. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_host_bindings.py +0 -0
  748. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_package_layout.py +0 -0
  749. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_real_anonymous_boot.py +0 -0
  750. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_real_boot.py +0 -0
  751. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_real_boot_messaging.py +0 -0
  752. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_run_event_payloads.py +0 -0
  753. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_semantic_content.py +0 -0
  754. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_served_operation_api.py +0 -0
  755. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/tests/test_unique_records.py +0 -0
  756. {arbora-0.1.8.dev3 → arbora-0.1.8.dev4}/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.dev3
3
+ Version: 0.1.8.dev4
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
@@ -20,7 +20,7 @@ Requires-Dist: httpx>=0.28.1
20
20
  Requires-Dist: pyjwt>=2.15.1
21
21
  Requires-Dist: joserfc>=1.7.5
22
22
  Requires-Dist: python-multipart>=0.0.32
23
- Requires-Dist: agent-connector-sdk[a2a,mcp]<0.6.0,>=0.5.4
23
+ Requires-Dist: agent-connector-sdk[a2a,mcp]<0.6.0,>=0.5.5
24
24
  Requires-Dist: aiohttp>=3.14.5
25
25
  Requires-Dist: anyio>=4.15.1
26
26
  Requires-Dist: epistemic-graph[server]<3.0.0,>=2.27.6
@@ -52,7 +52,7 @@ Provides-Extra: webui
52
52
  Requires-Dist: agent-webui<3.0.0,>=2.8.2; extra == "webui"
53
53
  Requires-Dist: uvicorn>=0.54.0; extra == "webui"
54
54
  Provides-Extra: gateway-widgets
55
- Requires-Dist: agent-connector-sdk[a2a,mcp]<0.6.0,>=0.5.4; extra == "gateway-widgets"
55
+ Requires-Dist: agent-connector-sdk[a2a,mcp]<0.6.0,>=0.5.5; extra == "gateway-widgets"
56
56
  Provides-Extra: vault
57
57
  Requires-Dist: hvac>=2.4.0; extra == "vault"
58
58
  Provides-Extra: messaging-telegram
@@ -3,4 +3,4 @@
3
3
  Updated only by `bump-my-version` (see `.bumpversion.toml`) — never hand-edited.
4
4
  """
5
5
 
6
- __version__ = "0.1.8.dev3"
6
+ __version__ = "0.1.8.dev4"
@@ -1,5 +1,14 @@
1
1
  """First-party Arbora unary A2A facade."""
2
2
 
3
+ from .anonymous import (
4
+ AnonymousCaller,
5
+ AnonymousNativeReadPort,
6
+ AnonymousReadPolicy,
7
+ AnonymousTaskReadOwner,
8
+ AnonymousTaskStatus,
9
+ create_anonymous_a2a_application,
10
+ )
11
+ from .anonymous_native import EgAnonymousTaskReadPort
3
12
  from .application import (
4
13
  A2AAuthenticator,
5
14
  AmbientA2AAuthenticator,
@@ -41,6 +50,13 @@ from .work_items import (
41
50
  )
42
51
 
43
52
  __all__ = [
53
+ "EgAnonymousTaskReadPort",
54
+ "AnonymousCaller",
55
+ "AnonymousNativeReadPort",
56
+ "AnonymousReadPolicy",
57
+ "AnonymousTaskReadOwner",
58
+ "AnonymousTaskStatus",
59
+ "create_anonymous_a2a_application",
44
60
  "AdmittedA2AApp",
45
61
  "create_admitted_a2a_app",
46
62
  "A2AAgentCard",
@@ -0,0 +1,454 @@
1
+ """Explicit anonymous task reads; never an authenticated session or fallback.
2
+
3
+ Only the configured shared-local namespace is available. Native tokenless client
4
+ provisioning remains the host's responsibility; this module creates no client,
5
+ credentials, verified claims or deployment settings. Mutation is not supported.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import asyncio
11
+ import contextvars
12
+ import hashlib
13
+ import inspect
14
+ import ipaddress
15
+ import json
16
+ from abc import ABC, abstractmethod
17
+ from contextlib import contextmanager
18
+ from dataclasses import dataclass
19
+ from typing import Any
20
+ from urllib.parse import urlsplit
21
+
22
+ from fastapi import FastAPI, Request
23
+ from fastapi.responses import JSONResponse
24
+
25
+ from .authority import WorkItemA2AAuthority
26
+ from .service import A2AService
27
+
28
+
29
+ @dataclass(frozen=True, slots=True)
30
+ class AnonymousReadPolicy:
31
+ origin: str
32
+ tenant: str
33
+ revision: str
34
+ operations: frozenset[str] = frozenset()
35
+
36
+ def __post_init__(self) -> None:
37
+ parsed = urlsplit(self.origin)
38
+ try:
39
+ local = ipaddress.ip_address(parsed.hostname or "").is_loopback
40
+ port = parsed.port
41
+ except ValueError:
42
+ local, port = False, None
43
+ if (
44
+ not local
45
+ or parsed.scheme != "http"
46
+ or port is None
47
+ or parsed.username is not None
48
+ or parsed.password is not None
49
+ or parsed.path
50
+ or parsed.query
51
+ or parsed.fragment
52
+ or self.origin != f"http://{parsed.netloc}"
53
+ or type(self.operations) is not frozenset
54
+ or not self.operations <= {"tasks/get"}
55
+ ):
56
+ raise ValueError("Explicit loopback read policy required")
57
+ if self.tenant != "local":
58
+ raise ValueError("Anonymous namespace is local only")
59
+ for value in (self.tenant, self.revision):
60
+ if (
61
+ type(value) is not str
62
+ or not value
63
+ or len(value) > 128
64
+ or not value.isascii()
65
+ or not all(c.isalnum() or c in "-_" for c in value)
66
+ ):
67
+ raise ValueError("Explicit namespace and revision required")
68
+
69
+
70
+ @dataclass(frozen=True, slots=True)
71
+ class AnonymousCaller:
72
+ """Descriptive shared namespace, not a person, scope grant or GraphSession."""
73
+
74
+ tenant: str
75
+ policy_revision: str
76
+ task_id: str
77
+ owner_ref: str
78
+
79
+ @property
80
+ def authenticated(self) -> bool:
81
+ return False
82
+
83
+
84
+ @dataclass(frozen=True, slots=True)
85
+ class AnonymousTaskStatus:
86
+ """Required native ownership evidence, not the existing EG caller view.
87
+
88
+ The current EG WorkItem view omits tenant and native ownership evidence.
89
+ An adapter must not fill those fields from its request to claim support.
90
+ """
91
+
92
+ work_item_id: str
93
+ run_id: str
94
+ tenant: str
95
+ owner_ref: str
96
+ status: str
97
+ authority_mode: str
98
+ context_id: str
99
+
100
+ def __post_init__(self) -> None:
101
+ for value in (
102
+ self.work_item_id,
103
+ self.run_id,
104
+ self.tenant,
105
+ self.owner_ref,
106
+ self.status,
107
+ self.authority_mode,
108
+ self.context_id,
109
+ ):
110
+ if type(value) is not str or not value or len(value) > 256:
111
+ raise ValueError("Invalid native anonymous evidence")
112
+ WorkItemA2AAuthority._work_item_id(self.run_id)
113
+ from .authority import _STATE_MAP
114
+ from .models import A2ATaskStatus
115
+
116
+ if self.status not in _STATE_MAP or self.authority_mode not in {
117
+ "none",
118
+ "verified",
119
+ }:
120
+ raise ValueError("Invalid native status")
121
+ from .models import A2ATask
122
+
123
+ A2ATask(
124
+ id=self.run_id,
125
+ context_id=self.context_id,
126
+ status=A2ATaskStatus(state=_STATE_MAP[self.status]),
127
+ )
128
+
129
+
130
+ class AnonymousNativeReadPort(ABC):
131
+ """Tokenless native contract; generic signed EG clients do not implement it.
132
+
133
+ The producer must enforce the bound namespace and anonymous owner before
134
+ reading. No released implementation is qualified by this source contract.
135
+ """
136
+
137
+ @abstractmethod
138
+ async def get(self, caller: AnonymousCaller) -> AnonymousTaskStatus | None:
139
+ raise NotImplementedError
140
+
141
+
142
+ @dataclass(slots=True)
143
+ class _ReadBinding:
144
+ caller: AnonymousCaller
145
+ task: Any
146
+ request: Request
147
+ snapshot: tuple[Any, ...]
148
+ used: bool = False
149
+
150
+
151
+ class AnonymousTaskReadOwner:
152
+ """Own one exact public WorkItem reader and a revocable local read policy."""
153
+
154
+ def __init__(
155
+ self, *, mode: str, policy: AnonymousReadPolicy, work_items: Any
156
+ ) -> None:
157
+ if mode != "none" or type(policy) is not AnonymousReadPolicy:
158
+ raise ValueError("Explicit anonymous mode required")
159
+ if not isinstance(
160
+ work_items, AnonymousNativeReadPort
161
+ ) or not inspect.iscoroutinefunction(work_items.get):
162
+ raise ValueError("Native WorkItem read port required")
163
+ self._policy = policy
164
+ self._work_items = work_items
165
+ self._revoked = False
166
+ self._active = 0
167
+ self._request: contextvars.ContextVar[Any] = contextvars.ContextVar(
168
+ "anonymous_request", default=None
169
+ )
170
+ self._binding: contextvars.ContextVar[_ReadBinding | None] = (
171
+ contextvars.ContextVar("anonymous_task_read", default=None)
172
+ )
173
+
174
+ @property
175
+ def policy(self) -> AnonymousReadPolicy:
176
+ return self._policy
177
+
178
+ def revoke(self) -> None:
179
+ self._revoked = True
180
+
181
+ def _deadline(self) -> float:
182
+ binding = self._request.get()
183
+ if binding is None:
184
+ raise PermissionError("Anonymous request binding required")
185
+ task = asyncio.current_task()
186
+ if task is None:
187
+ raise PermissionError("Anonymous request task required")
188
+ if task.cancelling():
189
+ raise asyncio.CancelledError
190
+ if asyncio.get_running_loop().time() >= binding[3]:
191
+ raise TimeoutError("Anonymous request expired")
192
+ return binding[3]
193
+
194
+ def _check(self, binding: _ReadBinding) -> None:
195
+ self._deadline()
196
+ if (
197
+ self._revoked
198
+ or self._binding.get() is not binding
199
+ or asyncio.current_task() is not binding.task
200
+ or self._snapshot(binding.request) != binding.snapshot
201
+ or self._request.get()[:3]
202
+ != (binding.request, binding.task, binding.snapshot)
203
+ ):
204
+ raise PermissionError("Anonymous read unavailable")
205
+
206
+ @staticmethod
207
+ def _snapshot(request: Request) -> tuple[Any, ...]:
208
+ scope = request.scope
209
+ return (
210
+ (id(scope),)
211
+ + tuple(
212
+ scope.get(key)
213
+ for key in (
214
+ "type",
215
+ "scheme",
216
+ "method",
217
+ "path",
218
+ "root_path",
219
+ "query_string",
220
+ "client",
221
+ "server",
222
+ )
223
+ )
224
+ + (tuple(scope.get("headers", ())),)
225
+ )
226
+
227
+ @contextmanager
228
+ def request_scope(self, request: Request):
229
+ self._validate_request(request)
230
+ if self._revoked or self._active >= 4 or self._request.get() is not None:
231
+ raise PermissionError("Anonymous read capacity unavailable")
232
+ snapshot = self._snapshot(request)
233
+ self._active += 1
234
+ token = self._request.set(
235
+ (
236
+ request,
237
+ asyncio.current_task(),
238
+ snapshot,
239
+ asyncio.get_running_loop().time() + 5,
240
+ )
241
+ )
242
+ try:
243
+ yield snapshot
244
+ finally:
245
+ self._request.reset(token)
246
+ self._active -= 1
247
+
248
+ def _validate_request(self, request: Request) -> None:
249
+ scope = request.scope
250
+ try:
251
+ local = ipaddress.ip_address(scope["client"][0]).is_loopback
252
+ except (KeyError, TypeError, ValueError):
253
+ local = False
254
+ headers = request.headers
255
+ forbidden = {
256
+ "authorization",
257
+ "cookie",
258
+ "forwarded",
259
+ "x-forwarded-host",
260
+ "x-forwarded-for",
261
+ "x-forwarded-proto",
262
+ }
263
+ expected = urlsplit(self.policy.origin)
264
+ if (
265
+ not local
266
+ or scope.get("scheme") != expected.scheme
267
+ or any(name in headers for name in forbidden)
268
+ or headers.getlist("host") != [expected.netloc]
269
+ or headers.getlist("origin") != [self.policy.origin]
270
+ or headers.getlist("x-arbora-anonymous") != ["1"]
271
+ or headers.getlist("content-type") != ["application/json"]
272
+ ):
273
+ raise PermissionError("Anonymous ingress refused")
274
+
275
+ @contextmanager
276
+ def admission(self, request: Request, task_id: str):
277
+ self._validate_request(request)
278
+ expected = self._request.get()
279
+ if expected is None or expected[:3] != (
280
+ request,
281
+ asyncio.current_task(),
282
+ self._snapshot(request),
283
+ ):
284
+ raise PermissionError("Anonymous request binding required")
285
+ WorkItemA2AAuthority._work_item_id(task_id)
286
+ if (
287
+ self._revoked
288
+ or "tasks/get" not in self.policy.operations
289
+ or self._binding.get() is not None
290
+ ):
291
+ raise PermissionError("Anonymous read unavailable")
292
+ owner_ref = (
293
+ "anonymous:sha256:"
294
+ + hashlib.sha256(self.policy.tenant.encode()).hexdigest()
295
+ )
296
+ binding = _ReadBinding(
297
+ AnonymousCaller(
298
+ self.policy.tenant, self.policy.revision, task_id, owner_ref
299
+ ),
300
+ asyncio.current_task(),
301
+ request,
302
+ self._snapshot(request),
303
+ )
304
+ token = self._binding.set(binding)
305
+ try:
306
+ yield binding.caller
307
+ finally:
308
+ self._binding.reset(token)
309
+
310
+ async def dispatch(
311
+ self,
312
+ *,
313
+ message: Any,
314
+ idempotency_key: str,
315
+ decision: Any,
316
+ blocking: bool = True,
317
+ ):
318
+ raise PermissionError("Anonymous mutation is unavailable")
319
+
320
+ async def list(self, *, cursor: str | None, limit: int):
321
+ raise PermissionError("Anonymous listing is unavailable")
322
+
323
+ async def cancel(self, task_id: str):
324
+ raise PermissionError("Anonymous cancellation is unavailable")
325
+
326
+ async def get(self, task_id: str):
327
+ binding = self._binding.get()
328
+ if binding is None:
329
+ raise PermissionError("Anonymous admission required")
330
+ self._check(binding)
331
+ if binding.used or task_id != binding.caller.task_id:
332
+ raise PermissionError("Anonymous read binding changed")
333
+ binding.used = True
334
+ from arbora.api.contracts.session import suspend_session
335
+ from arbora.security.actor_context import suspend_actor
336
+
337
+ # Stay on the admitting task. Cancellation holds capacity until the
338
+ # provider has actually unwound; no detached thread retains authority.
339
+ with suspend_session(), suspend_actor():
340
+ async with asyncio.timeout_at(self._deadline()) as timeout:
341
+ try:
342
+ item = await self._work_items.get(binding.caller)
343
+ except ValueError as exc:
344
+ raise RuntimeError("Native read evidence unavailable") from exc
345
+ if timeout.expired():
346
+ raise TimeoutError("Anonymous request expired")
347
+ self._check(binding)
348
+ caller = binding.caller
349
+ if (
350
+ type(item) is not AnonymousTaskStatus
351
+ or item.run_id != task_id
352
+ or item.tenant != caller.tenant
353
+ or item.owner_ref != caller.owner_ref
354
+ or item.authority_mode != "none"
355
+ ):
356
+ return None
357
+ from .authority import _STATE_MAP
358
+ from .models import A2ATask, A2ATaskStatus
359
+
360
+ state = _STATE_MAP.get(item.status)
361
+ if state is None:
362
+ raise ValueError("Unknown task state")
363
+ # Status only: no reply cache, routing metadata or context ownership
364
+ # has been qualified by this bounded native read contract.
365
+ return A2ATask(
366
+ id=task_id, context_id=item.context_id, status=A2ATaskStatus(state=state)
367
+ )
368
+
369
+
370
+ def _unique_object(pairs):
371
+ result = {}
372
+ for key, value in pairs:
373
+ if key in result:
374
+ raise ValueError("Duplicate JSON field")
375
+ result[key] = value
376
+ return result
377
+
378
+
379
+ async def _read_payload(
380
+ request: Request, owner: AnonymousTaskReadOwner, service: A2AService
381
+ ) -> JSONResponse:
382
+ from .application import _error, _GetTaskParams, _unary_response
383
+
384
+ request_id = None
385
+ try:
386
+ owner._validate_request(request)
387
+ raw = bytearray()
388
+ async for chunk in request.stream():
389
+ if len(raw) + len(chunk) > 16384:
390
+ return _error(None, -32600, "Request too large", 413)
391
+ raw.extend(chunk)
392
+ body = json.loads(raw, object_pairs_hook=_unique_object)
393
+ if (
394
+ type(body) is not dict
395
+ or set(body) != {"jsonrpc", "id", "method", "params"}
396
+ or body["jsonrpc"] != "2.0"
397
+ ):
398
+ raise ValueError("Invalid envelope")
399
+ request_id = body["id"]
400
+ if type(request_id) not in {str, int} or len(str(request_id)) > 128:
401
+ request_id = None
402
+ raise ValueError("Invalid identifier")
403
+ if body["method"] != "tasks/get":
404
+ raise PermissionError("Operation unavailable")
405
+ params = _GetTaskParams.model_validate(body["params"])
406
+ if params.include_committed_event:
407
+ raise PermissionError("Committed reply authority unavailable")
408
+ with owner.admission(request, params.id):
409
+ result = await service.get_task(params.id)
410
+ return (
411
+ _unary_response(result, request_id)
412
+ if result is not None
413
+ else _error(request_id, -32001, "Task not found", 404)
414
+ )
415
+ except PermissionError:
416
+ return _error(request_id, -32001, "Anonymous read refused", 403)
417
+ except (ValueError, TypeError):
418
+ return _error(request_id, -32602, "Invalid params")
419
+ except Exception:
420
+ return _error(request_id, -32014, "Task read unavailable", 503)
421
+
422
+
423
+ def create_anonymous_a2a_application(
424
+ *, owner: AnonymousTaskReadOwner, service: A2AService
425
+ ) -> FastAPI:
426
+ """Create an opt-in read-only served seam; never modify the verified app."""
427
+ if (
428
+ type(owner) is not AnonymousTaskReadOwner
429
+ or type(service) is not A2AService
430
+ or service.authority is not owner
431
+ ):
432
+ raise ValueError("The exact same anonymous task owner is required")
433
+ app = FastAPI(openapi_url=None, docs_url=None, redoc_url=None)
434
+
435
+ @app.post("/a2a")
436
+ async def read_task(request: Request):
437
+ from .application import _error
438
+
439
+ try:
440
+ with owner.request_scope(request) as snapshot:
441
+ async with asyncio.timeout_at(owner._deadline()) as timeout:
442
+ result = await _read_payload(request, owner, service)
443
+ if timeout.expired():
444
+ raise TimeoutError("Anonymous request expired")
445
+ owner._deadline()
446
+ if owner._snapshot(request) != snapshot or owner._revoked:
447
+ raise PermissionError("Anonymous request changed")
448
+ return result
449
+ except PermissionError:
450
+ return _error(None, -32001, "Anonymous read refused", 403)
451
+ except TimeoutError:
452
+ return _error(None, -32014, "Task read unavailable", 503)
453
+
454
+ return app
@@ -0,0 +1,84 @@
1
+ """Source adapter to EG's existing owner-bound original run-admission read.
2
+
3
+ No native deployment or token is created here. The server's anonymous principal
4
+ and immutable run-owner binding, not caller metadata, own this read decision.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import hashlib
10
+ from typing import Any
11
+
12
+ from epistemic_graph.client import EpistemicGraphClient
13
+ from epistemic_graph.generated.coordination import (
14
+ decode_get_run_work_item,
15
+ send_get_run_work_item,
16
+ )
17
+
18
+ from .anonymous import AnonymousCaller, AnonymousNativeReadPort, AnonymousTaskStatus
19
+
20
+
21
+ class EgAnonymousTaskReadPort(AnonymousNativeReadPort):
22
+ """Use GetRunWorkItem on an already-configured local no-auth client only."""
23
+
24
+ def __init__(self, client: EpistemicGraphClient, *, graph: str) -> None:
25
+ if (
26
+ type(client) is not EpistemicGraphClient
27
+ or type(graph) is not str
28
+ or not graph
29
+ or len(graph) > 128
30
+ ):
31
+ raise ValueError("Exact local native client and graph required")
32
+ self._client = client
33
+ self._graph = graph
34
+ self._check_mode()
35
+
36
+ def _check_mode(self) -> None:
37
+ if self._client.auth_mode != "none" or self._client.authenticated is not False:
38
+ raise PermissionError("Explicit native anonymous mode required")
39
+
40
+ async def get(self, caller: AnonymousCaller) -> AnonymousTaskStatus | None:
41
+ self._check_mode()
42
+ if type(caller) is not AnonymousCaller or caller.tenant != "local":
43
+ raise PermissionError("Native anonymous namespace is local only")
44
+ if await self._client.supports("GetRunWorkItem") is not True:
45
+ raise RuntimeError("Native owner-bound reads unavailable")
46
+ self._check_mode()
47
+ result = await send_get_run_work_item(
48
+ self._client,
49
+ {"tenant": "local", "run_id": caller.task_id},
50
+ graph=self._graph,
51
+ )
52
+ decode_get_run_work_item(result)
53
+ value = result.payload
54
+ self._check_mode()
55
+ if value is None:
56
+ return None
57
+ return self._project(value, caller)
58
+
59
+ def _project(self, value: Any, caller: AnonymousCaller) -> AnonymousTaskStatus:
60
+ admission = value["admission"]
61
+ context = admission["context"]
62
+ item = value["work_item"]
63
+ if (
64
+ admission["run_id"] != caller.task_id
65
+ or context["tenant_id"] != "local"
66
+ or context["graph"] != self._graph
67
+ or admission["work_item_id"] is not None
68
+ or admission["kind"] != "orchestrator_task"
69
+ or item["kind"] != "orchestrator_task"
70
+ ):
71
+ raise PermissionError("Native anonymous run binding mismatch")
72
+ # GetRunWorkItem independently binds the transport's server-created
73
+ # anonymous principal to the immutable native owner. Subject/agent/scopes
74
+ # in original request context are provenance, never used as grants here.
75
+ owner_ref = "anonymous:sha256:" + hashlib.sha256(b"local").hexdigest()
76
+ return AnonymousTaskStatus(
77
+ work_item_id=item["work_item_id"],
78
+ run_id=admission["run_id"],
79
+ tenant=context["tenant_id"],
80
+ owner_ref=owner_ref,
81
+ status=item["status"],
82
+ authority_mode="none",
83
+ context_id=admission["metadata"]["a2a_context_id"],
84
+ )
@@ -299,6 +299,10 @@ _ERROR_CODES: dict[type[Exception], tuple[int, int]] = {
299
299
 
300
300
  def _application_error(request_id: Any, error: Exception) -> JSONResponse:
301
301
  """Translate known service failures without echoing caller input."""
302
+ from arbora.api.invoke.pipeline import OperationRefused
303
+
304
+ if isinstance(error, OperationRefused) and error.code == "UPGRADE_REQUIRED":
305
+ return _error(request_id, -32013, "UPGRADE_REQUIRED: native run ownership", 501)
302
306
  mapped = _ERROR_CODES.get(type(error))
303
307
  if mapped is not None:
304
308
  code, status = mapped