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