agentevo-cloud 0.1.9__tar.gz → 0.2.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 (283) hide show
  1. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/.gitignore +3 -0
  2. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/LICENSE +1 -1
  3. agentevo_cloud-0.2.8/PKG-INFO +165 -0
  4. agentevo_cloud-0.2.8/README.md +133 -0
  5. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/openapi/openapi.v1.json +713 -12
  6. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/pyproject.toml +8 -3
  7. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/analytics.py +216 -0
  8. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/app.py +1095 -102
  9. agentevo_cloud-0.2.8/src/agentevo_cloud/application_alerts.py +65 -0
  10. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_activation.py +326 -0
  11. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_admission.py +220 -0
  12. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_authority.py +306 -0
  13. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_bootstrap.py +444 -0
  14. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_continuity.py +461 -0
  15. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_epoch.py +218 -0
  16. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_legacy.py +121 -0
  17. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_mode.py +386 -0
  18. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_retained.py +239 -0
  19. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_rows.py +365 -0
  20. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_schema.py +418 -0
  21. agentevo_cloud-0.2.8/src/agentevo_cloud/audit_writer.py +182 -0
  22. agentevo_cloud-0.2.8/src/agentevo_cloud/backup_archive.py +396 -0
  23. agentevo_cloud-0.2.8/src/agentevo_cloud/backup_workflows.py +379 -0
  24. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/billing.py +183 -32
  25. agentevo_cloud-0.2.8/src/agentevo_cloud/bounded_dns.py +61 -0
  26. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/clerk.py +150 -17
  27. agentevo_cloud-0.2.8/src/agentevo_cloud/clerk_session.py +81 -0
  28. agentevo_cloud-0.2.8/src/agentevo_cloud/cli.py +282 -0
  29. agentevo_cloud-0.2.8/src/agentevo_cloud/community.py +228 -0
  30. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/config.py +98 -1
  31. agentevo_cloud-0.2.8/src/agentevo_cloud/data_exports.py +300 -0
  32. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/db.py +567 -87
  33. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/demo.py +6 -0
  34. agentevo_cloud-0.2.8/src/agentevo_cloud/device_grants.py +146 -0
  35. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/devices.py +340 -16
  36. agentevo_cloud-0.2.8/src/agentevo_cloud/entitlement_recovery.py +1489 -0
  37. agentevo_cloud-0.2.8/src/agentevo_cloud/erasure_journal.py +3507 -0
  38. agentevo_cloud-0.2.8/src/agentevo_cloud/event_evidence.py +490 -0
  39. agentevo_cloud-0.2.8/src/agentevo_cloud/event_retirement.py +881 -0
  40. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/events.py +85 -6
  41. agentevo_cloud-0.2.8/src/agentevo_cloud/handoffs.py +259 -0
  42. agentevo_cloud-0.2.8/src/agentevo_cloud/health.py +103 -0
  43. agentevo_cloud-0.2.8/src/agentevo_cloud/health_receipts.py +211 -0
  44. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/housekeeping.py +18 -3
  45. agentevo_cloud-0.2.8/src/agentevo_cloud/http_deadline.py +181 -0
  46. agentevo_cloud-0.2.8/src/agentevo_cloud/job_authority.py +644 -0
  47. agentevo_cloud-0.2.8/src/agentevo_cloud/jobs.py +1261 -0
  48. agentevo_cloud-0.2.8/src/agentevo_cloud/live.py +34 -0
  49. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/managed.py +202 -2
  50. agentevo_cloud-0.2.8/src/agentevo_cloud/mcp.py +574 -0
  51. agentevo_cloud-0.2.8/src/agentevo_cloud/mcp_delivery.py +463 -0
  52. agentevo_cloud-0.2.8/src/agentevo_cloud/mcp_delivery_asgi.py +146 -0
  53. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/metering.py +11 -1
  54. agentevo_cloud-0.2.8/src/agentevo_cloud/migration_lifecycle.py +1172 -0
  55. agentevo_cloud-0.2.8/src/agentevo_cloud/observability.py +175 -0
  56. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/oidc.py +100 -23
  57. agentevo_cloud-0.2.8/src/agentevo_cloud/operator_privacy.py +470 -0
  58. agentevo_cloud-0.2.8/src/agentevo_cloud/privacy_boundary.py +1049 -0
  59. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/recall.py +177 -19
  60. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/records.py +33 -20
  61. agentevo_cloud-0.2.8/src/agentevo_cloud/recovery_authority.py +49 -0
  62. agentevo_cloud-0.2.8/src/agentevo_cloud/relationships.py +143 -0
  63. agentevo_cloud-0.2.8/src/agentevo_cloud/retention.py +984 -0
  64. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/revoke.py +58 -8
  65. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/screen.py +12 -3
  66. agentevo_cloud-0.2.8/src/agentevo_cloud/session_closure.py +564 -0
  67. agentevo_cloud-0.2.8/src/agentevo_cloud/sqlite_engine.py +272 -0
  68. agentevo_cloud-0.2.8/src/agentevo_cloud/storage_conversion.py +257 -0
  69. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/sync.py +69 -5
  70. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tenant_guard.py +575 -91
  71. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tenants.py +124 -24
  72. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tokens.py +166 -25
  73. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/webhooks.py +130 -157
  74. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/workers.py +307 -167
  75. agentevo_cloud-0.2.8/tests/mcp_delivery_fixtures.py +94 -0
  76. agentevo_cloud-0.2.8/tests/mcp_delivery_support.py +83 -0
  77. agentevo_cloud-0.2.8/tests/test_account_export.py +271 -0
  78. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_auth.py +35 -4
  79. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_jobs.py +17 -3
  80. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_objects.py +338 -1
  81. agentevo_cloud-0.2.8/tests/test_app_tenant_export.py +126 -0
  82. agentevo_cloud-0.2.8/tests/test_audit_admission_slice2.py +474 -0
  83. agentevo_cloud-0.2.8/tests/test_audit_bootstrap_slice1.py +941 -0
  84. agentevo_cloud-0.2.8/tests/test_audit_configured_commit.py +475 -0
  85. agentevo_cloud-0.2.8/tests/test_audit_cutover_context.py +659 -0
  86. agentevo_cloud-0.2.8/tests/test_audit_details.py +299 -0
  87. agentevo_cloud-0.2.8/tests/test_audit_epoch.py +575 -0
  88. agentevo_cloud-0.2.8/tests/test_audit_legacy_retained.py +752 -0
  89. agentevo_cloud-0.2.8/tests/test_audit_negative_mode.py +736 -0
  90. agentevo_cloud-0.2.8/tests/test_audit_preparation.py +389 -0
  91. agentevo_cloud-0.2.8/tests/test_audit_producer_d1.py +338 -0
  92. agentevo_cloud-0.2.8/tests/test_audit_rows.py +252 -0
  93. agentevo_cloud-0.2.8/tests/test_audit_schema.py +541 -0
  94. agentevo_cloud-0.2.8/tests/test_audit_sequence_boundary.py +85 -0
  95. agentevo_cloud-0.2.8/tests/test_audit_spending.py +432 -0
  96. agentevo_cloud-0.2.8/tests/test_audit_sql_lifecycle.py +522 -0
  97. agentevo_cloud-0.2.8/tests/test_audit_v18_lineage_graph.py +240 -0
  98. agentevo_cloud-0.2.8/tests/test_audit_v18_preparation.py +220 -0
  99. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_authz_b5.py +26 -7
  100. agentevo_cloud-0.2.8/tests/test_backup_archive.py +864 -0
  101. agentevo_cloud-0.2.8/tests/test_backup_script.py +799 -0
  102. agentevo_cloud-0.2.8/tests/test_backup_workflows.py +324 -0
  103. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_billing.py +111 -0
  104. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_clerk.py +53 -17
  105. agentevo_cloud-0.2.8/tests/test_clerk_online.py +220 -0
  106. agentevo_cloud-0.2.8/tests/test_clerk_session_transport.py +245 -0
  107. agentevo_cloud-0.2.8/tests/test_clerk_transactions.py +114 -0
  108. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_cli.py +16 -2
  109. agentevo_cloud-0.2.8/tests/test_community.py +379 -0
  110. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_compile.py +8 -3
  111. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_console_gate.py +9 -1
  112. agentevo_cloud-0.2.8/tests/test_contributors.py +223 -0
  113. agentevo_cloud-0.2.8/tests/test_cov_app.py +311 -0
  114. agentevo_cloud-0.2.8/tests/test_cov_application_alerts.py +40 -0
  115. agentevo_cloud-0.2.8/tests/test_cov_audit_activation.py +437 -0
  116. agentevo_cloud-0.2.8/tests/test_cov_audit_admission.py +337 -0
  117. agentevo_cloud-0.2.8/tests/test_cov_audit_authority.py +148 -0
  118. agentevo_cloud-0.2.8/tests/test_cov_audit_bootstrap.py +309 -0
  119. agentevo_cloud-0.2.8/tests/test_cov_audit_continuity.py +364 -0
  120. agentevo_cloud-0.2.8/tests/test_cov_audit_epoch.py +118 -0
  121. agentevo_cloud-0.2.8/tests/test_cov_audit_legacy.py +23 -0
  122. agentevo_cloud-0.2.8/tests/test_cov_audit_mode.py +263 -0
  123. agentevo_cloud-0.2.8/tests/test_cov_audit_retained.py +207 -0
  124. agentevo_cloud-0.2.8/tests/test_cov_audit_rows.py +149 -0
  125. agentevo_cloud-0.2.8/tests/test_cov_audit_schema.py +320 -0
  126. agentevo_cloud-0.2.8/tests/test_cov_audit_writer.py +253 -0
  127. agentevo_cloud-0.2.8/tests/test_cov_backup_workflows.py +248 -0
  128. agentevo_cloud-0.2.8/tests/test_cov_billing.py +209 -0
  129. agentevo_cloud-0.2.8/tests/test_cov_clerk_session.py +75 -0
  130. agentevo_cloud-0.2.8/tests/test_cov_cli.py +96 -0
  131. agentevo_cloud-0.2.8/tests/test_cov_config.py +149 -0
  132. agentevo_cloud-0.2.8/tests/test_cov_data_exports.py +96 -0
  133. agentevo_cloud-0.2.8/tests/test_cov_db.py +410 -0
  134. agentevo_cloud-0.2.8/tests/test_cov_device_grants.py +408 -0
  135. agentevo_cloud-0.2.8/tests/test_cov_devices.py +421 -0
  136. agentevo_cloud-0.2.8/tests/test_cov_entitlement_recovery.py +759 -0
  137. agentevo_cloud-0.2.8/tests/test_cov_erasure_journal.py +2170 -0
  138. agentevo_cloud-0.2.8/tests/test_cov_event_evidence.py +300 -0
  139. agentevo_cloud-0.2.8/tests/test_cov_event_retirement.py +729 -0
  140. agentevo_cloud-0.2.8/tests/test_cov_events.py +234 -0
  141. agentevo_cloud-0.2.8/tests/test_cov_health_receipts.py +116 -0
  142. agentevo_cloud-0.2.8/tests/test_cov_http_deadline.py +31 -0
  143. agentevo_cloud-0.2.8/tests/test_cov_job_authority.py +592 -0
  144. agentevo_cloud-0.2.8/tests/test_cov_jobs.py +821 -0
  145. agentevo_cloud-0.2.8/tests/test_cov_mcp.py +114 -0
  146. agentevo_cloud-0.2.8/tests/test_cov_mcp_delivery.py +449 -0
  147. agentevo_cloud-0.2.8/tests/test_cov_mcp_delivery_asgi.py +191 -0
  148. agentevo_cloud-0.2.8/tests/test_cov_migration_lifecycle.py +1005 -0
  149. agentevo_cloud-0.2.8/tests/test_cov_observability.py +55 -0
  150. agentevo_cloud-0.2.8/tests/test_cov_oidc.py +164 -0
  151. agentevo_cloud-0.2.8/tests/test_cov_operator_privacy.py +548 -0
  152. agentevo_cloud-0.2.8/tests/test_cov_privacy_boundary.py +599 -0
  153. agentevo_cloud-0.2.8/tests/test_cov_recovery_authority.py +33 -0
  154. agentevo_cloud-0.2.8/tests/test_cov_retention.py +462 -0
  155. agentevo_cloud-0.2.8/tests/test_cov_revoke.py +248 -0
  156. agentevo_cloud-0.2.8/tests/test_cov_session_closure.py +417 -0
  157. agentevo_cloud-0.2.8/tests/test_cov_sqlite_engine.py +236 -0
  158. agentevo_cloud-0.2.8/tests/test_cov_storage_conversion.py +441 -0
  159. agentevo_cloud-0.2.8/tests/test_cov_sync.py +188 -0
  160. agentevo_cloud-0.2.8/tests/test_cov_tenant_guard.py +155 -0
  161. agentevo_cloud-0.2.8/tests/test_cov_tenants.py +64 -0
  162. agentevo_cloud-0.2.8/tests/test_cov_tokens.py +676 -0
  163. agentevo_cloud-0.2.8/tests/test_cov_webhooks.py +127 -0
  164. agentevo_cloud-0.2.8/tests/test_cov_workers.py +339 -0
  165. agentevo_cloud-0.2.8/tests/test_database_publication.py +225 -0
  166. agentevo_cloud-0.2.8/tests/test_deletion_backup_receipts.py +51 -0
  167. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_demo.py +13 -3
  168. agentevo_cloud-0.2.8/tests/test_deploy_build_context.py +202 -0
  169. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_deploy_image_lock.py +98 -14
  170. agentevo_cloud-0.2.8/tests/test_device_grant_lifecycle.py +102 -0
  171. agentevo_cloud-0.2.8/tests/test_device_grants.py +756 -0
  172. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_devices_ci.py +40 -0
  173. agentevo_cloud-0.2.8/tests/test_encrypted_backup_workflows.py +761 -0
  174. agentevo_cloud-0.2.8/tests/test_encrypted_service.py +193 -0
  175. agentevo_cloud-0.2.8/tests/test_entitlement_mixed_live.py +508 -0
  176. agentevo_cloud-0.2.8/tests/test_entitlement_recovery.py +1289 -0
  177. agentevo_cloud-0.2.8/tests/test_erasure_http.py +1700 -0
  178. agentevo_cloud-0.2.8/tests/test_erasure_journal.py +2662 -0
  179. agentevo_cloud-0.2.8/tests/test_event_evidence.py +677 -0
  180. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_event_loop_blocking.py +2 -2
  181. agentevo_cloud-0.2.8/tests/test_event_retirement.py +1790 -0
  182. agentevo_cloud-0.2.8/tests/test_feed.py +183 -0
  183. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_foundation.py +25 -63
  184. agentevo_cloud-0.2.8/tests/test_handoffs.py +354 -0
  185. agentevo_cloud-0.2.8/tests/test_health_freshness.py +441 -0
  186. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_housekeeping.py +2 -0
  187. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_idempotency_scope.py +2 -0
  188. agentevo_cloud-0.2.8/tests/test_identity_privacy_hops.py +614 -0
  189. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_isolation_matrix.py +236 -16
  190. agentevo_cloud-0.2.8/tests/test_job_authority_migration.py +123 -0
  191. agentevo_cloud-0.2.8/tests/test_job_submitter_authority.py +846 -0
  192. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_jobs.py +213 -24
  193. agentevo_cloud-0.2.8/tests/test_live.py +91 -0
  194. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_managed.py +46 -0
  195. agentevo_cloud-0.2.8/tests/test_mcp_delivery_authority.py +316 -0
  196. agentevo_cloud-0.2.8/tests/test_mcp_delivery_leases.py +273 -0
  197. agentevo_cloud-0.2.8/tests/test_mcp_server_send_boundary.py +452 -0
  198. agentevo_cloud-0.2.8/tests/test_mcp_sse.py +1141 -0
  199. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_metered_write_lock.py +5 -0
  200. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_metering_records.py +21 -2
  201. agentevo_cloud-0.2.8/tests/test_migration_atomicity.py +81 -0
  202. agentevo_cloud-0.2.8/tests/test_migration_lifecycle.py +712 -0
  203. agentevo_cloud-0.2.8/tests/test_migration_lock.py +263 -0
  204. agentevo_cloud-0.2.8/tests/test_migration_minimum_bootstrap.py +311 -0
  205. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_object_workspace_ownership.py +2 -0
  206. agentevo_cloud-0.2.8/tests/test_observability.py +249 -0
  207. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_oidc.py +29 -45
  208. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_openapi.py +12 -0
  209. agentevo_cloud-0.2.8/tests/test_operator_privacy.py +634 -0
  210. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_perf_b6.py +1 -1
  211. agentevo_cloud-0.2.8/tests/test_privacy_boundary.py +547 -0
  212. agentevo_cloud-0.2.8/tests/test_privileged_integrity.py +253 -0
  213. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_promote.py +3 -0
  214. agentevo_cloud-0.2.8/tests/test_protected_backup_scripts.py +792 -0
  215. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_prune_foreign.py +64 -55
  216. agentevo_cloud-0.2.8/tests/test_readiness.py +182 -0
  217. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_recall.py +143 -2
  218. agentevo_cloud-0.2.8/tests/test_recovery_schema.py +237 -0
  219. agentevo_cloud-0.2.8/tests/test_relationship_integrity.py +239 -0
  220. agentevo_cloud-0.2.8/tests/test_relationship_parent_report.py +249 -0
  221. agentevo_cloud-0.2.8/tests/test_restore_cutover.py +261 -0
  222. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_restore_script.py +17 -2
  223. agentevo_cloud-0.2.8/tests/test_retention.py +1509 -0
  224. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_revoke.py +3 -0
  225. agentevo_cloud-0.2.8/tests/test_runbook_schema.py +119 -0
  226. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_screen.py +10 -0
  227. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_screening_events.py +5 -3
  228. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sdist_layout.py +5 -0
  229. agentevo_cloud-0.2.8/tests/test_session_closure.py +918 -0
  230. agentevo_cloud-0.2.8/tests/test_shared_proxy_guard.py +320 -0
  231. agentevo_cloud-0.2.8/tests/test_snapshot_current_authority.py +263 -0
  232. agentevo_cloud-0.2.8/tests/test_snapshot_evidence.py +424 -0
  233. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sql_tenant_scoping.py +535 -16
  234. agentevo_cloud-0.2.8/tests/test_sqlite_engine.py +274 -0
  235. agentevo_cloud-0.2.8/tests/test_storage_conversion.py +543 -0
  236. agentevo_cloud-0.2.8/tests/test_storage_operator.py +279 -0
  237. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sync_mode.py +3 -0
  238. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sync_push_pull.py +4 -0
  239. agentevo_cloud-0.2.8/tests/test_tenant_binding_contract.py +213 -0
  240. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_tenant_delete.py +9 -2
  241. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_tenant_guard.py +47 -11
  242. agentevo_cloud-0.2.8/tests/test_tenant_guard_adversarial.py +295 -0
  243. agentevo_cloud-0.2.8/tests/test_token_ancestry.py +170 -0
  244. agentevo_cloud-0.2.8/tests/test_webhook_dns_deadline.py +197 -0
  245. agentevo_cloud-0.2.8/tests/test_webhook_ssrf.py +176 -0
  246. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_webhook_write_lock.py +19 -2
  247. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_webhooks.py +71 -1
  248. agentevo_cloud-0.2.8/tests/test_worker_privacy.py +866 -0
  249. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_workers.py +264 -6
  250. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_workspace_delete_jobs.py +93 -13
  251. agentevo_cloud-0.2.8/tests/test_workspace_export_handoffs.py +135 -0
  252. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_write_lock_convoy.py +2 -2
  253. agentevo_cloud-0.1.9/PKG-INFO +0 -52
  254. agentevo_cloud-0.1.9/README.md +0 -23
  255. agentevo_cloud-0.1.9/src/agentevo_cloud/cli.py +0 -144
  256. agentevo_cloud-0.1.9/src/agentevo_cloud/jobs.py +0 -608
  257. agentevo_cloud-0.1.9/tests/test_runbook_schema.py +0 -237
  258. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/__init__.py +0 -0
  259. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/openapi.py +0 -0
  260. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/promote.py +0 -0
  261. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/py.typed +0 -0
  262. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/summaries.py +0 -0
  263. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_acceptance_m12.py +0 -0
  264. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_acceptance_m8.py +0 -0
  265. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_analytics.py +0 -0
  266. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app.py +0 -0
  267. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_managed.py +0 -0
  268. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_sync.py +0 -0
  269. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_audit_order.py +0 -0
  270. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_body_limit.py +0 -0
  271. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_caddy_edge.py +0 -0
  272. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_console_titles.py +0 -0
  273. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_containment_at_quota.py +0 -0
  274. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_events.py +0 -0
  275. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_int_bounds.py +0 -0
  276. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_license.py +0 -0
  277. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_lone_surrogates.py +0 -0
  278. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_maintenance.py +0 -0
  279. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_proxy_ip.py +0 -0
  280. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_reserved_key_ids.py +0 -0
  281. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_scope_hardening.py +0 -0
  282. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_smoke.py +0 -0
  283. {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_summaries.py +0 -0
@@ -31,3 +31,6 @@ htmlcov/
31
31
 
32
32
  # Local-only Clerk publishable key (never commit)
33
33
  website/clerk.config.json
34
+
35
+ # `agentevo report` default output (repo-root runs drop it here)
36
+ agentevo-report.html
@@ -3,7 +3,7 @@ Business Source License 1.1
3
3
  Parameters
4
4
 
5
5
  Licensor: Agentevo
6
- Licensed Work: agentevo-cloud 0.1.9
6
+ Licensed Work: agentevo-cloud 0.2.8
7
7
  Copyright Notice: Copyright (c) 2026 Agentevo
8
8
 
9
9
  Additional Use Grant:
@@ -0,0 +1,165 @@
1
+ Metadata-Version: 2.5
2
+ Name: agentevo-cloud
3
+ Version: 0.2.8
4
+ Summary: Agentevo SaaS (TZ-3 control plane, TZ-4 managed intelligence): auth, metering, C2 APIs, workers.
5
+ Project-URL: Homepage, https://agentevo.sh
6
+ Project-URL: Documentation, https://agentevo.sh/#setup
7
+ Author: Agentevo
8
+ License-Expression: BUSL-1.1
9
+ License-File: LICENSE
10
+ Keywords: agent-memory,ai-agents,guardrails,skills
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: agentevo-core==0.1.6
23
+ Requires-Dist: agentevo-local==0.1.7
24
+ Requires-Dist: anyio>=4
25
+ Requires-Dist: cryptography>=44
26
+ Requires-Dist: fastapi>=0.115
27
+ Requires-Dist: pyjwt>=2.15
28
+ Requires-Dist: uvicorn>=0.30
29
+ Provides-Extra: encrypted
30
+ Requires-Dist: sqlcipher3==0.6.3; extra == 'encrypted'
31
+ Description-Content-Type: text/markdown
32
+
33
+ # agentevo-cloud
34
+
35
+ Agentevo SaaS planes: control API (TZ-3: auth, tenants, metering, sync) and
36
+ managed intelligence API (TZ-4: tenant-scoped recall, async verify/compile jobs,
37
+ analytics), plus the `agentevo-cloud` operator CLI (`provision`, `serve`,
38
+ `jobs`, `webhooks`, `health`, `export`, `backup`, `privacy`).
39
+
40
+ ```sh
41
+ python3 -m venv .venv # Python 3.10+
42
+ .venv/bin/pip install agentevo-cloud
43
+ .venv/bin/agentevo-cloud provision --tenant t-1 --name demo --user u-1 --workspace main
44
+ .venv/bin/agentevo-cloud serve
45
+ ```
46
+
47
+ A virtualenv keeps `pip` off the system Python, which macOS Homebrew and
48
+ Debian/Ubuntu refuse to modify (PEP 668).
49
+
50
+ Part of [Agentevo](https://agentevo.sh).
51
+
52
+ ## Encrypted runtime release
53
+
54
+ Cloud **0.2.8** is the pending source version for authenticated accepted event
55
+ context, reviewed legacy transitions and the existing encrypted storage,
56
+ provider and backup controls. Verified 0.2.7 artifacts and consumer seal remain
57
+ preserved; 0.2.8 is not built/sealed/cold-installed yet. A local passing test alone
58
+ does not establish publication, deployment or complete operating acceptance.
59
+
60
+ The optional `encrypted` extra pins `sqlcipher3==0.6.3`. For source development,
61
+ install it with `uv sync --frozen --package agentevo-cloud --extra encrypted`.
62
+ After final publication, the package selection is
63
+ `agentevo-cloud[encrypted]==0.2.8`; use the approved hashed, wheel-only consumer
64
+ lock for a hosted image. Installation alone does not activate encryption.
65
+
66
+ Select `AGENTEVO_DB_STORAGE=sqlcipher-v1`, an explicit public
67
+ `AGENTEVO_DB_KEY_ID` and `AGENTEVO_DB_KEY_FILE` for every API, worker and
68
+ operator process using the same database. The key file must contain exactly
69
+ 32 raw bytes, be owned by that runtime user with mode 0600, and be mounted from
70
+ independently recoverable protected storage. No default key is supplied.
71
+ Missing runtime, missing/wrong keys or a plaintext database in the encrypted
72
+ profile are refused; the profile never falls back to plain SQLite. The default
73
+ `plain` profile exists for legacy compatibility and does not encrypt live rows.
74
+
75
+ Existing plaintext needs a separately verified new-file conversion; selecting
76
+ the profile does not convert it. Preserve older plaintext recovery points
77
+ under their reviewed retention policy, and keep the correct old database keys
78
+ and independent archive/journal authority for encrypted recovery points.
79
+ Native application and operator paths have local acceptance evidence. Linux
80
+ image execution and independent operating custody remain separate gates. The
81
+ source checkout contains the detailed design and conversion procedure in
82
+ `docs/implementation/LIVE_DATABASE_ENCRYPTION.md`; public setup is at
83
+ [Agentevo setup](https://agentevo.sh/#setup).
84
+
85
+ ## Private recovery controls
86
+
87
+ Encrypted online snapshots support verified filesystem publication and
88
+ recovery into a new private database. Recovery requires independent keys, the
89
+ authenticated erasure journal, its independently trusted latest head and a
90
+ current approved retention policy. The selected `sqlcipher-v1` profile encrypts
91
+ live database storage; the legacy `plain` profile leaves searchable rows
92
+ readable in copied databases. Archive encryption does not establish live-data
93
+ encryption or off-host custody. Protected application backups require their own
94
+ archive key with different material from the online database key. Legacy gzip
95
+ restore refuses encrypted or privacy-protected databases; use the authenticated
96
+ operator recovery path with current independently retained authority instead.
97
+
98
+ Optional `AGENTEVO_ERASURE_JOURNAL` and `AGENTEVO_ERASURE_KEY_FILE` configure the
99
+ same authority for API, workers and operator commands. Protected databases refuse
100
+ missing authority. Recorded erasures, revocations, consent and retention decisions
101
+ are reconciled before restored data is used. Permission increases require a
102
+ postcommit confirmation; uncertain decisions remain unavailable until explicit
103
+ private operator resolution. `privacy authority-status`, `authority-resolve`,
104
+ `authority-reject` and `reconcile` support that procedure without journal editing.
105
+
106
+ Protected restore requires the source's protection marker and authenticated
107
+ applied/minimum journal heads to exist already. Historical snapshots from before
108
+ activation are refused; a new empty journal cannot prove earlier revocations.
109
+ Review a current baseline before activation and preserve independently current
110
+ authority. The guard cannot reconstruct unrecorded historical decisions.
111
+
112
+ `privacy retention` defaults to a read-only approved-policy preview. Apply needs
113
+ an explicitly activated matching policy and a fresh matching preview seal.
114
+ Use `agentevo-cloud backup --help` and `agentevo-cloud privacy --help` for exact
115
+ arguments. Keep previous artifacts, archive keys and journal verification keys
116
+ for every retained recovery point. Unrecorded decisions before activation need a
117
+ reviewed transition; real operating recovery remains a separate acceptance gate.
118
+
119
+ ## Queued job authorization
120
+
121
+ Schema 29 records private accepted submitter authority for new asynchronous jobs.
122
+ Workers recheck credential ancestry, membership and the required workspace and
123
+ operation grants before claim and result application. Clerk work also checks the
124
+ accepted public signing key, original expiry, exact current account link and
125
+ fresh configured provider/session status. Provider outages defer work without
126
+ applying a private result; withdrawn authority cancels it. Provider reads occur
127
+ outside database/privacy fences. Session-event compilation needs a tenant-wide
128
+ grant because its input events have no workspace attribution.
129
+
130
+ Existing jobs keep an unknown submitter. Workers cancel unbound queued/running
131
+ work with `JOB_AUTHORITY_UNKNOWN` and clear its private parameters/results;
132
+ resubmit needed work through a currently authorized API. The migration never
133
+ infers an owner or promotes old work to operator authority. Public job responses
134
+ omit the private binding; account export includes sanitized attribution only.
135
+ These local controls do not establish real-provider or deployed acceptance.
136
+
137
+ ## Accepted event evidence
138
+
139
+ Schema30 retains bounded, screened canonical source/client time/environment/
140
+ provenance for new event ingestion. A protected acceptance capsule binds exact
141
+ context and payload bytes, tenant/session/sequence/type/classification and
142
+ server receipt using the active independent journal verification key. Compiler
143
+ input and result application reverify it; the original core event hash/wire is
144
+ unchanged. Unconfigured context is explicit unattested evidence. Retain all
145
+ verification keys needed by surviving events and recovery points.
146
+
147
+ Ordinary protected upgrade with existing schema29 events refuses. It needs an
148
+ explicit trusted-library transition bound to an externally reviewed exact
149
+ missing-row baseline and current independent head; there is no automatic CLI,
150
+ environment or SQL approval. Historical context staysNULL and its signed marker
151
+ witnesses only observed absence. Restore never creates that approval and verifies
152
+ retained capsules before publication. Do not strip evidence or downgrade the
153
+ schema marker for rollback. The source checkout's
154
+ `docs/implementation/PRIVACY_OPERATORS.md` documents the operating gate.
155
+
156
+ Acceptance is not session closure, causal completeness, permission or event
157
+ retirement. Finite events/audit/billing/snapshot retention remains refused;
158
+ new release, real historical baseline/custody and final operating/deployed
159
+ acceptance remain separate gates.
160
+
161
+ ## License
162
+
163
+ Business Source License 1.1 — see the `LICENSE` file shipped with this
164
+ package. Free for internal production use in your own infrastructure;
165
+ converts to Apache-2.0 on the Change Date stated in the license.
@@ -0,0 +1,133 @@
1
+ # agentevo-cloud
2
+
3
+ Agentevo SaaS planes: control API (TZ-3: auth, tenants, metering, sync) and
4
+ managed intelligence API (TZ-4: tenant-scoped recall, async verify/compile jobs,
5
+ analytics), plus the `agentevo-cloud` operator CLI (`provision`, `serve`,
6
+ `jobs`, `webhooks`, `health`, `export`, `backup`, `privacy`).
7
+
8
+ ```sh
9
+ python3 -m venv .venv # Python 3.10+
10
+ .venv/bin/pip install agentevo-cloud
11
+ .venv/bin/agentevo-cloud provision --tenant t-1 --name demo --user u-1 --workspace main
12
+ .venv/bin/agentevo-cloud serve
13
+ ```
14
+
15
+ A virtualenv keeps `pip` off the system Python, which macOS Homebrew and
16
+ Debian/Ubuntu refuse to modify (PEP 668).
17
+
18
+ Part of [Agentevo](https://agentevo.sh).
19
+
20
+ ## Encrypted runtime release
21
+
22
+ Cloud **0.2.8** is the pending source version for authenticated accepted event
23
+ context, reviewed legacy transitions and the existing encrypted storage,
24
+ provider and backup controls. Verified 0.2.7 artifacts and consumer seal remain
25
+ preserved; 0.2.8 is not built/sealed/cold-installed yet. A local passing test alone
26
+ does not establish publication, deployment or complete operating acceptance.
27
+
28
+ The optional `encrypted` extra pins `sqlcipher3==0.6.3`. For source development,
29
+ install it with `uv sync --frozen --package agentevo-cloud --extra encrypted`.
30
+ After final publication, the package selection is
31
+ `agentevo-cloud[encrypted]==0.2.8`; use the approved hashed, wheel-only consumer
32
+ lock for a hosted image. Installation alone does not activate encryption.
33
+
34
+ Select `AGENTEVO_DB_STORAGE=sqlcipher-v1`, an explicit public
35
+ `AGENTEVO_DB_KEY_ID` and `AGENTEVO_DB_KEY_FILE` for every API, worker and
36
+ operator process using the same database. The key file must contain exactly
37
+ 32 raw bytes, be owned by that runtime user with mode 0600, and be mounted from
38
+ independently recoverable protected storage. No default key is supplied.
39
+ Missing runtime, missing/wrong keys or a plaintext database in the encrypted
40
+ profile are refused; the profile never falls back to plain SQLite. The default
41
+ `plain` profile exists for legacy compatibility and does not encrypt live rows.
42
+
43
+ Existing plaintext needs a separately verified new-file conversion; selecting
44
+ the profile does not convert it. Preserve older plaintext recovery points
45
+ under their reviewed retention policy, and keep the correct old database keys
46
+ and independent archive/journal authority for encrypted recovery points.
47
+ Native application and operator paths have local acceptance evidence. Linux
48
+ image execution and independent operating custody remain separate gates. The
49
+ source checkout contains the detailed design and conversion procedure in
50
+ `docs/implementation/LIVE_DATABASE_ENCRYPTION.md`; public setup is at
51
+ [Agentevo setup](https://agentevo.sh/#setup).
52
+
53
+ ## Private recovery controls
54
+
55
+ Encrypted online snapshots support verified filesystem publication and
56
+ recovery into a new private database. Recovery requires independent keys, the
57
+ authenticated erasure journal, its independently trusted latest head and a
58
+ current approved retention policy. The selected `sqlcipher-v1` profile encrypts
59
+ live database storage; the legacy `plain` profile leaves searchable rows
60
+ readable in copied databases. Archive encryption does not establish live-data
61
+ encryption or off-host custody. Protected application backups require their own
62
+ archive key with different material from the online database key. Legacy gzip
63
+ restore refuses encrypted or privacy-protected databases; use the authenticated
64
+ operator recovery path with current independently retained authority instead.
65
+
66
+ Optional `AGENTEVO_ERASURE_JOURNAL` and `AGENTEVO_ERASURE_KEY_FILE` configure the
67
+ same authority for API, workers and operator commands. Protected databases refuse
68
+ missing authority. Recorded erasures, revocations, consent and retention decisions
69
+ are reconciled before restored data is used. Permission increases require a
70
+ postcommit confirmation; uncertain decisions remain unavailable until explicit
71
+ private operator resolution. `privacy authority-status`, `authority-resolve`,
72
+ `authority-reject` and `reconcile` support that procedure without journal editing.
73
+
74
+ Protected restore requires the source's protection marker and authenticated
75
+ applied/minimum journal heads to exist already. Historical snapshots from before
76
+ activation are refused; a new empty journal cannot prove earlier revocations.
77
+ Review a current baseline before activation and preserve independently current
78
+ authority. The guard cannot reconstruct unrecorded historical decisions.
79
+
80
+ `privacy retention` defaults to a read-only approved-policy preview. Apply needs
81
+ an explicitly activated matching policy and a fresh matching preview seal.
82
+ Use `agentevo-cloud backup --help` and `agentevo-cloud privacy --help` for exact
83
+ arguments. Keep previous artifacts, archive keys and journal verification keys
84
+ for every retained recovery point. Unrecorded decisions before activation need a
85
+ reviewed transition; real operating recovery remains a separate acceptance gate.
86
+
87
+ ## Queued job authorization
88
+
89
+ Schema 29 records private accepted submitter authority for new asynchronous jobs.
90
+ Workers recheck credential ancestry, membership and the required workspace and
91
+ operation grants before claim and result application. Clerk work also checks the
92
+ accepted public signing key, original expiry, exact current account link and
93
+ fresh configured provider/session status. Provider outages defer work without
94
+ applying a private result; withdrawn authority cancels it. Provider reads occur
95
+ outside database/privacy fences. Session-event compilation needs a tenant-wide
96
+ grant because its input events have no workspace attribution.
97
+
98
+ Existing jobs keep an unknown submitter. Workers cancel unbound queued/running
99
+ work with `JOB_AUTHORITY_UNKNOWN` and clear its private parameters/results;
100
+ resubmit needed work through a currently authorized API. The migration never
101
+ infers an owner or promotes old work to operator authority. Public job responses
102
+ omit the private binding; account export includes sanitized attribution only.
103
+ These local controls do not establish real-provider or deployed acceptance.
104
+
105
+ ## Accepted event evidence
106
+
107
+ Schema30 retains bounded, screened canonical source/client time/environment/
108
+ provenance for new event ingestion. A protected acceptance capsule binds exact
109
+ context and payload bytes, tenant/session/sequence/type/classification and
110
+ server receipt using the active independent journal verification key. Compiler
111
+ input and result application reverify it; the original core event hash/wire is
112
+ unchanged. Unconfigured context is explicit unattested evidence. Retain all
113
+ verification keys needed by surviving events and recovery points.
114
+
115
+ Ordinary protected upgrade with existing schema29 events refuses. It needs an
116
+ explicit trusted-library transition bound to an externally reviewed exact
117
+ missing-row baseline and current independent head; there is no automatic CLI,
118
+ environment or SQL approval. Historical context staysNULL and its signed marker
119
+ witnesses only observed absence. Restore never creates that approval and verifies
120
+ retained capsules before publication. Do not strip evidence or downgrade the
121
+ schema marker for rollback. The source checkout's
122
+ `docs/implementation/PRIVACY_OPERATORS.md` documents the operating gate.
123
+
124
+ Acceptance is not session closure, causal completeness, permission or event
125
+ retirement. Finite events/audit/billing/snapshot retention remains refused;
126
+ new release, real historical baseline/custody and final operating/deployed
127
+ acceptance remain separate gates.
128
+
129
+ ## License
130
+
131
+ Business Source License 1.1 — see the `LICENSE` file shipped with this
132
+ package. Free for internal production use in your own infrastructure;
133
+ converts to Apache-2.0 on the Change Date stated in the license.