imbi-api 2.40.0__tar.gz → 2.41.0__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 (423) hide show
  1. {imbi_api-2.40.0 → imbi_api-2.41.0}/PKG-INFO +3 -3
  2. {imbi_api-2.40.0 → imbi_api-2.41.0}/pyproject.toml +3 -3
  3. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/agents.py +39 -1
  4. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/harness.py +596 -3
  5. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_deployments.py +165 -11
  6. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/projects.py +1 -82
  7. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/__init__.py +4 -0
  8. imbi_api-2.41.0/src/imbi/api/harness/egress.py +171 -0
  9. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/schemata.toml +67 -0
  10. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/store.py +296 -1
  11. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/prompts/release_notes_system.md +64 -7
  12. imbi_api-2.41.0/tests/endpoints/test_harness_egress.py +470 -0
  13. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_deployments.py +248 -0
  14. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_projects.py +0 -56
  15. {imbi_api-2.40.0 → imbi_api-2.41.0}/.gitignore +0 -0
  16. {imbi_api-2.40.0 → imbi_api-2.41.0}/README.md +0 -0
  17. {imbi_api-2.40.0 → imbi_api-2.41.0}/moon.yml +0 -0
  18. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/README.md +0 -0
  19. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/__init__.py +0 -0
  20. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tasks/__init__.py +0 -0
  21. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tasks/log.py +0 -0
  22. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tasks/schemata.toml +0 -0
  23. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tasks/store.py +0 -0
  24. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tasks/sweeper.py +0 -0
  25. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/agent_tools.py +0 -0
  26. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/app.py +0 -0
  27. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/__init__.py +0 -0
  28. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/agent_api.py +0 -0
  29. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/agent_api_routes.py +0 -0
  30. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/authorization_codes.py +0 -0
  31. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/autonomous.py +0 -0
  32. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/internal_services.py +0 -0
  33. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/local_auth.py +0 -0
  34. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/login_providers.py +0 -0
  35. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/membership.py +0 -0
  36. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/models.py +0 -0
  37. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/oauth.py +0 -0
  38. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/oauth_clients.py +0 -0
  39. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/organizations.py +0 -0
  40. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/password.py +0 -0
  41. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/permissions.py +0 -0
  42. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/principals.py +0 -0
  43. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/seed.py +0 -0
  44. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/sessions.py +0 -0
  45. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/tokens.py +0 -0
  46. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/auth/totp.py +0 -0
  47. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/backfill_embeddings.py +0 -0
  48. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/blueprint_attributes.py +0 -0
  49. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/blueprint_compliance.py +0 -0
  50. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/commit_pushed_at_repair.py +0 -0
  51. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/commit_sync/__init__.py +0 -0
  52. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/commit_sync/queue.py +0 -0
  53. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/commit_sync/service.py +0 -0
  54. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/component_facts.py +0 -0
  55. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/deployment_status_repair.py +0 -0
  56. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/deployment_sweeper.py +0 -0
  57. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/deployment_sync/__init__.py +0 -0
  58. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/deployment_sync/queue.py +0 -0
  59. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/deployment_sync/service.py +0 -0
  60. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/documents/__init__.py +0 -0
  61. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/documents/read_sweeper.py +0 -0
  62. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/domain/__init__.py +0 -0
  63. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/domain/models.py +0 -0
  64. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/domain/scoring.py +0 -0
  65. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/drift.py +0 -0
  66. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/__init__.py +0 -0
  67. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/client.py +0 -0
  68. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/dependencies.py +0 -0
  69. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/models.py +0 -0
  70. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/base.html +0 -0
  71. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/base.txt +0 -0
  72. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/password_reset.html +0 -0
  73. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/password_reset.txt +0 -0
  74. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/welcome.html +0 -0
  75. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates/welcome.txt +0 -0
  76. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/email/templates.py +0 -0
  77. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/__init__.py +0 -0
  78. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_credentials.py +0 -0
  79. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_document_events.py +0 -0
  80. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_document_history.py +0 -0
  81. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_document_reads.py +0 -0
  82. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_document_scope.py +0 -0
  83. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_helpers.py +0 -0
  84. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_json_fields.py +0 -0
  85. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_pagination.py +0 -0
  86. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_request_urls.py +0 -0
  87. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/_search_index.py +0 -0
  88. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/admin.py +0 -0
  89. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/admin_plugins.py +0 -0
  90. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/agent_platform.py +0 -0
  91. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/agent_task_harness.py +0 -0
  92. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/agent_tasks.py +0 -0
  93. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/agent_usage.py +0 -0
  94. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/ai_models.py +0 -0
  95. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/ai_providers.py +0 -0
  96. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/api_keys.py +0 -0
  97. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/auth.py +0 -0
  98. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/auth_providers.py +0 -0
  99. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/blueprints.py +0 -0
  100. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/client_credentials.py +0 -0
  101. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/comments.py +0 -0
  102. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/components.py +0 -0
  103. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/dashboard.py +0 -0
  104. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/document_analytics.py +0 -0
  105. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/document_likes.py +0 -0
  106. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/document_presence.py +0 -0
  107. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/document_templates.py +0 -0
  108. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/document_versions.py +0 -0
  109. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/documents.py +0 -0
  110. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/environments.py +0 -0
  111. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/events.py +0 -0
  112. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/graph_query.py +0 -0
  113. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/iggy_connectors.py +0 -0
  114. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/integrations.py +0 -0
  115. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/link_definitions.py +0 -0
  116. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/local_auth.py +0 -0
  117. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/maintenance.py +0 -0
  118. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/mcp_servers.py +0 -0
  119. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/mfa.py +0 -0
  120. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/oauth_metadata.py +0 -0
  121. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/operations_log.py +0 -0
  122. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/organizations.py +0 -0
  123. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/plugin_edges.py +0 -0
  124. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/plugin_entities.py +0 -0
  125. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/plugins.py +0 -0
  126. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_analysis.py +0 -0
  127. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_commit_sync.py +0 -0
  128. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_configuration.py +0 -0
  129. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_incidents.py +0 -0
  130. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_integrations.py +0 -0
  131. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_lifecycle.py +0 -0
  132. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_logs.py +0 -0
  133. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_plugins.py +0 -0
  134. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_pr_sync.py +0 -0
  135. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/project_types.py +0 -0
  136. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/prompts.py +0 -0
  137. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/pull_requests.py +0 -0
  138. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/releases.py +0 -0
  139. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/roles.py +0 -0
  140. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/sa_api_keys.py +0 -0
  141. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/scoring.py +0 -0
  142. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/scoring_policies.py +0 -0
  143. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/search.py +0 -0
  144. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/secret_broker.py +0 -0
  145. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/service_accounts.py +0 -0
  146. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/status.py +0 -0
  147. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/tags.py +0 -0
  148. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/teams.py +0 -0
  149. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/uploads.py +0 -0
  150. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/user_activity.py +0 -0
  151. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/users.py +0 -0
  152. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/webhooks.py +0 -0
  153. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/workflow_runs.py +0 -0
  154. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/endpoints/workflows.py +0 -0
  155. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/entrypoint.py +0 -0
  156. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/graph_ids.py +0 -0
  157. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/graph_sql.py +0 -0
  158. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/auth.py +0 -0
  159. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/marketplaces.py +0 -0
  160. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/metrics.py +0 -0
  161. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/platform.py +0 -0
  162. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/sweeper.py +0 -0
  163. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/harness/tokens.py +0 -0
  164. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/__init__.py +0 -0
  165. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/attribution.py +0 -0
  166. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/endpoints.py +0 -0
  167. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/errors.py +0 -0
  168. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/flows.py +0 -0
  169. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/host_integration.py +0 -0
  170. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/models.py +0 -0
  171. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/repository.py +0 -0
  172. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/resolution.py +0 -0
  173. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/state.py +0 -0
  174. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/identity/sweeper.py +0 -0
  175. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/iggy_metrics.py +0 -0
  176. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/lifespans.py +0 -0
  177. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/llm/__init__.py +0 -0
  178. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/llm/dependencies.py +0 -0
  179. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/__init__.py +0 -0
  180. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/log.py +0 -0
  181. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/operations.py +0 -0
  182. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/registry.py +0 -0
  183. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/state.py +0 -0
  184. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/maintenance/worker.py +0 -0
  185. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/mcp_test.py +0 -0
  186. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/middleware/__init__.py +0 -0
  187. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/middleware/rate_limit.py +0 -0
  188. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/models.py +0 -0
  189. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/openapi.py +0 -0
  190. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/orphan_releases.py +0 -0
  191. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/__init__.py +0 -0
  192. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/assignment_writer.py +0 -0
  193. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/assignments.py +0 -0
  194. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/credentials.py +0 -0
  195. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/installer.py +0 -0
  196. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/lifecycle.py +0 -0
  197. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/lifecycle_dispatch.py +0 -0
  198. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/reload.py +0 -0
  199. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/resolution.py +0 -0
  200. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/plugins/schemas.py +0 -0
  201. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/pr_sync/__init__.py +0 -0
  202. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/pr_sync/queue.py +0 -0
  203. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/pr_sync/service.py +0 -0
  204. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/prompts/__init__.py +0 -0
  205. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/prompts/seed.py +0 -0
  206. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/py.typed +0 -0
  207. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/relationships.py +0 -0
  208. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/release_promote/__init__.py +0 -0
  209. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/release_promote/queue.py +0 -0
  210. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/release_promote/service.py +0 -0
  211. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/sbom.py +0 -0
  212. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/scoring/__init__.py +0 -0
  213. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/scoring/queue.py +0 -0
  214. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/__init__.py +0 -0
  215. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/audit.py +0 -0
  216. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/broker.py +0 -0
  217. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/github_app.py +0 -0
  218. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/providers.py +0 -0
  219. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/schemata.toml +0 -0
  220. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/secret_broker/store.py +0 -0
  221. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/settings.py +0 -0
  222. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/storage/__init__.py +0 -0
  223. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/storage/client.py +0 -0
  224. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/storage/dependencies.py +0 -0
  225. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/storage/thumbnails.py +0 -0
  226. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/storage/validation.py +0 -0
  227. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/user_document_orgs.py +0 -0
  228. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/__init__.py +0 -0
  229. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/runs.py +0 -0
  230. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/runtime_schemata.toml +0 -0
  231. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/schemata.toml +0 -0
  232. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/store.py +0 -0
  233. {imbi_api-2.40.0 → imbi_api-2.41.0}/src/imbi/api/workflows/sweeper.py +0 -0
  234. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/__init__.py +0 -0
  235. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/__init__.py +0 -0
  236. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_authentication.py +0 -0
  237. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_authorization.py +0 -0
  238. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_encryption.py +0 -0
  239. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_internal_services.py +0 -0
  240. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_login_providers.py +0 -0
  241. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_membership.py +0 -0
  242. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_oauth.py +0 -0
  243. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_oauth_server.py +0 -0
  244. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_organizations.py +0 -0
  245. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_permissions.py +0 -0
  246. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_seed.py +0 -0
  247. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_sessions.py +0 -0
  248. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/auth/test_totp.py +0 -0
  249. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/clickhouse/__init__.py +0 -0
  250. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/clickhouse/test_client.py +0 -0
  251. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/clickhouse/test_init.py +0 -0
  252. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/clickhouse/test_privacy.py +0 -0
  253. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/__init__.py +0 -0
  254. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_audit_clickhouse.py +0 -0
  255. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_client.py +0 -0
  256. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_init.py +0 -0
  257. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_integration.py +0 -0
  258. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_models.py +0 -0
  259. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/email/test_templates.py +0 -0
  260. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/__init__.py +0 -0
  261. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_admin.py +0 -0
  262. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_admin_plugins.py +0 -0
  263. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_api.py +0 -0
  264. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_platform.py +0 -0
  265. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_task_actions.py +0 -0
  266. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_task_harness.py +0 -0
  267. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_task_log.py +0 -0
  268. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_task_relations.py +0 -0
  269. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_tasks.py +0 -0
  270. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agent_usage.py +0 -0
  271. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_agents.py +0 -0
  272. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_ai_models.py +0 -0
  273. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_ai_providers.py +0 -0
  274. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_api_keys.py +0 -0
  275. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_auth.py +0 -0
  276. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_auth_providers.py +0 -0
  277. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_blueprints.py +0 -0
  278. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_client_credentials.py +0 -0
  279. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_comments.py +0 -0
  280. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_components.py +0 -0
  281. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_credentials.py +0 -0
  282. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_cross_org_reads.py +0 -0
  283. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_dashboard.py +0 -0
  284. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_analytics.py +0 -0
  285. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_likes.py +0 -0
  286. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_presence.py +0 -0
  287. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_reads.py +0 -0
  288. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_reads_sql.py +0 -0
  289. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_templates.py +0 -0
  290. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_document_versions.py +0 -0
  291. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_documents.py +0 -0
  292. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_environments.py +0 -0
  293. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_events.py +0 -0
  294. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_github_app_repository.py +0 -0
  295. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_graph_query.py +0 -0
  296. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_harness.py +0 -0
  297. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_harness_secrets.py +0 -0
  298. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_iggy_connectors.py +0 -0
  299. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_init.py +0 -0
  300. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_integrations.py +0 -0
  301. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_json_fields.py +0 -0
  302. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_link_definitions.py +0 -0
  303. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_local_auth.py +0 -0
  304. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_maintenance.py +0 -0
  305. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_mcp_servers.py +0 -0
  306. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_mfa.py +0 -0
  307. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_operations_log.py +0 -0
  308. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_organizations.py +0 -0
  309. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_pagination.py +0 -0
  310. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_plugin_label_validation.py +0 -0
  311. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_plugins.py +0 -0
  312. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_analysis.py +0 -0
  313. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_commit_sync.py +0 -0
  314. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_configuration.py +0 -0
  315. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_deployments_autonomous.py +0 -0
  316. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_incidents.py +0 -0
  317. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_integrations.py +0 -0
  318. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_lifecycle.py +0 -0
  319. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_logs.py +0 -0
  320. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_plugins.py +0 -0
  321. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_response_surfacing.py +0 -0
  322. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_project_types.py +0 -0
  323. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_projects_helpers.py +0 -0
  324. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_prompt_decisions.py +0 -0
  325. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_prompts.py +0 -0
  326. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_pull_requests.py +0 -0
  327. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_releases.py +0 -0
  328. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_request_urls.py +0 -0
  329. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_roles.py +0 -0
  330. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_sa_api_keys.py +0 -0
  331. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_scoring.py +0 -0
  332. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_scoring_policies.py +0 -0
  333. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_search.py +0 -0
  334. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_search_index.py +0 -0
  335. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_secret_broker.py +0 -0
  336. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_service_accounts.py +0 -0
  337. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_service_writeback.py +0 -0
  338. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_status.py +0 -0
  339. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_tags.py +0 -0
  340. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_teams.py +0 -0
  341. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_uploads.py +0 -0
  342. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_user_activity.py +0 -0
  343. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_users.py +0 -0
  344. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_webhooks.py +0 -0
  345. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_workflow_run_history.py +0 -0
  346. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_workflow_runs.py +0 -0
  347. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_workflow_triggers.py +0 -0
  348. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/endpoints/test_workflows.py +0 -0
  349. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/fixtures/marketplaces/claude-code.json +0 -0
  350. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/fixtures/sbom/npm-realistic.json +0 -0
  351. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/fixtures/sbom/pypi-realistic.json +0 -0
  352. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/fixtures/sbom/tiny.json +0 -0
  353. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/__init__.py +0 -0
  354. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_endpoints.py +0 -0
  355. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_errors.py +0 -0
  356. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_flows.py +0 -0
  357. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_host_integration.py +0 -0
  358. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_repository.py +0 -0
  359. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_resolution.py +0 -0
  360. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_state.py +0 -0
  361. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/identity/test_sweeper.py +0 -0
  362. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/middleware/test_rate_limit.py +0 -0
  363. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/secret_support.py +0 -0
  364. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/storage/__init__.py +0 -0
  365. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/storage/test_client.py +0 -0
  366. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/storage/test_init.py +0 -0
  367. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/storage/test_thumbnails.py +0 -0
  368. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/storage/test_validation.py +0 -0
  369. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/support.py +0 -0
  370. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_agent_platform.py +0 -0
  371. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_agent_task_events_e2e.py +0 -0
  372. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_agent_tools.py +0 -0
  373. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_app.py +0 -0
  374. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_assignment_writer.py +0 -0
  375. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_auth_settings.py +0 -0
  376. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_backfill_embeddings.py +0 -0
  377. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_blueprint_attributes.py +0 -0
  378. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_blueprint_compliance.py +0 -0
  379. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_blueprints.py +0 -0
  380. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_commit_pushed_at_repair.py +0 -0
  381. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_commit_sync_queue.py +0 -0
  382. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_commit_sync_service.py +0 -0
  383. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_component_facts.py +0 -0
  384. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_deployment_status_repair.py +0 -0
  385. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_deployment_sweeper.py +0 -0
  386. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_deployment_sync_queue.py +0 -0
  387. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_deployment_sync_service.py +0 -0
  388. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_drift.py +0 -0
  389. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_entrypoint.py +0 -0
  390. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_graph_ids.py +0 -0
  391. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_graph_sql.py +0 -0
  392. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_identity_attribution.py +0 -0
  393. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_iggy_metrics.py +0 -0
  394. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_init.py +0 -0
  395. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_installer.py +0 -0
  396. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_lifecycle_dispatch.py +0 -0
  397. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_lifespans.py +0 -0
  398. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_maintenance_log.py +0 -0
  399. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_maintenance_operations.py +0 -0
  400. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_maintenance_state.py +0 -0
  401. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_maintenance_worker.py +0 -0
  402. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_models.py +0 -0
  403. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_openapi.py +0 -0
  404. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_orphan_releases.py +0 -0
  405. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_plugin_schemas.py +0 -0
  406. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_plugins.py +0 -0
  407. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_plugins_assignments.py +0 -0
  408. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_plugins_credentials.py +0 -0
  409. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_pr_sync_queue.py +0 -0
  410. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_pr_sync_service.py +0 -0
  411. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_projects_drift_ranges.py +0 -0
  412. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_prompt_seed.py +0 -0
  413. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_pull_requests_pending_deploy.py +0 -0
  414. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_release_promote_service.py +0 -0
  415. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_sbom.py +0 -0
  416. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_scoring_queue.py +0 -0
  417. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_scoring_triggers.py +0 -0
  418. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_secret_broker.py +0 -0
  419. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_secret_github_app.py +0 -0
  420. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_secret_github_app_live.py +0 -0
  421. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_secret_providers.py +0 -0
  422. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_settings.py +0 -0
  423. {imbi_api-2.40.0 → imbi_api-2.41.0}/tests/test_workflow_reconcile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: imbi-api
3
- Version: 2.40.0
3
+ Version: 2.41.0
4
4
  Summary: Imbi is a DevOps Service Management Platform designed to provide an efficient way to manage a large environment that contains many services and applications.
5
5
  Author-email: Alex Campbell <alexc@aweber.com>, Dave Shawley <daves@aweber.com>, "Gavin M. Roy" <gavinr@aweber.com>
6
6
  License-Expression: BSD-3-Clause
@@ -19,8 +19,8 @@ Requires-Dist: cyclonedx-python-lib<12,>=11.7
19
19
  Requires-Dist: fastapi
20
20
  Requires-Dist: filetype
21
21
  Requires-Dist: httpx<1,>=0.28.1
22
- Requires-Dist: imbi-common[databases,llm,mcp,sentry,server]==2.40.0
23
- Requires-Dist: imbi-plugin-github==2.40.0
22
+ Requires-Dist: imbi-common[databases,llm,mcp,sentry,server]==2.41.0
23
+ Requires-Dist: imbi-plugin-github==2.41.0
24
24
  Requires-Dist: jinja2
25
25
  Requires-Dist: jsonpatch>=1.33
26
26
  Requires-Dist: limits<6,>=5
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "imbi-api"
3
- version = "2.40.0"
3
+ version = "2.41.0"
4
4
  description = "Imbi is a DevOps Service Management Platform designed to provide an efficient way to manage a large environment that contains many services and applications."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
@@ -28,8 +28,8 @@ dependencies = [
28
28
  "fastapi",
29
29
  "filetype",
30
30
  "httpx>=0.28.1,<1",
31
- "imbi-common[databases,llm,mcp,sentry,server]==2.40.0",
32
- "imbi-plugin-github==2.40.0",
31
+ "imbi-common[databases,llm,mcp,sentry,server]==2.41.0",
32
+ "imbi-plugin-github==2.41.0",
33
33
  "jinja2",
34
34
  "jsonpatch>=1.33",
35
35
  "limits>=5,<6",
@@ -839,7 +839,9 @@ async def _check_platform(
839
839
  422: A secret reference does not parse, a new GitHub App
840
840
  binding is not an enabled ``github_app`` binding of the
841
841
  org, the settings widen the organization's agent
842
- platform configuration, or a plugin cannot be pinned.
842
+ platform configuration, a plugin cannot be pinned, or a
843
+ new egress destination is unknown, global, or not for
844
+ the org.
843
845
 
844
846
  """
845
847
  try:
@@ -864,6 +866,7 @@ async def _check_platform(
864
866
  raise _unprocessable(
865
867
  f'Secret binding {binding!r} or its provider is disabled'
866
868
  )
869
+ await _check_egress(store, org_id, settings, current)
867
870
  _version, config = await platform.load(store, org_id)
868
871
  problems = platform.widenings(config, settings)
869
872
  if problems:
@@ -883,6 +886,41 @@ async def _check_platform(
883
886
  return settings.model_copy(update={'plugins': plugins})
884
887
 
885
888
 
889
+ async def _check_egress(
890
+ store: harness.HarnessStore,
891
+ org_id: str,
892
+ settings: models.AgentSettings,
893
+ current: models.AgentSettings | None,
894
+ ) -> None:
895
+ """Check the egress destinations that ``settings`` adds.
896
+
897
+ A destination that the agent has already keeps passing, so a
898
+ later change to it does not block an unrelated save.
899
+
900
+ Raises:
901
+ 422: A new destination is not live, is global (every chain
902
+ has it), or is not for the organization.
903
+
904
+ """
905
+ added = set(settings.egress_destinations) - set(
906
+ current.egress_destinations if current else []
907
+ )
908
+ if not added:
909
+ return
910
+ rows = {row['slug']: row for row in await store.egress_destinations()}
911
+ problems: list[str] = []
912
+ for slug in sorted(added):
913
+ row = rows.get(slug)
914
+ if row is None:
915
+ problems.append(f'{slug!r} not found')
916
+ elif row['is_global']:
917
+ problems.append(f'{slug!r} is global')
918
+ elif row['organization_ids'] and org_id not in row['organization_ids']:
919
+ problems.append(f'{slug!r} is not for this organization')
920
+ if problems:
921
+ raise _unprocessable('Egress destinations: ' + '; '.join(problems))
922
+
923
+
886
924
  def _version_conflict_detail(n: int) -> str:
887
925
  return (
888
926
  f'Version {n} of this agent was saved by another request; '