stackgen-sdk 0.3.0__tar.gz → 0.4.0rc4__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 (255) hide show
  1. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/PKG-INFO +1 -1
  2. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/__init__.py +2 -0
  3. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/_version.py +2 -2
  4. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/__init__.py +2 -0
  5. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/namespace.py +61 -3
  6. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/resources.py +125 -3
  7. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator/FILES +12 -0
  8. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/__init__.py +9 -1
  9. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/aiden_api.py +4578 -3410
  10. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/sre_api.py +1 -1
  11. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api_client.py +1 -1
  12. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/configuration.py +2 -2
  13. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/exceptions.py +1 -1
  14. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/__init__.py +5 -1
  15. stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/activate_break_glass_request.py +90 -0
  16. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_app_mcp_binding.py +1 -1
  17. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_health_check.py +1 -1
  18. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_health_response.py +1 -1
  19. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_info.py +1 -1
  20. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_lifecycle_status.py +1 -1
  21. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_model_config.py +1 -1
  22. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_schedule.py +1 -1
  23. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_status.py +1 -1
  24. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_analysis_status.py +1 -1
  25. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_attention.py +1 -1
  26. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_categorization_summary.py +1 -1
  27. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_role.py +1 -1
  28. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_sort_by.py +1 -1
  29. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_status.py +1 -1
  30. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_summary.py +1 -1
  31. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_sync_run_status.py +1 -1
  32. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_v1.py +1 -1
  33. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/approval_item.py +1 -1
  34. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/artifact_info.py +1 -1
  35. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_execution_mode.py +1 -1
  36. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_request.py +1 -1
  37. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_route_decision.py +1 -1
  38. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_route_response.py +1 -1
  39. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_start_response.py +1 -1
  40. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/attach_policy_request.py +1 -1
  41. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_event.py +1 -1
  42. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_event_list_response.py +1 -1
  43. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_facets.py +1 -1
  44. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/auto_approve_tool_rule.py +1 -1
  45. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_config.py +1 -1
  46. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_snapshot.py +1 -1
  47. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_tier.py +1 -1
  48. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +1 -1
  49. stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/break_glass_state.py +106 -0
  50. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/candidate_type.py +1 -1
  51. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_channel_selector.py +3 -3
  52. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription.py +11 -11
  53. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_list_response.py +1 -1
  54. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_target_type.py +2 -2
  55. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_trigger_type.py +2 -2
  56. stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/combining_algorithm.py +40 -0
  57. stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/combining_algorithm_request.py +88 -0
  58. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/container_image.py +1 -1
  59. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/cost_band.py +1 -1
  60. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_chat_subscription_request.py +13 -13
  61. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_document_request.py +1 -1
  62. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_knowledge_base_request.py +1 -1
  63. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_policy_request.py +1 -1
  64. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_remote_runner_request.py +1 -1
  65. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_remote_runner_response.py +1 -1
  66. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_schedule_request.py +1 -1
  67. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_skill_companion_file.py +1 -1
  68. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_skill_request.py +1 -1
  69. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_webhook_request.py +28 -4
  70. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/dag_edge.py +1 -1
  71. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/dag_node.py +1 -1
  72. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/diary_compression.py +1 -1
  73. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/diary_config.py +1 -1
  74. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/discovered_tool.py +1 -1
  75. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_ingest_status.py +1 -1
  76. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_ingest_workflow_status.py +1 -1
  77. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_processing_status.py +1 -1
  78. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/duration_band.py +1 -1
  79. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/entity_ref.py +1 -1
  80. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/error_response.py +1 -1
  81. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/eval_config.py +1 -1
  82. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/evaluate_policy_request.py +1 -1
  83. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/evaluate_policy_response.py +1 -1
  84. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_list_item.py +1 -1
  85. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_meta.py +1 -1
  86. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_structured_output.py +1 -1
  87. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_tool_call.py +1 -1
  88. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_tool_call_list.py +1 -1
  89. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/fork_session_request.py +1 -1
  90. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/git_config.py +1 -1
  91. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_integration.py +1 -1
  92. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_json_error.py +1 -1
  93. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_platform_config.py +1 -1
  94. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/hal_guard_config.py +1 -1
  95. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/health_check_status.py +1 -1
  96. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/hitl_config.py +1 -1
  97. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ingested_document.py +1 -1
  98. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ingested_document1.py +1 -1
  99. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_availability_reason.py +1 -1
  100. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_availability_status.py +1 -1
  101. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +1 -1
  102. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_remote_runner.py +1 -1
  103. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_scope.py +1 -1
  104. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_sidecar_launch.py +1 -1
  105. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_test_result.py +1 -1
  106. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_type_info.py +1 -1
  107. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigate_alert_request.py +1 -1
  108. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigate_response.py +1 -1
  109. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation.py +1 -1
  110. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence.py +1 -1
  111. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence_kind.py +1 -1
  112. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence_source.py +1 -1
  113. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_hypothesis.py +1 -1
  114. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_plain_summary.py +1 -1
  115. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_prior_incident.py +1 -1
  116. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_recommended_next_step.py +1 -1
  117. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_ref.py +1 -1
  118. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_status.py +1 -1
  119. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +1 -1
  120. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +1 -1
  121. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_rca.py +1 -1
  122. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_triage_metadata.py +1 -1
  123. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_base.py +1 -1
  124. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_config.py +1 -1
  125. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item.py +1 -1
  126. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item_backend.py +1 -1
  127. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item_operation.py +1 -1
  128. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_type.py +1 -1
  129. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_alerts_response.py +1 -1
  130. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_investigations_response.py +1 -1
  131. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +1 -1
  132. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_remote_runners_response.py +1 -1
  133. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/llm_provider_type.py +1 -1
  134. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config.py +1 -1
  135. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +1 -1
  136. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_concurrency.py +1 -1
  137. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_context_mode.py +1 -1
  138. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +1 -1
  139. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_metrics.py +1 -1
  140. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_rate_limit.py +1 -1
  141. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_retry.py +1 -1
  142. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_sanitize.py +1 -1
  143. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_timeout.py +1 -1
  144. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_tracing.py +1 -1
  145. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_validation.py +1 -1
  146. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/model_pricing.py +1 -1
  147. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/model_provider_config.py +1 -1
  148. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/navigation_mode.py +1 -1
  149. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pagination.py +1 -1
  150. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/persona_variant_config.py +1 -1
  151. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pii_redaction_config.py +1 -1
  152. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pii_regex_rule.py +1 -1
  153. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy.py +1 -1
  154. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input.py +1 -1
  155. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_agent.py +1 -1
  156. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_approver.py +1 -1
  157. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_environment.py +1 -1
  158. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_principal.py +1 -1
  159. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +1 -1
  160. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_requester.py +1 -1
  161. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_tool.py +1 -1
  162. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_outcome.py +1 -1
  163. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_type.py +1 -1
  164. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/qualified_candidate.py +1 -1
  165. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/rca_config.py +1 -1
  166. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/reasoning_effort_setting.py +1 -1
  167. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/register_agent_request.py +1 -1
  168. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/registered_model.py +1 -1
  169. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/remote_runner_info.py +1 -1
  170. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/remote_runner_task_info.py +1 -1
  171. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/resolve_approval_request.py +1 -1
  172. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/run_workflow_request.py +1 -1
  173. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/run_workflow_response.py +1 -1
  174. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runbook_config.py +1 -1
  175. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runner_capability.py +1 -1
  176. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runner_status.py +1 -1
  177. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/scan_finding.py +1 -1
  178. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_history.py +1 -1
  179. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_run_list_response.py +1 -1
  180. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_run_status.py +1 -1
  181. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_source.py +1 -1
  182. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_target_type.py +1 -1
  183. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session.py +1 -1
  184. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_activity_status.py +1 -1
  185. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export.py +1 -1
  186. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export_part.py +1 -1
  187. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export_part_kind.py +1 -1
  188. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_list_response.py +1 -1
  189. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_responder_kind.py +1 -1
  190. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_summary.py +1 -1
  191. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/sidecar_health_probes.py +1 -1
  192. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/signal_severity.py +1 -1
  193. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill.py +1 -1
  194. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill_file.py +1 -1
  195. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill_summary.py +1 -1
  196. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/stage_binding.py +1 -1
  197. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/stage_expectation.py +1 -1
  198. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_ask_guild200_response.py +1 -1
  199. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_chat_json_body.py +1 -1
  200. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_chat_response.py +1 -1
  201. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/subagent_spawn_contract.py +1 -1
  202. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/sync_response.py +1 -1
  203. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/task_error_category.py +1 -1
  204. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/task_status.py +1 -1
  205. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/terminate_session_response.py +1 -1
  206. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/toggle_chat_subscription_request.py +1 -1
  207. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trace_dag_response.py +1 -1
  208. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trigger_schedule202_response.py +1 -1
  209. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trigger_webhook202_response.py +2 -2
  210. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/update_agent_request.py +1 -1
  211. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/update_chat_subscription_request.py +7 -7
  212. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/upsert_integration_request.py +1 -1
  213. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/version_status.py +1 -1
  214. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook.py +28 -4
  215. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run.py +1 -1
  216. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run_detail.py +1 -1
  217. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run_list_response.py +1 -1
  218. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow.py +1 -1
  219. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_metadata.py +1 -1
  220. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_output_contract.py +1 -1
  221. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_run_expectations.py +1 -1
  222. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_stage.py +1 -1
  223. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware.py +1 -1
  224. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +1 -1
  225. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +1 -1
  226. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_trigger.py +1 -1
  227. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_trigger_type.py +1 -1
  228. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/rest.py +1 -1
  229. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/.gitignore +0 -0
  230. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/README.md +0 -0
  231. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/pyproject.toml +0 -0
  232. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/_http.py +0 -0
  233. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/ask.py +0 -0
  234. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/models.py +0 -0
  235. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/run_status.py +0 -0
  236. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/runs.py +0 -0
  237. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/sessions.py +0 -0
  238. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/steer.py +0 -0
  239. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/subscribe.py +0 -0
  240. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/webhook.py +0 -0
  241. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/webhook_ops.py +0 -0
  242. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/workflow_builder.py +0 -0
  243. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/workflow_publish.py +0 -0
  244. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/cli.py +0 -0
  245. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/client.py +0 -0
  246. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/config.py +0 -0
  247. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/errors.py +0 -0
  248. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
  249. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator-ignore +0 -0
  250. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/__init__.py +0 -0
  251. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api_response.py +0 -0
  252. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/sre/__init__.py +0 -0
  253. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/sre/namespace.py +0 -0
  254. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/vault/__init__.py +0 -0
  255. {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/vault/namespace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stackgen-sdk
3
- Version: 0.3.0
3
+ Version: 0.4.0rc4
4
4
  Summary: StackGen SDK — Aiden, SRE, and Vault from one client
5
5
  Project-URL: Homepage, https://appcd-dev.github.io/stackgen-sdk/
6
6
  Project-URL: Documentation, https://appcd-dev.github.io/stackgen-sdk/
@@ -18,6 +18,7 @@ from __future__ import annotations
18
18
  from stackgen.client import StackgenClient
19
19
  from stackgen.config import StackgenConfig
20
20
  from stackgen.errors import HttpError, NotAllowlistedError, StackgenError, TimeoutError
21
+ from stackgen.aiden.resources import PolicyConflictRule
21
22
  from stackgen.aiden.steer import is_steer_response
22
23
  from stackgen.aiden.workflow_builder import (
23
24
  AgentDefinition,
@@ -34,6 +35,7 @@ __all__ = [
34
35
  "AgentDefinition",
35
36
  "HttpError",
36
37
  "NotAllowlistedError",
38
+ "PolicyConflictRule",
37
39
  "PublishWorkflowResult",
38
40
  "StackgenClient",
39
41
  "StackgenConfig",
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.3.0'
22
- __version_tuple__ = version_tuple = (0, 3, 0)
21
+ __version__ = version = '0.4.0rc4'
22
+ __version_tuple__ = version_tuple = (0, 4, 0, 'rc4')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -2,6 +2,7 @@
2
2
 
3
3
  from stackgen.aiden.ask import AskArtifactResult
4
4
  from stackgen.aiden.namespace import AidenNamespace
5
+ from stackgen.aiden.resources import PolicyConflictRule
5
6
  from stackgen.aiden.run_status import ExecutionStatus, RunPhase, RunStatus
6
7
  from stackgen.aiden.steer import is_steer_response
7
8
  from stackgen.aiden.webhook import WebhookReportResult
@@ -21,6 +22,7 @@ __all__ = [
21
22
  "AidenNamespace",
22
23
  "AskArtifactResult",
23
24
  "ExecutionStatus",
25
+ "PolicyConflictRule",
24
26
  "PublishWorkflowResult",
25
27
  "RunPhase",
26
28
  "RunStatus",
@@ -7,7 +7,7 @@ from typing import Any
7
7
 
8
8
  from stackgen.aiden.ask import AskArtifactJourney, AskArtifactResult
9
9
  from stackgen.aiden.models import ModelRegistry
10
- from stackgen.aiden.resources import AidenResources
10
+ from stackgen.aiden.resources import AidenResources, PolicyConflictRule
11
11
  from stackgen.aiden.run_status import RunStatus, build_run_status, require_run_ids
12
12
  from stackgen.aiden.subscribe import ExecutionSubscribe, SubscribeCompleteResult
13
13
  from stackgen.aiden.webhook import WebhookReportJourney, WebhookReportResult
@@ -313,8 +313,29 @@ class AidenNamespace:
313
313
  def create_policy(self, body: dict[str, Any]) -> dict[str, Any]:
314
314
  return self._resources.create_policy(body)
315
315
 
316
- def attach_policy(self, agent_name: str, body: dict[str, Any]) -> dict[str, Any]:
317
- return self._resources.attach_policy(agent_name, body)
316
+ def attach_policy(
317
+ self,
318
+ agent_name: str,
319
+ body: dict[str, Any] | None = None,
320
+ *,
321
+ policy_id: str | None = None,
322
+ priority: int | None = None,
323
+ enabled: bool | None = None,
324
+ shadow: bool | None = None,
325
+ ) -> dict[str, Any]:
326
+ """Attach a Rego policy to an agent.
327
+
328
+ Prefer ``policy_id=...`` and optional ``shadow=True`` (log only, do not
329
+ block). Create alone does not govern the agent until you attach.
330
+ """
331
+ return self._resources.attach_policy(
332
+ agent_name,
333
+ body,
334
+ policy_id=policy_id,
335
+ priority=priority,
336
+ enabled=enabled,
337
+ shadow=shadow,
338
+ )
318
339
 
319
340
  def detach_policy(self, agent_name: str, policy_id: str) -> dict[str, Any]:
320
341
  return self._resources.detach_policy(agent_name, policy_id)
@@ -325,6 +346,43 @@ class AidenNamespace:
325
346
  def evaluate_policy(self, body: dict[str, Any]) -> dict[str, Any]:
326
347
  return self._resources.evaluate_policy(body)
327
348
 
349
+ def break_glass(
350
+ self,
351
+ agent_name: str,
352
+ *,
353
+ reason: str,
354
+ duration_minutes: int,
355
+ ) -> dict[str, Any]:
356
+ """Temporarily let an agent run without policy enforcement during an outage.
357
+
358
+ Pass ``reason`` and ``duration_minutes`` (1–480) only. Aiden records who
359
+ opened the glass from your API token (``activated_by`` on the response).
360
+ Call :meth:`end_break_glass` in a ``finally``.
361
+ """
362
+ return self._resources.break_glass(
363
+ agent_name, reason=reason, duration_minutes=duration_minutes
364
+ )
365
+
366
+ def get_break_glass(self, agent_name: str) -> dict[str, Any]:
367
+ """Read whether break-glass is active (who from the token, why, expiry)."""
368
+ return self._resources.get_break_glass(agent_name)
369
+
370
+ def end_break_glass(self, agent_name: str) -> dict[str, Any]:
371
+ """Turn policy enforcement back on after :meth:`break_glass`."""
372
+ return self._resources.end_break_glass(agent_name)
373
+
374
+ def when_policies_disagree(
375
+ self,
376
+ agent_name: str,
377
+ rule: PolicyConflictRule,
378
+ ) -> dict[str, Any]:
379
+ """Choose the tie-break when several attached policies disagree.
380
+
381
+ Prefer ``any_deny_blocks`` for production. Use ``any_allow_wins`` only
382
+ when a permissive policy should beat a deny.
383
+ """
384
+ return self._resources.when_policies_disagree(agent_name, rule)
385
+
328
386
  def list_audit_events(self, **params: Any) -> list[dict[str, Any]]:
329
387
  return self._resources.list_audit_events(**params)
330
388
 
@@ -4,12 +4,24 @@ from __future__ import annotations
4
4
 
5
5
  import json
6
6
  import urllib.parse
7
- from typing import Any
7
+ from typing import Any, Literal
8
8
 
9
9
  from stackgen import _http
10
10
  from stackgen.config import StackgenConfig
11
11
  from stackgen.errors import StackgenError
12
12
 
13
+ PolicyConflictRule = Literal[
14
+ "any_deny_blocks",
15
+ "any_allow_wins",
16
+ "first_matching_policy",
17
+ ]
18
+
19
+ _CONFLICT_RULE_TO_WIRE: dict[str, str] = {
20
+ "any_deny_blocks": "deny_overrides",
21
+ "any_allow_wins": "permit_overrides",
22
+ "first_matching_policy": "first_applicable",
23
+ }
24
+
13
25
 
14
26
  def _with_org(config: StackgenConfig, params: dict[str, Any] | None = None) -> dict[str, Any]:
15
27
  query = dict(params or {})
@@ -134,9 +146,38 @@ class AidenResources:
134
146
  def create_policy(self, body: dict[str, Any]) -> dict[str, Any]:
135
147
  return _as_object(self._send("/policies", "POST", body), "createPolicy")
136
148
 
137
- def attach_policy(self, agent_name: str, body: dict[str, Any]) -> dict[str, Any]:
149
+ def attach_policy(
150
+ self,
151
+ agent_name: str,
152
+ body: dict[str, Any] | None = None,
153
+ *,
154
+ policy_id: str | None = None,
155
+ priority: int | None = None,
156
+ enabled: bool | None = None,
157
+ shadow: bool | None = None,
158
+ ) -> dict[str, Any]:
159
+ """Attach a Rego policy to an agent.
160
+
161
+ Prefer keyword args (``policy_id``, optional ``shadow``). ``shadow=True``
162
+ evaluates and logs without blocking the tool. Pass a raw ``body`` with
163
+ ``policy_id`` for wire-shaped payloads. Create alone does not govern the
164
+ agent until you attach.
165
+ """
166
+ if policy_id is not None:
167
+ payload: dict[str, Any] = {"policy_id": policy_id}
168
+ if priority is not None:
169
+ payload["priority"] = priority
170
+ if enabled is not None:
171
+ payload["enabled"] = enabled
172
+ if shadow is not None:
173
+ payload["shadow"] = shadow
174
+ elif body is not None:
175
+ payload = body
176
+ else:
177
+ raise StackgenError("attach_policy requires policy_id=... or a body dict")
138
178
  return _as_object(
139
- self._send(f"/agents/{agent_name}/policies", "POST", body), "attachPolicy"
179
+ self._send(f"/agents/{agent_name}/policies", "POST", payload),
180
+ "attachPolicy",
140
181
  )
141
182
 
142
183
  def detach_policy(self, agent_name: str, policy_id: str) -> dict[str, Any]:
@@ -151,6 +192,87 @@ class AidenResources:
151
192
  def evaluate_policy(self, body: dict[str, Any]) -> dict[str, Any]:
152
193
  return _as_object(self._send("/policies/evaluate", "POST", body), "evaluatePolicy")
153
194
 
195
+ def break_glass(
196
+ self,
197
+ agent_name: str,
198
+ *,
199
+ reason: str,
200
+ duration_minutes: int,
201
+ ) -> dict[str, Any]:
202
+ """Temporarily let an agent run without policy enforcement during an outage.
203
+
204
+ Pass a clear ``reason`` and ``duration_minutes`` (1–480) only. Aiden
205
+ records who opened the glass from your API token on the response as
206
+ ``activated_by`` (you cannot set that field). Call
207
+ :meth:`end_break_glass` in a ``finally`` when done. Until then (or until
208
+ the timer expires), attached policies do not block tools; actions are
209
+ still audited.
210
+ """
211
+ cleaned = (reason or "").strip()
212
+ if not cleaned:
213
+ raise StackgenError("break_glass requires a non-empty reason")
214
+ if not isinstance(duration_minutes, int) or duration_minutes < 1 or duration_minutes > 480:
215
+ raise StackgenError("break_glass duration_minutes must be between 1 and 480")
216
+ return _as_object(
217
+ self._send(
218
+ f"/agents/{agent_name}/break-glass",
219
+ "POST",
220
+ {"reason": cleaned, "duration_minutes": duration_minutes},
221
+ ),
222
+ "breakGlass",
223
+ )
224
+
225
+ def get_break_glass(self, agent_name: str) -> dict[str, Any]:
226
+ """Read whether break-glass is active for an agent.
227
+
228
+ Use after :meth:`break_glass` to confirm the bypass. The response includes
229
+ ``activated_by`` (caller identity from the API token that opened the
230
+ glass), ``reason``, and expiry.
231
+ """
232
+ return _as_object(
233
+ self._get(f"/agents/{agent_name}/break-glass"),
234
+ "getBreakGlass",
235
+ )
236
+
237
+ def end_break_glass(self, agent_name: str) -> dict[str, Any]:
238
+ """Turn policy enforcement back on after an outage bypass.
239
+
240
+ Call this in a ``finally`` once the incident is over. If you skip it,
241
+ Aiden still restores guardrails when ``duration_minutes`` expires.
242
+ """
243
+ data = self._send(f"/agents/{agent_name}/break-glass", "DELETE")
244
+ if data is None or data == "":
245
+ return {"ok": True}
246
+ if isinstance(data, dict):
247
+ return data
248
+ return {"ok": True}
249
+
250
+ def when_policies_disagree(
251
+ self,
252
+ agent_name: str,
253
+ rule: PolicyConflictRule,
254
+ ) -> dict[str, Any]:
255
+ """Choose what happens when several attached policies disagree.
256
+
257
+ Prefer ``any_deny_blocks`` for production guardrails: one deny stops the
258
+ tool. Use ``any_allow_wins`` only when a permissive policy should
259
+ override a deny. Without this call, Aiden keeps the agent's current rule.
260
+ """
261
+ wire = _CONFLICT_RULE_TO_WIRE.get(rule)
262
+ if not wire:
263
+ raise StackgenError(
264
+ "when_policies_disagree unknown rule "
265
+ f"{rule!r}; use any_deny_blocks, any_allow_wins, or first_matching_policy"
266
+ )
267
+ data = self._send(
268
+ f"/agents/{agent_name}/combining-algorithm",
269
+ "PUT",
270
+ {"combining_algorithm": wire},
271
+ )
272
+ if isinstance(data, dict):
273
+ return data
274
+ return {"combining_algorithm": wire, "rule": rule}
275
+
154
276
  def list_audit_events(self, **params: Any) -> list[dict[str, Any]]:
155
277
  return _http.as_list(self._get("/audit/events", params))
156
278
 
@@ -7,6 +7,7 @@ stackgen/generated/api/sre_api.py
7
7
  stackgen/generated/api_client.py
8
8
  stackgen/generated/api_response.py
9
9
  stackgen/generated/configuration.py
10
+ stackgen/generated/docs/ActivateBreakGlassRequest.md
10
11
  stackgen/generated/docs/AgentAppMCPBinding.md
11
12
  stackgen/generated/docs/AgentHealthCheck.md
12
13
  stackgen/generated/docs/AgentHealthResponse.md
@@ -41,12 +42,15 @@ stackgen/generated/docs/AutonomyBudgetConfig.md
41
42
  stackgen/generated/docs/AutonomyBudgetSnapshot.md
42
43
  stackgen/generated/docs/AutonomyBudgetTier.md
43
44
  stackgen/generated/docs/AutonomyBudgetTierReason.md
45
+ stackgen/generated/docs/BreakGlassState.md
44
46
  stackgen/generated/docs/CandidateType.md
45
47
  stackgen/generated/docs/ChatChannelSelector.md
46
48
  stackgen/generated/docs/ChatSubscription.md
47
49
  stackgen/generated/docs/ChatSubscriptionListResponse.md
48
50
  stackgen/generated/docs/ChatSubscriptionTargetType.md
49
51
  stackgen/generated/docs/ChatSubscriptionTriggerType.md
52
+ stackgen/generated/docs/CombiningAlgorithm.md
53
+ stackgen/generated/docs/CombiningAlgorithmRequest.md
50
54
  stackgen/generated/docs/ContainerImage.md
51
55
  stackgen/generated/docs/CostBand.md
52
56
  stackgen/generated/docs/CreateChatSubscriptionRequest.md
@@ -220,6 +224,7 @@ stackgen/generated/docs/WorkflowTrigger.md
220
224
  stackgen/generated/docs/WorkflowTriggerType.md
221
225
  stackgen/generated/exceptions.py
222
226
  stackgen/generated/models/__init__.py
227
+ stackgen/generated/models/activate_break_glass_request.py
223
228
  stackgen/generated/models/agent_app_mcp_binding.py
224
229
  stackgen/generated/models/agent_health_check.py
225
230
  stackgen/generated/models/agent_health_response.py
@@ -253,12 +258,15 @@ stackgen/generated/models/autonomy_budget_config.py
253
258
  stackgen/generated/models/autonomy_budget_snapshot.py
254
259
  stackgen/generated/models/autonomy_budget_tier.py
255
260
  stackgen/generated/models/autonomy_budget_tier_reason.py
261
+ stackgen/generated/models/break_glass_state.py
256
262
  stackgen/generated/models/candidate_type.py
257
263
  stackgen/generated/models/chat_channel_selector.py
258
264
  stackgen/generated/models/chat_subscription.py
259
265
  stackgen/generated/models/chat_subscription_list_response.py
260
266
  stackgen/generated/models/chat_subscription_target_type.py
261
267
  stackgen/generated/models/chat_subscription_trigger_type.py
268
+ stackgen/generated/models/combining_algorithm.py
269
+ stackgen/generated/models/combining_algorithm_request.py
262
270
  stackgen/generated/models/container_image.py
263
271
  stackgen/generated/models/cost_band.py
264
272
  stackgen/generated/models/create_chat_subscription_request.py
@@ -431,6 +439,7 @@ stackgen/generated/models/workflow_trigger.py
431
439
  stackgen/generated/models/workflow_trigger_type.py
432
440
  stackgen/generated/rest.py
433
441
  stackgen/generated/test/__init__.py
442
+ stackgen/generated/test/test_activate_break_glass_request.py
434
443
  stackgen/generated/test/test_agent_app_mcp_binding.py
435
444
  stackgen/generated/test/test_agent_health_check.py
436
445
  stackgen/generated/test/test_agent_health_response.py
@@ -465,12 +474,15 @@ stackgen/generated/test/test_autonomy_budget_config.py
465
474
  stackgen/generated/test/test_autonomy_budget_snapshot.py
466
475
  stackgen/generated/test/test_autonomy_budget_tier.py
467
476
  stackgen/generated/test/test_autonomy_budget_tier_reason.py
477
+ stackgen/generated/test/test_break_glass_state.py
468
478
  stackgen/generated/test/test_candidate_type.py
469
479
  stackgen/generated/test/test_chat_channel_selector.py
470
480
  stackgen/generated/test/test_chat_subscription.py
471
481
  stackgen/generated/test/test_chat_subscription_list_response.py
472
482
  stackgen/generated/test/test_chat_subscription_target_type.py
473
483
  stackgen/generated/test/test_chat_subscription_trigger_type.py
484
+ stackgen/generated/test/test_combining_algorithm.py
485
+ stackgen/generated/test/test_combining_algorithm_request.py
474
486
  stackgen/generated/test/test_container_image.py
475
487
  stackgen/generated/test/test_cost_band.py
476
488
  stackgen/generated/test/test_create_chat_subscription_request.py
@@ -7,7 +7,7 @@
7
7
 
8
8
  Allowlisted StackGen API surface for the public SDK. Managed via api-docs/product/allowlists/external.yaml. Aiden←stackgen-guild, SRE←stackgen-sre-app, Vault←infraops/api-specs/stackgen-vault.
9
9
 
10
- The version of the OpenAPI document: 0.3.0
10
+ The version of the OpenAPI document: 0.2.0
11
11
  Generated by OpenAPI Generator (https://openapi-generator.tech)
12
12
 
13
13
  Do not edit the class manually.
@@ -29,6 +29,7 @@ __all__ = [
29
29
  "ApiKeyError",
30
30
  "ApiAttributeError",
31
31
  "ApiException",
32
+ "ActivateBreakGlassRequest",
32
33
  "AgentAppMCPBinding",
33
34
  "AgentHealthCheck",
34
35
  "AgentHealthResponse",
@@ -62,12 +63,15 @@ __all__ = [
62
63
  "AutonomyBudgetSnapshot",
63
64
  "AutonomyBudgetTier",
64
65
  "AutonomyBudgetTierReason",
66
+ "BreakGlassState",
65
67
  "CandidateType",
66
68
  "ChatChannelSelector",
67
69
  "ChatSubscription",
68
70
  "ChatSubscriptionListResponse",
69
71
  "ChatSubscriptionTargetType",
70
72
  "ChatSubscriptionTriggerType",
73
+ "CombiningAlgorithm",
74
+ "CombiningAlgorithmRequest",
71
75
  "ContainerImage",
72
76
  "CostBand",
73
77
  "CreateChatSubscriptionRequest",
@@ -256,6 +260,7 @@ from stackgen.generated.exceptions import ApiAttributeError as ApiAttributeError
256
260
  from stackgen.generated.exceptions import ApiException as ApiException
257
261
 
258
262
  # import models into sdk package
263
+ from stackgen.generated.models.activate_break_glass_request import ActivateBreakGlassRequest as ActivateBreakGlassRequest
259
264
  from stackgen.generated.models.agent_app_mcp_binding import AgentAppMCPBinding as AgentAppMCPBinding
260
265
  from stackgen.generated.models.agent_health_check import AgentHealthCheck as AgentHealthCheck
261
266
  from stackgen.generated.models.agent_health_response import AgentHealthResponse as AgentHealthResponse
@@ -289,12 +294,15 @@ from stackgen.generated.models.autonomy_budget_config import AutonomyBudgetConfi
289
294
  from stackgen.generated.models.autonomy_budget_snapshot import AutonomyBudgetSnapshot as AutonomyBudgetSnapshot
290
295
  from stackgen.generated.models.autonomy_budget_tier import AutonomyBudgetTier as AutonomyBudgetTier
291
296
  from stackgen.generated.models.autonomy_budget_tier_reason import AutonomyBudgetTierReason as AutonomyBudgetTierReason
297
+ from stackgen.generated.models.break_glass_state import BreakGlassState as BreakGlassState
292
298
  from stackgen.generated.models.candidate_type import CandidateType as CandidateType
293
299
  from stackgen.generated.models.chat_channel_selector import ChatChannelSelector as ChatChannelSelector
294
300
  from stackgen.generated.models.chat_subscription import ChatSubscription as ChatSubscription
295
301
  from stackgen.generated.models.chat_subscription_list_response import ChatSubscriptionListResponse as ChatSubscriptionListResponse
296
302
  from stackgen.generated.models.chat_subscription_target_type import ChatSubscriptionTargetType as ChatSubscriptionTargetType
297
303
  from stackgen.generated.models.chat_subscription_trigger_type import ChatSubscriptionTriggerType as ChatSubscriptionTriggerType
304
+ from stackgen.generated.models.combining_algorithm import CombiningAlgorithm as CombiningAlgorithm
305
+ from stackgen.generated.models.combining_algorithm_request import CombiningAlgorithmRequest as CombiningAlgorithmRequest
298
306
  from stackgen.generated.models.container_image import ContainerImage as ContainerImage
299
307
  from stackgen.generated.models.cost_band import CostBand as CostBand
300
308
  from stackgen.generated.models.create_chat_subscription_request import CreateChatSubscriptionRequest as CreateChatSubscriptionRequest