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.
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/PKG-INFO +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/__init__.py +2 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/_version.py +2 -2
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/__init__.py +2 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/namespace.py +61 -3
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/resources.py +125 -3
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator/FILES +12 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/__init__.py +9 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/aiden_api.py +4578 -3410
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/sre_api.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api_client.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/configuration.py +2 -2
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/exceptions.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/__init__.py +5 -1
- stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/activate_break_glass_request.py +90 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_app_mcp_binding.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_health_check.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_health_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_info.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_lifecycle_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_model_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_schedule.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/agent_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_analysis_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_attention.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_categorization_summary.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_role.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_sort_by.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_summary.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_sync_run_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/alert_v1.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/approval_item.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/artifact_info.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_execution_mode.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_route_decision.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_route_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ask_guild_start_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/attach_policy_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_event.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_event_list_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/audit_facets.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/auto_approve_tool_rule.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_snapshot.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_tier.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +1 -1
- stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/break_glass_state.py +106 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/candidate_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_channel_selector.py +3 -3
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription.py +11 -11
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_list_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_target_type.py +2 -2
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/chat_subscription_trigger_type.py +2 -2
- stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/combining_algorithm.py +40 -0
- stackgen_sdk-0.4.0rc4/src/stackgen/generated/models/combining_algorithm_request.py +88 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/container_image.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/cost_band.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_chat_subscription_request.py +13 -13
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_document_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_knowledge_base_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_policy_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_remote_runner_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_remote_runner_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_schedule_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_skill_companion_file.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_skill_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/create_webhook_request.py +28 -4
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/dag_edge.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/dag_node.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/diary_compression.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/diary_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/discovered_tool.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_ingest_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_ingest_workflow_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/document_processing_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/duration_band.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/entity_ref.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/error_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/eval_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/evaluate_policy_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/evaluate_policy_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_list_item.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_meta.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_structured_output.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_tool_call.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/execution_tool_call_list.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/fork_session_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/git_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_integration.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_json_error.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/guild_platform_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/hal_guard_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/health_check_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/hitl_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ingested_document.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/ingested_document1.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_availability_reason.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_availability_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_remote_runner.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_scope.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_sidecar_launch.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_test_result.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/integration_type_info.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigate_alert_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigate_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence_kind.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_evidence_source.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_hypothesis.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_plain_summary.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_prior_incident.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_recommended_next_step.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_ref.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_structured_rca.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/investigation_triage_metadata.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_base.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item_backend.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_item_operation.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/knowledge_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_alerts_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_investigations_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/list_remote_runners_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/llm_provider_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_concurrency.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_context_mode.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_metrics.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_rate_limit.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_retry.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_sanitize.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_timeout.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_tracing.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/middleware_config_validation.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/model_pricing.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/model_provider_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/navigation_mode.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pagination.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/persona_variant_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pii_redaction_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/pii_regex_rule.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_agent.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_approver.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_environment.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_principal.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_requester.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_input_tool.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_evaluation_outcome.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/policy_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/qualified_candidate.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/rca_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/reasoning_effort_setting.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/register_agent_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/registered_model.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/remote_runner_info.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/remote_runner_task_info.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/resolve_approval_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/run_workflow_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/run_workflow_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runbook_config.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runner_capability.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/runner_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/scan_finding.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_history.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_run_list_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_run_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_source.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/schedule_target_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_activity_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export_part.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_export_part_kind.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_list_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_responder_kind.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/session_summary.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/sidecar_health_probes.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/signal_severity.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill_file.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/skill_summary.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/stage_binding.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/stage_expectation.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_ask_guild200_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_chat_json_body.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/start_chat_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/subagent_spawn_contract.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/sync_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/task_error_category.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/task_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/terminate_session_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/toggle_chat_subscription_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trace_dag_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trigger_schedule202_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/trigger_webhook202_response.py +2 -2
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/update_agent_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/update_chat_subscription_request.py +7 -7
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/upsert_integration_request.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/version_status.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook.py +28 -4
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run_detail.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/webhook_run_list_response.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_metadata.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_output_contract.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_run_expectations.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_stage.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_trigger.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/models/workflow_trigger_type.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/rest.py +1 -1
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/.gitignore +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/README.md +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/pyproject.toml +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/_http.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/ask.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/models.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/run_status.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/runs.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/sessions.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/steer.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/subscribe.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/webhook.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/webhook_ops.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/workflow_builder.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/aiden/workflow_publish.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/cli.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/client.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/config.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/errors.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator-ignore +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api/__init__.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/api_response.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/sre/__init__.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/sre/namespace.py +0 -0
- {stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/vault/__init__.py +0 -0
- {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
|
+
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.
|
|
22
|
-
__version_tuple__ = version_tuple = (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(
|
|
317
|
-
|
|
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(
|
|
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",
|
|
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
|
|
{stackgen_sdk-0.3.0 → stackgen_sdk-0.4.0rc4}/src/stackgen/generated/.openapi-generator/FILES
RENAMED
|
@@ -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.
|
|
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
|