arbora 0.1.8__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 (807) hide show
  1. arbora-0.1.8/LICENSE +21 -0
  2. arbora-0.1.8/PKG-INFO +232 -0
  3. arbora-0.1.8/README.md +132 -0
  4. arbora-0.1.8/arbora/__init__.py +29 -0
  5. arbora-0.1.8/arbora/a2a/__init__.py +94 -0
  6. arbora-0.1.8/arbora/a2a/admission.py +116 -0
  7. arbora-0.1.8/arbora/a2a/anonymous.py +458 -0
  8. arbora-0.1.8/arbora/a2a/anonymous_native.py +84 -0
  9. arbora-0.1.8/arbora/a2a/anonymous_send.py +848 -0
  10. arbora-0.1.8/arbora/a2a/application.py +537 -0
  11. arbora-0.1.8/arbora/a2a/approval.py +152 -0
  12. arbora-0.1.8/arbora/a2a/authority.py +1169 -0
  13. arbora-0.1.8/arbora/a2a/composition.py +51 -0
  14. arbora-0.1.8/arbora/a2a/mcp.py +105 -0
  15. arbora-0.1.8/arbora/a2a/models.py +389 -0
  16. arbora-0.1.8/arbora/a2a/routing.py +73 -0
  17. arbora-0.1.8/arbora/a2a/run_usage.py +128 -0
  18. arbora-0.1.8/arbora/a2a/sdk_app.py +124 -0
  19. arbora-0.1.8/arbora/a2a/service.py +154 -0
  20. arbora-0.1.8/arbora/a2a/terminal_event.py +169 -0
  21. arbora-0.1.8/arbora/a2a/tool_task.py +321 -0
  22. arbora-0.1.8/arbora/a2a/tool_task_dispatch.py +111 -0
  23. arbora-0.1.8/arbora/a2a/tool_task_requests.py +174 -0
  24. arbora-0.1.8/arbora/a2a/work_items.py +98 -0
  25. arbora-0.1.8/arbora/access/__init__.py +1 -0
  26. arbora-0.1.8/arbora/access/action_policy.py +1467 -0
  27. arbora-0.1.8/arbora/access/action_policy_source.py +215 -0
  28. arbora-0.1.8/arbora/access/approval.py +94 -0
  29. arbora-0.1.8/arbora/access/assurance.py +247 -0
  30. arbora-0.1.8/arbora/access/external_policy_sync.py +754 -0
  31. arbora-0.1.8/arbora/access/policy_state.py +18 -0
  32. arbora-0.1.8/arbora/access/service.py +176 -0
  33. arbora-0.1.8/arbora/access/task_guard.py +21 -0
  34. arbora-0.1.8/arbora/acp/__init__.py +42 -0
  35. arbora-0.1.8/arbora/acp/adapter.py +462 -0
  36. arbora-0.1.8/arbora/acp/central_runtime.py +282 -0
  37. arbora-0.1.8/arbora/acp/coding_session.py +123 -0
  38. arbora-0.1.8/arbora/acp/http_transport.py +485 -0
  39. arbora-0.1.8/arbora/acp/local_history.py +159 -0
  40. arbora-0.1.8/arbora/acp/local_runtime.py +144 -0
  41. arbora-0.1.8/arbora/acp/session_policy.py +164 -0
  42. arbora-0.1.8/arbora/acp/stdio_transport.py +55 -0
  43. arbora-0.1.8/arbora/agent_host/__init__.py +428 -0
  44. arbora-0.1.8/arbora/agent_host/host_start.py +191 -0
  45. arbora-0.1.8/arbora/agent_host/log_access.py +346 -0
  46. arbora-0.1.8/arbora/agent_host/log_replay.py +170 -0
  47. arbora-0.1.8/arbora/agent_host/log_routes.py +202 -0
  48. arbora-0.1.8/arbora/agent_host/log_runtime.py +82 -0
  49. arbora-0.1.8/arbora/agent_host/log_sink.py +284 -0
  50. arbora-0.1.8/arbora/agent_host/managed_web.py +63 -0
  51. arbora-0.1.8/arbora/agent_host/start_admission.py +474 -0
  52. arbora-0.1.8/arbora/agent_host/start_configuration.py +145 -0
  53. arbora-0.1.8/arbora/agent_runs.py +624 -0
  54. arbora-0.1.8/arbora/api/__init__.py +19 -0
  55. arbora-0.1.8/arbora/api/contracts/__init__.py +115 -0
  56. arbora-0.1.8/arbora/api/contracts/agent_control_contracts.py +307 -0
  57. arbora-0.1.8/arbora/api/contracts/agent_control_plane.py +510 -0
  58. arbora-0.1.8/arbora/api/contracts/catalog.py +388 -0
  59. arbora-0.1.8/arbora/api/contracts/messaging.py +40 -0
  60. arbora-0.1.8/arbora/api/contracts/provisioning.py +257 -0
  61. arbora-0.1.8/arbora/api/engine_errors.py +350 -0
  62. arbora-0.1.8/arbora/api/errors.py +598 -0
  63. arbora-0.1.8/arbora/api/evidence/__init__.py +5 -0
  64. arbora-0.1.8/arbora/api/evidence/bundle.py +1077 -0
  65. arbora-0.1.8/arbora/api/evidence/contradiction.py +353 -0
  66. arbora-0.1.8/arbora/api/http/__init__.py +6 -0
  67. arbora-0.1.8/arbora/api/http/app.py +306 -0
  68. arbora-0.1.8/arbora/api/http/auth.py +257 -0
  69. arbora-0.1.8/arbora/api/http/browser_app.py +183 -0
  70. arbora-0.1.8/arbora/api/http/browser_auth.py +132 -0
  71. arbora-0.1.8/arbora/api/http/checkout.py +302 -0
  72. arbora-0.1.8/arbora/api/http/openapi.py +57 -0
  73. arbora-0.1.8/arbora/api/http/protocol_routes.py +35 -0
  74. arbora-0.1.8/arbora/api/http/routes.py +194 -0
  75. arbora-0.1.8/arbora/api/invoke/__init__.py +14 -0
  76. arbora-0.1.8/arbora/api/invoke/audit.py +67 -0
  77. arbora-0.1.8/arbora/api/invoke/bootstrap.py +337 -0
  78. arbora-0.1.8/arbora/api/invoke/eg_audit.py +201 -0
  79. arbora-0.1.8/arbora/api/invoke/executor.py +314 -0
  80. arbora-0.1.8/arbora/api/invoke/pipeline.py +1088 -0
  81. arbora-0.1.8/arbora/api/invoke/plan.py +232 -0
  82. arbora-0.1.8/arbora/api/invoke/privacy.py +55 -0
  83. arbora-0.1.8/arbora/api/invoke/steps.py +321 -0
  84. arbora-0.1.8/arbora/api/mcp/__init__.py +5 -0
  85. arbora-0.1.8/arbora/api/mcp/caller.py +194 -0
  86. arbora-0.1.8/arbora/api/mcp/discovery.py +261 -0
  87. arbora-0.1.8/arbora/api/mcp/registration.py +254 -0
  88. arbora-0.1.8/arbora/api/mcp/resolve.py +461 -0
  89. arbora-0.1.8/arbora/api/mcp/resources.py +58 -0
  90. arbora-0.1.8/arbora/api/mcp/serving.py +80 -0
  91. arbora-0.1.8/arbora/api/mcp/verbs.py +496 -0
  92. arbora-0.1.8/arbora/api/ops/__init__.py +8 -0
  93. arbora-0.1.8/arbora/api/ops/_common.py +166 -0
  94. arbora-0.1.8/arbora/api/ops/access.py +232 -0
  95. arbora-0.1.8/arbora/api/ops/agents.py +186 -0
  96. arbora-0.1.8/arbora/api/ops/browser.py +109 -0
  97. arbora-0.1.8/arbora/api/ops/capacity.py +146 -0
  98. arbora-0.1.8/arbora/api/ops/decide.py +90 -0
  99. arbora-0.1.8/arbora/api/ops/federation.py +187 -0
  100. arbora-0.1.8/arbora/api/ops/fleet.py +512 -0
  101. arbora-0.1.8/arbora/api/ops/fleet_deploy_watch.py +94 -0
  102. arbora-0.1.8/arbora/api/ops/ingest.py +404 -0
  103. arbora-0.1.8/arbora/api/ops/memory.py +321 -0
  104. arbora-0.1.8/arbora/api/ops/messaging.py +188 -0
  105. arbora-0.1.8/arbora/api/ops/models.py +86 -0
  106. arbora-0.1.8/arbora/api/ops/ops.py +273 -0
  107. arbora-0.1.8/arbora/api/ops/plans.py +1109 -0
  108. arbora-0.1.8/arbora/api/ops/policy.py +71 -0
  109. arbora-0.1.8/arbora/api/ops/prompts.py +341 -0
  110. arbora-0.1.8/arbora/api/ops/query.py +44 -0
  111. arbora-0.1.8/arbora/api/ops/query_engine.py +104 -0
  112. arbora-0.1.8/arbora/api/ops/query_federation.py +630 -0
  113. arbora-0.1.8/arbora/api/ops/registry_factory.py +100 -0
  114. arbora-0.1.8/arbora/api/ops/research.py +845 -0
  115. arbora-0.1.8/arbora/api/ops/retrieval.py +151 -0
  116. arbora-0.1.8/arbora/api/ops/run_graph.py +238 -0
  117. arbora-0.1.8/arbora/api/ops/run_replay.py +219 -0
  118. arbora-0.1.8/arbora/api/ops/runs.py +193 -0
  119. arbora-0.1.8/arbora/api/ops/security.py +71 -0
  120. arbora-0.1.8/arbora/api/ops/source.py +442 -0
  121. arbora-0.1.8/arbora/api/ops/swarm.py +70 -0
  122. arbora-0.1.8/arbora/api/ops/telemetry.py +70 -0
  123. arbora-0.1.8/arbora/api/ops/usage.py +70 -0
  124. arbora-0.1.8/arbora/api/ops/work.py +134 -0
  125. arbora-0.1.8/arbora/api/ops/write_back.py +79 -0
  126. arbora-0.1.8/arbora/api/ops/write_back_models.py +118 -0
  127. arbora-0.1.8/arbora/api/policy/__init__.py +17 -0
  128. arbora-0.1.8/arbora/api/policy/cache.py +46 -0
  129. arbora-0.1.8/arbora/api/policy/default_policy.json +25 -0
  130. arbora-0.1.8/arbora/api/policy/defaults.py +25 -0
  131. arbora-0.1.8/arbora/api/policy/domain_scopes.py +85 -0
  132. arbora-0.1.8/arbora/api/policy/eunomia.py +348 -0
  133. arbora-0.1.8/arbora/api/policy/pdp_remote.py +266 -0
  134. arbora-0.1.8/arbora/api/registry/__init__.py +75 -0
  135. arbora-0.1.8/arbora/api/registry/digest.py +95 -0
  136. arbora-0.1.8/arbora/api/registry/eg_binding.py +370 -0
  137. arbora-0.1.8/arbora/api/registry/eg_exclusions.yaml +7 -0
  138. arbora-0.1.8/arbora/api/registry/registry.py +122 -0
  139. arbora-0.1.8/arbora/api/registry/scopes.py +48 -0
  140. arbora-0.1.8/arbora/api/registry/spec.py +219 -0
  141. arbora-0.1.8/arbora/api/registry/surface_gate.py +145 -0
  142. arbora-0.1.8/arbora/api/task_plan_schema.py +400 -0
  143. arbora-0.1.8/arbora/architecture/__init__.py +1 -0
  144. arbora-0.1.8/arbora/architecture/boundary_census.py +153 -0
  145. arbora-0.1.8/arbora/architecture/capability_layers.py +88 -0
  146. arbora-0.1.8/arbora/browser_control/__init__.py +5 -0
  147. arbora-0.1.8/arbora/browser_control/browser_control_api.py +274 -0
  148. arbora-0.1.8/arbora/browser_control/browser_control_attendance.py +114 -0
  149. arbora-0.1.8/arbora/browser_control/browser_control_attendance_api.py +112 -0
  150. arbora-0.1.8/arbora/browser_control/browser_control_attended.py +212 -0
  151. arbora-0.1.8/arbora/browser_control/browser_control_binding.py +147 -0
  152. arbora-0.1.8/arbora/browser_control/browser_control_cancellation.py +166 -0
  153. arbora-0.1.8/arbora/browser_control/browser_control_channel.py +315 -0
  154. arbora-0.1.8/arbora/browser_control/browser_control_client.py +106 -0
  155. arbora-0.1.8/arbora/browser_control/browser_control_common.py +210 -0
  156. arbora-0.1.8/arbora/browser_control/browser_control_descriptor.py +81 -0
  157. arbora-0.1.8/arbora/browser_control/browser_control_dispatch.py +264 -0
  158. arbora-0.1.8/arbora/browser_control/browser_control_durability.py +336 -0
  159. arbora-0.1.8/arbora/browser_control/browser_control_lease.py +245 -0
  160. arbora-0.1.8/arbora/browser_control/browser_control_outcome.py +302 -0
  161. arbora-0.1.8/arbora/browser_control/browser_control_policy.py +159 -0
  162. arbora-0.1.8/arbora/browser_control/browser_control_port.py +21 -0
  163. arbora-0.1.8/arbora/browser_control/browser_control_proposals.py +314 -0
  164. arbora-0.1.8/arbora/browser_control/browser_control_provenance.py +267 -0
  165. arbora-0.1.8/arbora/browser_control/browser_control_registration.py +324 -0
  166. arbora-0.1.8/arbora/browser_control/browser_control_runtime.py +154 -0
  167. arbora-0.1.8/arbora/browser_control/browser_control_server.py +113 -0
  168. arbora-0.1.8/arbora/browser_control/browser_control_service.py +207 -0
  169. arbora-0.1.8/arbora/browser_control/browser_control_state.py +212 -0
  170. arbora-0.1.8/arbora/browser_control/browser_control_validation.py +148 -0
  171. arbora-0.1.8/arbora/browser_control/mcp.py +42 -0
  172. arbora-0.1.8/arbora/browser_control/trace_bundle.py +301 -0
  173. arbora-0.1.8/arbora/certification/__init__.py +5 -0
  174. arbora-0.1.8/arbora/certification/oidc.py +988 -0
  175. arbora-0.1.8/arbora/client/__init__.py +5 -0
  176. arbora-0.1.8/arbora/client/_models.py +27 -0
  177. arbora-0.1.8/arbora/client/browser_boundary.py +26 -0
  178. arbora-0.1.8/arbora/client/http.py +71 -0
  179. arbora-0.1.8/arbora/client/invoke.py +29 -0
  180. arbora-0.1.8/arbora/connector_runner.py +164 -0
  181. arbora-0.1.8/arbora/console.py +69 -0
  182. arbora-0.1.8/arbora/content.py +128 -0
  183. arbora-0.1.8/arbora/control_plane/__init__.py +7 -0
  184. arbora-0.1.8/arbora/control_plane/_model.py +11 -0
  185. arbora-0.1.8/arbora/control_plane/admission/__init__.py +6 -0
  186. arbora-0.1.8/arbora/control_plane/admission/models.py +57 -0
  187. arbora-0.1.8/arbora/control_plane/admission/service.py +69 -0
  188. arbora-0.1.8/arbora/control_plane/agents/__init__.py +93 -0
  189. arbora-0.1.8/arbora/control_plane/agents/models.py +804 -0
  190. arbora-0.1.8/arbora/control_plane/agents/repository.py +94 -0
  191. arbora-0.1.8/arbora/control_plane/agents/service.py +547 -0
  192. arbora-0.1.8/arbora/control_plane/connectors/__init__.py +103 -0
  193. arbora-0.1.8/arbora/control_plane/connectors/models.py +665 -0
  194. arbora-0.1.8/arbora/control_plane/connectors/repository.py +115 -0
  195. arbora-0.1.8/arbora/control_plane/connectors/service.py +477 -0
  196. arbora-0.1.8/arbora/control_plane/economics/__init__.py +104 -0
  197. arbora-0.1.8/arbora/control_plane/economics/models.py +1149 -0
  198. arbora-0.1.8/arbora/control_plane/economics/repository.py +341 -0
  199. arbora-0.1.8/arbora/control_plane/economics/service.py +518 -0
  200. arbora-0.1.8/arbora/control_plane/fleet_watch/__init__.py +26 -0
  201. arbora-0.1.8/arbora/control_plane/fleet_watch/service.py +86 -0
  202. arbora-0.1.8/arbora/control_plane/foundation/__init__.py +121 -0
  203. arbora-0.1.8/arbora/control_plane/foundation/models.py +829 -0
  204. arbora-0.1.8/arbora/control_plane/foundation/repository.py +161 -0
  205. arbora-0.1.8/arbora/control_plane/foundation/service.py +916 -0
  206. arbora-0.1.8/arbora/control_plane/migrations/__init__.py +89 -0
  207. arbora-0.1.8/arbora/control_plane/migrations/authority.py +918 -0
  208. arbora-0.1.8/arbora/control_plane/migrations/errors.py +53 -0
  209. arbora-0.1.8/arbora/control_plane/migrations/models.py +656 -0
  210. arbora-0.1.8/arbora/control_plane/policy/__init__.py +63 -0
  211. arbora-0.1.8/arbora/control_plane/policy/models.py +376 -0
  212. arbora-0.1.8/arbora/control_plane/policy/repository.py +445 -0
  213. arbora-0.1.8/arbora/control_plane/projection/__init__.py +95 -0
  214. arbora-0.1.8/arbora/control_plane/projection/authority.py +28 -0
  215. arbora-0.1.8/arbora/control_plane/projection/models.py +870 -0
  216. arbora-0.1.8/arbora/control_plane/projection/observability.py +15 -0
  217. arbora-0.1.8/arbora/control_plane/projection/projector.py +751 -0
  218. arbora-0.1.8/arbora/control_plane/projection/protocols.py +86 -0
  219. arbora-0.1.8/arbora/control_plane/projection/repository.py +164 -0
  220. arbora-0.1.8/arbora/control_plane/retrieval/__init__.py +85 -0
  221. arbora-0.1.8/arbora/control_plane/retrieval/errors.py +45 -0
  222. arbora-0.1.8/arbora/control_plane/retrieval/models.py +682 -0
  223. arbora-0.1.8/arbora/control_plane/retrieval/protocols.py +97 -0
  224. arbora-0.1.8/arbora/control_plane/retrieval/repository.py +176 -0
  225. arbora-0.1.8/arbora/control_plane/retrieval/service.py +321 -0
  226. arbora-0.1.8/arbora/control_plane/runs/__init__.py +71 -0
  227. arbora-0.1.8/arbora/control_plane/runs/admission.py +232 -0
  228. arbora-0.1.8/arbora/control_plane/runs/audit.py +134 -0
  229. arbora-0.1.8/arbora/control_plane/runs/capacity.py +129 -0
  230. arbora-0.1.8/arbora/control_plane/runs/models.py +381 -0
  231. arbora-0.1.8/arbora/control_plane/runs/observations.py +88 -0
  232. arbora-0.1.8/arbora/control_plane/sources/__init__.py +84 -0
  233. arbora-0.1.8/arbora/control_plane/sources/models.py +871 -0
  234. arbora-0.1.8/arbora/control_plane/sources/repository.py +84 -0
  235. arbora-0.1.8/arbora/control_plane/sources/service.py +502 -0
  236. arbora-0.1.8/arbora/control_plane/webui/__init__.py +102 -0
  237. arbora-0.1.8/arbora/control_plane/webui/errors.py +60 -0
  238. arbora-0.1.8/arbora/control_plane/webui/models.py +517 -0
  239. arbora-0.1.8/arbora/control_plane/webui/protocols.py +60 -0
  240. arbora-0.1.8/arbora/control_plane/webui/repository.py +559 -0
  241. arbora-0.1.8/arbora/control_plane/webui/service.py +442 -0
  242. arbora-0.1.8/arbora/control_plane/workflows/__init__.py +83 -0
  243. arbora-0.1.8/arbora/control_plane/workflows/domain.py +528 -0
  244. arbora-0.1.8/arbora/control_plane/workflows/repository.py +363 -0
  245. arbora-0.1.8/arbora/core/__init__.py +9 -0
  246. arbora-0.1.8/arbora/core/capability_contract.py +158 -0
  247. arbora-0.1.8/arbora/core/concurrency.py +142 -0
  248. arbora-0.1.8/arbora/core/config_admin.py +97 -0
  249. arbora-0.1.8/arbora/core/event_loop.py +164 -0
  250. arbora-0.1.8/arbora/core/httpx_boundary.py +157 -0
  251. arbora-0.1.8/arbora/core/priority.py +88 -0
  252. arbora-0.1.8/arbora/core/provider_materialization.py +711 -0
  253. arbora-0.1.8/arbora/core/providers.py +120 -0
  254. arbora-0.1.8/arbora/core/settings.py +1132 -0
  255. arbora-0.1.8/arbora/core/transport.py +224 -0
  256. arbora-0.1.8/arbora/current_plan_publication.py +292 -0
  257. arbora-0.1.8/arbora/data_migrations.py +256 -0
  258. arbora-0.1.8/arbora/deployment/__init__.py +140 -0
  259. arbora-0.1.8/arbora/deployment/certification_assets.py +394 -0
  260. arbora-0.1.8/arbora/deployment/cli.py +222 -0
  261. arbora-0.1.8/arbora/deployment/config_generator.py +1274 -0
  262. arbora-0.1.8/arbora/deployment/deployed_source.py +768 -0
  263. arbora-0.1.8/arbora/deployment/doctor.py +2433 -0
  264. arbora-0.1.8/arbora/deployment/doctor_certification.py +412 -0
  265. arbora-0.1.8/arbora/deployment/doctor_coverage.py +226 -0
  266. arbora-0.1.8/arbora/deployment/doctor_graph.py +305 -0
  267. arbora-0.1.8/arbora/deployment/doctor_lakehouse.py +660 -0
  268. arbora-0.1.8/arbora/deployment/doctor_observability.py +570 -0
  269. arbora-0.1.8/arbora/deployment/doctor_support.py +47 -0
  270. arbora-0.1.8/arbora/deployment/engine_lock.py +155 -0
  271. arbora-0.1.8/arbora/deployment/exit_criteria.py +69 -0
  272. arbora-0.1.8/arbora/deployment/file_lock.py +266 -0
  273. arbora-0.1.8/arbora/deployment/genesis_environments.py +1151 -0
  274. arbora-0.1.8/arbora/deployment/host_config.py +76 -0
  275. arbora-0.1.8/arbora/deployment/host_lock.py +250 -0
  276. arbora-0.1.8/arbora/deployment/kubernetes_first_boot.py +827 -0
  277. arbora-0.1.8/arbora/deployment/live_mount_guard.py +296 -0
  278. arbora-0.1.8/arbora/deployment/local_gates.py +83 -0
  279. arbora-0.1.8/arbora/deployment/preflight.py +462 -0
  280. arbora-0.1.8/arbora/deployment/production_ops.py +666 -0
  281. arbora-0.1.8/arbora/deployment/profile_guard.py +587 -0
  282. arbora-0.1.8/arbora/deployment/public_ingress_identity.py +208 -0
  283. arbora-0.1.8/arbora/deployment/release_canary.py +125 -0
  284. arbora-0.1.8/arbora/deployment/release_candidate.py +332 -0
  285. arbora-0.1.8/arbora/deployment/repo_templates.py +570 -0
  286. arbora-0.1.8/arbora/deployment/self_deploy.py +130 -0
  287. arbora-0.1.8/arbora/deployment/semantic_provisioning.py +555 -0
  288. arbora-0.1.8/arbora/deployment/venv_autosync.py +973 -0
  289. arbora-0.1.8/arbora/deployment/venv_sync.py +2918 -0
  290. arbora-0.1.8/arbora/deployment/venv_sync_types.py +257 -0
  291. arbora-0.1.8/arbora/deployment/webui_reference_model.py +101 -0
  292. arbora-0.1.8/arbora/ecosystem/__init__.py +12 -0
  293. arbora-0.1.8/arbora/ecosystem/agent_manager_dashboard.py +350 -0
  294. arbora-0.1.8/arbora/ecosystem/ard_federation.py +191 -0
  295. arbora-0.1.8/arbora/ecosystem/ard_registry.py +331 -0
  296. arbora-0.1.8/arbora/ecosystem/ard_signing.py +157 -0
  297. arbora-0.1.8/arbora/ecosystem/hook_installer.py +364 -0
  298. arbora-0.1.8/arbora/epistemic.py +545 -0
  299. arbora-0.1.8/arbora/evolution/__init__.py +5 -0
  300. arbora-0.1.8/arbora/evolution/wiring_sweep.py +918 -0
  301. arbora-0.1.8/arbora/finance/__init__.py +70 -0
  302. arbora-0.1.8/arbora/finance/alerts.py +79 -0
  303. arbora-0.1.8/arbora/finance/dca.py +104 -0
  304. arbora-0.1.8/arbora/finance/markets.py +116 -0
  305. arbora-0.1.8/arbora/finance/schedule.py +84 -0
  306. arbora-0.1.8/arbora/fleet/__init__.py +90 -0
  307. arbora-0.1.8/arbora/fleet/access_contracts.py +634 -0
  308. arbora-0.1.8/arbora/fleet/catalog_composition.py +284 -0
  309. arbora-0.1.8/arbora/fleet/catalog_graph.py +241 -0
  310. arbora-0.1.8/arbora/fleet/catalog_items.py +544 -0
  311. arbora-0.1.8/arbora/fleet/catalog_reader.py +752 -0
  312. arbora-0.1.8/arbora/fleet/catalog_sources.py +334 -0
  313. arbora-0.1.8/arbora/fleet/child_resilience.py +1408 -0
  314. arbora-0.1.8/arbora/fleet/client_toolsets.py +175 -0
  315. arbora-0.1.8/arbora/fleet/connector_count_pins.py +121 -0
  316. arbora-0.1.8/arbora/fleet/coverage.py +186 -0
  317. arbora-0.1.8/arbora/fleet/declarations.py +87 -0
  318. arbora-0.1.8/arbora/fleet/discovery_authority.py +78 -0
  319. arbora-0.1.8/arbora/fleet/discovery_ranking.py +106 -0
  320. arbora-0.1.8/arbora/fleet/epistemic_adapter.py +270 -0
  321. arbora-0.1.8/arbora/fleet/error_budget.py +232 -0
  322. arbora-0.1.8/arbora/fleet/feeds.py +98 -0
  323. arbora-0.1.8/arbora/fleet/gateway_ops.py +849 -0
  324. arbora-0.1.8/arbora/fleet/health.py +583 -0
  325. arbora-0.1.8/arbora/fleet/local_skill_catalog.py +196 -0
  326. arbora-0.1.8/arbora/fleet/mcp_catalog.py +29 -0
  327. arbora-0.1.8/arbora/fleet/mcp_resource_reconciliation.py +147 -0
  328. arbora-0.1.8/arbora/fleet/multiplexer.py +7753 -0
  329. arbora-0.1.8/arbora/fleet/multiplexer_ops.py +1200 -0
  330. arbora-0.1.8/arbora/fleet/oauth_brokers.py +150 -0
  331. arbora-0.1.8/arbora/fleet/onboarding.py +1321 -0
  332. arbora-0.1.8/arbora/fleet/pin_store.py +300 -0
  333. arbora-0.1.8/arbora/fleet/plan_confirmation.py +122 -0
  334. arbora-0.1.8/arbora/fleet/protocol_compat.py +487 -0
  335. arbora-0.1.8/arbora/fleet/remote_oauth_broker.py +1521 -0
  336. arbora-0.1.8/arbora/fleet/scaling/__init__.py +26 -0
  337. arbora-0.1.8/arbora/fleet/scaling/_model.py +11 -0
  338. arbora-0.1.8/arbora/fleet/scaling/development_lane.py +200 -0
  339. arbora-0.1.8/arbora/fleet/scaling/resource_pool_authority.py +1149 -0
  340. arbora-0.1.8/arbora/fleet/scaling/resource_reservation.py +151 -0
  341. arbora-0.1.8/arbora/fleet/scaling/scaling_authority.py +1086 -0
  342. arbora-0.1.8/arbora/fleet/scaling/scaling_intent_reconciler.py +1501 -0
  343. arbora-0.1.8/arbora/fleet/scaling/scaling_signal_authority.py +1018 -0
  344. arbora-0.1.8/arbora/fleet/scaling/service_scale_units.py +1850 -0
  345. arbora-0.1.8/arbora/fleet/service_child.py +363 -0
  346. arbora-0.1.8/arbora/fleet/session_loads.py +340 -0
  347. arbora-0.1.8/arbora/fleet/session_notifications.py +37 -0
  348. arbora-0.1.8/arbora/fleet/shared_multiplexer.py +160 -0
  349. arbora-0.1.8/arbora/fleet/source_executor.py +715 -0
  350. arbora-0.1.8/arbora/fleet/state.py +56 -0
  351. arbora-0.1.8/arbora/fleet/surfaces.py +84 -0
  352. arbora-0.1.8/arbora/fleet/throttle_service.py +84 -0
  353. arbora-0.1.8/arbora/fleet/virtual_catalog.py +276 -0
  354. arbora-0.1.8/arbora/fleet_tool_call.py +100 -0
  355. arbora-0.1.8/arbora/gateway/__init__.py +45 -0
  356. arbora-0.1.8/arbora/gateway/aggregator.py +241 -0
  357. arbora-0.1.8/arbora/gateway/config.py +579 -0
  358. arbora-0.1.8/arbora/gateway/daemon.py +326 -0
  359. arbora-0.1.8/arbora/gateway/dashboard_api.py +407 -0
  360. arbora-0.1.8/arbora/gateway/enhanced_catalog_api.py +320 -0
  361. arbora-0.1.8/arbora/gateway/fleet.py +565 -0
  362. arbora-0.1.8/arbora/gateway/fleet_events.py +504 -0
  363. arbora-0.1.8/arbora/gateway/graph_api.py +329 -0
  364. arbora-0.1.8/arbora/gateway/models.py +232 -0
  365. arbora-0.1.8/arbora/gateway/ontology_api.py +495 -0
  366. arbora-0.1.8/arbora/gateway/ports.py +64 -0
  367. arbora-0.1.8/arbora/gateway/rate_limit.py +190 -0
  368. arbora-0.1.8/arbora/gateway/registry.py +206 -0
  369. arbora-0.1.8/arbora/gateway/registry_api.py +1690 -0
  370. arbora-0.1.8/arbora/gateway/remote_oauth_api.py +435 -0
  371. arbora-0.1.8/arbora/gateway/schema_context_api.py +81 -0
  372. arbora-0.1.8/arbora/gateway/schema_context_service.py +53 -0
  373. arbora-0.1.8/arbora/gateway/schemas/__init__.py +7 -0
  374. arbora-0.1.8/arbora/gateway/schemas/connector.py +67 -0
  375. arbora-0.1.8/arbora/gateway/schemas/graph_core.py +791 -0
  376. arbora-0.1.8/arbora/gateway/schemas/schema_context.py +121 -0
  377. arbora-0.1.8/arbora/gateway/widgets/__init__.py +5 -0
  378. arbora-0.1.8/arbora/gateway/widgets/ansible_tower.py +59 -0
  379. arbora-0.1.8/arbora/gateway/widgets/archivebox.py +46 -0
  380. arbora-0.1.8/arbora/gateway/widgets/aris.py +47 -0
  381. arbora-0.1.8/arbora/gateway/widgets/arr.py +40 -0
  382. arbora-0.1.8/arbora/gateway/widgets/atlassian.py +44 -0
  383. arbora-0.1.8/arbora/gateway/widgets/audio_transcriber.py +35 -0
  384. arbora-0.1.8/arbora/gateway/widgets/audiobookshelf.py +47 -0
  385. arbora-0.1.8/arbora/gateway/widgets/base.py +374 -0
  386. arbora-0.1.8/arbora/gateway/widgets/caddy.py +96 -0
  387. arbora-0.1.8/arbora/gateway/widgets/camunda.py +58 -0
  388. arbora-0.1.8/arbora/gateway/widgets/ciso_assistant.py +62 -0
  389. arbora-0.1.8/arbora/gateway/widgets/clarity.py +45 -0
  390. arbora-0.1.8/arbora/gateway/widgets/container_manager.py +52 -0
  391. arbora-0.1.8/arbora/gateway/widgets/data_science.py +33 -0
  392. arbora-0.1.8/arbora/gateway/widgets/dockerhub.py +50 -0
  393. arbora-0.1.8/arbora/gateway/widgets/documentdb.py +48 -0
  394. arbora-0.1.8/arbora/gateway/widgets/ear.py +57 -0
  395. arbora-0.1.8/arbora/gateway/widgets/egeria.py +54 -0
  396. arbora-0.1.8/arbora/gateway/widgets/emerald_exchange.py +32 -0
  397. arbora-0.1.8/arbora/gateway/widgets/erpnext.py +52 -0
  398. arbora-0.1.8/arbora/gateway/widgets/fan_manager.py +59 -0
  399. arbora-0.1.8/arbora/gateway/widgets/firefly_iii.py +47 -0
  400. arbora-0.1.8/arbora/gateway/widgets/fleet_client.py +260 -0
  401. arbora-0.1.8/arbora/gateway/widgets/freshrss.py +69 -0
  402. arbora-0.1.8/arbora/gateway/widgets/github.py +45 -0
  403. arbora-0.1.8/arbora/gateway/widgets/gitlab.py +74 -0
  404. arbora-0.1.8/arbora/gateway/widgets/google_workspace.py +29 -0
  405. arbora-0.1.8/arbora/gateway/widgets/gramps.py +54 -0
  406. arbora-0.1.8/arbora/gateway/widgets/hdhomerun.py +46 -0
  407. arbora-0.1.8/arbora/gateway/widgets/home_assistant.py +61 -0
  408. arbora-0.1.8/arbora/gateway/widgets/jellyfin.py +63 -0
  409. arbora-0.1.8/arbora/gateway/widgets/jena.py +42 -0
  410. arbora-0.1.8/arbora/gateway/widgets/kafka.py +57 -0
  411. arbora-0.1.8/arbora/gateway/widgets/keycloak.py +56 -0
  412. arbora-0.1.8/arbora/gateway/widgets/langfuse.py +59 -0
  413. arbora-0.1.8/arbora/gateway/widgets/leanix.py +58 -0
  414. arbora-0.1.8/arbora/gateway/widgets/legal_peripherals.py +30 -0
  415. arbora-0.1.8/arbora/gateway/widgets/lgtm.py +65 -0
  416. arbora-0.1.8/arbora/gateway/widgets/listmonk.py +53 -0
  417. arbora-0.1.8/arbora/gateway/widgets/mattermost.py +55 -0
  418. arbora-0.1.8/arbora/gateway/widgets/mealie.py +56 -0
  419. arbora-0.1.8/arbora/gateway/widgets/media_downloader.py +48 -0
  420. arbora-0.1.8/arbora/gateway/widgets/microsoft.py +45 -0
  421. arbora-0.1.8/arbora/gateway/widgets/nextcloud.py +59 -0
  422. arbora-0.1.8/arbora/gateway/widgets/okta.py +47 -0
  423. arbora-0.1.8/arbora/gateway/widgets/ollama.py +54 -0
  424. arbora-0.1.8/arbora/gateway/widgets/onetrust.py +46 -0
  425. arbora-0.1.8/arbora/gateway/widgets/openbao.py +49 -0
  426. arbora-0.1.8/arbora/gateway/widgets/orchestrator.py +34 -0
  427. arbora-0.1.8/arbora/gateway/widgets/owncast.py +48 -0
  428. arbora-0.1.8/arbora/gateway/widgets/paperless_ngx.py +46 -0
  429. arbora-0.1.8/arbora/gateway/widgets/plane.py +56 -0
  430. arbora-0.1.8/arbora/gateway/widgets/portainer.py +99 -0
  431. arbora-0.1.8/arbora/gateway/widgets/postiz.py +50 -0
  432. arbora-0.1.8/arbora/gateway/widgets/pulselink.py +46 -0
  433. arbora-0.1.8/arbora/gateway/widgets/qbittorrent.py +55 -0
  434. arbora-0.1.8/arbora/gateway/widgets/repository_manager.py +44 -0
  435. arbora-0.1.8/arbora/gateway/widgets/rom_manager.py +63 -0
  436. arbora-0.1.8/arbora/gateway/widgets/scholarx.py +36 -0
  437. arbora-0.1.8/arbora/gateway/widgets/searxng.py +49 -0
  438. arbora-0.1.8/arbora/gateway/widgets/sentry.py +58 -0
  439. arbora-0.1.8/arbora/gateway/widgets/servicenow.py +54 -0
  440. arbora-0.1.8/arbora/gateway/widgets/stirlingpdf.py +45 -0
  441. arbora-0.1.8/arbora/gateway/widgets/systems_manager.py +36 -0
  442. arbora-0.1.8/arbora/gateway/widgets/technitium.py +73 -0
  443. arbora-0.1.8/arbora/gateway/widgets/teleport.py +28 -0
  444. arbora-0.1.8/arbora/gateway/widgets/tunnel_manager.py +44 -0
  445. arbora-0.1.8/arbora/gateway/widgets/twenty.py +44 -0
  446. arbora-0.1.8/arbora/gateway/widgets/uptime_kuma.py +71 -0
  447. arbora-0.1.8/arbora/gateway/widgets/vector_db.py +64 -0
  448. arbora-0.1.8/arbora/gateway/widgets/wger.py +50 -0
  449. arbora-0.1.8/arbora/gateway/widgets/zulip.py +58 -0
  450. arbora-0.1.8/arbora/harness_plugins/__init__.py +1 -0
  451. arbora-0.1.8/arbora/harness_plugins/cli.py +319 -0
  452. arbora-0.1.8/arbora/harness_plugins/compose.py +176 -0
  453. arbora-0.1.8/arbora/harness_plugins/hook_runner.py +108 -0
  454. arbora-0.1.8/arbora/harness_plugins/install.py +322 -0
  455. arbora-0.1.8/arbora/harness_plugins/login.py +311 -0
  456. arbora-0.1.8/arbora/harness_plugins/profiles.py +151 -0
  457. arbora-0.1.8/arbora/harness_plugins/render.py +314 -0
  458. arbora-0.1.8/arbora/harness_plugins/templates/opencode/server.ts +134 -0
  459. arbora-0.1.8/arbora/harness_plugins/validate.py +69 -0
  460. arbora-0.1.8/arbora/host_bindings.py +333 -0
  461. arbora-0.1.8/arbora/identity/__init__.py +28 -0
  462. arbora-0.1.8/arbora/identity/admin_console.py +54 -0
  463. arbora-0.1.8/arbora/identity/admission.py +92 -0
  464. arbora-0.1.8/arbora/identity/api_keys.py +54 -0
  465. arbora-0.1.8/arbora/identity/approval.py +224 -0
  466. arbora-0.1.8/arbora/identity/approval_engine.py +150 -0
  467. arbora-0.1.8/arbora/identity/approval_registration.py +145 -0
  468. arbora-0.1.8/arbora/identity/bootstrap.py +76 -0
  469. arbora-0.1.8/arbora/identity/broker.py +304 -0
  470. arbora-0.1.8/arbora/identity/browser.py +261 -0
  471. arbora-0.1.8/arbora/identity/browser_broker.py +70 -0
  472. arbora-0.1.8/arbora/identity/browser_composition.py +168 -0
  473. arbora-0.1.8/arbora/identity/browser_runtime.py +382 -0
  474. arbora-0.1.8/arbora/identity/client_contract.py +769 -0
  475. arbora-0.1.8/arbora/identity/client_entry_points.py +70 -0
  476. arbora-0.1.8/arbora/identity/composition.py +70 -0
  477. arbora-0.1.8/arbora/identity/engine.py +213 -0
  478. arbora-0.1.8/arbora/identity/engine_ports.py +100 -0
  479. arbora-0.1.8/arbora/identity/issuer.py +184 -0
  480. arbora-0.1.8/arbora/identity/ldap.py +140 -0
  481. arbora-0.1.8/arbora/identity/local_browser.py +99 -0
  482. arbora-0.1.8/arbora/identity/mail_capability.py +88 -0
  483. arbora-0.1.8/arbora/identity/mfa.py +77 -0
  484. arbora-0.1.8/arbora/identity/oidc.py +142 -0
  485. arbora-0.1.8/arbora/identity/ports.py +133 -0
  486. arbora-0.1.8/arbora/identity/saml.py +173 -0
  487. arbora-0.1.8/arbora/identity/scim.py +132 -0
  488. arbora-0.1.8/arbora/ingest/__init__.py +32 -0
  489. arbora-0.1.8/arbora/ingest/connector_sources.py +592 -0
  490. arbora-0.1.8/arbora/ingest/service.py +450 -0
  491. arbora-0.1.8/arbora/ingest/source_catalog.py +1002 -0
  492. arbora-0.1.8/arbora/local_browser_boundary.py +98 -0
  493. arbora-0.1.8/arbora/local_browser_channel.py +403 -0
  494. arbora-0.1.8/arbora/mcp_server/__init__.py +15 -0
  495. arbora-0.1.8/arbora/mcp_server/agent_control.py +51 -0
  496. arbora-0.1.8/arbora/mcp_server/arbora_operations.json +1675 -0
  497. arbora-0.1.8/arbora/mcp_server/backing/__init__.py +20 -0
  498. arbora-0.1.8/arbora/mcp_server/backing/_arbora_action_manifest.py +2242 -0
  499. arbora-0.1.8/arbora/mcp_server/backing/action_dispatch.py +256 -0
  500. arbora-0.1.8/arbora/mcp_server/backing/agent_config_admin.py +579 -0
  501. arbora-0.1.8/arbora/mcp_server/backing/arbora_capabilities.json +23321 -0
  502. arbora-0.1.8/arbora/mcp_server/backing/arbora_surface.py +315 -0
  503. arbora-0.1.8/arbora/mcp_server/backing/connector_surface.py +244 -0
  504. arbora-0.1.8/arbora/mcp_server/backing/context_helpers.py +406 -0
  505. arbora-0.1.8/arbora/mcp_server/backing/delegated_auth.py +580 -0
  506. arbora-0.1.8/arbora/mcp_server/backing/engine_routing.py +1067 -0
  507. arbora-0.1.8/arbora/mcp_server/backing/engine_surface_types.py +67 -0
  508. arbora-0.1.8/arbora/mcp_server/backing/eunomia_principal.py +807 -0
  509. arbora-0.1.8/arbora/mcp_server/backing/intent_contract.py +221 -0
  510. arbora-0.1.8/arbora/mcp_server/backing/middlewares.py +245 -0
  511. arbora-0.1.8/arbora/mcp_server/backing/oauth_log_hygiene.py +100 -0
  512. arbora-0.1.8/arbora/mcp_server/backing/ontology_types.py +30 -0
  513. arbora-0.1.8/arbora/mcp_server/backing/optional_tool_features.py +44 -0
  514. arbora-0.1.8/arbora/mcp_server/backing/server_factory.py +2572 -0
  515. arbora-0.1.8/arbora/mcp_server/backing/skill_coverage.py +553 -0
  516. arbora-0.1.8/arbora/mcp_server/backing/tasks_extension.py +1400 -0
  517. arbora-0.1.8/arbora/mcp_server/backing/tool_specs.py +349 -0
  518. arbora-0.1.8/arbora/mcp_server/backing/tools/__init__.py +51 -0
  519. arbora-0.1.8/arbora/mcp_server/backing/tools/_surface_selection.py +37 -0
  520. arbora-0.1.8/arbora/mcp_server/backing/tools/analysis_tools.py +2668 -0
  521. arbora-0.1.8/arbora/mcp_server/backing/tools/analyze_suite.py +220 -0
  522. arbora-0.1.8/arbora/mcp_server/backing/tools/audit_tools.py +106 -0
  523. arbora-0.1.8/arbora/mcp_server/backing/tools/candidate_claim_tools.py +173 -0
  524. arbora-0.1.8/arbora/mcp_server/backing/tools/compliance_tools.py +398 -0
  525. arbora-0.1.8/arbora/mcp_server/backing/tools/config_tools.py +111 -0
  526. arbora-0.1.8/arbora/mcp_server/backing/tools/domain_ops_tools.py +114 -0
  527. arbora-0.1.8/arbora/mcp_server/backing/tools/engine_surface_tools.py +3627 -0
  528. arbora-0.1.8/arbora/mcp_server/backing/tools/engine_tools.py +715 -0
  529. arbora-0.1.8/arbora/mcp_server/backing/tools/epistemic_tools.py +265 -0
  530. arbora-0.1.8/arbora/mcp_server/backing/tools/governance_tools.py +276 -0
  531. arbora-0.1.8/arbora/mcp_server/backing/tools/graph_tools.py +352 -0
  532. arbora-0.1.8/arbora/mcp_server/backing/tools/intent_tools.py +2821 -0
  533. arbora-0.1.8/arbora/mcp_server/backing/tools/mcp_apps.py +434 -0
  534. arbora-0.1.8/arbora/mcp_server/backing/tools/ontology_tools.py +1785 -0
  535. arbora-0.1.8/arbora/mcp_server/backing/tools/query_tools.py +3510 -0
  536. arbora-0.1.8/arbora/mcp_server/backing/tools/reach_tools.py +98 -0
  537. arbora-0.1.8/arbora/mcp_server/backing/tools/secret_tools.py +110 -0
  538. arbora-0.1.8/arbora/mcp_server/backing/tools/state_tools.py +245 -0
  539. arbora-0.1.8/arbora/mcp_server/backing/tools/write_ingest_tools.py +1686 -0
  540. arbora-0.1.8/arbora/mcp_server/backing/verbose_tools.py +808 -0
  541. arbora-0.1.8/arbora/mcp_server/backing/write_ingest_types.py +41 -0
  542. arbora-0.1.8/arbora/mcp_server/bootstrap.py +985 -0
  543. arbora-0.1.8/arbora/mcp_server/browser_dispatch.py +162 -0
  544. arbora-0.1.8/arbora/mcp_server/browser_state.py +122 -0
  545. arbora-0.1.8/arbora/mcp_server/catalog_composition.py +155 -0
  546. arbora-0.1.8/arbora/mcp_server/catalog_warmup.py +134 -0
  547. arbora-0.1.8/arbora/mcp_server/composition.py +345 -0
  548. arbora-0.1.8/arbora/mcp_server/current_plan_reader.py +166 -0
  549. arbora-0.1.8/arbora/mcp_server/decide_wiring.py +244 -0
  550. arbora-0.1.8/arbora/mcp_server/effect_journal.py +247 -0
  551. arbora-0.1.8/arbora/mcp_server/fleet_composition.py +252 -0
  552. arbora-0.1.8/arbora/mcp_server/harness_host.py +128 -0
  553. arbora-0.1.8/arbora/mcp_server/host_context.py +56 -0
  554. arbora-0.1.8/arbora/mcp_server/hosted_invocation.py +101 -0
  555. arbora-0.1.8/arbora/mcp_server/legacy_action_mapping.py +125 -0
  556. arbora-0.1.8/arbora/mcp_server/operation_registry.py +107 -0
  557. arbora-0.1.8/arbora/mcp_server/routes.py +26 -0
  558. arbora-0.1.8/arbora/mcp_server/run_reader.py +240 -0
  559. arbora-0.1.8/arbora/mcp_server/runtime.py +1097 -0
  560. arbora-0.1.8/arbora/mcp_server/served_engine.py +454 -0
  561. arbora-0.1.8/arbora/mcp_server/served_invocation.py +690 -0
  562. arbora-0.1.8/arbora/mcp_server/server.py +543 -0
  563. arbora-0.1.8/arbora/mcp_server/source_reader.py +536 -0
  564. arbora-0.1.8/arbora/mcp_server/task_plan.py +213 -0
  565. arbora-0.1.8/arbora/mcp_server/task_plan_runtime.py +330 -0
  566. arbora-0.1.8/arbora/messaging/__init__.py +5 -0
  567. arbora-0.1.8/arbora/messaging/action_dispatch.py +119 -0
  568. arbora-0.1.8/arbora/messaging/alert_intake.py +215 -0
  569. arbora-0.1.8/arbora/messaging/backends/__init__.py +21 -0
  570. arbora-0.1.8/arbora/messaging/backends/discord.py +344 -0
  571. arbora-0.1.8/arbora/messaging/backends/googlechat.py +160 -0
  572. arbora-0.1.8/arbora/messaging/backends/googlemeet.py +113 -0
  573. arbora-0.1.8/arbora/messaging/backends/imessage.py +147 -0
  574. arbora-0.1.8/arbora/messaging/backends/irc.py +139 -0
  575. arbora-0.1.8/arbora/messaging/backends/line.py +121 -0
  576. arbora-0.1.8/arbora/messaging/backends/matrix.py +149 -0
  577. arbora-0.1.8/arbora/messaging/backends/mattermost.py +440 -0
  578. arbora-0.1.8/arbora/messaging/backends/nextcloud.py +165 -0
  579. arbora-0.1.8/arbora/messaging/backends/signal.py +113 -0
  580. arbora-0.1.8/arbora/messaging/backends/slack.py +276 -0
  581. arbora-0.1.8/arbora/messaging/backends/synology.py +110 -0
  582. arbora-0.1.8/arbora/messaging/backends/teams.py +224 -0
  583. arbora-0.1.8/arbora/messaging/backends/telegram.py +486 -0
  584. arbora-0.1.8/arbora/messaging/backends/twitch.py +130 -0
  585. arbora-0.1.8/arbora/messaging/backends/voicecall.py +121 -0
  586. arbora-0.1.8/arbora/messaging/backends/whatsapp.py +211 -0
  587. arbora-0.1.8/arbora/messaging/base.py +420 -0
  588. arbora-0.1.8/arbora/messaging/capabilities.py +444 -0
  589. arbora-0.1.8/arbora/messaging/coalescer.py +101 -0
  590. arbora-0.1.8/arbora/messaging/commands.py +177 -0
  591. arbora-0.1.8/arbora/messaging/governed_send.py +46 -0
  592. arbora-0.1.8/arbora/messaging/host_ports.py +67 -0
  593. arbora-0.1.8/arbora/messaging/inbox.py +180 -0
  594. arbora-0.1.8/arbora/messaging/intake.py +76 -0
  595. arbora-0.1.8/arbora/messaging/lease.py +467 -0
  596. arbora-0.1.8/arbora/messaging/media.py +118 -0
  597. arbora-0.1.8/arbora/messaging/models.py +303 -0
  598. arbora-0.1.8/arbora/messaging/planner_handler.py +148 -0
  599. arbora-0.1.8/arbora/messaging/polling.py +171 -0
  600. arbora-0.1.8/arbora/messaging/reach.py +19 -0
  601. arbora-0.1.8/arbora/messaging/registry.py +415 -0
  602. arbora-0.1.8/arbora/messaging/render.py +85 -0
  603. arbora-0.1.8/arbora/messaging/router.py +474 -0
  604. arbora-0.1.8/arbora/messaging/service.py +565 -0
  605. arbora-0.1.8/arbora/messaging/supervision.py +122 -0
  606. arbora-0.1.8/arbora/messaging/transport.py +40 -0
  607. arbora-0.1.8/arbora/modality/__init__.py +29 -0
  608. arbora-0.1.8/arbora/modality/agent_input.py +85 -0
  609. arbora-0.1.8/arbora/modality/fleet_port.py +117 -0
  610. arbora-0.1.8/arbora/modality/models.py +163 -0
  611. arbora-0.1.8/arbora/modality/normalizer.py +216 -0
  612. arbora-0.1.8/arbora/modality/provenance.py +93 -0
  613. arbora-0.1.8/arbora/modality/speech.py +163 -0
  614. arbora-0.1.8/arbora/native_run_admission.py +79 -0
  615. arbora-0.1.8/arbora/observability/__init__.py +36 -0
  616. arbora-0.1.8/arbora/observability/correlation.py +127 -0
  617. arbora-0.1.8/arbora/observability/custom_observability.py +1102 -0
  618. arbora-0.1.8/arbora/observability/error_detail_sink.py +153 -0
  619. arbora-0.1.8/arbora/observability/gateway_health.py +164 -0
  620. arbora-0.1.8/arbora/observability/gateway_metrics.py +1338 -0
  621. arbora-0.1.8/arbora/observability/health.py +348 -0
  622. arbora-0.1.8/arbora/observability/langfuse_exporter.py +385 -0
  623. arbora-0.1.8/arbora/observability/langfuse_trust.py +1246 -0
  624. arbora-0.1.8/arbora/observability/readiness.py +115 -0
  625. arbora-0.1.8/arbora/observability/runtime_health.py +851 -0
  626. arbora-0.1.8/arbora/observability/runtime_signals.py +593 -0
  627. arbora-0.1.8/arbora/observability/subsystem_health.py +140 -0
  628. arbora-0.1.8/arbora/observability/telemetry.py +90 -0
  629. arbora-0.1.8/arbora/observability/trace_ontology.py +488 -0
  630. arbora-0.1.8/arbora/ontology/shapes/runtime.shapes.ttl +51 -0
  631. arbora-0.1.8/arbora/ontology/state_machines.ttl +693 -0
  632. arbora-0.1.8/arbora/prompts/cmdb-trm-01.json +21 -0
  633. arbora-0.1.8/arbora/prompts/cmdb-trm-02.json +21 -0
  634. arbora-0.1.8/arbora/prompts/cmdb-trm-03.json +21 -0
  635. arbora-0.1.8/arbora/prompts/cmdb-trm-04.json +21 -0
  636. arbora-0.1.8/arbora/prompts/cmdb-trm-05.json +21 -0
  637. arbora-0.1.8/arbora/prompts/cmdb-trm-06.json +21 -0
  638. arbora-0.1.8/arbora/prompts/cmdb-trm-07.json +21 -0
  639. arbora-0.1.8/arbora/prompts/cmdb-trm-08.json +21 -0
  640. arbora-0.1.8/arbora/prompts/cmdb-trm-09.json +21 -0
  641. arbora-0.1.8/arbora/prompts/cmdb-trm-10.json +21 -0
  642. arbora-0.1.8/arbora/prompts/cq-a.json +20 -0
  643. arbora-0.1.8/arbora/prompts/cq-b.json +20 -0
  644. arbora-0.1.8/arbora/prompts/cq-c.json +20 -0
  645. arbora-0.1.8/arbora/prompts/cq-d1.json +19 -0
  646. arbora-0.1.8/arbora/prompts/cq-d10.json +19 -0
  647. arbora-0.1.8/arbora/prompts/cq-d2.json +19 -0
  648. arbora-0.1.8/arbora/prompts/cq-d3.json +19 -0
  649. arbora-0.1.8/arbora/prompts/cq-d4.json +19 -0
  650. arbora-0.1.8/arbora/prompts/cq-d5.json +19 -0
  651. arbora-0.1.8/arbora/prompts/cq-d6.json +19 -0
  652. arbora-0.1.8/arbora/prompts/cq-d7.json +19 -0
  653. arbora-0.1.8/arbora/prompts/cq-d8.json +19 -0
  654. arbora-0.1.8/arbora/prompts/cq-d9.json +19 -0
  655. arbora-0.1.8/arbora/prompts/delegation-cycle-refused.json +19 -0
  656. arbora-0.1.8/arbora/prompts/delegation-fan-out.json +19 -0
  657. arbora-0.1.8/arbora/prompts/delegation-gitlab-servicenow-plane.json +19 -0
  658. arbora-0.1.8/arbora/prompts/delegation-ordered-dag.json +19 -0
  659. arbora-0.1.8/arbora/prompts/delegation-plan-persisted.json +19 -0
  660. arbora-0.1.8/arbora/prompts/incident-triage-system.json +21 -0
  661. arbora-0.1.8/arbora/run_origin.py +200 -0
  662. arbora-0.1.8/arbora/security/__init__.py +13 -0
  663. arbora-0.1.8/arbora/security/actor_context.py +472 -0
  664. arbora-0.1.8/arbora/security/anonymous.py +267 -0
  665. arbora-0.1.8/arbora/security/auth.py +286 -0
  666. arbora-0.1.8/arbora/security/client_credentials.py +764 -0
  667. arbora-0.1.8/arbora/security/config_sensitivity.py +131 -0
  668. arbora-0.1.8/arbora/security/conformance/__init__.py +72 -0
  669. arbora-0.1.8/arbora/security/conformance/surface_inventory.py +183 -0
  670. arbora-0.1.8/arbora/security/conformance/surface_manifest.py +362 -0
  671. arbora-0.1.8/arbora/security/delegation.py +459 -0
  672. arbora-0.1.8/arbora/security/elevation.py +266 -0
  673. arbora-0.1.8/arbora/security/error_surface.py +561 -0
  674. arbora-0.1.8/arbora/security/http_boundary.py +441 -0
  675. arbora-0.1.8/arbora/security/identifiers.py +120 -0
  676. arbora-0.1.8/arbora/security/identity.py +218 -0
  677. arbora-0.1.8/arbora/security/log_redaction.py +38 -0
  678. arbora-0.1.8/arbora/security/oidc_discovery.py +152 -0
  679. arbora-0.1.8/arbora/security/operation_result.py +41 -0
  680. arbora-0.1.8/arbora/security/prompt_injection.py +512 -0
  681. arbora-0.1.8/arbora/security/request_identity.py +1563 -0
  682. arbora-0.1.8/arbora/security/run_authority.py +317 -0
  683. arbora-0.1.8/arbora/security/run_token.py +188 -0
  684. arbora-0.1.8/arbora/security/scope_registry.py +252 -0
  685. arbora-0.1.8/arbora/security/secrets.py +663 -0
  686. arbora-0.1.8/arbora/security/security_policy_middleware.py +56 -0
  687. arbora-0.1.8/arbora/security/session.py +590 -0
  688. arbora-0.1.8/arbora/security/settings.py +112 -0
  689. arbora-0.1.8/arbora/semantic_content.py +200 -0
  690. arbora-0.1.8/arbora/skills/__init__.py +15 -0
  691. arbora-0.1.8/arbora/skills/agent-utilities-source-integration/SKILL.md +181 -0
  692. arbora-0.1.8/arbora/skills/agent-utilities-source-integration/agents/arbora.yaml +5 -0
  693. arbora-0.1.8/arbora/skills/agent-utilities-source-integration/agents/openai.yaml +4 -0
  694. arbora-0.1.8/arbora/skills/arbora-deployment/SKILL.md +203 -0
  695. arbora-0.1.8/arbora/skills/arbora-deployment/agents/arbora.yaml +5 -0
  696. arbora-0.1.8/arbora/skills/arbora-deployment/agents/openai.yaml +4 -0
  697. arbora-0.1.8/arbora/skills/arbora-deployment/references/first-boot-verification.md +80 -0
  698. arbora-0.1.8/arbora/skills/arbora-deployment/references/fleet-and-control-plane.md +85 -0
  699. arbora-0.1.8/arbora/skills/arbora-deployment/references/identity-and-access.md +147 -0
  700. arbora-0.1.8/arbora/skills/arbora-deployment/references/secrets-and-federation.md +67 -0
  701. arbora-0.1.8/arbora/skills/arbora-deployment/references/telemetry.md +29 -0
  702. arbora-0.1.8/arbora/skills/arbora-development/SKILL.md +178 -0
  703. arbora-0.1.8/arbora/skills/arbora-development/references/bootstrap.md +88 -0
  704. arbora-0.1.8/arbora/skills/arbora-evolution/SKILL.md +542 -0
  705. arbora-0.1.8/arbora/skills/arbora-evolution/agents/arbora.yaml +5 -0
  706. arbora-0.1.8/arbora/skills/arbora-evolution/agents/openai.yaml +4 -0
  707. arbora-0.1.8/arbora/skills/arbora-genesis/SKILL.md +347 -0
  708. arbora-0.1.8/arbora/skills/arbora-genesis/agents/arbora.yaml +5 -0
  709. arbora-0.1.8/arbora/skills/arbora-genesis/agents/openai.yaml +4 -0
  710. arbora-0.1.8/arbora/skills/arbora-genesis/references/TROUBLESHOOTING.md +39 -0
  711. arbora-0.1.8/arbora/skills/arbora-genesis/references/bare-metal.md +45 -0
  712. arbora-0.1.8/arbora/skills/arbora-genesis/references/compose-and-podman.md +83 -0
  713. arbora-0.1.8/arbora/skills/arbora-genesis/references/data-plane-substrate.md +246 -0
  714. arbora-0.1.8/arbora/skills/arbora-genesis/references/deployment-contract.md +99 -0
  715. arbora-0.1.8/arbora/skills/arbora-genesis/references/development-workspace.md +62 -0
  716. arbora-0.1.8/arbora/skills/arbora-genesis/references/docker-swarm.md +63 -0
  717. arbora-0.1.8/arbora/skills/arbora-genesis/references/engine-identity-admission.md +218 -0
  718. arbora-0.1.8/arbora/skills/arbora-genesis/references/kubernetes-and-helm.md +111 -0
  719. arbora-0.1.8/arbora/skills/arbora-genesis/references/orchestrator-migration-cutover.md +68 -0
  720. arbora-0.1.8/arbora/skills/arbora-genesis/references/runtime-topology.md +90 -0
  721. arbora-0.1.8/arbora/skills/arbora-genesis/references/security-and-operations.md +128 -0
  722. arbora-0.1.8/arbora/skills/arbora-repository-development/SKILL.md +307 -0
  723. arbora-0.1.8/arbora/skills/autonomous-contribution/SKILL.md +42 -0
  724. arbora-0.1.8/arbora/skills/autonomous-contribution/agents/arbora.yaml +5 -0
  725. arbora-0.1.8/arbora/skills/autonomous-contribution/agents/openai.yaml +4 -0
  726. arbora-0.1.8/arbora/skills/core-pack.txt +15 -0
  727. arbora-0.1.8/arbora/skills/graph-engine-and-modalities/SKILL.md +127 -0
  728. arbora-0.1.8/arbora/skills/graph-engine-and-modalities/agents/arbora.yaml +37 -0
  729. arbora-0.1.8/arbora/skills/graph-engine-and-modalities/agents/openai.yaml +4 -0
  730. arbora-0.1.8/arbora/skills/graph-ingestion-and-integration/SKILL.md +191 -0
  731. arbora-0.1.8/arbora/skills/graph-ingestion-and-integration/agents/arbora.yaml +15 -0
  732. arbora-0.1.8/arbora/skills/graph-ingestion-and-integration/agents/openai.yaml +4 -0
  733. arbora-0.1.8/arbora/skills/graph-ingestion-and-integration/references/ingest-connector-reference.md +261 -0
  734. arbora-0.1.8/arbora/skills/graph-ingestion-and-integration/references/ingest_manifest.yaml +77 -0
  735. arbora-0.1.8/arbora/skills/graph-modeling-and-mutation/SKILL.md +136 -0
  736. arbora-0.1.8/arbora/skills/graph-modeling-and-mutation/agents/arbora.yaml +22 -0
  737. arbora-0.1.8/arbora/skills/graph-modeling-and-mutation/agents/openai.yaml +4 -0
  738. arbora-0.1.8/arbora/skills/graph-orchestration-and-automation/SKILL.md +128 -0
  739. arbora-0.1.8/arbora/skills/graph-orchestration-and-automation/agents/arbora.yaml +12 -0
  740. arbora-0.1.8/arbora/skills/graph-orchestration-and-automation/agents/openai.yaml +4 -0
  741. arbora-0.1.8/arbora/skills/graph-query-and-explanation/SKILL.md +166 -0
  742. arbora-0.1.8/arbora/skills/graph-query-and-explanation/agents/arbora.yaml +28 -0
  743. arbora-0.1.8/arbora/skills/graph-query-and-explanation/agents/openai.yaml +4 -0
  744. arbora-0.1.8/arbora/skills/graph-query-and-explanation/references/uql-reference.md +432 -0
  745. arbora-0.1.8/arbora/skills/graph-research-and-analysis/SKILL.md +160 -0
  746. arbora-0.1.8/arbora/skills/graph-research-and-analysis/agents/arbora.yaml +11 -0
  747. arbora-0.1.8/arbora/skills/graph-research-and-analysis/agents/openai.yaml +4 -0
  748. arbora-0.1.8/arbora/skills/graph-runtime-and-governance/SKILL.md +165 -0
  749. arbora-0.1.8/arbora/skills/graph-runtime-and-governance/agents/arbora.yaml +17 -0
  750. arbora-0.1.8/arbora/skills/graph-runtime-and-governance/agents/openai.yaml +4 -0
  751. arbora-0.1.8/arbora/skills/using-arbora/SKILL.md +114 -0
  752. arbora-0.1.8/arbora/unique_records.py +67 -0
  753. arbora-0.1.8/arbora/version.py +6 -0
  754. arbora-0.1.8/arbora/webui_host/__init__.py +10 -0
  755. arbora-0.1.8/arbora/webui_host/contact_delivery.py +259 -0
  756. arbora-0.1.8/arbora/webui_host/contact_governance.py +282 -0
  757. arbora-0.1.8/arbora/webui_host/mcp_delegation.py +138 -0
  758. arbora-0.1.8/arbora/webui_host/package_layout_expectation.py +70 -0
  759. arbora-0.1.8/arbora/webui_host/session_boundary.py +230 -0
  760. arbora-0.1.8/arbora/webui_host/voice_delegation.py +74 -0
  761. arbora-0.1.8/arbora/webui_host/webui_co_service.py +274 -0
  762. arbora-0.1.8/arbora/work_items.py +396 -0
  763. arbora-0.1.8/arbora.egg-info/PKG-INFO +232 -0
  764. arbora-0.1.8/arbora.egg-info/SOURCES.txt +805 -0
  765. arbora-0.1.8/arbora.egg-info/dependency_links.txt +1 -0
  766. arbora-0.1.8/arbora.egg-info/entry_points.txt +36 -0
  767. arbora-0.1.8/arbora.egg-info/requires.txt +106 -0
  768. arbora-0.1.8/arbora.egg-info/top_level.txt +1 -0
  769. arbora-0.1.8/pyproject.toml +302 -0
  770. arbora-0.1.8/setup.cfg +4 -0
  771. arbora-0.1.8/tests/test_a2a_extension_lifespan.py +158 -0
  772. arbora-0.1.8/tests/test_agent_runs.py +124 -0
  773. arbora-0.1.8/tests/test_agents_run_end_to_end.py +409 -0
  774. arbora-0.1.8/tests/test_boot_diagnostics.py +153 -0
  775. arbora-0.1.8/tests/test_check_acceptance_evidence.py +307 -0
  776. arbora-0.1.8/tests/test_check_connector_count_pins.py +82 -0
  777. arbora-0.1.8/tests/test_check_core_skills.py +143 -0
  778. arbora-0.1.8/tests/test_check_wiring.py +176 -0
  779. arbora-0.1.8/tests/test_component_registry_boundary_seeds.py +70 -0
  780. arbora-0.1.8/tests/test_connector_pack_typed_publisher.py +71 -0
  781. arbora-0.1.8/tests/test_connector_runner_composition.py +251 -0
  782. arbora-0.1.8/tests/test_current_plan_publication.py +645 -0
  783. arbora-0.1.8/tests/test_data_migrations.py +236 -0
  784. arbora-0.1.8/tests/test_dependency_manifest.py +122 -0
  785. arbora-0.1.8/tests/test_docs_surface.py +60 -0
  786. arbora-0.1.8/tests/test_epistemic_adapter.py +190 -0
  787. arbora-0.1.8/tests/test_epistemic_loop_lifecycle.py +212 -0
  788. arbora-0.1.8/tests/test_fleet_catalog_reader.py +458 -0
  789. arbora-0.1.8/tests/test_host_bindings.py +85 -0
  790. arbora-0.1.8/tests/test_installed_content.py +227 -0
  791. arbora-0.1.8/tests/test_native_run_admission.py +261 -0
  792. arbora-0.1.8/tests/test_native_run_scope.py +250 -0
  793. arbora-0.1.8/tests/test_package_layout.py +139 -0
  794. arbora-0.1.8/tests/test_persisted_shapes.py +97 -0
  795. arbora-0.1.8/tests/test_real_anonymous_boot.py +444 -0
  796. arbora-0.1.8/tests/test_real_boot.py +1377 -0
  797. arbora-0.1.8/tests/test_real_boot_messaging.py +133 -0
  798. arbora-0.1.8/tests/test_real_boot_ports.py +87 -0
  799. arbora-0.1.8/tests/test_real_boot_read_assertions.py +139 -0
  800. arbora-0.1.8/tests/test_run_event_payloads.py +241 -0
  801. arbora-0.1.8/tests/test_run_origin.py +262 -0
  802. arbora-0.1.8/tests/test_semantic_content.py +170 -0
  803. arbora-0.1.8/tests/test_served_engine_native_labels.py +106 -0
  804. arbora-0.1.8/tests/test_served_operation_api.py +451 -0
  805. arbora-0.1.8/tests/test_state_machine_census.py +43 -0
  806. arbora-0.1.8/tests/test_unique_records.py +137 -0
  807. arbora-0.1.8/tests/test_work_items.py +171 -0
arbora-0.1.8/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Knuckles Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
arbora-0.1.8/PKG-INFO ADDED
@@ -0,0 +1,232 @@
1
+ Metadata-Version: 2.4
2
+ Name: arbora
3
+ Version: 0.1.8
4
+ Summary: The deployable MCP, REST, control-plane, fleet, WebUI, and operations composition for the Knuckles agent platform.
5
+ Author-email: Repository Maintainers <maintainers@knuckles.team>
6
+ License-Expression: MIT
7
+ Classifier: Development Status :: 2 - Pre-Alpha
8
+ Classifier: Environment :: Console
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Requires-Python: >=3.12
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: meristem<6.0.0,>=5.0.0
18
+ Requires-Dist: eunomia-core>=0.3.10
19
+ Requires-Dist: httpx>=0.28.1
20
+ Requires-Dist: pyjwt>=2.15.1
21
+ Requires-Dist: joserfc>=1.7.5
22
+ Requires-Dist: python-multipart>=0.0.32
23
+ Requires-Dist: scion-sdk[a2a,mcp]<0.10.0,>=0.9.1
24
+ Requires-Dist: aiohttp>=3.14.5
25
+ Requires-Dist: anyio>=4.15.1
26
+ Requires-Dist: medulla==3.3.0
27
+ Requires-Dist: fastapi>=0.143.3
28
+ Requires-Dist: filelock>=4.2.0
29
+ Requires-Dist: msgpack>=1.2.1
30
+ Requires-Dist: prometheus-client>=0.26.0
31
+ Requires-Dist: pydantic<3.0.0,>=2.14.1
32
+ Requires-Dist: PyYAML>=6.0.3
33
+ Requires-Dist: starlette>=1.8.0
34
+ Requires-Dist: fastmcp>=4.1.0
35
+ Requires-Dist: mcp<3.0.0,>=2.3.0
36
+ Requires-Dist: opentelemetry-api>=1.45.1
37
+ Requires-Dist: pydantic-ai-slim[openai]==2.63.0
38
+ Requires-Dist: universal-skills<2.0.0,>=1.3.11
39
+ Requires-Dist: cryptography>=50.0.2
40
+ Provides-Extra: acp
41
+ Requires-Dist: agent-client-protocol==0.11.0; extra == "acp"
42
+ Requires-Dist: pydantic-ai-harness[acp]==0.63.0; extra == "acp"
43
+ Provides-Extra: test
44
+ Requires-Dist: agent-client-protocol==0.11.0; extra == "test"
45
+ Requires-Dist: tuig==2.3.6; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) and extra == "test"
46
+ Requires-Dist: pyte==0.8.2; extra == "test"
47
+ Requires-Dist: pytest>=9.1.1; extra == "test"
48
+ Requires-Dist: pytest-asyncio>=1.4.0; extra == "test"
49
+ Requires-Dist: pytest-cov>=7.1.0; extra == "test"
50
+ Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
51
+ Requires-Dist: pytest-timeout>=2.4.0; extra == "test"
52
+ Requires-Dist: mypy>=2.4.0; extra == "test"
53
+ Requires-Dist: ruff==0.17.1; extra == "test"
54
+ Requires-Dist: types-PyYAML>=6.0.12.20260906; extra == "test"
55
+ Requires-Dist: python-telegram-bot>=22.8; extra == "test"
56
+ Requires-Dist: setuptools>=84.0.0; extra == "test"
57
+ Provides-Extra: overstory
58
+ Requires-Dist: overstory<4.0.0,>=3.0.0; extra == "overstory"
59
+ Requires-Dist: uvicorn>=0.54.0; extra == "overstory"
60
+ Provides-Extra: vault
61
+ Requires-Dist: hvac>=2.4.0; extra == "vault"
62
+ Provides-Extra: messaging-telegram
63
+ Requires-Dist: python-telegram-bot>=22.8; extra == "messaging-telegram"
64
+ Provides-Extra: messaging-mattermost
65
+ Requires-Dist: mattermostdriver>=7.3.2; extra == "messaging-mattermost"
66
+ Provides-Extra: messaging-discord
67
+ Requires-Dist: discord.py>=2.7.1; extra == "messaging-discord"
68
+ Provides-Extra: messaging-slack
69
+ Requires-Dist: slack-bolt>=1.30.0; extra == "messaging-slack"
70
+ Provides-Extra: messaging-whatsapp
71
+ Requires-Dist: neonize>=0.5.2; extra == "messaging-whatsapp"
72
+ Requires-Dist: httpx>=0.28.1; extra == "messaging-whatsapp"
73
+ Provides-Extra: messaging-teams
74
+ Requires-Dist: botbuilder-core>=4.17.1; extra == "messaging-teams"
75
+ Provides-Extra: messaging-googlechat
76
+ Requires-Dist: google-api-python-client>=2.198.0; extra == "messaging-googlechat"
77
+ Requires-Dist: google-auth>=2.62.0; extra == "messaging-googlechat"
78
+ Provides-Extra: messaging-googlemeet
79
+ Requires-Dist: google-api-python-client>=2.198.0; extra == "messaging-googlemeet"
80
+ Requires-Dist: google-auth>=2.62.0; extra == "messaging-googlemeet"
81
+ Provides-Extra: messaging-matrix
82
+ Requires-Dist: matrix-nio>=0.26.0; extra == "messaging-matrix"
83
+ Provides-Extra: messaging-irc
84
+ Requires-Dist: irc>=20.5.0; extra == "messaging-irc"
85
+ Provides-Extra: messaging-signal
86
+ Provides-Extra: messaging-imessage
87
+ Provides-Extra: messaging-line
88
+ Requires-Dist: line-bot-sdk>=3.26.0; extra == "messaging-line"
89
+ Provides-Extra: messaging-twitch
90
+ Requires-Dist: twitchio>=3.3.2; extra == "messaging-twitch"
91
+ Provides-Extra: messaging-synology
92
+ Requires-Dist: httpx>=0.28.1; extra == "messaging-synology"
93
+ Provides-Extra: messaging-voicecall
94
+ Requires-Dist: twilio>=9.12.0; extra == "messaging-voicecall"
95
+ Provides-Extra: messaging-nextcloud
96
+ Requires-Dist: httpx>=0.28.1; extra == "messaging-nextcloud"
97
+ Provides-Extra: messaging
98
+ Requires-Dist: arbora[messaging-discord,messaging-googlechat,messaging-googlemeet,messaging-irc,messaging-line,messaging-matrix,messaging-mattermost,messaging-nextcloud,messaging-signal,messaging-slack,messaging-synology,messaging-teams,messaging-telegram,messaging-twitch,messaging-voicecall,messaging-whatsapp]; extra == "messaging"
99
+ Dynamic: license-file
100
+
101
+ # Arbora
102
+
103
+ <p align="center">
104
+ <img src="docs/assets/brands/arbora-logo-v1.png" alt="Arbora logo" width="176">
105
+ </p>
106
+
107
+ <p align="center">
108
+ <strong>The process the operator runs to open the Knuckles agent platform.</strong><br>
109
+ <sub>MCP · REST · A2A · identity policy · fleet supervision · hosted interfaces</sub>
110
+ </p>
111
+
112
+ <p align="center">
113
+
114
+ [![PyPI - Version](https://img.shields.io/pypi/v/arbora)](https://pypi.org/project/arbora/)
115
+ [![Build](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml/badge.svg)](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml)
116
+ [![Documentation](https://github.com/Knuckles-Team/arbora/actions/workflows/pages.yml/badge.svg)](https://knuckles-team.github.io/arbora/)
117
+ [![MCP Server](https://badge.mcpx.dev?type=server "MCP Server")](https://github.com/Knuckles-Team/arbora)
118
+ [![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/stargazers)
119
+ [![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/forks)
120
+ [![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/graphs/contributors)
121
+ [![GitHub license](https://img.shields.io/github/license/Knuckles-Team/arbora)](LICENSE)
122
+ [![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/commits/main)
123
+ [![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/pulls)
124
+ [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/pulls?q=is%3Apr+is%3Aclosed)
125
+ [![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/issues)
126
+ [![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
127
+ [![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
128
+ [![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
129
+ [![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
130
+ [![PyPI - Downloads](https://img.shields.io/pypi/dd/arbora)](https://pypi.org/project/arbora/)
131
+ [![PyPI - License](https://img.shields.io/pypi/l/arbora)](https://pypi.org/project/arbora/)
132
+ [![PyPI - Wheel](https://img.shields.io/pypi/wheel/arbora)](https://pypi.org/project/arbora/)
133
+ [![PyPI - Implementation](https://img.shields.io/pypi/implementation/arbora)](https://pypi.org/project/arbora/)
134
+
135
+ </p>
136
+
137
+ <p align="center">
138
+ <a href="https://knuckles-team.github.io/arbora/">Documentation</a> ·
139
+ <a href="https://knuckles-team.github.io/arbora/capabilities/">Capabilities</a> ·
140
+ <a href="https://knuckles-team.github.io/arbora/interfaces/">Interfaces</a> ·
141
+ <a href="https://knuckles-team.github.io/arbora/status/">Status</a>
142
+ </p>
143
+
144
+ ## Overview
145
+
146
+ Run Arbora when an MCP client, HTTP application, A2A peer, or hosted interface
147
+ needs one authenticated way into the platform. One serving lifecycle composes
148
+ the same application services across transports, applies identity and tenant
149
+ policy, and keeps tool discovery tied to the live fleet catalog.
150
+
151
+ Arbora is the platform edge and composition root. It is not the agent harness,
152
+ the durable database, a connector implementation, or the browser UI.
153
+
154
+ ## Key Capabilities
155
+
156
+ - Serve local MCP over `stdio` and authenticated MCP over streamable HTTP.
157
+ - Project the same governed operations through REST and unary A2A.
158
+ - Discover, admit, supervise, and route the MCP connector fleet.
159
+ - Apply identity, tenant, action-policy, idempotency, and provenance controls.
160
+ - Host Overstory and coordinate terminal, desktop, messaging, and attended
161
+ browser capabilities.
162
+ - Generate deployment configuration and report live readiness through `/health`.
163
+
164
+ ## Documentation
165
+
166
+ Start with the **[visual platform guide](https://knuckles-team.github.io/arbora/)**,
167
+ then use the task-oriented references:
168
+
169
+ - [Start Arbora](https://knuckles-team.github.io/arbora/get-started/)
170
+ - [Review capabilities](https://knuckles-team.github.io/arbora/capabilities/)
171
+ - [Choose an interface](https://knuckles-team.github.io/arbora/interfaces/)
172
+ - [Understand the architecture](https://knuckles-team.github.io/arbora/architecture/)
173
+ - [Check live status](https://knuckles-team.github.io/arbora/status/)
174
+ - [Configure a deployment](https://knuckles-team.github.io/arbora/deployment/)
175
+
176
+ ## Architecture
177
+
178
+ | Layer | Authority | Relationship to Arbora |
179
+ |---|---|---|
180
+ | [Overstory](https://knuckles-team.github.io/overstory/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
181
+ | Tuig | Terminal and headless interaction | Uses the governed Arbora REST interface. |
182
+ | Axil | Desktop GUI | Uses the governed Arbora gateway for its primary panels. |
183
+ | Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; Meristem holds no adapters or routing. |
184
+ | **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
185
+ | [Meristem](https://knuckles-team.github.io/meristem/) | In-run execution harness | Applies decisions it receives from Arbora. Holds no store and serves no MCP, API, or A2A. |
186
+ | [Medulla](https://knuckles-team.github.io/medulla/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses a hand-written client tested on round-trip vectors. One engine, no synced second database. |
187
+ | [Scion SDK](https://knuckles-team.github.io/scion-sdk/) | Connector contracts and transports | Arbora admits and routes SDK-based connector services. External stores stay connector sources, read as virtual graphs. |
188
+
189
+ The boundary is deliberate: Arbora authenticates, composes, routes,
190
+ supervises, and projects. Each sibling remains the source of truth for its own
191
+ domain.
192
+
193
+ [![Knuckles platform runtime architecture](https://raw.githubusercontent.com/Knuckles-Team/medulla/main/docs/assets/runtime-architecture.svg)](https://knuckles-team.github.io/.github/architecture/#arbora)
194
+
195
+ [Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
196
+
197
+ ## Quick Start
198
+
199
+ Requires Python 3.12–3.14 and [`uv`](https://docs.astral.sh/uv/). Install the
200
+ bundled runtime and generate the local profile:
201
+
202
+ ```bash
203
+ uv tool install "arbora[overstory]"
204
+ setup-config generate --profile tiny
205
+ setup-config doctor --profile tiny
206
+ ```
207
+
208
+ The doctor command is the first observable result: it reports whether the local
209
+ profile and required authorities are ready before a listener starts. MCP
210
+ clients can start the local transport directly:
211
+
212
+ ```bash
213
+ arbora --transport stdio
214
+ ```
215
+
216
+ Network deployments use the identity, TLS, and authorization settings in the
217
+ [deployment guide](https://knuckles-team.github.io/arbora/deployment/).
218
+
219
+ ## Contributing
220
+
221
+ Issues and pull requests are welcome. Read [AGENTS.md](AGENTS.md) for source
222
+ boundaries and quality gates. Report vulnerabilities through
223
+ [GitHub Security Advisories](https://github.com/Knuckles-Team/arbora/security/advisories/new).
224
+
225
+ ### Development
226
+
227
+ Run `scripts/bootstrap.sh`, then follow [CONTRIBUTING.md](CONTRIBUTING.md)
228
+ for the hooks, tests, and branch and pull-request flow.
229
+
230
+ ## License
231
+
232
+ Arbora is released under the [MIT License](LICENSE).
arbora-0.1.8/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # Arbora
2
+
3
+ <p align="center">
4
+ <img src="docs/assets/brands/arbora-logo-v1.png" alt="Arbora logo" width="176">
5
+ </p>
6
+
7
+ <p align="center">
8
+ <strong>The process the operator runs to open the Knuckles agent platform.</strong><br>
9
+ <sub>MCP · REST · A2A · identity policy · fleet supervision · hosted interfaces</sub>
10
+ </p>
11
+
12
+ <p align="center">
13
+
14
+ [![PyPI - Version](https://img.shields.io/pypi/v/arbora)](https://pypi.org/project/arbora/)
15
+ [![Build](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml/badge.svg)](https://github.com/Knuckles-Team/arbora/actions/workflows/release.yml)
16
+ [![Documentation](https://github.com/Knuckles-Team/arbora/actions/workflows/pages.yml/badge.svg)](https://knuckles-team.github.io/arbora/)
17
+ [![MCP Server](https://badge.mcpx.dev?type=server "MCP Server")](https://github.com/Knuckles-Team/arbora)
18
+ [![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/stargazers)
19
+ [![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/forks)
20
+ [![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/graphs/contributors)
21
+ [![GitHub license](https://img.shields.io/github/license/Knuckles-Team/arbora)](LICENSE)
22
+ [![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/commits/main)
23
+ [![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/pulls)
24
+ [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/pulls?q=is%3Apr+is%3Aclosed)
25
+ [![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora/issues)
26
+ [![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
27
+ [![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
28
+ [![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
29
+ [![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/arbora)](https://github.com/Knuckles-Team/arbora)
30
+ [![PyPI - Downloads](https://img.shields.io/pypi/dd/arbora)](https://pypi.org/project/arbora/)
31
+ [![PyPI - License](https://img.shields.io/pypi/l/arbora)](https://pypi.org/project/arbora/)
32
+ [![PyPI - Wheel](https://img.shields.io/pypi/wheel/arbora)](https://pypi.org/project/arbora/)
33
+ [![PyPI - Implementation](https://img.shields.io/pypi/implementation/arbora)](https://pypi.org/project/arbora/)
34
+
35
+ </p>
36
+
37
+ <p align="center">
38
+ <a href="https://knuckles-team.github.io/arbora/">Documentation</a> ·
39
+ <a href="https://knuckles-team.github.io/arbora/capabilities/">Capabilities</a> ·
40
+ <a href="https://knuckles-team.github.io/arbora/interfaces/">Interfaces</a> ·
41
+ <a href="https://knuckles-team.github.io/arbora/status/">Status</a>
42
+ </p>
43
+
44
+ ## Overview
45
+
46
+ Run Arbora when an MCP client, HTTP application, A2A peer, or hosted interface
47
+ needs one authenticated way into the platform. One serving lifecycle composes
48
+ the same application services across transports, applies identity and tenant
49
+ policy, and keeps tool discovery tied to the live fleet catalog.
50
+
51
+ Arbora is the platform edge and composition root. It is not the agent harness,
52
+ the durable database, a connector implementation, or the browser UI.
53
+
54
+ ## Key Capabilities
55
+
56
+ - Serve local MCP over `stdio` and authenticated MCP over streamable HTTP.
57
+ - Project the same governed operations through REST and unary A2A.
58
+ - Discover, admit, supervise, and route the MCP connector fleet.
59
+ - Apply identity, tenant, action-policy, idempotency, and provenance controls.
60
+ - Host Overstory and coordinate terminal, desktop, messaging, and attended
61
+ browser capabilities.
62
+ - Generate deployment configuration and report live readiness through `/health`.
63
+
64
+ ## Documentation
65
+
66
+ Start with the **[visual platform guide](https://knuckles-team.github.io/arbora/)**,
67
+ then use the task-oriented references:
68
+
69
+ - [Start Arbora](https://knuckles-team.github.io/arbora/get-started/)
70
+ - [Review capabilities](https://knuckles-team.github.io/arbora/capabilities/)
71
+ - [Choose an interface](https://knuckles-team.github.io/arbora/interfaces/)
72
+ - [Understand the architecture](https://knuckles-team.github.io/arbora/architecture/)
73
+ - [Check live status](https://knuckles-team.github.io/arbora/status/)
74
+ - [Configure a deployment](https://knuckles-team.github.io/arbora/deployment/)
75
+
76
+ ## Architecture
77
+
78
+ | Layer | Authority | Relationship to Arbora |
79
+ |---|---|---|
80
+ | [Overstory](https://knuckles-team.github.io/overstory/) | Browser experience and local interaction state | Arbora hosts it and supplies governed application routes. |
81
+ | Tuig | Terminal and headless interaction | Uses the governed Arbora REST interface. |
82
+ | Axil | Desktop GUI | Uses the governed Arbora gateway for its primary panels. |
83
+ | Messaging channels | Chat and voice entrypoints | Arbora hosts and supervises them; Meristem holds no adapters or routing. |
84
+ | **Arbora** | MCP, REST, A2A, identity policy, fleet supervision | The running process and public door. |
85
+ | [Meristem](https://knuckles-team.github.io/meristem/) | In-run execution harness | Applies decisions it receives from Arbora. Holds no store and serves no MCP, API, or A2A. |
86
+ | [Medulla](https://knuckles-team.github.io/medulla/) | Durable graph, SQL, RDF, vector, time, reasoning, and provenance | Arbora uses a hand-written client tested on round-trip vectors. One engine, no synced second database. |
87
+ | [Scion SDK](https://knuckles-team.github.io/scion-sdk/) | Connector contracts and transports | Arbora admits and routes SDK-based connector services. External stores stay connector sources, read as virtual graphs. |
88
+
89
+ The boundary is deliberate: Arbora authenticates, composes, routes,
90
+ supervises, and projects. Each sibling remains the source of truth for its own
91
+ domain.
92
+
93
+ [![Knuckles platform runtime architecture](https://raw.githubusercontent.com/Knuckles-Team/medulla/main/docs/assets/runtime-architecture.svg)](https://knuckles-team.github.io/.github/architecture/#arbora)
94
+
95
+ [Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#arbora)
96
+
97
+ ## Quick Start
98
+
99
+ Requires Python 3.12–3.14 and [`uv`](https://docs.astral.sh/uv/). Install the
100
+ bundled runtime and generate the local profile:
101
+
102
+ ```bash
103
+ uv tool install "arbora[overstory]"
104
+ setup-config generate --profile tiny
105
+ setup-config doctor --profile tiny
106
+ ```
107
+
108
+ The doctor command is the first observable result: it reports whether the local
109
+ profile and required authorities are ready before a listener starts. MCP
110
+ clients can start the local transport directly:
111
+
112
+ ```bash
113
+ arbora --transport stdio
114
+ ```
115
+
116
+ Network deployments use the identity, TLS, and authorization settings in the
117
+ [deployment guide](https://knuckles-team.github.io/arbora/deployment/).
118
+
119
+ ## Contributing
120
+
121
+ Issues and pull requests are welcome. Read [AGENTS.md](AGENTS.md) for source
122
+ boundaries and quality gates. Report vulnerabilities through
123
+ [GitHub Security Advisories](https://github.com/Knuckles-Team/arbora/security/advisories/new).
124
+
125
+ ### Development
126
+
127
+ Run `scripts/bootstrap.sh`, then follow [CONTRIBUTING.md](CONTRIBUTING.md)
128
+ for the hooks, tests, and branch and pull-request flow.
129
+
130
+ ## License
131
+
132
+ Arbora is released under the [MIT License](LICENSE).
@@ -0,0 +1,29 @@
1
+ """Arbora: the deployable composition for the Knuckles agent platform.
2
+
3
+ RF-ADR-009 (`plans/refactor/RF-ADR-009-connector-sdk-and-arbora.md`) §2 assigns
4
+ this repository phase 5: **the deployable composition** — the MCP server, REST
5
+ gateway, control plane, fleet gateway, overstory hosting, and deployment
6
+ tooling. It must never own business logic that belongs to
7
+ medulla, scion-sdk, or the agent-utilities agent plane.
8
+
9
+ The live package layout is:
10
+
11
+ - `arbora.mcp_server` — native MCP/REST composition and serving lifecycle.
12
+ - `arbora.fleet` — in-process MCP fleet gateway and child lifecycle.
13
+ - `arbora.gateway` — REST gateway and dashboard projections.
14
+ - `arbora.control_plane` — reconciliation and action policy.
15
+ - `arbora.webui_host` — optional Overstory co-service hosting.
16
+ - `arbora.deployment` — configuration, diagnostics, canaries, and operations.
17
+
18
+ The ``arbora`` console command serves
19
+ ``arbora.console:main`` over stdio or authenticated
20
+ streamable HTTP. Capability limits that depend on unfinished upstream
21
+ contracts are documented in ``docs/status.md`` and fail closed; no legacy
22
+ fallback is implied by this package description.
23
+ """
24
+
25
+ from arbora.version import __version__
26
+
27
+ from . import epistemic
28
+
29
+ __all__ = ["__version__", "epistemic"]
@@ -0,0 +1,94 @@
1
+ """First-party Arbora unary A2A facade."""
2
+
3
+ from .anonymous import (
4
+ AnonymousCaller,
5
+ AnonymousNativeReadPort,
6
+ AnonymousReadPolicy,
7
+ AnonymousTaskReadOwner,
8
+ AnonymousTaskStatus,
9
+ create_anonymous_a2a_application,
10
+ )
11
+ from .anonymous_native import EgAnonymousTaskReadPort
12
+ from .application import (
13
+ A2AAuthenticator,
14
+ AmbientA2AAuthenticator,
15
+ create_a2a_application,
16
+ create_a2a_handlers,
17
+ )
18
+ from .authority import (
19
+ A2AIdempotencyConflict,
20
+ A2ATaskAuthority,
21
+ A2ATaskNotCancelable,
22
+ WorkItemA2AAuthority,
23
+ )
24
+ from .composition import A2AComposition, compose_a2a
25
+ from .models import (
26
+ A2AAgentCard,
27
+ A2AListResult,
28
+ A2AMessage,
29
+ A2ARouteDecision,
30
+ A2ATask,
31
+ )
32
+ from .routing import A2AAssemblyUnavailable, A2ARouter, OrchestratorA2ARouter
33
+ from .sdk_app import AdmittedA2AApp, create_admitted_a2a_app
34
+ from .service import A2ACardMetadata, A2AService
35
+ from .tool_task import (
36
+ ToolTaskCarrier,
37
+ ToolTaskDispatcher,
38
+ ToolTaskRequest,
39
+ ToolTaskResult,
40
+ WorkItemFence,
41
+ run_tool_task,
42
+ )
43
+ from .tool_task_dispatch import EgWorkItemFence
44
+ from .tool_task_requests import EgToolTaskRequestStore
45
+ from .work_items import (
46
+ WorkItemView,
47
+ list_work_item_views,
48
+ parse_work_item_view,
49
+ work_item_view,
50
+ )
51
+
52
+ __all__ = [
53
+ "EgAnonymousTaskReadPort",
54
+ "AnonymousCaller",
55
+ "AnonymousNativeReadPort",
56
+ "AnonymousReadPolicy",
57
+ "AnonymousTaskReadOwner",
58
+ "AnonymousTaskStatus",
59
+ "create_anonymous_a2a_application",
60
+ "AdmittedA2AApp",
61
+ "create_admitted_a2a_app",
62
+ "A2AAgentCard",
63
+ "A2AAssemblyUnavailable",
64
+ "A2AAuthenticator",
65
+ "A2ACardMetadata",
66
+ "A2AComposition",
67
+ "A2AIdempotencyConflict",
68
+ "A2AListResult",
69
+ "A2AMessage",
70
+ "A2ARouteDecision",
71
+ "A2ARouter",
72
+ "A2AService",
73
+ "A2ATask",
74
+ "A2ATaskAuthority",
75
+ "A2ATaskNotCancelable",
76
+ "AmbientA2AAuthenticator",
77
+ "EgWorkItemFence",
78
+ "EgToolTaskRequestStore",
79
+ "OrchestratorA2ARouter",
80
+ "ToolTaskCarrier",
81
+ "ToolTaskDispatcher",
82
+ "ToolTaskRequest",
83
+ "ToolTaskResult",
84
+ "WorkItemA2AAuthority",
85
+ "WorkItemFence",
86
+ "WorkItemView",
87
+ "compose_a2a",
88
+ "create_a2a_application",
89
+ "create_a2a_handlers",
90
+ "list_work_item_views",
91
+ "parse_work_item_view",
92
+ "run_tool_task",
93
+ "work_item_view",
94
+ ]
@@ -0,0 +1,116 @@
1
+ """Typed context-budget tool-subset admission for the A2A door.
2
+
3
+ Owned by ``ARBORA-A2A-002``: admission, refusal, and provenance for the
4
+ smallest authorized tool subset that covers a selected agent graph within a
5
+ caller's context budget (see ``docs/a2a.md``, "Tool-subset assembly
6
+ status"). This fails closed today because medulla's
7
+ ``AgentAssemble`` operation returns unavailable and the signed AU
8
+ ``AgentTurnEnvelope`` carries no allowed-tool-subset field
9
+ (agent-utilities ``MERISTEM-CONTROL-R035``). Neither upstream gap is bridged with a
10
+ local heuristic, a cached prior subset, or an advisory best-effort answer.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from typing import Literal
16
+
17
+ from pydantic import Field, StrictStr, field_validator
18
+
19
+ from .models import A2AContextBudget, _WireModel
20
+
21
+ __all__ = [
22
+ "ModelProfilePreference",
23
+ "ModelProfileRefusalReason",
24
+ "ModelProfileUnavailable",
25
+ "refuse_model_profile_preference",
26
+ "ToolSubsetAdmissionDecision",
27
+ "ToolSubsetAdmissionRefusalReason",
28
+ "ToolSubsetAdmissionRequest",
29
+ "admit_tool_subset",
30
+ ]
31
+
32
+ ToolSubsetAdmissionRefusalReason = Literal[
33
+ "EG_ASSEMBLE_UNAVAILABLE",
34
+ "ENVELOPE_LACKS_ALLOWED_TOOL_SUBSET",
35
+ ]
36
+
37
+
38
+ class ToolSubsetAdmissionRequest(_WireModel):
39
+ """A caller's request to admit the smallest authorized tool subset."""
40
+
41
+ agent_graph_ref: str = Field(min_length=1, max_length=512)
42
+ context_budget: A2AContextBudget
43
+
44
+
45
+ class ToolSubsetAdmissionDecision(_WireModel):
46
+ """The door's admit/refuse result. Never advisory; never partial."""
47
+
48
+ admitted: bool
49
+ admitted_tools: tuple[str, ...] = Field(default=(), max_length=64)
50
+ refusal_reason: ToolSubsetAdmissionRefusalReason | None = None
51
+ provenance: str = Field(min_length=1, max_length=256)
52
+
53
+
54
+ def admit_tool_subset(
55
+ request: ToolSubsetAdmissionRequest,
56
+ ) -> ToolSubsetAdmissionDecision:
57
+ """Admit the request, or fail closed with a typed, provenanced refusal.
58
+
59
+ ``ARBORA-A2A-R017.1``: medulla's ``AgentAssemble`` operation
60
+ returns unavailable today, so no context-budget-bound tool subset can be
61
+ derived or cryptographically carried. This refuses closed rather than
62
+ returning an advisory, cached, or partial subset.
63
+ """
64
+
65
+ del request
66
+ return ToolSubsetAdmissionDecision(
67
+ admitted=False,
68
+ admitted_tools=(),
69
+ refusal_reason="EG_ASSEMBLE_UNAVAILABLE",
70
+ provenance="eg.AgentAssemble:unavailable",
71
+ )
72
+
73
+
74
+ ModelProfileRefusalReason = Literal[
75
+ "AUTHORITY_UNAVAILABLE",
76
+ "CALLER_CHANGED",
77
+ "PROFILE_REVOKED",
78
+ "CAPABILITY_UNAVAILABLE",
79
+ "STALE_DECISION",
80
+ "INVALID_DECISION",
81
+ ]
82
+
83
+
84
+ class ModelProfilePreference(_WireModel):
85
+ """Untrusted preference only; this value conveys no execution authority."""
86
+
87
+ preferred_profile_ref: StrictStr | None = Field(default=None, max_length=512)
88
+
89
+ @field_validator("preferred_profile_ref")
90
+ @classmethod
91
+ def _printable_reference(cls, value: str | None) -> str | None:
92
+ if value is not None and (
93
+ not value.strip() or any(not character.isprintable() for character in value)
94
+ ):
95
+ raise ValueError("profile reference must be nonempty printable text")
96
+ return value
97
+
98
+
99
+ class ModelProfileUnavailable(_WireModel):
100
+ """Closed refusal without profile data, credentials or fabricated receipts."""
101
+
102
+ status: Literal["unavailable"] = "unavailable"
103
+ reason: ModelProfileRefusalReason = "AUTHORITY_UNAVAILABLE"
104
+
105
+
106
+ def refuse_model_profile_preference(
107
+ request: ModelProfilePreference,
108
+ ) -> ModelProfileUnavailable:
109
+ """Keep the uncomposed profile authority unavailable without reading settings.
110
+
111
+ R016.6 requires a current owner-issued profile-use decision and atomic
112
+ admission. Valid preference syntax, catalog visibility and provider settings
113
+ supply none of those. This boundary does not alter the default-agent path.
114
+ """
115
+ del request
116
+ return ModelProfileUnavailable()