stackgen-sdk 0.4.0rc33__tar.gz → 0.4.0rc35__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 (285) hide show
  1. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/PKG-INFO +1 -1
  2. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/_http.py +1 -1
  3. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/_version.py +2 -2
  4. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/__init__.py +3 -0
  5. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/namespace.py +31 -0
  6. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/resources.py +8 -0
  7. stackgen_sdk-0.4.0rc35/src/stackgen/aiden/stream_events.py +254 -0
  8. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api/aiden_api.py +344 -0
  9. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/orgs/namespace.py +4 -0
  10. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/.gitignore +0 -0
  11. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/README.md +0 -0
  12. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/pyproject.toml +0 -0
  13. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/__init__.py +0 -0
  14. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/ask.py +0 -0
  15. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/audit.py +0 -0
  16. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/integration_secrets.py +0 -0
  17. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/models.py +0 -0
  18. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/run_status.py +0 -0
  19. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/runs.py +0 -0
  20. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/sessions.py +0 -0
  21. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/steer.py +0 -0
  22. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/subscribe.py +0 -0
  23. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/subscribe_frames.py +0 -0
  24. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/transient.py +0 -0
  25. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/webhook.py +0 -0
  26. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/webhook_ops.py +0 -0
  27. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/workflow_builder.py +0 -0
  28. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/aiden/workflow_publish.py +0 -0
  29. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/cli.py +0 -0
  30. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/client.py +0 -0
  31. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/config.py +0 -0
  32. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/errors.py +0 -0
  33. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/.openapi-generator/FILES +0 -0
  34. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
  35. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/.openapi-generator-ignore +0 -0
  36. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/__init__.py +0 -0
  37. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api/__init__.py +0 -0
  38. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api/sre_api.py +0 -0
  39. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api/vault_api.py +0 -0
  40. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api_client.py +0 -0
  41. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/api_response.py +0 -0
  42. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/configuration.py +0 -0
  43. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/exceptions.py +0 -0
  44. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/__init__.py +0 -0
  45. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/activate_break_glass_request.py +0 -0
  46. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_app_mcp_binding.py +0 -0
  47. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_health_check.py +0 -0
  48. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_health_response.py +0 -0
  49. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_info.py +0 -0
  50. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_lifecycle_status.py +0 -0
  51. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_model_config.py +0 -0
  52. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_schedule.py +0 -0
  53. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/agent_status.py +0 -0
  54. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_analysis_status.py +0 -0
  55. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_attention.py +0 -0
  56. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_categorization_summary.py +0 -0
  57. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_role.py +0 -0
  58. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_sort_by.py +0 -0
  59. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_status.py +0 -0
  60. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_summary.py +0 -0
  61. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_sync_run_status.py +0 -0
  62. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/alert_v1.py +0 -0
  63. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/approval_item.py +0 -0
  64. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/artifact_info.py +0 -0
  65. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ask_execution_mode.py +0 -0
  66. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ask_guild_request.py +0 -0
  67. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ask_guild_route_decision.py +0 -0
  68. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ask_guild_route_response.py +0 -0
  69. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ask_guild_start_response.py +0 -0
  70. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/attach_policy_request.py +0 -0
  71. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/audit_event.py +0 -0
  72. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/audit_event_list_response.py +0 -0
  73. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/audit_facets.py +0 -0
  74. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/auto_approve_tool_rule.py +0 -0
  75. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/autonomy_budget_config.py +0 -0
  76. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/autonomy_budget_snapshot.py +0 -0
  77. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/autonomy_budget_tier.py +0 -0
  78. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +0 -0
  79. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/break_glass_state.py +0 -0
  80. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/candidate_type.py +0 -0
  81. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/chat_channel_selector.py +0 -0
  82. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/chat_subscription.py +0 -0
  83. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/chat_subscription_list_response.py +0 -0
  84. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/chat_subscription_target_type.py +0 -0
  85. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/chat_subscription_trigger_type.py +0 -0
  86. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/combining_algorithm.py +0 -0
  87. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/combining_algorithm_request.py +0 -0
  88. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/container_image.py +0 -0
  89. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/cost_band.py +0 -0
  90. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_chat_subscription_request.py +0 -0
  91. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_document_request.py +0 -0
  92. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_knowledge_base_request.py +0 -0
  93. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_policy_request.py +0 -0
  94. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_remote_runner_request.py +0 -0
  95. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_remote_runner_response.py +0 -0
  96. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_schedule_request.py +0 -0
  97. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_skill_companion_file.py +0 -0
  98. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_skill_request.py +0 -0
  99. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/create_webhook_request.py +0 -0
  100. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/dag_edge.py +0 -0
  101. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/dag_node.py +0 -0
  102. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/diary_compression.py +0 -0
  103. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/diary_config.py +0 -0
  104. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/discovered_tool.py +0 -0
  105. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/document_ingest_status.py +0 -0
  106. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/document_ingest_workflow_status.py +0 -0
  107. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/document_processing_status.py +0 -0
  108. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/duration_band.py +0 -0
  109. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/entity_ref.py +0 -0
  110. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/error_response.py +0 -0
  111. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/eval_config.py +0 -0
  112. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/evaluate_policy_request.py +0 -0
  113. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/evaluate_policy_response.py +0 -0
  114. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/execution_list_item.py +0 -0
  115. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/execution_meta.py +0 -0
  116. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/execution_structured_output.py +0 -0
  117. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/execution_tool_call.py +0 -0
  118. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/execution_tool_call_list.py +0 -0
  119. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/external_secret_reference.py +0 -0
  120. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/fork_session_request.py +0 -0
  121. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/git_config.py +0 -0
  122. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/guild_integration.py +0 -0
  123. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/guild_json_error.py +0 -0
  124. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/guild_platform_config.py +0 -0
  125. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/hal_guard_config.py +0 -0
  126. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/health_check_status.py +0 -0
  127. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/hitl_config.py +0 -0
  128. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ingested_document.py +0 -0
  129. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/ingested_document1.py +0 -0
  130. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_availability_reason.py +0 -0
  131. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_availability_status.py +0 -0
  132. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +0 -0
  133. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_remote_runner.py +0 -0
  134. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_scope.py +0 -0
  135. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_sidecar_launch.py +0 -0
  136. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_test_result.py +0 -0
  137. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/integration_type_info.py +0 -0
  138. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigate_alert_request.py +0 -0
  139. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigate_response.py +0 -0
  140. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation.py +0 -0
  141. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_evidence.py +0 -0
  142. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_evidence_kind.py +0 -0
  143. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_evidence_source.py +0 -0
  144. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_hypothesis.py +0 -0
  145. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_plain_summary.py +0 -0
  146. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_prior_incident.py +0 -0
  147. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_recommended_next_step.py +0 -0
  148. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_ref.py +0 -0
  149. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_status.py +0 -0
  150. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +0 -0
  151. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +0 -0
  152. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_structured_rca.py +0 -0
  153. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/investigation_triage_metadata.py +0 -0
  154. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/judge_execution_request.py +0 -0
  155. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/key_definition_type.py +0 -0
  156. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_base.py +0 -0
  157. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_config.py +0 -0
  158. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_item.py +0 -0
  159. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_item_backend.py +0 -0
  160. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_item_operation.py +0 -0
  161. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/knowledge_type.py +0 -0
  162. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/list_alerts_response.py +0 -0
  163. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/list_investigations_response.py +0 -0
  164. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +0 -0
  165. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/list_remote_runners_response.py +0 -0
  166. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/llm_provider_type.py +0 -0
  167. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/metadata.py +0 -0
  168. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config.py +0 -0
  169. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +0 -0
  170. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_concurrency.py +0 -0
  171. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_context_mode.py +0 -0
  172. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +0 -0
  173. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_metrics.py +0 -0
  174. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_rate_limit.py +0 -0
  175. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_retry.py +0 -0
  176. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_sanitize.py +0 -0
  177. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_timeout.py +0 -0
  178. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_tracing.py +0 -0
  179. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/middleware_config_validation.py +0 -0
  180. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/model_pricing.py +0 -0
  181. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/model_provider_config.py +0 -0
  182. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/navigation_mode.py +0 -0
  183. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/o_auth_support.py +0 -0
  184. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/owner_type.py +0 -0
  185. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/pagination.py +0 -0
  186. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/persona_variant_config.py +0 -0
  187. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/pii_redaction_config.py +0 -0
  188. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/pii_regex_rule.py +0 -0
  189. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy.py +0 -0
  190. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input.py +0 -0
  191. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_agent.py +0 -0
  192. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_approver.py +0 -0
  193. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_environment.py +0 -0
  194. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_principal.py +0 -0
  195. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +0 -0
  196. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_requester.py +0 -0
  197. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_input_tool.py +0 -0
  198. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_evaluation_outcome.py +0 -0
  199. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/policy_type.py +0 -0
  200. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/qualified_candidate.py +0 -0
  201. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/rca_config.py +0 -0
  202. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/reasoning_effort_setting.py +0 -0
  203. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/register_agent_request.py +0 -0
  204. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/registered_model.py +0 -0
  205. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/remote_runner_info.py +0 -0
  206. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/remote_runner_task_info.py +0 -0
  207. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/resolve_approval_request.py +0 -0
  208. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/run_workflow_request.py +0 -0
  209. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/run_workflow_response.py +0 -0
  210. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/runbook_config.py +0 -0
  211. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/runner_capability.py +0 -0
  212. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/runner_status.py +0 -0
  213. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/runtime_approval_binding.py +0 -0
  214. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/runtime_approval_item.py +0 -0
  215. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/scan_finding.py +0 -0
  216. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/schedule_history.py +0 -0
  217. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/schedule_run_list_response.py +0 -0
  218. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/schedule_run_status.py +0 -0
  219. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/schedule_source.py +0 -0
  220. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/schedule_target_type.py +0 -0
  221. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/secret.py +0 -0
  222. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/secret_sub_category.py +0 -0
  223. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session.py +0 -0
  224. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_activity_status.py +0 -0
  225. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_export.py +0 -0
  226. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_export_part.py +0 -0
  227. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_export_part_kind.py +0 -0
  228. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_list_response.py +0 -0
  229. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_responder_kind.py +0 -0
  230. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/session_summary.py +0 -0
  231. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/sidecar_health_probes.py +0 -0
  232. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/signal_severity.py +0 -0
  233. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/skill.py +0 -0
  234. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/skill_file.py +0 -0
  235. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/skill_summary.py +0 -0
  236. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/stage_binding.py +0 -0
  237. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/stage_expectation.py +0 -0
  238. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/start_ask_guild200_response.py +0 -0
  239. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/start_chat_json_body.py +0 -0
  240. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/start_chat_response.py +0 -0
  241. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/subagent_spawn_contract.py +0 -0
  242. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/supported_formats.py +0 -0
  243. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/supported_formats_keys_inner.py +0 -0
  244. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/sync_response.py +0 -0
  245. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/task_error_category.py +0 -0
  246. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/task_status.py +0 -0
  247. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/terminate_session_response.py +0 -0
  248. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/test_model_request.py +0 -0
  249. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/test_model_response.py +0 -0
  250. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/toggle_chat_subscription_request.py +0 -0
  251. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/trace_dag_response.py +0 -0
  252. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/trigger_schedule202_response.py +0 -0
  253. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/trigger_webhook202_response.py +0 -0
  254. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/update_agent_request.py +0 -0
  255. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/update_chat_subscription_request.py +0 -0
  256. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/update_secret_by_id_request.py +0 -0
  257. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/update_session_metadata_request.py +0 -0
  258. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/update_webhook_request.py +0 -0
  259. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/upsert_integration_request.py +0 -0
  260. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/version_status.py +0 -0
  261. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook.py +0 -0
  262. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_filter_preview_header.py +0 -0
  263. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_filter_preview_request.py +0 -0
  264. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_filter_preview_response.py +0 -0
  265. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_run.py +0 -0
  266. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_run_detail.py +0 -0
  267. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/webhook_run_list_response.py +0 -0
  268. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow.py +0 -0
  269. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_metadata.py +0 -0
  270. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_output_contract.py +0 -0
  271. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_run_expectations.py +0 -0
  272. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_stage.py +0 -0
  273. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_tool_middleware.py +0 -0
  274. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +0 -0
  275. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +0 -0
  276. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_trigger.py +0 -0
  277. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/models/workflow_trigger_type.py +0 -0
  278. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/generated/rest.py +0 -0
  279. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/logging.py +0 -0
  280. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/orgs/__init__.py +0 -0
  281. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/sre/__init__.py +0 -0
  282. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/sre/namespace.py +0 -0
  283. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/vault/__init__.py +0 -0
  284. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/src/stackgen/vault/metadata.py +0 -0
  285. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc35}/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.4.0rc33
3
+ Version: 0.4.0rc35
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/
@@ -122,7 +122,7 @@ def request(
122
122
  statuses use the short ``retries`` attempt budget. POST/PATCH fail fast
123
123
  unless ``retry_gateway_outage`` is set, which retries only 502/503/504
124
124
  and transport errors (a CloudFront drop), not application 500s.
125
- Webhook trigger and vault secret store set that flag.
125
+ Webhook trigger, vault secret store, and org create set that flag.
126
126
 
127
127
  ``timeout_seconds`` is an optional per-call abort budget. When the deadline
128
128
  expires, raises :class:`~stackgen.errors.TimeoutError`. Omit to wait until
@@ -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.4.0rc33'
22
- __version_tuple__ = version_tuple = (0, 4, 0, 'rc33')
21
+ __version__ = version = '0.4.0rc35'
22
+ __version_tuple__ = version_tuple = (0, 4, 0, 'rc35')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -6,6 +6,7 @@ from stackgen.aiden.namespace import AidenNamespace
6
6
  from stackgen.aiden.resources import PolicyConflictRule
7
7
  from stackgen.aiden.run_status import ExecutionStatus, RunPhase, RunStatus
8
8
  from stackgen.aiden.steer import is_steer_response
9
+ from stackgen.aiden.stream_events import normalize_agui_type, parse_execution_event
9
10
  from stackgen.aiden.transient import (
10
11
  IDEMPOTENT_MUTATION_ATTEMPTS,
11
12
  SUBSCRIBE_RECONNECT_MAX,
@@ -47,5 +48,7 @@ __all__ = [
47
48
  "is_steer_response",
48
49
  "is_transient_failure",
49
50
  "is_transient_status",
51
+ "normalize_agui_type",
52
+ "parse_execution_event",
50
53
  "retry_idempotent_op",
51
54
  ]
@@ -14,6 +14,7 @@ from stackgen.aiden.integration_secrets import (
14
14
  from stackgen.aiden.models import ModelRegistry
15
15
  from stackgen.aiden.resources import AidenResources, PolicyConflictRule
16
16
  from stackgen.aiden.run_status import RunStatus, build_run_status, require_run_ids
17
+ from stackgen.aiden.stream_events import ExecutionEventStream
17
18
  from stackgen.aiden.subscribe import ExecutionSubscribe, SubscribeCompleteResult
18
19
  from stackgen.aiden.webhook import WebhookReportJourney, WebhookReportResult
19
20
  from stackgen.aiden.webhook_ops import WebhookOps
@@ -35,6 +36,7 @@ class AidenNamespace:
35
36
  self._resources = AidenResources(config)
36
37
  self._integration_secrets = IntegrationSecretsJourney(config)
37
38
  self._subscribe = ExecutionSubscribe(config)
39
+ self._event_stream = ExecutionEventStream(config)
38
40
  self._audit = AuditExportJourney(config)
39
41
  self.models = ModelRegistry(config)
40
42
 
@@ -322,6 +324,27 @@ class AidenNamespace:
322
324
  """GET SSE /guild/api/v1/executions/{traceId}/subscribe until complete."""
323
325
  return self._subscribe.wait_for_complete(trace_id, timeout_ms=timeout_ms)
324
326
 
327
+ def stream_execution_events(
328
+ self,
329
+ trace_id: str,
330
+ *,
331
+ max_reconnects: int | None = None,
332
+ max_wall_clock_ms: int | None = None,
333
+ skip_subagents: bool = True,
334
+ ) -> Iterator[dict[str, Any]]:
335
+ """Yield AG-UI events for a running execution until top-level RUN_FINISHED.
336
+
337
+ Use after :meth:`start_agent_chat`, :meth:`start_ask`, or
338
+ :meth:`run_workflow` returns a ``trace_id``. Each item has ``type``,
339
+ ``data``, ``is_subagent``, and the raw CloudEvent.
340
+ """
341
+ kwargs: dict[str, Any] = {"skip_subagents": skip_subagents}
342
+ if max_reconnects is not None:
343
+ kwargs["max_reconnects"] = max_reconnects
344
+ if max_wall_clock_ms is not None:
345
+ kwargs["max_wall_clock_ms"] = max_wall_clock_ms
346
+ return self._event_stream.stream(trace_id, **kwargs)
347
+
325
348
  def publish_workflow(
326
349
  self,
327
350
  workflow: WorkflowDefinition,
@@ -583,6 +606,14 @@ class AidenNamespace:
583
606
  def list_tools(self, **params: Any) -> list[dict[str, Any]]:
584
607
  return self._resources.list_tools(**params)
585
608
 
609
+ def list_agents(self, **params: Any) -> list[dict[str, Any]]:
610
+ """List agents in the project (for chat target pickers)."""
611
+ return self._resources.list_agents(**params)
612
+
613
+ def list_workflows(self, **params: Any) -> list[dict[str, Any]]:
614
+ """List workflows in the project (for chat target pickers)."""
615
+ return self._resources.list_workflows(**params)
616
+
586
617
  def start_agent_chat(self, agent_name: str, body: dict[str, Any]) -> dict[str, Any]:
587
618
  return self._resources.start_agent_chat(agent_name, body)
588
619
 
@@ -359,6 +359,14 @@ class AidenResources:
359
359
  def list_tools(self, **params: Any) -> list[dict[str, Any]]:
360
360
  return _http.as_list(self._get("/tools", params))
361
361
 
362
+ def list_agents(self, **params: Any) -> list[dict[str, Any]]:
363
+ """GET /agents — agents registered in the project."""
364
+ return _http.as_list(self._get("/agents", params))
365
+
366
+ def list_workflows(self, **params: Any) -> list[dict[str, Any]]:
367
+ """GET /workflows — workflows in the project."""
368
+ return _http.as_list(self._get("/workflows", params))
369
+
362
370
  def start_agent_chat(self, agent_name: str, body: dict[str, Any]) -> dict[str, Any]:
363
371
  record = _as_object(
364
372
  self._send(f"/agents/{agent_name}/chat/start", "POST", body),
@@ -0,0 +1,254 @@
1
+ """Live AG-UI event stream for an execution subscribe SSE.
2
+
3
+ Yields normalized chat events until a top-level ``RUN_FINISHED``. Control
4
+ frames (``connected``, ``replay_complete``, ``subscribe_end``) are skipped.
5
+ Reconnects on drop / ``subscribe_end: timeout`` so the server can replay.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import json
11
+ import time
12
+ from typing import Any, Iterator
13
+ from urllib.error import HTTPError, URLError
14
+ from urllib.request import Request, urlopen
15
+
16
+ from stackgen import _http
17
+ from stackgen.aiden.transient import SUBSCRIBE_RECONNECT_MAX, is_transient_status
18
+ from stackgen.config import StackgenConfig
19
+ from stackgen.logging import get_logger
20
+
21
+ _log = get_logger("stream_events")
22
+
23
+ _AGUI_PREFIX = "ai.genie.agui."
24
+ _CONTROL_EVENTS = frozenset({"connected", "replay_complete"})
25
+
26
+
27
+ def normalize_agui_type(raw: Any) -> str:
28
+ text = str(raw or "")
29
+ if text.startswith(_AGUI_PREFIX):
30
+ return text[len(_AGUI_PREFIX) :]
31
+ return text
32
+
33
+
34
+ def parse_execution_event(
35
+ sse_event: str, data_text: str
36
+ ) -> dict[str, Any] | str | None:
37
+ """Parse one SSE data payload.
38
+
39
+ Returns an event dict, ``\"subscribe_end_timeout\"``, ``\"subscribe_end\"``,
40
+ or ``None`` when the frame should be ignored.
41
+ """
42
+ if sse_event in _CONTROL_EVENTS:
43
+ return None
44
+ if sse_event == "subscribe_end":
45
+ reason = ""
46
+ try:
47
+ obj = json.loads(data_text)
48
+ if isinstance(obj, dict):
49
+ reason = _http.text(obj.get("reason"))
50
+ except (TypeError, ValueError, json.JSONDecodeError):
51
+ pass
52
+ return "subscribe_end_timeout" if reason == "timeout" else "subscribe_end"
53
+ if sse_event in ("error", "RUN_ERROR"):
54
+ return {
55
+ "type": "RUN_ERROR",
56
+ "data": {"message": data_text},
57
+ "is_subagent": False,
58
+ "raw": {"sseEvent": sse_event, "data": data_text},
59
+ "sse_event": sse_event,
60
+ }
61
+ try:
62
+ payload = json.loads(data_text)
63
+ except (TypeError, ValueError, json.JSONDecodeError):
64
+ return None
65
+ if not isinstance(payload, dict):
66
+ return None
67
+
68
+ data_record = payload.get("data") or payload.get("Data") or payload.get("Event") or {}
69
+ if not isinstance(data_record, dict):
70
+ data_record = {}
71
+ nested = data_record.get("Event") or data_record.get("event")
72
+ if not isinstance(nested, dict):
73
+ nested = None
74
+ metadata = (
75
+ data_record.get("metadata")
76
+ or data_record.get("Metadata")
77
+ or payload.get("metadata")
78
+ or payload.get("Metadata")
79
+ )
80
+ if not isinstance(metadata, dict):
81
+ metadata = None
82
+ event_type = (
83
+ normalize_agui_type(payload.get("type"))
84
+ or normalize_agui_type(payload.get("Type"))
85
+ or normalize_agui_type(data_record.get("Type"))
86
+ or normalize_agui_type(data_record.get("type"))
87
+ or (normalize_agui_type(nested.get("Type")) if nested else "")
88
+ or (normalize_agui_type(nested.get("type")) if nested else "")
89
+ or normalize_agui_type(sse_event)
90
+ )
91
+ if not event_type:
92
+ return None
93
+ body = nested if nested is not None else data_record
94
+ event_id = _http.text(payload.get("id")) or _http.text(payload.get("Id")) or None
95
+ return {
96
+ "type": event_type,
97
+ "id": event_id or None,
98
+ "data": body,
99
+ "metadata": metadata,
100
+ "is_subagent": bool(metadata and metadata.get("is_subagent") is True),
101
+ "raw": payload,
102
+ "sse_event": sse_event,
103
+ }
104
+
105
+
106
+ class ExecutionEventStream:
107
+ def __init__(self, config: StackgenConfig) -> None:
108
+ self._config = config
109
+
110
+ def stream(
111
+ self,
112
+ trace_id: str,
113
+ *,
114
+ max_reconnects: int = SUBSCRIBE_RECONNECT_MAX,
115
+ max_wall_clock_ms: int | None = None,
116
+ skip_subagents: bool = True,
117
+ ) -> Iterator[dict[str, Any]]:
118
+ tid = (trace_id or "").strip()
119
+ if not tid:
120
+ raise ValueError("trace_id is required")
121
+ started = time.monotonic()
122
+ outage_budget_ms = int(getattr(self._config, "transient_retry_budget_ms", 0) or 0)
123
+ url = (
124
+ f"{self._config.aiden_url()}/api/v1/executions/{tid}/subscribe"
125
+ f"{_http.query(self._config.org_id)}"
126
+ )
127
+ headers = {
128
+ "Authorization": f"Bearer {self._config.api_token}",
129
+ "Accept": "text/event-stream",
130
+ }
131
+ if self._config.org_id:
132
+ headers["X-Appcd-Org"] = self._config.org_id
133
+
134
+ seen_ids: set[str] = set()
135
+ reconnects = 0
136
+
137
+ def can_reconnect(count: int) -> bool:
138
+ elapsed_ms = (time.monotonic() - started) * 1000
139
+ return count < max_reconnects or (
140
+ outage_budget_ms > 0 and elapsed_ms < outage_budget_ms
141
+ )
142
+
143
+ def wall_exceeded() -> bool:
144
+ if max_wall_clock_ms is None or max_wall_clock_ms <= 0:
145
+ return False
146
+ return (time.monotonic() - started) * 1000 >= max_wall_clock_ms
147
+
148
+ while not wall_exceeded():
149
+ try:
150
+ req = Request(url, headers=headers, method="GET")
151
+ with urlopen(req, timeout=90) as resp:
152
+ status = getattr(resp, "status", None) or resp.getcode()
153
+ if status >= 400:
154
+ if is_transient_status(status) and can_reconnect(reconnects):
155
+ reconnects += 1
156
+ _log.warning(
157
+ "stream_execution_events reconnect %s after status=%s trace_id=%s",
158
+ reconnects,
159
+ status,
160
+ tid,
161
+ )
162
+ time.sleep(min(1.0 * 2 ** min(reconnects, 4), 15.0))
163
+ continue
164
+ raise RuntimeError(f"subscribe status={status}")
165
+
166
+ buf = ""
167
+ finished = False
168
+ need_reconnect = False
169
+ reconnect_reason = ""
170
+
171
+ while not wall_exceeded():
172
+ chunk = resp.read(4096)
173
+ if not chunk:
174
+ need_reconnect = not finished
175
+ reconnect_reason = "EOF"
176
+ break
177
+ buf += chunk.decode("utf-8", errors="replace")
178
+ while "\n\n" in buf:
179
+ frame, buf = buf.split("\n\n", 1)
180
+ event_name = "message"
181
+ data_lines: list[str] = []
182
+ for line in frame.splitlines():
183
+ if line.startswith(":"):
184
+ continue
185
+ if line.startswith("event:"):
186
+ event_name = line[6:].strip()
187
+ elif line.startswith("data:"):
188
+ data_lines.append(line[5:].lstrip())
189
+ if not data_lines:
190
+ continue
191
+ parsed = parse_execution_event(
192
+ event_name, "\n".join(data_lines)
193
+ )
194
+ if parsed == "subscribe_end_timeout":
195
+ need_reconnect = True
196
+ reconnect_reason = "subscribe_end: timeout"
197
+ break
198
+ if parsed == "subscribe_end":
199
+ need_reconnect = True
200
+ reconnect_reason = "subscribe_end"
201
+ break
202
+ if not isinstance(parsed, dict):
203
+ continue
204
+ if skip_subagents and parsed.get("is_subagent"):
205
+ continue
206
+ eid = parsed.get("id")
207
+ if eid:
208
+ if eid in seen_ids:
209
+ continue
210
+ seen_ids.add(str(eid))
211
+ yield parsed
212
+ if (
213
+ parsed.get("type") == "RUN_FINISHED"
214
+ and not parsed.get("is_subagent")
215
+ ):
216
+ finished = True
217
+ break
218
+ if finished or need_reconnect:
219
+ break
220
+
221
+ if finished:
222
+ return
223
+ if not need_reconnect or not can_reconnect(reconnects):
224
+ return
225
+ reconnects += 1
226
+ _log.warning(
227
+ "stream_execution_events reconnect %s after %s trace_id=%s",
228
+ reconnects,
229
+ reconnect_reason,
230
+ tid,
231
+ )
232
+ except HTTPError as err:
233
+ status = int(err.code)
234
+ if is_transient_status(status) and can_reconnect(reconnects):
235
+ reconnects += 1
236
+ _log.warning(
237
+ "stream_execution_events reconnect %s after status=%s trace_id=%s",
238
+ reconnects,
239
+ status,
240
+ tid,
241
+ )
242
+ time.sleep(min(1.0 * 2 ** min(reconnects, 4), 15.0))
243
+ continue
244
+ raise RuntimeError(f"subscribe status={status}") from err
245
+ except URLError:
246
+ if not can_reconnect(reconnects):
247
+ raise
248
+ reconnects += 1
249
+ _log.warning(
250
+ "stream_execution_events reconnect %s after network error trace_id=%s",
251
+ reconnects,
252
+ tid,
253
+ )
254
+ time.sleep(min(1.0 * 2 ** min(reconnects, 4), 15.0))