stackgen-sdk 0.4.0rc33__tar.gz → 0.4.0rc34__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.0rc34}/PKG-INFO +1 -1
  2. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/_version.py +2 -2
  3. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/__init__.py +3 -0
  4. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/namespace.py +31 -0
  5. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/resources.py +8 -0
  6. stackgen_sdk-0.4.0rc34/src/stackgen/aiden/stream_events.py +254 -0
  7. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api/aiden_api.py +344 -0
  8. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/.gitignore +0 -0
  9. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/README.md +0 -0
  10. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/pyproject.toml +0 -0
  11. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/__init__.py +0 -0
  12. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/_http.py +0 -0
  13. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/ask.py +0 -0
  14. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/audit.py +0 -0
  15. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/integration_secrets.py +0 -0
  16. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/models.py +0 -0
  17. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/run_status.py +0 -0
  18. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/runs.py +0 -0
  19. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/sessions.py +0 -0
  20. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/steer.py +0 -0
  21. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/subscribe.py +0 -0
  22. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/subscribe_frames.py +0 -0
  23. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/transient.py +0 -0
  24. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/webhook.py +0 -0
  25. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/webhook_ops.py +0 -0
  26. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/workflow_builder.py +0 -0
  27. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/aiden/workflow_publish.py +0 -0
  28. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/cli.py +0 -0
  29. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/client.py +0 -0
  30. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/config.py +0 -0
  31. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/errors.py +0 -0
  32. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/.openapi-generator/FILES +0 -0
  33. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
  34. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/.openapi-generator-ignore +0 -0
  35. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/__init__.py +0 -0
  36. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api/__init__.py +0 -0
  37. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api/sre_api.py +0 -0
  38. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api/vault_api.py +0 -0
  39. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api_client.py +0 -0
  40. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/api_response.py +0 -0
  41. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/configuration.py +0 -0
  42. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/exceptions.py +0 -0
  43. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/__init__.py +0 -0
  44. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/activate_break_glass_request.py +0 -0
  45. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_app_mcp_binding.py +0 -0
  46. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_health_check.py +0 -0
  47. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_health_response.py +0 -0
  48. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_info.py +0 -0
  49. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_lifecycle_status.py +0 -0
  50. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_model_config.py +0 -0
  51. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_schedule.py +0 -0
  52. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/agent_status.py +0 -0
  53. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_analysis_status.py +0 -0
  54. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_attention.py +0 -0
  55. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_categorization_summary.py +0 -0
  56. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_role.py +0 -0
  57. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_sort_by.py +0 -0
  58. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_status.py +0 -0
  59. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_summary.py +0 -0
  60. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_sync_run_status.py +0 -0
  61. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/alert_v1.py +0 -0
  62. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/approval_item.py +0 -0
  63. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/artifact_info.py +0 -0
  64. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ask_execution_mode.py +0 -0
  65. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ask_guild_request.py +0 -0
  66. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ask_guild_route_decision.py +0 -0
  67. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ask_guild_route_response.py +0 -0
  68. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ask_guild_start_response.py +0 -0
  69. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/attach_policy_request.py +0 -0
  70. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/audit_event.py +0 -0
  71. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/audit_event_list_response.py +0 -0
  72. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/audit_facets.py +0 -0
  73. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/auto_approve_tool_rule.py +0 -0
  74. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/autonomy_budget_config.py +0 -0
  75. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/autonomy_budget_snapshot.py +0 -0
  76. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/autonomy_budget_tier.py +0 -0
  77. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +0 -0
  78. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/break_glass_state.py +0 -0
  79. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/candidate_type.py +0 -0
  80. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/chat_channel_selector.py +0 -0
  81. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/chat_subscription.py +0 -0
  82. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/chat_subscription_list_response.py +0 -0
  83. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/chat_subscription_target_type.py +0 -0
  84. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/chat_subscription_trigger_type.py +0 -0
  85. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/combining_algorithm.py +0 -0
  86. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/combining_algorithm_request.py +0 -0
  87. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/container_image.py +0 -0
  88. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/cost_band.py +0 -0
  89. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_chat_subscription_request.py +0 -0
  90. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_document_request.py +0 -0
  91. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_knowledge_base_request.py +0 -0
  92. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_policy_request.py +0 -0
  93. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_remote_runner_request.py +0 -0
  94. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_remote_runner_response.py +0 -0
  95. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_schedule_request.py +0 -0
  96. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_skill_companion_file.py +0 -0
  97. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_skill_request.py +0 -0
  98. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/create_webhook_request.py +0 -0
  99. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/dag_edge.py +0 -0
  100. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/dag_node.py +0 -0
  101. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/diary_compression.py +0 -0
  102. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/diary_config.py +0 -0
  103. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/discovered_tool.py +0 -0
  104. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/document_ingest_status.py +0 -0
  105. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/document_ingest_workflow_status.py +0 -0
  106. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/document_processing_status.py +0 -0
  107. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/duration_band.py +0 -0
  108. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/entity_ref.py +0 -0
  109. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/error_response.py +0 -0
  110. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/eval_config.py +0 -0
  111. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/evaluate_policy_request.py +0 -0
  112. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/evaluate_policy_response.py +0 -0
  113. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/execution_list_item.py +0 -0
  114. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/execution_meta.py +0 -0
  115. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/execution_structured_output.py +0 -0
  116. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/execution_tool_call.py +0 -0
  117. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/execution_tool_call_list.py +0 -0
  118. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/external_secret_reference.py +0 -0
  119. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/fork_session_request.py +0 -0
  120. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/git_config.py +0 -0
  121. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/guild_integration.py +0 -0
  122. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/guild_json_error.py +0 -0
  123. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/guild_platform_config.py +0 -0
  124. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/hal_guard_config.py +0 -0
  125. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/health_check_status.py +0 -0
  126. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/hitl_config.py +0 -0
  127. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ingested_document.py +0 -0
  128. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/ingested_document1.py +0 -0
  129. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_availability_reason.py +0 -0
  130. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_availability_status.py +0 -0
  131. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +0 -0
  132. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_remote_runner.py +0 -0
  133. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_scope.py +0 -0
  134. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_sidecar_launch.py +0 -0
  135. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_test_result.py +0 -0
  136. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/integration_type_info.py +0 -0
  137. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigate_alert_request.py +0 -0
  138. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigate_response.py +0 -0
  139. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation.py +0 -0
  140. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_evidence.py +0 -0
  141. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_evidence_kind.py +0 -0
  142. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_evidence_source.py +0 -0
  143. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_hypothesis.py +0 -0
  144. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_plain_summary.py +0 -0
  145. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_prior_incident.py +0 -0
  146. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_recommended_next_step.py +0 -0
  147. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_ref.py +0 -0
  148. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_status.py +0 -0
  149. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +0 -0
  150. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +0 -0
  151. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_structured_rca.py +0 -0
  152. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/investigation_triage_metadata.py +0 -0
  153. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/judge_execution_request.py +0 -0
  154. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/key_definition_type.py +0 -0
  155. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_base.py +0 -0
  156. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_config.py +0 -0
  157. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_item.py +0 -0
  158. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_item_backend.py +0 -0
  159. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_item_operation.py +0 -0
  160. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/knowledge_type.py +0 -0
  161. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/list_alerts_response.py +0 -0
  162. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/list_investigations_response.py +0 -0
  163. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +0 -0
  164. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/list_remote_runners_response.py +0 -0
  165. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/llm_provider_type.py +0 -0
  166. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/metadata.py +0 -0
  167. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config.py +0 -0
  168. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +0 -0
  169. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_concurrency.py +0 -0
  170. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_context_mode.py +0 -0
  171. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +0 -0
  172. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_metrics.py +0 -0
  173. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_rate_limit.py +0 -0
  174. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_retry.py +0 -0
  175. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_sanitize.py +0 -0
  176. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_timeout.py +0 -0
  177. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_tracing.py +0 -0
  178. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/middleware_config_validation.py +0 -0
  179. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/model_pricing.py +0 -0
  180. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/model_provider_config.py +0 -0
  181. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/navigation_mode.py +0 -0
  182. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/o_auth_support.py +0 -0
  183. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/owner_type.py +0 -0
  184. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/pagination.py +0 -0
  185. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/persona_variant_config.py +0 -0
  186. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/pii_redaction_config.py +0 -0
  187. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/pii_regex_rule.py +0 -0
  188. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy.py +0 -0
  189. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input.py +0 -0
  190. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_agent.py +0 -0
  191. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_approver.py +0 -0
  192. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_environment.py +0 -0
  193. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_principal.py +0 -0
  194. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +0 -0
  195. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_requester.py +0 -0
  196. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_input_tool.py +0 -0
  197. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_evaluation_outcome.py +0 -0
  198. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/policy_type.py +0 -0
  199. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/qualified_candidate.py +0 -0
  200. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/rca_config.py +0 -0
  201. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/reasoning_effort_setting.py +0 -0
  202. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/register_agent_request.py +0 -0
  203. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/registered_model.py +0 -0
  204. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/remote_runner_info.py +0 -0
  205. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/remote_runner_task_info.py +0 -0
  206. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/resolve_approval_request.py +0 -0
  207. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/run_workflow_request.py +0 -0
  208. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/run_workflow_response.py +0 -0
  209. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/runbook_config.py +0 -0
  210. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/runner_capability.py +0 -0
  211. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/runner_status.py +0 -0
  212. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/runtime_approval_binding.py +0 -0
  213. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/runtime_approval_item.py +0 -0
  214. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/scan_finding.py +0 -0
  215. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/schedule_history.py +0 -0
  216. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/schedule_run_list_response.py +0 -0
  217. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/schedule_run_status.py +0 -0
  218. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/schedule_source.py +0 -0
  219. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/schedule_target_type.py +0 -0
  220. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/secret.py +0 -0
  221. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/secret_sub_category.py +0 -0
  222. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session.py +0 -0
  223. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_activity_status.py +0 -0
  224. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_export.py +0 -0
  225. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_export_part.py +0 -0
  226. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_export_part_kind.py +0 -0
  227. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_list_response.py +0 -0
  228. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_responder_kind.py +0 -0
  229. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/session_summary.py +0 -0
  230. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/sidecar_health_probes.py +0 -0
  231. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/signal_severity.py +0 -0
  232. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/skill.py +0 -0
  233. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/skill_file.py +0 -0
  234. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/skill_summary.py +0 -0
  235. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/stage_binding.py +0 -0
  236. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/stage_expectation.py +0 -0
  237. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/start_ask_guild200_response.py +0 -0
  238. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/start_chat_json_body.py +0 -0
  239. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/start_chat_response.py +0 -0
  240. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/subagent_spawn_contract.py +0 -0
  241. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/supported_formats.py +0 -0
  242. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/supported_formats_keys_inner.py +0 -0
  243. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/sync_response.py +0 -0
  244. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/task_error_category.py +0 -0
  245. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/task_status.py +0 -0
  246. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/terminate_session_response.py +0 -0
  247. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/test_model_request.py +0 -0
  248. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/test_model_response.py +0 -0
  249. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/toggle_chat_subscription_request.py +0 -0
  250. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/trace_dag_response.py +0 -0
  251. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/trigger_schedule202_response.py +0 -0
  252. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/trigger_webhook202_response.py +0 -0
  253. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/update_agent_request.py +0 -0
  254. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/update_chat_subscription_request.py +0 -0
  255. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/update_secret_by_id_request.py +0 -0
  256. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/update_session_metadata_request.py +0 -0
  257. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/update_webhook_request.py +0 -0
  258. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/upsert_integration_request.py +0 -0
  259. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/version_status.py +0 -0
  260. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook.py +0 -0
  261. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_filter_preview_header.py +0 -0
  262. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_filter_preview_request.py +0 -0
  263. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_filter_preview_response.py +0 -0
  264. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_run.py +0 -0
  265. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_run_detail.py +0 -0
  266. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/webhook_run_list_response.py +0 -0
  267. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow.py +0 -0
  268. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_metadata.py +0 -0
  269. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_output_contract.py +0 -0
  270. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_run_expectations.py +0 -0
  271. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_stage.py +0 -0
  272. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_tool_middleware.py +0 -0
  273. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +0 -0
  274. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +0 -0
  275. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_trigger.py +0 -0
  276. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/models/workflow_trigger_type.py +0 -0
  277. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/generated/rest.py +0 -0
  278. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/logging.py +0 -0
  279. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/orgs/__init__.py +0 -0
  280. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/orgs/namespace.py +0 -0
  281. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/sre/__init__.py +0 -0
  282. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/sre/namespace.py +0 -0
  283. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/vault/__init__.py +0 -0
  284. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/src/stackgen/vault/metadata.py +0 -0
  285. {stackgen_sdk-0.4.0rc33 → stackgen_sdk-0.4.0rc34}/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.0rc34
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,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.0rc34'
22
+ __version_tuple__ = version_tuple = (0, 4, 0, 'rc34')
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))