arbora 0.1.8.dev2__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 (760) hide show
  1. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/PKG-INFO +5 -5
  2. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/_version.py +1 -1
  3. {arbora-0.1.8.dev2 → 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.dev2 → arbora-0.1.8.dev4}/arbora/a2a/application.py +11 -7
  7. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/authority.py +463 -157
  8. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/composition.py +7 -1
  9. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/mcp.py +6 -0
  10. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/models.py +11 -1
  11. arbora-0.1.8.dev4/arbora/a2a/run_usage.py +128 -0
  12. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/terminal_event.py +51 -22
  13. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/start_admission.py +3 -2
  14. arbora-0.1.8.dev4/arbora/agent_runs.py +464 -0
  15. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/agent_control_plane.py +5 -4
  16. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/session.py +23 -2
  17. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/errors.py +71 -1
  18. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/descriptors.json +61 -1
  19. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/engine_errors.py +2 -2
  20. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/registry.json +934 -489
  21. arbora-0.1.8.dev4/arbora/api/generated/schemas/method.request.json +1 -0
  22. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.query.json +1 -1
  23. arbora-0.1.8.dev4/arbora/api/generated/task_plan_schema.json +24 -0
  24. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/app.py +99 -6
  25. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/auth.py +13 -2
  26. arbora-0.1.8.dev4/arbora/api/http/browser_app.py +177 -0
  27. arbora-0.1.8.dev4/arbora/api/http/browser_auth.py +132 -0
  28. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/routes.py +40 -10
  29. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/__init__.py +2 -1
  30. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/audit.py +2 -2
  31. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/bootstrap.py +7 -6
  32. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/eg_audit.py +10 -8
  33. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/executor.py +22 -17
  34. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/pipeline.py +24 -24
  35. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/plan.py +4 -4
  36. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/invoke/steps.py +75 -10
  37. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/caller.py +22 -10
  38. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/registration.py +2 -1
  39. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/resolve.py +49 -0
  40. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/verbs.py +2 -1
  41. arbora-0.1.8.dev4/arbora/api/ops/browser.py +96 -0
  42. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/fleet.py +88 -0
  43. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/plans.py +226 -5
  44. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/research.py +35 -5
  45. arbora-0.1.8.dev4/arbora/api/ops/run_replay.py +219 -0
  46. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/runs.py +56 -0
  47. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/eunomia.py +21 -6
  48. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/registry.py +14 -1
  49. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_api.py +22 -0
  50. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_runtime.py +25 -1
  51. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_service.py +36 -0
  52. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/client/_generated_models.py +6 -1
  53. arbora-0.1.8.dev4/arbora/content.py +128 -0
  54. arbora-0.1.8.dev4/arbora/core/providers.py +120 -0
  55. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/settings.py +31 -0
  56. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/production_ops.py +14 -0
  57. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/semantic_provisioning.py +3 -2
  58. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/epistemic.py +111 -13
  59. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/access_contracts.py +10 -17
  60. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/catalog_composition.py +30 -15
  61. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/child_resilience.py +35 -3
  62. arbora-0.1.8.dev4/arbora/fleet/declarations.py +83 -0
  63. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/gateway_ops.py +82 -10
  64. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/local_skill_catalog.py +15 -26
  65. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/multiplexer.py +148 -32
  66. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/multiplexer_ops.py +4 -2
  67. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/onboarding.py +129 -23
  68. arbora-0.1.8.dev4/arbora/fleet/plan_confirmation.py +108 -0
  69. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/service_child.py +20 -9
  70. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/daemon.py +2 -1
  71. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/fleet_events.py +3 -1
  72. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/rate_limit.py +25 -4
  73. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/registry_api.py +7 -1
  74. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/host_bindings.py +9 -0
  75. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/admission.py +10 -0
  76. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/ports.py +21 -0
  77. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ingest/connector_sources.py +68 -15
  78. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ingest/service.py +10 -2
  79. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/middlewares.py +3 -1
  80. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/server_factory.py +0 -181
  81. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/bootstrap.py +8 -1
  82. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/catalog_composition.py +2 -1
  83. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/current_plan_reader.py +3 -3
  84. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/effect_journal.py +7 -4
  85. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/harness_host.py +4 -1
  86. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/hosted_invocation.py +38 -1
  87. arbora-0.1.8.dev4/arbora/mcp_server/run_reader.py +181 -0
  88. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/runtime.py +9 -2
  89. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/served_engine.py +33 -18
  90. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/served_invocation.py +86 -6
  91. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/server.py +24 -4
  92. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/source_reader.py +3 -4
  93. arbora-0.1.8.dev4/arbora/mcp_server/task_plan.py +173 -0
  94. arbora-0.1.8.dev4/arbora/mcp_server/task_plan_runtime.py +316 -0
  95. arbora-0.1.8.dev4/arbora/native_run_admission.py +79 -0
  96. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-01.json +21 -0
  97. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-02.json +21 -0
  98. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-03.json +21 -0
  99. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-04.json +21 -0
  100. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-05.json +21 -0
  101. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-06.json +21 -0
  102. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-07.json +21 -0
  103. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-08.json +21 -0
  104. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-09.json +21 -0
  105. arbora-0.1.8.dev4/arbora/prompts/cmdb-trm-10.json +21 -0
  106. arbora-0.1.8.dev4/arbora/prompts/cq-a.json +20 -0
  107. arbora-0.1.8.dev4/arbora/prompts/cq-b.json +20 -0
  108. arbora-0.1.8.dev4/arbora/prompts/cq-c.json +20 -0
  109. arbora-0.1.8.dev4/arbora/prompts/cq-d1.json +19 -0
  110. arbora-0.1.8.dev4/arbora/prompts/cq-d10.json +19 -0
  111. arbora-0.1.8.dev4/arbora/prompts/cq-d2.json +19 -0
  112. arbora-0.1.8.dev4/arbora/prompts/cq-d3.json +19 -0
  113. arbora-0.1.8.dev4/arbora/prompts/cq-d4.json +19 -0
  114. arbora-0.1.8.dev4/arbora/prompts/cq-d5.json +19 -0
  115. arbora-0.1.8.dev4/arbora/prompts/cq-d6.json +19 -0
  116. arbora-0.1.8.dev4/arbora/prompts/cq-d7.json +19 -0
  117. arbora-0.1.8.dev4/arbora/prompts/cq-d8.json +19 -0
  118. arbora-0.1.8.dev4/arbora/prompts/cq-d9.json +19 -0
  119. arbora-0.1.8.dev4/arbora/prompts/delegation-cycle-refused.json +19 -0
  120. arbora-0.1.8.dev4/arbora/prompts/delegation-fan-out.json +19 -0
  121. arbora-0.1.8.dev4/arbora/prompts/delegation-gitlab-servicenow-plane.json +19 -0
  122. arbora-0.1.8.dev4/arbora/prompts/delegation-ordered-dag.json +19 -0
  123. arbora-0.1.8.dev4/arbora/prompts/delegation-plan-persisted.json +19 -0
  124. arbora-0.1.8.dev4/arbora/prompts/incident-triage-system.json +21 -0
  125. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/actor_context.py +15 -2
  126. arbora-0.1.8.dev4/arbora/security/anonymous.py +267 -0
  127. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/request_identity.py +74 -12
  128. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/semantic_content.py +2 -2
  129. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/__init__.py +2 -2
  130. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-development/SKILL.md +11 -0
  131. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-repository-development/SKILL.md +11 -0
  132. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/mcp_delegation.py +4 -2
  133. arbora-0.1.8.dev4/arbora/webui_host/session_boundary.py +211 -0
  134. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/webui_co_service.py +12 -0
  135. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/work_items.py +97 -22
  136. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/PKG-INFO +5 -5
  137. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/SOURCES.txt +49 -1
  138. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/entry_points.txt +0 -3
  139. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/requires.txt +4 -4
  140. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/pyproject.toml +9 -13
  141. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_agents_run_end_to_end.py +11 -0
  142. arbora-0.1.8.dev4/tests/test_epistemic_loop_lifecycle.py +212 -0
  143. arbora-0.1.8.dev4/tests/test_installed_content.py +227 -0
  144. arbora-0.1.8.dev4/tests/test_native_run_admission.py +261 -0
  145. arbora-0.1.8.dev4/tests/test_native_run_scope.py +230 -0
  146. arbora-0.1.8.dev4/tests/test_real_anonymous_boot.py +444 -0
  147. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_real_boot.py +11 -4
  148. arbora-0.1.8.dev4/tests/test_run_event_payloads.py +238 -0
  149. arbora-0.1.8.dev2/arbora/agent_runs.py +0 -237
  150. arbora-0.1.8.dev2/arbora/api/generated/schemas/method.request.json +0 -1
  151. arbora-0.1.8.dev2/arbora/api/generated/task_plan_schema.json +0 -10
  152. arbora-0.1.8.dev2/arbora/api/ops/browser.py +0 -76
  153. arbora-0.1.8.dev2/arbora/content.py +0 -22
  154. arbora-0.1.8.dev2/arbora/core/providers.py +0 -720
  155. arbora-0.1.8.dev2/arbora/mcp_server/backing/content_resources.py +0 -64
  156. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/LICENSE +0 -0
  157. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/README.md +0 -0
  158. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/__init__.py +0 -0
  159. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/admission.py +0 -0
  160. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/approval.py +0 -0
  161. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/routing.py +0 -0
  162. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/sdk_app.py +0 -0
  163. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/service.py +0 -0
  164. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/tool_task.py +0 -0
  165. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/tool_task_dispatch.py +0 -0
  166. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/tool_task_requests.py +0 -0
  167. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/a2a/work_items.py +0 -0
  168. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/__init__.py +0 -0
  169. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/action_policy.py +0 -0
  170. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/approval.py +0 -0
  171. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/assurance.py +0 -0
  172. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/external_policy_sync.py +0 -0
  173. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/host_start.py +0 -0
  174. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/priority.py +0 -0
  175. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/service.py +0 -0
  176. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/access/task_guard.py +0 -0
  177. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/acp/__init__.py +0 -0
  178. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/acp/coding_session.py +0 -0
  179. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/acp/session_policy.py +0 -0
  180. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/__init__.py +0 -0
  181. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/log_access.py +0 -0
  182. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/log_replay.py +0 -0
  183. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/log_routes.py +0 -0
  184. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/log_runtime.py +0 -0
  185. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/log_sink.py +0 -0
  186. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/managed_web.py +0 -0
  187. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/agent_host/start_configuration.py +0 -0
  188. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/__init__.py +0 -0
  189. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/__init__.py +0 -0
  190. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/agent_control_contracts.py +0 -0
  191. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/catalog.py +0 -0
  192. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/messaging.py +0 -0
  193. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/contracts/provisioning.py +0 -0
  194. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/evidence/__init__.py +0 -0
  195. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/evidence/bundle.py +0 -0
  196. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/evidence/contradiction.py +0 -0
  197. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/__init__.py +0 -0
  198. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.cluster.json +0 -0
  199. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.compute.json +0 -0
  200. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.coordination.json +0 -0
  201. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.graph.json +0 -0
  202. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.ingestion.json +0 -0
  203. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.messaging.json +0 -0
  204. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.reasoning.json +0 -0
  205. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.security.json +0 -0
  206. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.storage.json +0 -0
  207. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/generated/schemas/result.transactions.json +0 -0
  208. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/__init__.py +0 -0
  209. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/checkout.py +0 -0
  210. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/openapi.py +0 -0
  211. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/http/protocol_routes.py +0 -0
  212. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/__init__.py +0 -0
  213. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/discovery.py +0 -0
  214. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/resources.py +0 -0
  215. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/mcp/serving.py +0 -0
  216. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/__init__.py +0 -0
  217. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/_common.py +0 -0
  218. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/access.py +0 -0
  219. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/agents.py +0 -0
  220. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/capacity.py +0 -0
  221. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/decide.py +0 -0
  222. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/fleet_deploy_watch.py +0 -0
  223. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/ingest.py +0 -0
  224. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/memory.py +0 -0
  225. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/messaging.py +0 -0
  226. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/ops.py +0 -0
  227. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/policy.py +0 -0
  228. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/query.py +0 -0
  229. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/registry_factory.py +0 -0
  230. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/retrieval.py +0 -0
  231. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/security.py +0 -0
  232. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/source.py +0 -0
  233. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/swarm.py +0 -0
  234. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/telemetry.py +0 -0
  235. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/usage.py +0 -0
  236. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/work.py +0 -0
  237. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/write_back.py +0 -0
  238. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/ops/write_back_models.py +0 -0
  239. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/__init__.py +0 -0
  240. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/cache.py +0 -0
  241. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/default_policy.json +0 -0
  242. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/defaults.py +0 -0
  243. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/domain_scopes.py +0 -0
  244. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/policy/pdp_remote.py +0 -0
  245. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/__init__.py +0 -0
  246. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/contract_admission.py +0 -0
  247. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/digest.py +0 -0
  248. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/eg_binding.py +0 -0
  249. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/eg_exclusions.yaml +0 -0
  250. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/scopes.py +0 -0
  251. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/spec.py +0 -0
  252. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/registry/surface_gate.py +0 -0
  253. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/api/task_plan_schema.py +0 -0
  254. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/architecture/__init__.py +0 -0
  255. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/architecture/boundary_census.py +0 -0
  256. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/architecture/capability_layers.py +0 -0
  257. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/__init__.py +0 -0
  258. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attendance.py +0 -0
  259. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attendance_api.py +0 -0
  260. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_attended.py +0 -0
  261. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_binding.py +0 -0
  262. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_cancellation.py +0 -0
  263. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_channel.py +0 -0
  264. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_client.py +0 -0
  265. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_common.py +0 -0
  266. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_descriptor.py +0 -0
  267. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_dispatch.py +0 -0
  268. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_durability.py +0 -0
  269. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_lease.py +0 -0
  270. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_outcome.py +0 -0
  271. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_policy.py +0 -0
  272. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_port.py +0 -0
  273. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_provenance.py +0 -0
  274. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_registration.py +0 -0
  275. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_server.py +0 -0
  276. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_state.py +0 -0
  277. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/browser_control_validation.py +0 -0
  278. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/mcp.py +0 -0
  279. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/browser_control/trace_bundle.py +0 -0
  280. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/client/__init__.py +0 -0
  281. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/client/_schema.py +0 -0
  282. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/client/http.py +0 -0
  283. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/client/invoke.py +0 -0
  284. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/connector_runner.py +0 -0
  285. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/console.py +0 -0
  286. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/__init__.py +0 -0
  287. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/_model.py +0 -0
  288. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/admission/__init__.py +0 -0
  289. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/admission/models.py +0 -0
  290. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/admission/service.py +0 -0
  291. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/agents/__init__.py +0 -0
  292. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/agents/models.py +0 -0
  293. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/agents/repository.py +0 -0
  294. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/agents/service.py +0 -0
  295. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/__init__.py +0 -0
  296. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/models.py +0 -0
  297. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/repository.py +0 -0
  298. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/connectors/service.py +0 -0
  299. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/economics/__init__.py +0 -0
  300. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/economics/models.py +0 -0
  301. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/economics/repository.py +0 -0
  302. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/economics/service.py +0 -0
  303. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/fleet_watch/__init__.py +0 -0
  304. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/fleet_watch/service.py +0 -0
  305. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/__init__.py +0 -0
  306. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/models.py +0 -0
  307. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/repository.py +0 -0
  308. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/foundation/service.py +0 -0
  309. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/__init__.py +0 -0
  310. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/authority.py +0 -0
  311. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/errors.py +0 -0
  312. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/migrations/models.py +0 -0
  313. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/policy/__init__.py +0 -0
  314. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/policy/models.py +0 -0
  315. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/policy/repository.py +0 -0
  316. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/__init__.py +0 -0
  317. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/authority.py +0 -0
  318. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/models.py +0 -0
  319. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/observability.py +0 -0
  320. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/projector.py +0 -0
  321. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/protocols.py +0 -0
  322. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/projection/repository.py +0 -0
  323. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/__init__.py +0 -0
  324. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/errors.py +0 -0
  325. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/models.py +0 -0
  326. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/protocols.py +0 -0
  327. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/repository.py +0 -0
  328. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/retrieval/service.py +0 -0
  329. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/__init__.py +0 -0
  330. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/admission.py +0 -0
  331. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/audit.py +0 -0
  332. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/capacity.py +0 -0
  333. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/models.py +0 -0
  334. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/runs/observations.py +0 -0
  335. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/sources/__init__.py +0 -0
  336. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/sources/models.py +0 -0
  337. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/sources/repository.py +0 -0
  338. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/sources/service.py +0 -0
  339. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/__init__.py +0 -0
  340. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/errors.py +0 -0
  341. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/models.py +0 -0
  342. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/protocols.py +0 -0
  343. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/repository.py +0 -0
  344. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/webui/service.py +0 -0
  345. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/__init__.py +0 -0
  346. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/domain.py +0 -0
  347. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/control_plane/workflows/repository.py +0 -0
  348. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/__init__.py +0 -0
  349. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/agent_config_admin.py +0 -0
  350. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/capability_contract.py +0 -0
  351. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/config_admin.py +0 -0
  352. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/event_loop.py +0 -0
  353. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/provider_materialization.py +0 -0
  354. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/core/transport.py +0 -0
  355. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/__init__.py +0 -0
  356. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/certification_assets.py +0 -0
  357. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/cli.py +0 -0
  358. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/codex_registration.py +0 -0
  359. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/config_generator.py +0 -0
  360. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor.py +0 -0
  361. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_certification.py +0 -0
  362. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_coverage.py +0 -0
  363. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_graph.py +0 -0
  364. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_lakehouse.py +0 -0
  365. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_observability.py +0 -0
  366. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/doctor_support.py +0 -0
  367. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/engine_lock.py +0 -0
  368. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/exit_criteria.py +0 -0
  369. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/file_lock.py +0 -0
  370. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/genesis_environments.py +0 -0
  371. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/host_config.py +0 -0
  372. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/host_lock.py +0 -0
  373. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/kubernetes_first_boot.py +0 -0
  374. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/live_mount_guard.py +0 -0
  375. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/local_gates.py +0 -0
  376. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/preflight.py +0 -0
  377. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/profile_guard.py +0 -0
  378. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/public_ingress_identity.py +0 -0
  379. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/release_canary.py +0 -0
  380. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/release_candidate.py +0 -0
  381. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/repo_templates.py +0 -0
  382. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/self_deploy.py +0 -0
  383. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/venv_autosync.py +0 -0
  384. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/venv_sync.py +0 -0
  385. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/venv_sync_types.py +0 -0
  386. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/deployment/webui_reference_model.py +0 -0
  387. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/__init__.py +0 -0
  388. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/agent_manager_dashboard.py +0 -0
  389. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_federation.py +0 -0
  390. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_registry.py +0 -0
  391. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/ard_signing.py +0 -0
  392. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ecosystem/hook_installer.py +0 -0
  393. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/evolution/__init__.py +0 -0
  394. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/evolution/wiring_sweep.py +0 -0
  395. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/finance/__init__.py +0 -0
  396. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/finance/alerts.py +0 -0
  397. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/finance/dca.py +0 -0
  398. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/finance/markets.py +0 -0
  399. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/finance/schedule.py +0 -0
  400. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/__init__.py +0 -0
  401. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/catalog_items.py +0 -0
  402. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/catalog_reader.py +0 -0
  403. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/catalog_sources.py +0 -0
  404. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/client_toolsets.py +0 -0
  405. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/connector_count_pins.py +0 -0
  406. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/discovery_authority.py +0 -0
  407. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/epistemic_adapter.py +0 -0
  408. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/error_budget.py +0 -0
  409. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/feeds.py +0 -0
  410. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/health.py +0 -0
  411. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/mcp_resource_reconciliation.py +0 -0
  412. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/protocol_compat.py +0 -0
  413. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/__init__.py +0 -0
  414. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/_model.py +0 -0
  415. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/development_lane.py +0 -0
  416. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/resource_pool_authority.py +0 -0
  417. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/resource_reservation.py +0 -0
  418. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_authority.py +0 -0
  419. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_intent_reconciler.py +0 -0
  420. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/scaling_signal_authority.py +0 -0
  421. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/scaling/service_scale_units.py +0 -0
  422. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/session_loads.py +0 -0
  423. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/session_notifications.py +0 -0
  424. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/shared_multiplexer.py +0 -0
  425. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/source_executor.py +0 -0
  426. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/surfaces.py +0 -0
  427. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet/throttle_service.py +0 -0
  428. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/fleet_tool_call.py +0 -0
  429. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/__init__.py +0 -0
  430. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/aggregator.py +0 -0
  431. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/config.py +0 -0
  432. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/dashboard_api.py +0 -0
  433. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/enhanced_catalog_api.py +0 -0
  434. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/fleet.py +0 -0
  435. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/graph_api.py +0 -0
  436. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/models.py +0 -0
  437. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/ontology_api.py +0 -0
  438. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/ports.py +0 -0
  439. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/registry.py +0 -0
  440. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/remote_oauth_api.py +0 -0
  441. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schema_context_api.py +0 -0
  442. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schema_context_service.py +0 -0
  443. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schemas/__init__.py +0 -0
  444. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schemas/connector.py +0 -0
  445. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schemas/graph_core.py +0 -0
  446. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/schemas/schema_context.py +0 -0
  447. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/__init__.py +0 -0
  448. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ansible_tower.py +0 -0
  449. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/archivebox.py +0 -0
  450. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/aris.py +0 -0
  451. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/arr.py +0 -0
  452. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/atlassian.py +0 -0
  453. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/audio_transcriber.py +0 -0
  454. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/audiobookshelf.py +0 -0
  455. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/base.py +0 -0
  456. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/caddy.py +0 -0
  457. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/camunda.py +0 -0
  458. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ciso_assistant.py +0 -0
  459. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/clarity.py +0 -0
  460. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/container_manager.py +0 -0
  461. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/data_science.py +0 -0
  462. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/dockerhub.py +0 -0
  463. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/documentdb.py +0 -0
  464. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ear.py +0 -0
  465. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/egeria.py +0 -0
  466. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/emerald_exchange.py +0 -0
  467. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/erpnext.py +0 -0
  468. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/fan_manager.py +0 -0
  469. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/firefly_iii.py +0 -0
  470. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/fleet_client.py +0 -0
  471. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/freshrss.py +0 -0
  472. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/github.py +0 -0
  473. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/gitlab.py +0 -0
  474. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/google_workspace.py +0 -0
  475. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/gramps.py +0 -0
  476. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/hdhomerun.py +0 -0
  477. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/home_assistant.py +0 -0
  478. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/jellyfin.py +0 -0
  479. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/jena.py +0 -0
  480. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/kafka.py +0 -0
  481. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/keycloak.py +0 -0
  482. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/langfuse.py +0 -0
  483. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/leanix.py +0 -0
  484. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/legal_peripherals.py +0 -0
  485. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/lgtm.py +0 -0
  486. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/listmonk.py +0 -0
  487. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/mattermost.py +0 -0
  488. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/mealie.py +0 -0
  489. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/media_downloader.py +0 -0
  490. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/microsoft.py +0 -0
  491. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/nextcloud.py +0 -0
  492. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/okta.py +0 -0
  493. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/ollama.py +0 -0
  494. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/onetrust.py +0 -0
  495. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/openbao.py +0 -0
  496. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/orchestrator.py +0 -0
  497. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/owncast.py +0 -0
  498. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/paperless_ngx.py +0 -0
  499. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/plane.py +0 -0
  500. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/portainer.py +0 -0
  501. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/postiz.py +0 -0
  502. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/pulselink.py +0 -0
  503. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/qbittorrent.py +0 -0
  504. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/repository_manager.py +0 -0
  505. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/rom_manager.py +0 -0
  506. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/scholarx.py +0 -0
  507. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/searxng.py +0 -0
  508. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/sentry.py +0 -0
  509. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/servicenow.py +0 -0
  510. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/stirlingpdf.py +0 -0
  511. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/systems_manager.py +0 -0
  512. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/technitium.py +0 -0
  513. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/teleport.py +0 -0
  514. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/tunnel_manager.py +0 -0
  515. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/twenty.py +0 -0
  516. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/uptime_kuma.py +0 -0
  517. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/vector_db.py +0 -0
  518. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/wger.py +0 -0
  519. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/gateway/widgets/zulip.py +0 -0
  520. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/__init__.py +0 -0
  521. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/admin_console.py +0 -0
  522. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/api_keys.py +0 -0
  523. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/approval.py +0 -0
  524. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/approval_engine.py +0 -0
  525. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/approval_registration.py +0 -0
  526. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/bootstrap.py +0 -0
  527. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/broker.py +0 -0
  528. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/browser.py +0 -0
  529. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/client_entry_points.py +0 -0
  530. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/composition.py +0 -0
  531. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/engine.py +0 -0
  532. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/engine_ports.py +0 -0
  533. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/issuer.py +0 -0
  534. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/ldap.py +0 -0
  535. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/mail_capability.py +0 -0
  536. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/mfa.py +0 -0
  537. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/oidc.py +0 -0
  538. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/saml.py +0 -0
  539. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/identity/scim.py +0 -0
  540. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ingest/__init__.py +0 -0
  541. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ingest/source_catalog.py +0 -0
  542. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/__init__.py +0 -0
  543. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/agent_control.py +0 -0
  544. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/arbora_operations.json +0 -0
  545. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/__init__.py +0 -0
  546. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/_arbora_action_manifest.py +0 -0
  547. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/action_dispatch.py +0 -0
  548. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/arbora_capabilities.json +0 -0
  549. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/arbora_surface.py +0 -0
  550. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/client_credentials.py +0 -0
  551. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/concurrency.py +0 -0
  552. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/connector_surface.py +0 -0
  553. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/context_helpers.py +0 -0
  554. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/delegated_auth.py +0 -0
  555. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/engine_routing.py +0 -0
  556. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/engine_surface_types.py +0 -0
  557. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/eunomia_principal.py +0 -0
  558. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/httpx_boundary.py +0 -0
  559. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/intent_contract.py +0 -0
  560. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/oauth_log_hygiene.py +0 -0
  561. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/ontology_types.py +0 -0
  562. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/optional_tool_features.py +0 -0
  563. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/remote_oauth_broker.py +0 -0
  564. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/skill_coverage.py +0 -0
  565. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tasks_extension.py +0 -0
  566. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tool_specs.py +0 -0
  567. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/__init__.py +0 -0
  568. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/_surface_selection.py +0 -0
  569. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/analysis_tools.py +0 -0
  570. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/analyze_suite.py +0 -0
  571. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/audit_tools.py +0 -0
  572. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/candidate_claim_tools.py +0 -0
  573. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/compliance_tools.py +0 -0
  574. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/config_tools.py +0 -0
  575. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/domain_ops_tools.py +0 -0
  576. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/engine_surface_tools.py +0 -0
  577. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/engine_tools.py +0 -0
  578. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/epistemic_tools.py +0 -0
  579. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/governance_tools.py +0 -0
  580. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/graph_tools.py +0 -0
  581. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/intent_tools.py +0 -0
  582. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/mcp_apps.py +0 -0
  583. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/ontology_tools.py +0 -0
  584. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/query_tools.py +0 -0
  585. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/reach_tools.py +0 -0
  586. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/secret_tools.py +0 -0
  587. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/state_tools.py +0 -0
  588. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/tools/write_ingest_tools.py +0 -0
  589. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/verbose_tools.py +0 -0
  590. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/backing/write_ingest_types.py +0 -0
  591. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/composition.py +0 -0
  592. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/decide_wiring.py +0 -0
  593. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/fleet_composition.py +0 -0
  594. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/legacy_action_mapping.py +0 -0
  595. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/operation_registry.py +0 -0
  596. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/mcp_server/routes.py +0 -0
  597. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/__init__.py +0 -0
  598. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/action_dispatch.py +0 -0
  599. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/alert_intake.py +0 -0
  600. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/__init__.py +0 -0
  601. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/discord.py +0 -0
  602. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/googlechat.py +0 -0
  603. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/googlemeet.py +0 -0
  604. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/imessage.py +0 -0
  605. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/irc.py +0 -0
  606. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/line.py +0 -0
  607. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/matrix.py +0 -0
  608. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/mattermost.py +0 -0
  609. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/nextcloud.py +0 -0
  610. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/signal.py +0 -0
  611. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/slack.py +0 -0
  612. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/synology.py +0 -0
  613. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/teams.py +0 -0
  614. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/telegram.py +0 -0
  615. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/twitch.py +0 -0
  616. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/voicecall.py +0 -0
  617. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/backends/whatsapp.py +0 -0
  618. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/base.py +0 -0
  619. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/capabilities.py +0 -0
  620. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/coalescer.py +0 -0
  621. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/commands.py +0 -0
  622. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/governed_send.py +0 -0
  623. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/host_ports.py +0 -0
  624. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/inbox.py +0 -0
  625. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/intake.py +0 -0
  626. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/lease.py +0 -0
  627. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/models.py +0 -0
  628. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/planner_handler.py +0 -0
  629. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/polling.py +0 -0
  630. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/reach.py +0 -0
  631. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/registry.py +0 -0
  632. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/render.py +0 -0
  633. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/router.py +0 -0
  634. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/service.py +0 -0
  635. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/supervision.py +0 -0
  636. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/messaging/transport.py +0 -0
  637. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/__init__.py +0 -0
  638. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/correlation.py +0 -0
  639. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/custom_observability.py +0 -0
  640. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/error_detail_sink.py +0 -0
  641. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/gateway_health.py +0 -0
  642. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/gateway_metrics.py +0 -0
  643. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/health.py +0 -0
  644. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/langfuse_exporter.py +0 -0
  645. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/langfuse_trust.py +0 -0
  646. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/readiness.py +0 -0
  647. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/runtime_health.py +0 -0
  648. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/runtime_signals.py +0 -0
  649. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/telemetry.py +0 -0
  650. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/observability/trace_ontology.py +0 -0
  651. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/ontology/shapes/runtime.shapes.ttl +0 -0
  652. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/__init__.py +0 -0
  653. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/auth.py +0 -0
  654. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/config_sensitivity.py +0 -0
  655. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/conformance/__init__.py +0 -0
  656. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/conformance/surface_inventory.py +0 -0
  657. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/conformance/surface_manifest.py +0 -0
  658. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/delegation.py +0 -0
  659. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/elevation.py +0 -0
  660. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/error_surface.py +0 -0
  661. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/http_boundary.py +0 -0
  662. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/identifiers.py +0 -0
  663. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/identity.py +0 -0
  664. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/log_redaction.py +0 -0
  665. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/oidc_discovery.py +0 -0
  666. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/operation_result.py +0 -0
  667. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/prompt_injection.py +0 -0
  668. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/run_authority.py +0 -0
  669. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/run_token.py +0 -0
  670. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/scope_registry.py +0 -0
  671. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/secrets.py +0 -0
  672. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/security_policy_middleware.py +0 -0
  673. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/security/settings.py +0 -0
  674. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/SKILL.md +0 -0
  675. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +0 -0
  676. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +0 -0
  677. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/SKILL.md +0 -0
  678. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/agents/arbora.yaml +0 -0
  679. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/agents/openai.yaml +0 -0
  680. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/first-boot-verification.md +0 -0
  681. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +0 -0
  682. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/identity-and-access.md +0 -0
  683. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/secrets-and-federation.md +0 -0
  684. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-deployment/references/telemetry.md +0 -0
  685. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-development/references/bootstrap.md +0 -0
  686. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/SKILL.md +0 -0
  687. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/agents/arbora.yaml +0 -0
  688. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-evolution/agents/openai.yaml +0 -0
  689. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/SKILL.md +0 -0
  690. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/agents/arbora.yaml +0 -0
  691. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/agents/openai.yaml +0 -0
  692. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +0 -0
  693. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/bare-metal.md +0 -0
  694. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/compose-and-podman.md +0 -0
  695. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/data-plane-substrate.md +0 -0
  696. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/deployment-contract.md +0 -0
  697. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/development-workspace.md +0 -0
  698. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/docker-swarm.md +0 -0
  699. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/engine-identity-admission.md +0 -0
  700. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +0 -0
  701. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +0 -0
  702. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/runtime-topology.md +0 -0
  703. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/arbora-genesis/references/security-and-operations.md +0 -0
  704. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/SKILL.md +0 -0
  705. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/agents/arbora.yaml +0 -0
  706. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/autonomous-contribution/agents/openai.yaml +0 -0
  707. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/core-pack.txt +0 -0
  708. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/SKILL.md +0 -0
  709. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +0 -0
  710. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +0 -0
  711. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/SKILL.md +0 -0
  712. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +0 -0
  713. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +0 -0
  714. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +0 -0
  715. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +0 -0
  716. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/SKILL.md +0 -0
  717. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +0 -0
  718. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +0 -0
  719. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/SKILL.md +0 -0
  720. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +0 -0
  721. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +0 -0
  722. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/SKILL.md +0 -0
  723. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +0 -0
  724. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/agents/openai.yaml +0 -0
  725. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-query-and-explanation/references/uql-reference.md +0 -0
  726. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/SKILL.md +0 -0
  727. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +0 -0
  728. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-research-and-analysis/agents/openai.yaml +0 -0
  729. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/SKILL.md +0 -0
  730. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +0 -0
  731. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +0 -0
  732. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/skills/using-arbora/SKILL.md +0 -0
  733. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/unique_records.py +0 -0
  734. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/__init__.py +0 -0
  735. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/contact_delivery.py +0 -0
  736. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/contact_governance.py +0 -0
  737. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/package_layout_expectation.py +0 -0
  738. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora/webui_host/voice_delegation.py +0 -0
  739. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/dependency_links.txt +0 -0
  740. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/arbora.egg-info/top_level.txt +0 -0
  741. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/setup.cfg +0 -0
  742. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_agent_runs.py +0 -0
  743. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_check_acceptance_evidence.py +0 -0
  744. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_check_connector_count_pins.py +0 -0
  745. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_check_core_skills.py +0 -0
  746. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_check_wiring.py +0 -0
  747. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_component_registry_boundary_seeds.py +0 -0
  748. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_connector_pack_typed_publisher.py +0 -0
  749. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_connector_runner_composition.py +0 -0
  750. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_dependency_manifest.py +0 -0
  751. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_docs_surface.py +0 -0
  752. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_epistemic_adapter.py +0 -0
  753. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_fleet_catalog_reader.py +0 -0
  754. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_host_bindings.py +0 -0
  755. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_package_layout.py +0 -0
  756. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_real_boot_messaging.py +0 -0
  757. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_semantic_content.py +0 -0
  758. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_served_operation_api.py +0 -0
  759. {arbora-0.1.8.dev2 → arbora-0.1.8.dev4}/tests/test_unique_records.py +0 -0
  760. {arbora-0.1.8.dev2 → 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.dev2
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,10 +20,10 @@ 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.4.0,>=0.3.19
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
- Requires-Dist: epistemic-graph[server]<3.0.0,>=2.27.5
26
+ Requires-Dist: epistemic-graph[server]<3.0.0,>=2.27.6
27
27
  Requires-Dist: fastapi>=0.143.3
28
28
  Requires-Dist: filelock>=4.2.0
29
29
  Requires-Dist: msgpack>=1.2.1
@@ -49,10 +49,10 @@ Requires-Dist: types-PyYAML>=6.0.12.20260906; extra == "test"
49
49
  Requires-Dist: python-telegram-bot>=22.8; extra == "test"
50
50
  Requires-Dist: setuptools>=84.0.0; extra == "test"
51
51
  Provides-Extra: webui
52
- Requires-Dist: agent-webui<3.0.0,>=2.7.1; extra == "webui"
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.4.0,>=0.3.19; 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.dev2"
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
+ )
@@ -29,7 +29,7 @@ from .terminal_event import A2ATerminalEventUnavailable
29
29
  if TYPE_CHECKING:
30
30
  from arbora.api.http.auth import AmbientHTTPAuthenticator
31
31
  from arbora.api.invoke.pipeline import InvokeServices
32
- from arbora.api.invoke.steps import VerifiedCaller
32
+ from arbora.api.invoke.steps import RequestCaller
33
33
 
34
34
  __all__ = [
35
35
  "A2AAuthenticator",
@@ -43,19 +43,19 @@ __all__ = [
43
43
  class A2AAuthenticator(Protocol):
44
44
  async def authenticate(
45
45
  self, request: Request, *, scope: str
46
- ) -> VerifiedCaller | None:
46
+ ) -> RequestCaller | None:
47
47
  """Verify authority; an injected adapter may own its dispatch binding."""
48
48
 
49
49
 
50
50
  class AmbientA2AAuthenticator:
51
51
  """Resolve each HTTP request through AU's verified bearer/session flow."""
52
52
 
53
- async def authenticate(self, request: Request, *, scope: str) -> VerifiedCaller:
53
+ async def authenticate(self, request: Request, *, scope: str) -> RequestCaller:
54
54
  caller = await _request_caller(request)
55
55
  return _require_caller_scope(caller, scope)
56
56
 
57
57
 
58
- async def _request_caller(request: Request) -> VerifiedCaller:
58
+ async def _request_caller(request: Request) -> RequestCaller:
59
59
  from arbora.api.http.auth import (
60
60
  AmbientHTTPAuthenticator,
61
61
  verified_bearer_session_for_request,
@@ -66,13 +66,13 @@ async def _request_caller(request: Request) -> VerifiedCaller:
66
66
  ).authenticate(request)
67
67
 
68
68
 
69
- def _require_caller_scope(caller: VerifiedCaller, scope: str) -> VerifiedCaller:
69
+ def _require_caller_scope(caller: RequestCaller, scope: str) -> RequestCaller:
70
70
  if scope not in caller.effective_scopes:
71
71
  raise PermissionError("Required A2A scope unavailable")
72
72
  return caller
73
73
 
74
74
 
75
- async def _refresh_unary_caller(caller: VerifiedCaller | None) -> None:
75
+ async def _refresh_unary_caller(caller: RequestCaller | None) -> None:
76
76
  """Refuse changed authority before entering the task service's session."""
77
77
  if caller is None:
78
78
  return
@@ -91,7 +91,7 @@ async def _refresh_unary_caller(caller: VerifiedCaller | None) -> None:
91
91
 
92
92
 
93
93
  @contextmanager
94
- def _caller_session_scope(caller: VerifiedCaller | None) -> Iterator[None]:
94
+ def _caller_session_scope(caller: RequestCaller | None) -> Iterator[None]:
95
95
  """Bind a returned caller through legacy dispatch; never resolve a fallback."""
96
96
  if caller is None:
97
97
  # Explicit injected authenticators already own their admission/binding.
@@ -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