arbora 0.1.8.dev11__tar.gz → 0.1.8.dev12__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 (776) hide show
  1. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/PKG-INFO +1 -1
  2. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/_version.py +1 -1
  3. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/fleet.py +19 -0
  4. arbora-0.1.8.dev12/arbora/fleet/catalog_composition.py +277 -0
  5. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/gateway_ops.py +6 -0
  6. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/multiplexer.py +114 -23
  7. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/multiplexer_ops.py +48 -7
  8. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/fleet_composition.py +4 -0
  9. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/PKG-INFO +1 -1
  10. arbora-0.1.8.dev11/arbora/fleet/catalog_composition.py +0 -187
  11. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/LICENSE +0 -0
  12. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/README.md +0 -0
  13. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/__init__.py +0 -0
  14. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/__init__.py +0 -0
  15. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/admission.py +0 -0
  16. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/anonymous.py +0 -0
  17. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/anonymous_native.py +0 -0
  18. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/anonymous_send.py +0 -0
  19. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/application.py +0 -0
  20. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/approval.py +0 -0
  21. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/authority.py +0 -0
  22. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/composition.py +0 -0
  23. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/mcp.py +0 -0
  24. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/models.py +0 -0
  25. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/routing.py +0 -0
  26. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/run_usage.py +0 -0
  27. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/sdk_app.py +0 -0
  28. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/service.py +0 -0
  29. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/terminal_event.py +0 -0
  30. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/tool_task.py +0 -0
  31. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/tool_task_dispatch.py +0 -0
  32. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/tool_task_requests.py +0 -0
  33. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/a2a/work_items.py +0 -0
  34. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/__init__.py +0 -0
  35. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/action_policy.py +0 -0
  36. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/action_policy_source.py +0 -0
  37. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/approval.py +0 -0
  38. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/assurance.py +0 -0
  39. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/external_policy_sync.py +0 -0
  40. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/host_start.py +0 -0
  41. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/priority.py +0 -0
  42. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/service.py +0 -0
  43. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/access/task_guard.py +0 -0
  44. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/__init__.py +0 -0
  45. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/adapter.py +0 -0
  46. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/central_runtime.py +0 -0
  47. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/coding_session.py +0 -0
  48. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/http_transport.py +0 -0
  49. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/local_history.py +0 -0
  50. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/local_runtime.py +0 -0
  51. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/session_policy.py +0 -0
  52. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/acp/stdio_transport.py +0 -0
  53. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/__init__.py +0 -0
  54. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/log_access.py +0 -0
  55. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/log_replay.py +0 -0
  56. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/log_routes.py +0 -0
  57. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/log_runtime.py +0 -0
  58. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/log_sink.py +0 -0
  59. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/managed_web.py +0 -0
  60. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/start_admission.py +0 -0
  61. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_host/start_configuration.py +0 -0
  62. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/agent_runs.py +0 -0
  63. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/__init__.py +0 -0
  64. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/__init__.py +0 -0
  65. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/agent_control_contracts.py +0 -0
  66. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/agent_control_plane.py +0 -0
  67. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/catalog.py +0 -0
  68. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/messaging.py +0 -0
  69. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/provisioning.py +0 -0
  70. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/contracts/session.py +0 -0
  71. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/engine_errors.py +0 -0
  72. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/errors.py +0 -0
  73. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/evidence/__init__.py +0 -0
  74. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/evidence/bundle.py +0 -0
  75. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/evidence/contradiction.py +0 -0
  76. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/__init__.py +0 -0
  77. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/app.py +0 -0
  78. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/auth.py +0 -0
  79. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/browser_app.py +0 -0
  80. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/browser_auth.py +0 -0
  81. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/checkout.py +0 -0
  82. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/openapi.py +0 -0
  83. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/protocol_routes.py +0 -0
  84. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/http/routes.py +0 -0
  85. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/__init__.py +0 -0
  86. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/audit.py +0 -0
  87. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/bootstrap.py +0 -0
  88. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/eg_audit.py +0 -0
  89. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/executor.py +0 -0
  90. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/pipeline.py +0 -0
  91. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/plan.py +0 -0
  92. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/invoke/steps.py +0 -0
  93. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/__init__.py +0 -0
  94. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/caller.py +0 -0
  95. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/discovery.py +0 -0
  96. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/registration.py +0 -0
  97. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/resolve.py +0 -0
  98. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/resources.py +0 -0
  99. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/serving.py +0 -0
  100. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/mcp/verbs.py +0 -0
  101. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/__init__.py +0 -0
  102. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/_common.py +0 -0
  103. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/access.py +0 -0
  104. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/agents.py +0 -0
  105. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/browser.py +0 -0
  106. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/capacity.py +0 -0
  107. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/decide.py +0 -0
  108. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/federation.py +0 -0
  109. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/fleet_deploy_watch.py +0 -0
  110. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/ingest.py +0 -0
  111. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/memory.py +0 -0
  112. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/messaging.py +0 -0
  113. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/ops.py +0 -0
  114. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/plans.py +0 -0
  115. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/policy.py +0 -0
  116. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/query.py +0 -0
  117. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/query_engine.py +0 -0
  118. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/query_federation.py +0 -0
  119. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/registry_factory.py +0 -0
  120. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/research.py +0 -0
  121. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/retrieval.py +0 -0
  122. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/run_graph.py +0 -0
  123. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/run_replay.py +0 -0
  124. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/runs.py +0 -0
  125. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/security.py +0 -0
  126. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/source.py +0 -0
  127. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/swarm.py +0 -0
  128. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/telemetry.py +0 -0
  129. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/usage.py +0 -0
  130. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/work.py +0 -0
  131. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/write_back.py +0 -0
  132. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/ops/write_back_models.py +0 -0
  133. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/__init__.py +0 -0
  134. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/cache.py +0 -0
  135. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/default_policy.json +0 -0
  136. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/defaults.py +0 -0
  137. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/domain_scopes.py +0 -0
  138. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/eunomia.py +0 -0
  139. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/policy/pdp_remote.py +0 -0
  140. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/__init__.py +0 -0
  141. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/digest.py +0 -0
  142. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/eg_binding.py +0 -0
  143. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/eg_exclusions.yaml +0 -0
  144. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/registry.py +0 -0
  145. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/scopes.py +0 -0
  146. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/spec.py +0 -0
  147. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/registry/surface_gate.py +0 -0
  148. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/api/task_plan_schema.py +0 -0
  149. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/architecture/__init__.py +0 -0
  150. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/architecture/boundary_census.py +0 -0
  151. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/architecture/capability_layers.py +0 -0
  152. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/__init__.py +0 -0
  153. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_api.py +0 -0
  154. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_attendance.py +0 -0
  155. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_attendance_api.py +0 -0
  156. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_attended.py +0 -0
  157. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_binding.py +0 -0
  158. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_cancellation.py +0 -0
  159. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_channel.py +0 -0
  160. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_client.py +0 -0
  161. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_common.py +0 -0
  162. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_descriptor.py +0 -0
  163. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_dispatch.py +0 -0
  164. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_durability.py +0 -0
  165. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_lease.py +0 -0
  166. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_outcome.py +0 -0
  167. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_policy.py +0 -0
  168. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_port.py +0 -0
  169. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_proposals.py +0 -0
  170. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_provenance.py +0 -0
  171. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_registration.py +0 -0
  172. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_runtime.py +0 -0
  173. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_server.py +0 -0
  174. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_service.py +0 -0
  175. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_state.py +0 -0
  176. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/browser_control_validation.py +0 -0
  177. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/mcp.py +0 -0
  178. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/browser_control/trace_bundle.py +0 -0
  179. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/certification/__init__.py +0 -0
  180. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/certification/oidc.py +0 -0
  181. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/client/__init__.py +0 -0
  182. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/client/_models.py +0 -0
  183. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/client/browser_boundary.py +0 -0
  184. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/client/http.py +0 -0
  185. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/client/invoke.py +0 -0
  186. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/connector_runner.py +0 -0
  187. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/console.py +0 -0
  188. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/content.py +0 -0
  189. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/__init__.py +0 -0
  190. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/_model.py +0 -0
  191. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/admission/__init__.py +0 -0
  192. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/admission/models.py +0 -0
  193. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/admission/service.py +0 -0
  194. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/agents/__init__.py +0 -0
  195. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/agents/models.py +0 -0
  196. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/agents/repository.py +0 -0
  197. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/agents/service.py +0 -0
  198. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/connectors/__init__.py +0 -0
  199. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/connectors/models.py +0 -0
  200. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/connectors/repository.py +0 -0
  201. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/connectors/service.py +0 -0
  202. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/economics/__init__.py +0 -0
  203. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/economics/models.py +0 -0
  204. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/economics/repository.py +0 -0
  205. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/economics/service.py +0 -0
  206. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/fleet_watch/__init__.py +0 -0
  207. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/fleet_watch/service.py +0 -0
  208. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/foundation/__init__.py +0 -0
  209. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/foundation/models.py +0 -0
  210. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/foundation/repository.py +0 -0
  211. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/foundation/service.py +0 -0
  212. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/migrations/__init__.py +0 -0
  213. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/migrations/authority.py +0 -0
  214. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/migrations/errors.py +0 -0
  215. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/migrations/models.py +0 -0
  216. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/policy/__init__.py +0 -0
  217. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/policy/models.py +0 -0
  218. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/policy/repository.py +0 -0
  219. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/__init__.py +0 -0
  220. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/authority.py +0 -0
  221. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/models.py +0 -0
  222. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/observability.py +0 -0
  223. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/projector.py +0 -0
  224. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/protocols.py +0 -0
  225. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/projection/repository.py +0 -0
  226. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/__init__.py +0 -0
  227. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/errors.py +0 -0
  228. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/models.py +0 -0
  229. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/protocols.py +0 -0
  230. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/repository.py +0 -0
  231. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/retrieval/service.py +0 -0
  232. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/__init__.py +0 -0
  233. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/admission.py +0 -0
  234. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/audit.py +0 -0
  235. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/capacity.py +0 -0
  236. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/models.py +0 -0
  237. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/runs/observations.py +0 -0
  238. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/sources/__init__.py +0 -0
  239. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/sources/models.py +0 -0
  240. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/sources/repository.py +0 -0
  241. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/sources/service.py +0 -0
  242. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/__init__.py +0 -0
  243. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/errors.py +0 -0
  244. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/models.py +0 -0
  245. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/protocols.py +0 -0
  246. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/repository.py +0 -0
  247. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/webui/service.py +0 -0
  248. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/workflows/__init__.py +0 -0
  249. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/workflows/domain.py +0 -0
  250. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/control_plane/workflows/repository.py +0 -0
  251. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/__init__.py +0 -0
  252. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/agent_config_admin.py +0 -0
  253. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/capability_contract.py +0 -0
  254. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/config_admin.py +0 -0
  255. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/event_loop.py +0 -0
  256. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/provider_materialization.py +0 -0
  257. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/providers.py +0 -0
  258. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/settings.py +0 -0
  259. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/core/transport.py +0 -0
  260. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/current_plan_publication.py +0 -0
  261. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/data_migrations.py +0 -0
  262. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/__init__.py +0 -0
  263. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/certification_assets.py +0 -0
  264. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/cli.py +0 -0
  265. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/config_generator.py +0 -0
  266. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor.py +0 -0
  267. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_certification.py +0 -0
  268. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_coverage.py +0 -0
  269. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_graph.py +0 -0
  270. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_lakehouse.py +0 -0
  271. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_observability.py +0 -0
  272. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/doctor_support.py +0 -0
  273. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/engine_lock.py +0 -0
  274. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/exit_criteria.py +0 -0
  275. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/file_lock.py +0 -0
  276. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/genesis_environments.py +0 -0
  277. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/host_config.py +0 -0
  278. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/host_lock.py +0 -0
  279. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/kubernetes_first_boot.py +0 -0
  280. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/live_mount_guard.py +0 -0
  281. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/local_gates.py +0 -0
  282. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/preflight.py +0 -0
  283. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/production_ops.py +0 -0
  284. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/profile_guard.py +0 -0
  285. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/public_ingress_identity.py +0 -0
  286. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/release_canary.py +0 -0
  287. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/release_candidate.py +0 -0
  288. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/repo_templates.py +0 -0
  289. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/self_deploy.py +0 -0
  290. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/semantic_provisioning.py +0 -0
  291. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/venv_autosync.py +0 -0
  292. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/venv_sync.py +0 -0
  293. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/venv_sync_types.py +0 -0
  294. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/deployment/webui_reference_model.py +0 -0
  295. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/__init__.py +0 -0
  296. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/agent_manager_dashboard.py +0 -0
  297. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/ard_federation.py +0 -0
  298. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/ard_registry.py +0 -0
  299. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/ard_signing.py +0 -0
  300. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ecosystem/hook_installer.py +0 -0
  301. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/epistemic.py +0 -0
  302. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/evolution/__init__.py +0 -0
  303. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/evolution/wiring_sweep.py +0 -0
  304. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/finance/__init__.py +0 -0
  305. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/finance/alerts.py +0 -0
  306. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/finance/dca.py +0 -0
  307. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/finance/markets.py +0 -0
  308. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/finance/schedule.py +0 -0
  309. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/__init__.py +0 -0
  310. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/access_contracts.py +0 -0
  311. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/catalog_graph.py +0 -0
  312. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/catalog_items.py +0 -0
  313. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/catalog_reader.py +0 -0
  314. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/catalog_sources.py +0 -0
  315. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/child_resilience.py +0 -0
  316. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/client_toolsets.py +0 -0
  317. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/connector_count_pins.py +0 -0
  318. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/coverage.py +0 -0
  319. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/declarations.py +0 -0
  320. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/discovery_authority.py +0 -0
  321. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/epistemic_adapter.py +0 -0
  322. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/error_budget.py +0 -0
  323. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/feeds.py +0 -0
  324. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/health.py +0 -0
  325. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/local_skill_catalog.py +0 -0
  326. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/mcp_resource_reconciliation.py +0 -0
  327. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/onboarding.py +0 -0
  328. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/pin_store.py +0 -0
  329. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/plan_confirmation.py +0 -0
  330. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/protocol_compat.py +0 -0
  331. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/__init__.py +0 -0
  332. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/_model.py +0 -0
  333. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/development_lane.py +0 -0
  334. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/resource_pool_authority.py +0 -0
  335. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/resource_reservation.py +0 -0
  336. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/scaling_authority.py +0 -0
  337. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/scaling_intent_reconciler.py +0 -0
  338. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/scaling_signal_authority.py +0 -0
  339. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/scaling/service_scale_units.py +0 -0
  340. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/service_child.py +0 -0
  341. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/session_loads.py +0 -0
  342. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/session_notifications.py +0 -0
  343. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/shared_multiplexer.py +0 -0
  344. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/source_executor.py +0 -0
  345. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/surfaces.py +0 -0
  346. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/throttle_service.py +0 -0
  347. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet/virtual_catalog.py +0 -0
  348. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/fleet_tool_call.py +0 -0
  349. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/__init__.py +0 -0
  350. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/aggregator.py +0 -0
  351. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/config.py +0 -0
  352. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/daemon.py +0 -0
  353. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/dashboard_api.py +0 -0
  354. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/enhanced_catalog_api.py +0 -0
  355. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/fleet.py +0 -0
  356. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/fleet_events.py +0 -0
  357. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/graph_api.py +0 -0
  358. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/models.py +0 -0
  359. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/ontology_api.py +0 -0
  360. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/ports.py +0 -0
  361. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/rate_limit.py +0 -0
  362. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/registry.py +0 -0
  363. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/registry_api.py +0 -0
  364. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/remote_oauth_api.py +0 -0
  365. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schema_context_api.py +0 -0
  366. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schema_context_service.py +0 -0
  367. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schemas/__init__.py +0 -0
  368. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schemas/connector.py +0 -0
  369. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schemas/graph_core.py +0 -0
  370. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/schemas/schema_context.py +0 -0
  371. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/__init__.py +0 -0
  372. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/ansible_tower.py +0 -0
  373. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/archivebox.py +0 -0
  374. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/aris.py +0 -0
  375. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/arr.py +0 -0
  376. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/atlassian.py +0 -0
  377. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/audio_transcriber.py +0 -0
  378. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/audiobookshelf.py +0 -0
  379. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/base.py +0 -0
  380. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/caddy.py +0 -0
  381. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/camunda.py +0 -0
  382. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/ciso_assistant.py +0 -0
  383. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/clarity.py +0 -0
  384. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/container_manager.py +0 -0
  385. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/data_science.py +0 -0
  386. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/dockerhub.py +0 -0
  387. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/documentdb.py +0 -0
  388. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/ear.py +0 -0
  389. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/egeria.py +0 -0
  390. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/emerald_exchange.py +0 -0
  391. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/erpnext.py +0 -0
  392. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/fan_manager.py +0 -0
  393. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/firefly_iii.py +0 -0
  394. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/fleet_client.py +0 -0
  395. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/freshrss.py +0 -0
  396. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/github.py +0 -0
  397. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/gitlab.py +0 -0
  398. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/google_workspace.py +0 -0
  399. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/gramps.py +0 -0
  400. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/hdhomerun.py +0 -0
  401. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/home_assistant.py +0 -0
  402. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/jellyfin.py +0 -0
  403. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/jena.py +0 -0
  404. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/kafka.py +0 -0
  405. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/keycloak.py +0 -0
  406. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/langfuse.py +0 -0
  407. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/leanix.py +0 -0
  408. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/legal_peripherals.py +0 -0
  409. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/lgtm.py +0 -0
  410. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/listmonk.py +0 -0
  411. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/mattermost.py +0 -0
  412. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/mealie.py +0 -0
  413. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/media_downloader.py +0 -0
  414. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/microsoft.py +0 -0
  415. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/nextcloud.py +0 -0
  416. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/okta.py +0 -0
  417. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/ollama.py +0 -0
  418. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/onetrust.py +0 -0
  419. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/openbao.py +0 -0
  420. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/orchestrator.py +0 -0
  421. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/owncast.py +0 -0
  422. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/paperless_ngx.py +0 -0
  423. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/plane.py +0 -0
  424. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/portainer.py +0 -0
  425. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/postiz.py +0 -0
  426. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/pulselink.py +0 -0
  427. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/qbittorrent.py +0 -0
  428. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/repository_manager.py +0 -0
  429. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/rom_manager.py +0 -0
  430. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/scholarx.py +0 -0
  431. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/searxng.py +0 -0
  432. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/sentry.py +0 -0
  433. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/servicenow.py +0 -0
  434. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/stirlingpdf.py +0 -0
  435. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/systems_manager.py +0 -0
  436. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/technitium.py +0 -0
  437. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/teleport.py +0 -0
  438. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/tunnel_manager.py +0 -0
  439. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/twenty.py +0 -0
  440. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/uptime_kuma.py +0 -0
  441. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/vector_db.py +0 -0
  442. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/wger.py +0 -0
  443. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/gateway/widgets/zulip.py +0 -0
  444. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/host_bindings.py +0 -0
  445. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/__init__.py +0 -0
  446. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/admin_console.py +0 -0
  447. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/admission.py +0 -0
  448. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/api_keys.py +0 -0
  449. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/approval.py +0 -0
  450. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/approval_engine.py +0 -0
  451. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/approval_registration.py +0 -0
  452. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/bootstrap.py +0 -0
  453. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/broker.py +0 -0
  454. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/browser.py +0 -0
  455. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/browser_broker.py +0 -0
  456. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/browser_composition.py +0 -0
  457. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/browser_runtime.py +0 -0
  458. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/client_entry_points.py +0 -0
  459. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/composition.py +0 -0
  460. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/engine.py +0 -0
  461. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/engine_ports.py +0 -0
  462. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/issuer.py +0 -0
  463. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/ldap.py +0 -0
  464. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/local_browser.py +0 -0
  465. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/mail_capability.py +0 -0
  466. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/mfa.py +0 -0
  467. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/oidc.py +0 -0
  468. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/ports.py +0 -0
  469. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/saml.py +0 -0
  470. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/identity/scim.py +0 -0
  471. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ingest/__init__.py +0 -0
  472. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ingest/connector_sources.py +0 -0
  473. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ingest/service.py +0 -0
  474. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ingest/source_catalog.py +0 -0
  475. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/local_browser_boundary.py +0 -0
  476. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/local_browser_channel.py +0 -0
  477. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/__init__.py +0 -0
  478. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/agent_control.py +0 -0
  479. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/arbora_operations.json +0 -0
  480. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/__init__.py +0 -0
  481. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/_arbora_action_manifest.py +0 -0
  482. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/action_dispatch.py +0 -0
  483. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/arbora_capabilities.json +0 -0
  484. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/arbora_surface.py +0 -0
  485. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/client_credentials.py +0 -0
  486. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/concurrency.py +0 -0
  487. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/connector_surface.py +0 -0
  488. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/context_helpers.py +0 -0
  489. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/delegated_auth.py +0 -0
  490. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/engine_routing.py +0 -0
  491. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/engine_surface_types.py +0 -0
  492. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/eunomia_principal.py +0 -0
  493. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/httpx_boundary.py +0 -0
  494. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/intent_contract.py +0 -0
  495. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/middlewares.py +0 -0
  496. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/oauth_log_hygiene.py +0 -0
  497. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/ontology_types.py +0 -0
  498. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/optional_tool_features.py +0 -0
  499. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/remote_oauth_broker.py +0 -0
  500. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/server_factory.py +0 -0
  501. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/skill_coverage.py +0 -0
  502. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tasks_extension.py +0 -0
  503. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tool_specs.py +0 -0
  504. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/__init__.py +0 -0
  505. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/_surface_selection.py +0 -0
  506. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/analysis_tools.py +0 -0
  507. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/analyze_suite.py +0 -0
  508. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/audit_tools.py +0 -0
  509. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/candidate_claim_tools.py +0 -0
  510. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/compliance_tools.py +0 -0
  511. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/config_tools.py +0 -0
  512. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/domain_ops_tools.py +0 -0
  513. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/engine_surface_tools.py +0 -0
  514. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/engine_tools.py +0 -0
  515. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/epistemic_tools.py +0 -0
  516. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/governance_tools.py +0 -0
  517. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/graph_tools.py +0 -0
  518. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/intent_tools.py +0 -0
  519. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/mcp_apps.py +0 -0
  520. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/ontology_tools.py +0 -0
  521. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/query_tools.py +0 -0
  522. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/reach_tools.py +0 -0
  523. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/secret_tools.py +0 -0
  524. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/state_tools.py +0 -0
  525. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/tools/write_ingest_tools.py +0 -0
  526. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/verbose_tools.py +0 -0
  527. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/backing/write_ingest_types.py +0 -0
  528. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/bootstrap.py +0 -0
  529. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/browser_dispatch.py +0 -0
  530. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/browser_state.py +0 -0
  531. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/catalog_composition.py +0 -0
  532. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/composition.py +0 -0
  533. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/current_plan_reader.py +0 -0
  534. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/decide_wiring.py +0 -0
  535. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/effect_journal.py +0 -0
  536. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/harness_host.py +0 -0
  537. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/hosted_invocation.py +0 -0
  538. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/legacy_action_mapping.py +0 -0
  539. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/operation_registry.py +0 -0
  540. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/routes.py +0 -0
  541. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/run_reader.py +0 -0
  542. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/runtime.py +0 -0
  543. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/served_engine.py +0 -0
  544. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/served_invocation.py +0 -0
  545. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/server.py +0 -0
  546. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/source_reader.py +0 -0
  547. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/task_plan.py +0 -0
  548. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/mcp_server/task_plan_runtime.py +0 -0
  549. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/__init__.py +0 -0
  550. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/action_dispatch.py +0 -0
  551. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/alert_intake.py +0 -0
  552. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/__init__.py +0 -0
  553. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/discord.py +0 -0
  554. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/googlechat.py +0 -0
  555. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/googlemeet.py +0 -0
  556. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/imessage.py +0 -0
  557. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/irc.py +0 -0
  558. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/line.py +0 -0
  559. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/matrix.py +0 -0
  560. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/mattermost.py +0 -0
  561. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/nextcloud.py +0 -0
  562. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/signal.py +0 -0
  563. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/slack.py +0 -0
  564. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/synology.py +0 -0
  565. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/teams.py +0 -0
  566. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/telegram.py +0 -0
  567. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/twitch.py +0 -0
  568. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/voicecall.py +0 -0
  569. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/backends/whatsapp.py +0 -0
  570. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/base.py +0 -0
  571. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/capabilities.py +0 -0
  572. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/coalescer.py +0 -0
  573. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/commands.py +0 -0
  574. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/governed_send.py +0 -0
  575. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/host_ports.py +0 -0
  576. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/inbox.py +0 -0
  577. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/intake.py +0 -0
  578. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/lease.py +0 -0
  579. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/models.py +0 -0
  580. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/planner_handler.py +0 -0
  581. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/polling.py +0 -0
  582. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/reach.py +0 -0
  583. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/registry.py +0 -0
  584. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/render.py +0 -0
  585. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/router.py +0 -0
  586. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/service.py +0 -0
  587. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/supervision.py +0 -0
  588. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/messaging/transport.py +0 -0
  589. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/native_run_admission.py +0 -0
  590. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/__init__.py +0 -0
  591. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/correlation.py +0 -0
  592. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/custom_observability.py +0 -0
  593. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/error_detail_sink.py +0 -0
  594. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/gateway_health.py +0 -0
  595. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/gateway_metrics.py +0 -0
  596. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/health.py +0 -0
  597. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/langfuse_exporter.py +0 -0
  598. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/langfuse_trust.py +0 -0
  599. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/readiness.py +0 -0
  600. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/runtime_health.py +0 -0
  601. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/runtime_signals.py +0 -0
  602. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/subsystem_health.py +0 -0
  603. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/telemetry.py +0 -0
  604. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/observability/trace_ontology.py +0 -0
  605. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/ontology/shapes/runtime.shapes.ttl +0 -0
  606. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-01.json +0 -0
  607. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-02.json +0 -0
  608. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-03.json +0 -0
  609. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-04.json +0 -0
  610. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-05.json +0 -0
  611. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-06.json +0 -0
  612. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-07.json +0 -0
  613. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-08.json +0 -0
  614. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-09.json +0 -0
  615. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cmdb-trm-10.json +0 -0
  616. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-a.json +0 -0
  617. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-b.json +0 -0
  618. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-c.json +0 -0
  619. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d1.json +0 -0
  620. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d10.json +0 -0
  621. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d2.json +0 -0
  622. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d3.json +0 -0
  623. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d4.json +0 -0
  624. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d5.json +0 -0
  625. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d6.json +0 -0
  626. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d7.json +0 -0
  627. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d8.json +0 -0
  628. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/cq-d9.json +0 -0
  629. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/delegation-cycle-refused.json +0 -0
  630. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/delegation-fan-out.json +0 -0
  631. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/delegation-gitlab-servicenow-plane.json +0 -0
  632. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/delegation-ordered-dag.json +0 -0
  633. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/delegation-plan-persisted.json +0 -0
  634. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/prompts/incident-triage-system.json +0 -0
  635. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/run_origin.py +0 -0
  636. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/__init__.py +0 -0
  637. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/actor_context.py +0 -0
  638. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/anonymous.py +0 -0
  639. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/auth.py +0 -0
  640. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/config_sensitivity.py +0 -0
  641. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/conformance/__init__.py +0 -0
  642. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/conformance/surface_inventory.py +0 -0
  643. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/conformance/surface_manifest.py +0 -0
  644. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/delegation.py +0 -0
  645. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/elevation.py +0 -0
  646. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/error_surface.py +0 -0
  647. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/http_boundary.py +0 -0
  648. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/identifiers.py +0 -0
  649. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/identity.py +0 -0
  650. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/log_redaction.py +0 -0
  651. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/oidc_discovery.py +0 -0
  652. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/operation_result.py +0 -0
  653. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/prompt_injection.py +0 -0
  654. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/request_identity.py +0 -0
  655. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/run_authority.py +0 -0
  656. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/run_token.py +0 -0
  657. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/scope_registry.py +0 -0
  658. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/secrets.py +0 -0
  659. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/security_policy_middleware.py +0 -0
  660. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/security/settings.py +0 -0
  661. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/semantic_content.py +0 -0
  662. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/__init__.py +0 -0
  663. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/agent-utilities-source-integration/SKILL.md +0 -0
  664. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +0 -0
  665. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +0 -0
  666. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/SKILL.md +0 -0
  667. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/agents/arbora.yaml +0 -0
  668. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/agents/openai.yaml +0 -0
  669. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/references/first-boot-verification.md +0 -0
  670. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +0 -0
  671. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/references/identity-and-access.md +0 -0
  672. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/references/secrets-and-federation.md +0 -0
  673. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-deployment/references/telemetry.md +0 -0
  674. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-development/SKILL.md +0 -0
  675. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-development/references/bootstrap.md +0 -0
  676. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-evolution/SKILL.md +0 -0
  677. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-evolution/agents/arbora.yaml +0 -0
  678. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-evolution/agents/openai.yaml +0 -0
  679. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/SKILL.md +0 -0
  680. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/agents/arbora.yaml +0 -0
  681. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/agents/openai.yaml +0 -0
  682. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +0 -0
  683. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/bare-metal.md +0 -0
  684. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/compose-and-podman.md +0 -0
  685. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/data-plane-substrate.md +0 -0
  686. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/deployment-contract.md +0 -0
  687. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/development-workspace.md +0 -0
  688. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/docker-swarm.md +0 -0
  689. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/engine-identity-admission.md +0 -0
  690. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +0 -0
  691. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +0 -0
  692. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/runtime-topology.md +0 -0
  693. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-genesis/references/security-and-operations.md +0 -0
  694. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/arbora-repository-development/SKILL.md +0 -0
  695. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/autonomous-contribution/SKILL.md +0 -0
  696. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/autonomous-contribution/agents/arbora.yaml +0 -0
  697. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/autonomous-contribution/agents/openai.yaml +0 -0
  698. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/core-pack.txt +0 -0
  699. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-engine-and-modalities/SKILL.md +0 -0
  700. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +0 -0
  701. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +0 -0
  702. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-ingestion-and-integration/SKILL.md +0 -0
  703. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +0 -0
  704. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +0 -0
  705. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +0 -0
  706. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +0 -0
  707. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-modeling-and-mutation/SKILL.md +0 -0
  708. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +0 -0
  709. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +0 -0
  710. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-orchestration-and-automation/SKILL.md +0 -0
  711. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +0 -0
  712. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +0 -0
  713. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-query-and-explanation/SKILL.md +0 -0
  714. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +0 -0
  715. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-query-and-explanation/agents/openai.yaml +0 -0
  716. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-query-and-explanation/references/uql-reference.md +0 -0
  717. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-research-and-analysis/SKILL.md +0 -0
  718. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +0 -0
  719. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-research-and-analysis/agents/openai.yaml +0 -0
  720. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-runtime-and-governance/SKILL.md +0 -0
  721. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +0 -0
  722. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +0 -0
  723. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/skills/using-arbora/SKILL.md +0 -0
  724. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/unique_records.py +0 -0
  725. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/__init__.py +0 -0
  726. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/contact_delivery.py +0 -0
  727. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/contact_governance.py +0 -0
  728. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/mcp_delegation.py +0 -0
  729. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/package_layout_expectation.py +0 -0
  730. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/session_boundary.py +0 -0
  731. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/voice_delegation.py +0 -0
  732. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/webui_host/webui_co_service.py +0 -0
  733. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora/work_items.py +0 -0
  734. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/SOURCES.txt +0 -0
  735. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/dependency_links.txt +0 -0
  736. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/entry_points.txt +0 -0
  737. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/requires.txt +0 -0
  738. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/arbora.egg-info/top_level.txt +0 -0
  739. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/pyproject.toml +0 -0
  740. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/setup.cfg +0 -0
  741. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_a2a_extension_lifespan.py +0 -0
  742. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_agent_runs.py +0 -0
  743. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_agents_run_end_to_end.py +0 -0
  744. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_boot_diagnostics.py +0 -0
  745. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_check_acceptance_evidence.py +0 -0
  746. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_check_connector_count_pins.py +0 -0
  747. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_check_core_skills.py +0 -0
  748. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_check_wiring.py +0 -0
  749. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_component_registry_boundary_seeds.py +0 -0
  750. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_connector_pack_typed_publisher.py +0 -0
  751. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_connector_runner_composition.py +0 -0
  752. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_current_plan_publication.py +0 -0
  753. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_data_migrations.py +0 -0
  754. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_dependency_manifest.py +0 -0
  755. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_docs_surface.py +0 -0
  756. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_epistemic_adapter.py +0 -0
  757. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_epistemic_loop_lifecycle.py +0 -0
  758. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_fleet_catalog_reader.py +0 -0
  759. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_host_bindings.py +0 -0
  760. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_installed_content.py +0 -0
  761. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_native_run_admission.py +0 -0
  762. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_native_run_scope.py +0 -0
  763. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_package_layout.py +0 -0
  764. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_persisted_shapes.py +0 -0
  765. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_real_anonymous_boot.py +0 -0
  766. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_real_boot.py +0 -0
  767. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_real_boot_messaging.py +0 -0
  768. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_real_boot_ports.py +0 -0
  769. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_real_boot_read_assertions.py +0 -0
  770. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_run_event_payloads.py +0 -0
  771. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_run_origin.py +0 -0
  772. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_semantic_content.py +0 -0
  773. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_served_engine_native_labels.py +0 -0
  774. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_served_operation_api.py +0 -0
  775. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/tests/test_unique_records.py +0 -0
  776. {arbora-0.1.8.dev11 → arbora-0.1.8.dev12}/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.dev11
3
+ Version: 0.1.8.dev12
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
@@ -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.dev11"
6
+ __version__ = "0.1.8.dev12"
@@ -105,6 +105,10 @@ class FleetPinsListParams(_Params):
105
105
  limit: int = Field(default=50, ge=1, le=100)
106
106
 
107
107
 
108
+ class FleetCatalogRefreshParams(_Params):
109
+ servers: tuple[str, ...] = Field(min_length=1, max_length=32)
110
+
111
+
108
112
  class FleetCallParams(_Params):
109
113
  server: str = Field(min_length=1, max_length=128)
110
114
  tool: str = Field(min_length=1, max_length=128)
@@ -191,6 +195,8 @@ async def handle_fleet_operation(
191
195
  result = await gateway.pin(caller, **params)
192
196
  elif op.id == "fleet.tools.unpin":
193
197
  result = await gateway.unpin(caller, **params)
198
+ elif op.id == "fleet.catalog.refresh":
199
+ result = await gateway.catalog_refresh(caller, **params)
194
200
  elif op.id == "fleet.pins.list":
195
201
  result = await gateway.pins_list(caller, **params)
196
202
  elif op.id == "fleet.prompts.list":
@@ -359,6 +365,18 @@ def operations() -> tuple[OpSpec, ...]:
359
365
  ),
360
366
  )
361
367
  ),
368
+ OpSpec(
369
+ id="fleet.catalog.refresh",
370
+ verb=Verb.MANAGE,
371
+ summary="Re-read connector tool catalogs now, without an arbora restart",
372
+ examples=("refresh the tool catalog of craft-suite-api",),
373
+ params=FleetCatalogRefreshParams,
374
+ result=FleetResult,
375
+ binding=Composite(handler="arbora.api.ops.fleet.handle_fleet_operation"),
376
+ scopes=frozenset({"fleet:control"}),
377
+ effect=Effect.WRITE,
378
+ audit=AuditClass.EVENT,
379
+ ),
362
380
  OpSpec(
363
381
  id="fleet.pins.list",
364
382
  verb=Verb.ASK,
@@ -462,6 +480,7 @@ specs = operations
462
480
  __all__ = [
463
481
  "FleetCallParams",
464
482
  "FleetCatalogParams",
483
+ "FleetCatalogRefreshParams",
465
484
  "FleetLoadParams",
466
485
  "FleetPackStatusParams",
467
486
  "FleetPinParams",
@@ -0,0 +1,277 @@
1
+ """Bind the existing EG reader and multiplexer cache to fleet operations."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+ import logging
7
+ import time
8
+ from collections.abc import Awaitable, Callable, Iterable, Mapping
9
+ from typing import Any, Protocol, cast
10
+
11
+ from arbora.fleet.catalog_items import CatalogItem, FleetCatalog
12
+ from arbora.fleet.catalog_sources import CombinedFleetSource, SdkRead
13
+ from arbora.fleet.multiplexer_ops import (
14
+ CoverageEndpoints,
15
+ CoverageRegistry,
16
+ Invoke,
17
+ Loadable,
18
+ Mount,
19
+ MultiplexerOps,
20
+ NativeName,
21
+ Notify,
22
+ ReadItem,
23
+ SessionKeyFor,
24
+ UnadmittedServers,
25
+ )
26
+ from arbora.fleet.pin_store import PinStore
27
+ from arbora.fleet.session_loads import SessionLoads
28
+
29
+ logger = logging.getLogger(__name__)
30
+
31
+
32
+ class VerifiedReader(Protocol):
33
+ async def read(self) -> Any: ...
34
+
35
+
36
+ class CachedProbe(Protocol):
37
+ _probe_cache: Mapping[str, Mapping[str, Any]]
38
+
39
+ def status_snapshot(self) -> Mapping[str, Any]: ...
40
+
41
+
42
+ async def _cached_protocol(mux: CachedProbe) -> Mapping[str, Mapping[str, Any]]:
43
+ """Use completed probes only; discovery never starts a fleet sweep here."""
44
+ return dict(mux._probe_cache)
45
+
46
+
47
+ #: A server whose probe failed or is never cached (an OAuth-gated child) is
48
+ #: not re-probed before this many seconds. A cached probe that is later
49
+ #: invalidated is re-probed on the next request. An explicit refresh of one
50
+ #: server runs at most once per window too.
51
+ PRIME_RETRY_S = 60.0
52
+ #: One server's priming probe may take at most this long.
53
+ PRIME_TIMEOUT_S = 20.0
54
+
55
+
56
+ def _good(info: Mapping[str, Any] | None) -> bool:
57
+ return isinstance(info, Mapping) and info.get("error") is None
58
+
59
+
60
+ def _summary(info: Mapping[str, Any] | None) -> dict[str, Any]:
61
+ """The caller-visible outcome of one refresh: a count, never the tools."""
62
+ if not isinstance(info, Mapping):
63
+ return {"tools": 0, "error": "refresh failed"}
64
+ return {
65
+ "tools": len(info.get("tools") or ()),
66
+ "error": info.get("error"),
67
+ "probed_at": info.get("probed_at"),
68
+ }
69
+
70
+
71
+ class ProbePrimer:
72
+ """Keep the probed half of the fleet catalog current.
73
+
74
+ The verified EG catalog carries no input schema or tool annotations; the
75
+ live probe does. Calling the primer probes only the servers a request
76
+ names, so the served path never sweeps the fleet. A probe past the
77
+ multiplexer's TTL is served while one background re-probe runs
78
+ (ARBORA-FLEET-R070), and :meth:`refresh` re-reads a server at once, for a
79
+ ``fleet.call`` of a tool the catalog does not know yet (ARBORA-FLEET-R071)
80
+ and for the explicit refresh operation. A failed re-probe is logged and
81
+ leaves the last good probe in place.
82
+ """
83
+
84
+ def __init__(
85
+ self,
86
+ mux: Any,
87
+ *,
88
+ retry_s: float = PRIME_RETRY_S,
89
+ timeout_s: float = PRIME_TIMEOUT_S,
90
+ clock: Callable[[], float] = time.monotonic,
91
+ ) -> None:
92
+ self._mux = mux
93
+ self._probe = getattr(mux, "probe_server", None)
94
+ self._retry_s = retry_s
95
+ self._timeout_s = timeout_s
96
+ self._clock = clock
97
+ self._attempted: dict[str, float] = {}
98
+ self._refreshed: dict[str, float] = {}
99
+ self._locks: dict[str, asyncio.Lock] = {}
100
+ self._background: dict[str, asyncio.Task[Any]] = {}
101
+
102
+ def _throttled(self, stamps: Mapping[str, float], server: str) -> bool:
103
+ last = stamps.get(server)
104
+ return last is not None and self._clock() - last < self._retry_s
105
+
106
+ def _fresh(self, server: str) -> bool:
107
+ if not _good(self._mux._probe_cache.get(server)):
108
+ return False
109
+ hit = getattr(self._mux, "_probe_cache_hit", None)
110
+ return hit is None or hit(server) is not None
111
+
112
+ def _keep_last_good(self, server: str, previous: Any) -> None:
113
+ if _good(previous) and not _good(self._mux._probe_cache.get(server)):
114
+ logger.warning("fleet re-probe of %s failed; keeping its catalog", server)
115
+ self._mux._probe_cache[server] = previous
116
+
117
+ async def _probe_once(self, server: str, *, force: bool) -> Any:
118
+ """Probe one server; a good cached result clears its retry window."""
119
+ probe = cast(Callable[..., Awaitable[Any]], self._probe)
120
+ previous = self._mux._probe_cache.get(server)
121
+ self._attempted[server] = self._clock()
122
+ run = probe(server, force=True) if force else probe(server)
123
+ try:
124
+ info = await asyncio.wait_for(run, timeout=self._timeout_s)
125
+ except Exception as exc: # noqa: BLE001 - priming is best-effort
126
+ logger.warning(
127
+ "fleet probe of %s for catalog schema failed: %s",
128
+ server,
129
+ type(exc).__name__,
130
+ )
131
+ info = None
132
+ self._keep_last_good(server, previous)
133
+ if _good(self._mux._probe_cache.get(server)):
134
+ # The window throttles failed and never-cached probes only.
135
+ # A cached probe that a later schema refresh drops must be
136
+ # re-primed on the next request, or its tools lose their
137
+ # annotations and a read-only tool resolves as a write.
138
+ self._attempted.pop(server, None)
139
+ return info
140
+
141
+ def _lock(self, server: str) -> asyncio.Lock:
142
+ return self._locks.setdefault(server, asyncio.Lock())
143
+
144
+ async def _reprobe_stale(self, server: str) -> None:
145
+ async with self._lock(server):
146
+ if not self._fresh(server):
147
+ await self._probe_once(server, force=False)
148
+
149
+ def _refresh_in_background(self, server: str) -> None:
150
+ task = self._background.get(server)
151
+ if (task is not None and not task.done()) or self._throttled(
152
+ self._attempted, server
153
+ ):
154
+ return
155
+ self._background[server] = asyncio.ensure_future(self._reprobe_stale(server))
156
+
157
+ async def __call__(self, servers: Iterable[str]) -> None:
158
+ if self._probe is None:
159
+ return
160
+ for server in _named(servers):
161
+ if self._fresh(server):
162
+ continue
163
+ if _good(self._mux._probe_cache.get(server)):
164
+ self._refresh_in_background(server)
165
+ continue
166
+ async with self._lock(server):
167
+ if _good(self._mux._probe_cache.get(server)) or self._throttled(
168
+ self._attempted, server
169
+ ):
170
+ continue
171
+ await self._probe_once(server, force=False)
172
+
173
+ async def refresh(self, servers: Iterable[str]) -> dict[str, dict[str, Any]]:
174
+ """Re-probe each named server now, at most once per retry window."""
175
+ outcome: dict[str, dict[str, Any]] = {}
176
+ if self._probe is None:
177
+ return outcome
178
+ for server in _named(servers):
179
+ async with self._lock(server):
180
+ info: Any = self._mux._probe_cache.get(server)
181
+ if not self._throttled(self._refreshed, server):
182
+ self._refreshed[server] = self._clock()
183
+ info = await self._probe_once(server, force=True)
184
+ info = self._mux._probe_cache.get(server, info)
185
+ outcome[server] = _summary(info)
186
+ return outcome
187
+
188
+
189
+ def _named(servers: Iterable[str]) -> list[str]:
190
+ return [server for server in servers if isinstance(server, str) and server]
191
+
192
+
193
+ def probe_primer(
194
+ mux: Any,
195
+ *,
196
+ retry_s: float = PRIME_RETRY_S,
197
+ timeout_s: float = PRIME_TIMEOUT_S,
198
+ clock: Callable[[], float] = time.monotonic,
199
+ ) -> ProbePrimer:
200
+ """The primer for one multiplexer; see :class:`ProbePrimer`."""
201
+ return ProbePrimer(mux, retry_s=retry_s, timeout_s=timeout_s, clock=clock)
202
+
203
+
204
+ def compose_multiplexer_ops(
205
+ *,
206
+ reader: VerifiedReader,
207
+ mux: CachedProbe,
208
+ sdk_entries: SdkRead,
209
+ visible: Callable[[CatalogItem, Any], Awaitable[bool]],
210
+ loadable: Loadable,
211
+ callable_item: Loadable,
212
+ mount: Mount,
213
+ notify: Notify,
214
+ invoke: Invoke,
215
+ session_key_for: SessionKeyFor,
216
+ native_name: NativeName | None = None,
217
+ read_item: ReadItem | None = None,
218
+ cap: int = 64,
219
+ pinned_cap: int | None = None,
220
+ idle_ttl_seconds: int = 3600,
221
+ pin_store: PinStore | None = None,
222
+ coverage_registry: CoverageRegistry | None = None,
223
+ coverage_endpoints: CoverageEndpoints | None = None,
224
+ unadmitted_servers: UnadmittedServers | None = None,
225
+ ) -> MultiplexerOps:
226
+ """Build one operation service without claiming the MCP cutover is wired.
227
+
228
+ ``reader`` is the process's already-bound ``DeferredFleetCatalogReader``.
229
+ ``mux`` is the same process singleton used by the MCP server. The
230
+ discovery/load-authorization policy owns ``visible``/``loadable``, and
231
+ the native MCP tool registration and list-changed notification path owns
232
+ the ``mount``/``notify`` hooks; supplying neither cannot silently widen
233
+ authority. ``pinned_cap`` defaults to the ``FLEET_PINNED_CAP`` setting;
234
+ ``pin_store`` is the durable per-principal pin store (without one the pin
235
+ operations refuse ``UNAVAILABLE``).
236
+ """
237
+
238
+ async def live() -> Mapping[str, Mapping[str, Any]]:
239
+ return await _cached_protocol(mux)
240
+
241
+ prime = probe_primer(mux)
242
+ source = CombinedFleetSource(verified=reader.read, live=live, sdk=sdk_entries)
243
+ catalog = FleetCatalog((source,), visible)
244
+
245
+ def health() -> Mapping[str, Any]:
246
+ return mux.status_snapshot().get("children", {})
247
+
248
+ if pinned_cap is None:
249
+ from arbora.core.settings import runtime_config
250
+
251
+ pinned_cap = runtime_config.fleet_pinned_cap
252
+ if unadmitted_servers is None:
253
+
254
+ def unadmitted_servers():
255
+ return list(mux.status_snapshot().get("unadmitted_servers", ()))
256
+
257
+ return MultiplexerOps(
258
+ catalog=catalog,
259
+ sessions=SessionLoads(
260
+ cap=cap, pinned_cap=pinned_cap, idle_ttl_seconds=idle_ttl_seconds
261
+ ),
262
+ loadable=loadable,
263
+ callable_item=callable_item,
264
+ mount=mount,
265
+ notify=notify,
266
+ invoke=invoke,
267
+ health=health,
268
+ session_key_for=session_key_for,
269
+ native_name=native_name,
270
+ read_item=read_item,
271
+ prime=prime,
272
+ refresh=prime.refresh,
273
+ pin_store=pin_store,
274
+ coverage_registry=coverage_registry,
275
+ coverage_endpoints=coverage_endpoints,
276
+ unadmitted_servers=unadmitted_servers,
277
+ )
@@ -551,6 +551,12 @@ class FleetGateway:
551
551
  caller, items=params.get("items", ())
552
552
  )
553
553
 
554
+ async def catalog_refresh(self, caller: Any, **params: Any) -> Any:
555
+ # The op's own scopes (fleet:control) gate the pipeline.
556
+ return await self._catalog(caller, "fleet:control").refresh_catalog(
557
+ caller, servers=params.get("servers", ())
558
+ )
559
+
554
560
  async def pins_list(self, caller: Any, **params: Any) -> Any:
555
561
  # The op's own scopes (fleet:control, mcp:admin) gate the pipeline;
556
562
  # the tenant-wide read needs no session of the caller's.
@@ -138,10 +138,12 @@ _MAX_DELEGATED_VALUE_BYTES = 4 * 1024 * 1024
138
138
  _MAX_CHILD_SSE_EVENT_BYTES = 2 * _MAX_DELEGATED_VALUE_BYTES
139
139
  _MAX_DELEGATED_NODES = 16_384
140
140
  _MAX_DELEGATED_DEPTH = 32
141
- _MAX_DISCOVERED_TOOLS = 2_048
142
- # A child catalog is metadata, not a single tool invocation. It legitimately
143
- # contains hundreds of independently bounded JSON Schemas, so it gets its own
144
- # aggregate structural allowance while retaining the same byte/depth limits.
141
+ #: Resource and prompt listings keep a fixed per-child count bound. A tool
142
+ #: catalog has no count bound at all (ARBORA-FLEET-R069): a connector that
143
+ #: serves one tool per upstream operation is admitted whole.
144
+ _MAX_DISCOVERED_DESCRIPTORS = 2_048
145
+ #: One child tool descriptor's structural allowance. Each descriptor is
146
+ #: bounded on its own; a large catalog is never truncated (ARBORA-FLEET-R069).
145
147
  _MAX_CATALOG_NODES = 131_072
146
148
  # Skills-over-MCP (CONCEPT:MERISTEM-ECO.mcp.skills-over-mcp-provider): a probed
147
149
  # server's Resources may include ``skill://{name}/SKILL.md`` entries. Bounded
@@ -857,31 +859,80 @@ def _bounded_tool_entry(tool: _typing.Any) -> dict[str, _typing.Any]:
857
859
  return item
858
860
 
859
861
 
862
+ class FleetCatalogPageError(RuntimeError):
863
+ """One page of a child's ``tools/list`` could not be read.
864
+
865
+ Typed (ARBORA-FLEET-R068): the listing is refused whole, never served
866
+ partial, so a connector can never silently lose tools. The probe records
867
+ it as the server's error and the primer retries; the last good catalog
868
+ keeps serving meanwhile.
869
+ """
870
+
871
+
860
872
  def _bounded_tool_catalog(raw_tools: _typing.Any) -> list[dict[str, _typing.Any]]:
861
873
  """Project one child catalog into a bounded, JSON-compatible shape.
862
874
 
863
875
  The MCP SDK decodes remote responses before returning them to us. This
864
876
  boundary prevents a child from turning that decoded value into an
865
- unbounded in-memory/KG catalog: tool count, aggregate bytes, nesting,
866
- collection size, names, descriptions, schemas, and annotations are all
867
- validated before any caller can cache or register them.
877
+ unbounded in-memory/KG catalog: names, descriptions, schemas, and
878
+ annotations are validated per descriptor before any caller can cache or
879
+ register them. The tool count has no bound (ARBORA-FLEET-R069).
868
880
  """
869
881
 
870
- if (
871
- not isinstance(raw_tools, list | tuple)
872
- or len(raw_tools) > _MAX_DISCOVERED_TOOLS
873
- ):
882
+ if not isinstance(raw_tools, list | tuple):
874
883
  raise RuntimeError("MCP child tool catalog exceeded its boundary")
875
884
  tools: list[dict[str, _typing.Any]] = [
876
885
  _bounded_tool_entry(tool) for tool in raw_tools
877
886
  ]
878
887
  try:
879
- _assert_bounded_json_value(tools, max_nodes=_MAX_CATALOG_NODES)
888
+ for entry in tools:
889
+ _assert_bounded_json_value(entry, max_nodes=_MAX_CATALOG_NODES)
880
890
  except _fastmcp_exceptions.ToolError:
881
891
  raise RuntimeError("MCP child tool catalog exceeded its boundary") from None
882
892
  return tools
883
893
 
884
894
 
895
+ def _next_cursor(result: _typing.Any) -> str | None:
896
+ """A ``tools/list`` page's continuation cursor, or ``None`` on the last."""
897
+ cursor = getattr(result, "next_cursor", None)
898
+ return cursor if isinstance(cursor, str) and cursor else None
899
+
900
+
901
+ async def _list_page(session: _typing.Any, cursor: str | None) -> _typing.Any:
902
+ try:
903
+ if cursor is None:
904
+ return await session.list_tools()
905
+ return await session.list_tools(
906
+ params=mcp_types.PaginatedRequestParams(cursor=cursor)
907
+ )
908
+ except Exception as exc:
909
+ raise FleetCatalogPageError(
910
+ f"MCP child tools/list page failed ({type(exc).__name__})"
911
+ ) from exc
912
+
913
+
914
+ async def _list_all_tools(session: _typing.Any) -> list[_typing.Any]:
915
+ """Every tool a child serves: ``tools/list`` followed to its last page.
916
+
917
+ ARBORA-FLEET-R068: a child that paginates is read cursor by cursor until
918
+ it returns no ``nextCursor``. A failed page or a repeated cursor refuses
919
+ the listing whole with :class:`FleetCatalogPageError`; a partial catalog
920
+ is never returned.
921
+ """
922
+ result = await _list_page(session, None)
923
+ tools = list(result.tools)
924
+ seen: set[str] = set()
925
+ cursor = _next_cursor(result)
926
+ while cursor is not None:
927
+ if cursor in seen:
928
+ raise FleetCatalogPageError("MCP child tools/list cursor repeated")
929
+ seen.add(cursor)
930
+ result = await _list_page(session, cursor)
931
+ tools.extend(result.tools)
932
+ cursor = _next_cursor(result)
933
+ return tools
934
+
935
+
885
936
  def _tool_catalog_digest(tools: list[MCPTool]) -> str:
886
937
  """Return a stable digest of the client-visible portion of one child catalog.
887
938
 
@@ -913,7 +964,7 @@ def _assert_bounded_resource_list(raw_resources: _typing.Any) -> None:
913
964
 
914
965
  if not isinstance(raw_resources, list | tuple):
915
966
  raise RuntimeError("MCP child resource catalog is invalid")
916
- if len(raw_resources) > _MAX_DISCOVERED_TOOLS:
967
+ if len(raw_resources) > _MAX_DISCOVERED_DESCRIPTORS:
917
968
  raise RuntimeError("MCP child resource catalog exceeded its boundary")
918
969
 
919
970
 
@@ -921,7 +972,10 @@ def _bounded_descriptor_catalog(
921
972
  values: _typing.Any, *, key: str, family: str
922
973
  ) -> list[dict[str, _typing.Any]]:
923
974
  """Project one native MCP descriptor family through the shared boundary."""
924
- if not isinstance(values, list | tuple) or len(values) > _MAX_DISCOVERED_TOOLS:
975
+ if (
976
+ not isinstance(values, list | tuple)
977
+ or len(values) > _MAX_DISCOVERED_DESCRIPTORS
978
+ ):
925
979
  raise RuntimeError(f"MCP child {family} catalog exceeded its boundary")
926
980
  projected: list[dict[str, _typing.Any]] = []
927
981
  for value in values:
@@ -3165,8 +3219,7 @@ class MCPMultiplexer:
3165
3219
  ``record_state=False``: an ephemeral per-principal session must never
3166
3220
  write into the process-wide admitted-tool map.
3167
3221
  """
3168
- tools_result = await session.list_tools()
3169
- tools = list(tools_result.tools)
3222
+ tools = await _list_all_tools(session)
3170
3223
  admitted = self._oauth_admitted_tools(
3171
3224
  server_name, original_name, runtime_policy, tools
3172
3225
  )
@@ -4134,7 +4187,8 @@ class MCPMultiplexer:
4134
4187
  if session is None:
4135
4188
  return
4136
4189
  try:
4137
- tools = list((await session.list_tools()).tools)
4190
+ tools = await _list_all_tools(session)
4191
+ _bounded_tool_catalog(tools)
4138
4192
  except Exception as exc:
4139
4193
  logger.warning(
4140
4194
  "list_changed refresh of %s failed: %s",
@@ -4142,6 +4196,10 @@ class MCPMultiplexer:
4142
4196
  redact_for_log(exc),
4143
4197
  )
4144
4198
  return
4199
+ # ARBORA-FLEET-R070: the new list replaces the served one now,
4200
+ # without a restart; the next catalog read re-probes the child.
4201
+ self._probe_cache.pop(server_name, None)
4202
+ await self._publish_live_tools(server_name, tools)
4145
4203
  await self._announce_handshake(server_name, session, tools, "list_changed")
4146
4204
 
4147
4205
  async def handler(message: IncomingMessage) -> None:
@@ -4272,9 +4330,8 @@ class MCPMultiplexer:
4272
4330
  sessions = [
4273
4331
  await _connect_one(stack, generation_secret) for _ in range(pool_size)
4274
4332
  ]
4275
- tools_result = await sessions[0].list_tools()
4276
- _bounded_tool_catalog(tools_result.tools)
4277
- tools = list(tools_result.tools)
4333
+ tools = await _list_all_tools(sessions[0])
4334
+ _bounded_tool_catalog(tools)
4278
4335
  await self._announce_handshake(server_name, sessions[0], tools)
4279
4336
  if runtime_policy is not None:
4280
4337
  tools = self._admit_runtime_policy_tools(
@@ -4765,6 +4822,35 @@ class MCPMultiplexer:
4765
4822
  self._retract_removed_from_sessions(stale_names - set(refreshed_by_name))
4766
4823
  return refreshed, True
4767
4824
 
4825
+ async def _publish_live_tools(
4826
+ self, server_name: str, tools: list[_typing.Any]
4827
+ ) -> None:
4828
+ """Serve a mounted child's re-listed tools (ARBORA-FLEET-R070).
4829
+
4830
+ The same policy admission and schema refresh a new child generation
4831
+ gets; a child that is not mounted has nothing to publish.
4832
+ """
4833
+ runtime = self.children.get(server_name)
4834
+ if runtime is None:
4835
+ return
4836
+ cfg = self.load_catalog().get(server_name)
4837
+ if cfg is None:
4838
+ return
4839
+ policy = self._child_runtime_policies.get(server_name)
4840
+ if policy is not None:
4841
+ tools = self._admit_runtime_policy_tools(server_name, policy, tools)
4842
+ await self._refresh_child_tools(
4843
+ server_name, runtime, cfg, self._catalog_epoch, tools
4844
+ )
4845
+
4846
+ async def _relist_live_child(self, server_name: str) -> None:
4847
+ """Re-read a mounted child's whole tool list on its live session."""
4848
+ session = self._live_primary_session(server_name)
4849
+ tools = await _list_all_tools(session)
4850
+ _bounded_tool_catalog(tools)
4851
+ await self._publish_live_tools(server_name, tools)
4852
+ await self._announce_handshake(server_name, session, tools)
4853
+
4768
4854
  async def _refresh_child_tools(
4769
4855
  self,
4770
4856
  server_name: str,
@@ -5495,6 +5581,8 @@ class MCPMultiplexer:
5495
5581
  return cached
5496
5582
 
5497
5583
  if server_name in self.children:
5584
+ if force:
5585
+ await self._relist_live_child(server_name)
5498
5586
  return await self._live_child_probe(server_name)
5499
5587
 
5500
5588
  cfg = self.load_catalog().get(server_name)
@@ -5536,9 +5624,12 @@ class MCPMultiplexer:
5536
5624
  session = await self._open_one_session(
5537
5625
  server_name, runtime_cfg, stack
5538
5626
  )
5539
- result = await session.list_tools()
5540
- _bounded_tool_catalog(result.tools)
5541
- tools = list(result.tools)
5627
+ tools = await _list_all_tools(session)
5628
+ _bounded_tool_catalog(tools)
5629
+ if force:
5630
+ # An explicit refresh also re-onboards a changed
5631
+ # catalog into the engine (ARBORA-FLEET-R070).
5632
+ await self._announce_handshake(server_name, session, tools)
5542
5633
  if runtime_policy is not None:
5543
5634
  tools = self._admit_runtime_policy_tools(
5544
5635
  server_name,
@@ -24,6 +24,10 @@ NativeName = Callable[[CatalogItem], str]
24
24
  ReadItem = Callable[[CatalogItem, Mapping[str, Any], Any], Awaitable[Any]]
25
25
  #: Fill the live protocol rows (input schema, annotations) of named servers.
26
26
  Prime = Callable[[Iterable[str]], Awaitable[None]]
27
+ #: Re-probe named servers now; answers each server's tool count and error.
28
+ Refresh = Callable[[Iterable[str]], Awaitable[Mapping[str, Any]]]
29
+ #: The most servers one explicit catalog refresh names.
30
+ MAX_REFRESH_SERVERS = 32
27
31
  #: The coverage registry reader and endpoint lister for ``status``.
28
32
  CoverageRegistry = Callable[[], tuple[Any, ...]]
29
33
  CoverageEndpoints = Callable[[], tuple[Any, ...]]
@@ -157,6 +161,7 @@ class MultiplexerOps:
157
161
  native_name: NativeName | None = None,
158
162
  read_item: ReadItem | None = None,
159
163
  prime: Prime | None = None,
164
+ refresh: Refresh | None = None,
160
165
  pin_store: PinStore | None = None,
161
166
  coverage_registry: CoverageRegistry | None = None,
162
167
  coverage_endpoints: CoverageEndpoints | None = None,
@@ -164,6 +169,7 @@ class MultiplexerOps:
164
169
  ) -> None:
165
170
  self.catalog = catalog
166
171
  self._prime = prime or _no_prime
172
+ self._refresh = refresh
167
173
  self.sessions = sessions
168
174
  self._loadable = loadable
169
175
  self._mount = mount
@@ -190,13 +196,14 @@ class MultiplexerOps:
190
196
  # target's live probe does. Without it a read-only tool resolves as
191
197
  # a write, and the caller never learns the tool's parameters.
192
198
  await self._prime((server,))
193
- item = await self.catalog._raw_get(f"fleet:tool:{server}/{tool}")
194
- if (
195
- item is None
196
- or item.kind != "tool"
197
- or item.server != server
198
- or item.name != tool
199
- ):
199
+ item = await self._tool_item(server, tool)
200
+ if item is None and self._refresh is not None:
201
+ # ARBORA-FLEET-R071: authority is the current catalog. A tool the
202
+ # cached catalog does not hold is re-read from its server once
203
+ # (throttled per server) before the call is refused.
204
+ await self._refresh((server,))
205
+ item = await self._tool_item(server, tool)
206
+ if item is None:
200
207
  raise PermissionError("fleet tool is unavailable")
201
208
  if not item.required_scopes.issubset(caller.effective_scopes):
202
209
  raise PermissionError("child scopes are required")
@@ -207,6 +214,40 @@ class MultiplexerOps:
207
214
  raise PermissionError("fleet call denied by policy")
208
215
  return item
209
216
 
217
+ async def _tool_item(self, server: str, tool: str) -> CatalogItem | None:
218
+ item = await self.catalog._raw_get(f"fleet:tool:{server}/{tool}")
219
+ if (
220
+ item is None
221
+ or item.kind != "tool"
222
+ or item.server != server
223
+ or item.name != tool
224
+ ):
225
+ return None
226
+ return item
227
+
228
+ async def refresh_catalog(
229
+ self, caller: Any, *, servers: Iterable[str] = ()
230
+ ) -> dict[str, Any]:
231
+ """Re-read the named servers' catalogs now, without a restart.
232
+
233
+ ARBORA-FLEET-R070: the explicit refresh. Each server answers its tool
234
+ count and probe error; a changed catalog is re-onboarded into the
235
+ engine through the handshake. The op's own scopes gate the caller.
236
+ """
237
+ from arbora.api.invoke.pipeline import OperationRefused
238
+
239
+ named = tuple(dict.fromkeys(servers))
240
+ if not 1 <= len(named) <= MAX_REFRESH_SERVERS:
241
+ raise OperationRefused(
242
+ "INVALID_ARGUMENT",
243
+ {"reason": f"name 1..{MAX_REFRESH_SERVERS} servers"},
244
+ )
245
+ if self._refresh is None:
246
+ raise OperationRefused(
247
+ "UNAVAILABLE", {"reason": "the catalog refresh is unavailable"}
248
+ )
249
+ return {"servers": dict(await self._refresh(named))}
250
+
210
251
  async def admitted_surface_item(
211
252
  self, caller: Any, family: str, server: str, ident: str
212
253
  ) -> CatalogItem:
@@ -95,6 +95,10 @@ class LateFleetGateway:
95
95
  with _caller_session(caller):
96
96
  return await self._bound().unpin(caller, **params)
97
97
 
98
+ async def catalog_refresh(self, caller: Any, **params: Any) -> Any:
99
+ with _caller_session(caller):
100
+ return await self._bound().catalog_refresh(caller, **params)
101
+
98
102
  async def pins_list(self, caller: Any, **params: Any) -> Any:
99
103
  with _caller_session(caller):
100
104
  return await self._bound().pins_list(caller, **params)