stackgen-sdk 0.4.0rc29__tar.gz → 0.4.0rc32__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 (284) hide show
  1. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/PKG-INFO +1 -1
  2. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/_http.py +39 -0
  3. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/_version.py +2 -2
  4. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/models.py +59 -0
  5. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/namespace.py +52 -0
  6. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/resources.py +81 -0
  7. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/webhook_ops.py +74 -0
  8. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/.openapi-generator/FILES +21 -0
  9. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/__init__.py +14 -0
  10. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api/aiden_api.py +5941 -3580
  11. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/__init__.py +7 -0
  12. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_info.py +13 -1
  13. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_webhook_request.py +3 -1
  14. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/register_agent_request.py +13 -1
  15. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/secret_sub_category.py +1 -0
  16. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/skill.py +1 -1
  17. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/skill_summary.py +1 -1
  18. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/test_model_request.py +98 -0
  19. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/test_model_response.py +89 -0
  20. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/update_agent_request.py +19 -2
  21. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/update_session_metadata_request.py +106 -0
  22. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/update_webhook_request.py +152 -0
  23. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/webhook.py +3 -1
  24. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/webhook_filter_preview_header.py +90 -0
  25. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/webhook_filter_preview_request.py +99 -0
  26. stackgen_sdk-0.4.0rc32/src/stackgen/generated/models/webhook_filter_preview_response.py +87 -0
  27. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/.gitignore +0 -0
  28. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/README.md +0 -0
  29. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/pyproject.toml +0 -0
  30. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/__init__.py +0 -0
  31. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/__init__.py +0 -0
  32. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/ask.py +0 -0
  33. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/audit.py +0 -0
  34. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/integration_secrets.py +0 -0
  35. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/run_status.py +0 -0
  36. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/runs.py +0 -0
  37. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/sessions.py +0 -0
  38. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/steer.py +0 -0
  39. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/subscribe.py +0 -0
  40. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/subscribe_frames.py +0 -0
  41. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/transient.py +0 -0
  42. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/webhook.py +0 -0
  43. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/workflow_builder.py +0 -0
  44. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/aiden/workflow_publish.py +0 -0
  45. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/cli.py +0 -0
  46. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/client.py +0 -0
  47. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/config.py +0 -0
  48. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/errors.py +0 -0
  49. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
  50. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/.openapi-generator-ignore +0 -0
  51. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api/__init__.py +0 -0
  52. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api/sre_api.py +0 -0
  53. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api/vault_api.py +0 -0
  54. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api_client.py +0 -0
  55. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/api_response.py +0 -0
  56. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/configuration.py +0 -0
  57. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/exceptions.py +0 -0
  58. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/activate_break_glass_request.py +0 -0
  59. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_app_mcp_binding.py +0 -0
  60. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_health_check.py +0 -0
  61. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_health_response.py +0 -0
  62. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_lifecycle_status.py +0 -0
  63. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_model_config.py +0 -0
  64. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_schedule.py +0 -0
  65. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/agent_status.py +0 -0
  66. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_analysis_status.py +0 -0
  67. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_attention.py +0 -0
  68. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_categorization_summary.py +0 -0
  69. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_role.py +0 -0
  70. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_sort_by.py +0 -0
  71. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_status.py +0 -0
  72. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_summary.py +0 -0
  73. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_sync_run_status.py +0 -0
  74. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/alert_v1.py +0 -0
  75. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/approval_item.py +0 -0
  76. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/artifact_info.py +0 -0
  77. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ask_execution_mode.py +0 -0
  78. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ask_guild_request.py +0 -0
  79. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ask_guild_route_decision.py +0 -0
  80. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ask_guild_route_response.py +0 -0
  81. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ask_guild_start_response.py +0 -0
  82. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/attach_policy_request.py +0 -0
  83. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/audit_event.py +0 -0
  84. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/audit_event_list_response.py +0 -0
  85. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/audit_facets.py +0 -0
  86. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/auto_approve_tool_rule.py +0 -0
  87. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/autonomy_budget_config.py +0 -0
  88. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/autonomy_budget_snapshot.py +0 -0
  89. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/autonomy_budget_tier.py +0 -0
  90. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +0 -0
  91. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/break_glass_state.py +0 -0
  92. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/candidate_type.py +0 -0
  93. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/chat_channel_selector.py +0 -0
  94. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/chat_subscription.py +0 -0
  95. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/chat_subscription_list_response.py +0 -0
  96. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/chat_subscription_target_type.py +0 -0
  97. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/chat_subscription_trigger_type.py +0 -0
  98. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/combining_algorithm.py +0 -0
  99. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/combining_algorithm_request.py +0 -0
  100. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/container_image.py +0 -0
  101. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/cost_band.py +0 -0
  102. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_chat_subscription_request.py +0 -0
  103. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_document_request.py +0 -0
  104. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_knowledge_base_request.py +0 -0
  105. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_policy_request.py +0 -0
  106. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_remote_runner_request.py +0 -0
  107. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_remote_runner_response.py +0 -0
  108. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_schedule_request.py +0 -0
  109. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_skill_companion_file.py +0 -0
  110. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/create_skill_request.py +0 -0
  111. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/dag_edge.py +0 -0
  112. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/dag_node.py +0 -0
  113. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/diary_compression.py +0 -0
  114. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/diary_config.py +0 -0
  115. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/discovered_tool.py +0 -0
  116. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/document_ingest_status.py +0 -0
  117. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/document_ingest_workflow_status.py +0 -0
  118. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/document_processing_status.py +0 -0
  119. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/duration_band.py +0 -0
  120. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/entity_ref.py +0 -0
  121. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/error_response.py +0 -0
  122. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/eval_config.py +0 -0
  123. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/evaluate_policy_request.py +0 -0
  124. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/evaluate_policy_response.py +0 -0
  125. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/execution_list_item.py +0 -0
  126. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/execution_meta.py +0 -0
  127. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/execution_structured_output.py +0 -0
  128. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/execution_tool_call.py +0 -0
  129. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/execution_tool_call_list.py +0 -0
  130. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/external_secret_reference.py +0 -0
  131. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/fork_session_request.py +0 -0
  132. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/git_config.py +0 -0
  133. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/guild_integration.py +0 -0
  134. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/guild_json_error.py +0 -0
  135. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/guild_platform_config.py +0 -0
  136. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/hal_guard_config.py +0 -0
  137. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/health_check_status.py +0 -0
  138. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/hitl_config.py +0 -0
  139. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ingested_document.py +0 -0
  140. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/ingested_document1.py +0 -0
  141. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_availability_reason.py +0 -0
  142. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_availability_status.py +0 -0
  143. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +0 -0
  144. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_remote_runner.py +0 -0
  145. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_scope.py +0 -0
  146. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_sidecar_launch.py +0 -0
  147. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_test_result.py +0 -0
  148. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/integration_type_info.py +0 -0
  149. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigate_alert_request.py +0 -0
  150. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigate_response.py +0 -0
  151. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation.py +0 -0
  152. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_evidence.py +0 -0
  153. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_evidence_kind.py +0 -0
  154. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_evidence_source.py +0 -0
  155. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_hypothesis.py +0 -0
  156. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_plain_summary.py +0 -0
  157. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_prior_incident.py +0 -0
  158. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_recommended_next_step.py +0 -0
  159. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_ref.py +0 -0
  160. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_status.py +0 -0
  161. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +0 -0
  162. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +0 -0
  163. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_structured_rca.py +0 -0
  164. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/investigation_triage_metadata.py +0 -0
  165. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/judge_execution_request.py +0 -0
  166. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/key_definition_type.py +0 -0
  167. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_base.py +0 -0
  168. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_config.py +0 -0
  169. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_item.py +0 -0
  170. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_item_backend.py +0 -0
  171. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_item_operation.py +0 -0
  172. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/knowledge_type.py +0 -0
  173. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/list_alerts_response.py +0 -0
  174. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/list_investigations_response.py +0 -0
  175. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +0 -0
  176. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/list_remote_runners_response.py +0 -0
  177. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/llm_provider_type.py +0 -0
  178. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/metadata.py +0 -0
  179. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config.py +0 -0
  180. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +0 -0
  181. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_concurrency.py +0 -0
  182. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_context_mode.py +0 -0
  183. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +0 -0
  184. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_metrics.py +0 -0
  185. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_rate_limit.py +0 -0
  186. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_retry.py +0 -0
  187. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_sanitize.py +0 -0
  188. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_timeout.py +0 -0
  189. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_tracing.py +0 -0
  190. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/middleware_config_validation.py +0 -0
  191. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/model_pricing.py +0 -0
  192. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/model_provider_config.py +0 -0
  193. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/navigation_mode.py +0 -0
  194. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/o_auth_support.py +0 -0
  195. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/owner_type.py +0 -0
  196. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/pagination.py +0 -0
  197. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/persona_variant_config.py +0 -0
  198. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/pii_redaction_config.py +0 -0
  199. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/pii_regex_rule.py +0 -0
  200. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy.py +0 -0
  201. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input.py +0 -0
  202. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_agent.py +0 -0
  203. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_approver.py +0 -0
  204. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_environment.py +0 -0
  205. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_principal.py +0 -0
  206. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +0 -0
  207. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_requester.py +0 -0
  208. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_input_tool.py +0 -0
  209. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_evaluation_outcome.py +0 -0
  210. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/policy_type.py +0 -0
  211. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/qualified_candidate.py +0 -0
  212. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/rca_config.py +0 -0
  213. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/reasoning_effort_setting.py +0 -0
  214. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/registered_model.py +0 -0
  215. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/remote_runner_info.py +0 -0
  216. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/remote_runner_task_info.py +0 -0
  217. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/resolve_approval_request.py +0 -0
  218. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/run_workflow_request.py +0 -0
  219. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/run_workflow_response.py +0 -0
  220. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/runbook_config.py +0 -0
  221. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/runner_capability.py +0 -0
  222. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/runner_status.py +0 -0
  223. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/runtime_approval_binding.py +0 -0
  224. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/runtime_approval_item.py +0 -0
  225. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/scan_finding.py +0 -0
  226. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/schedule_history.py +0 -0
  227. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/schedule_run_list_response.py +0 -0
  228. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/schedule_run_status.py +0 -0
  229. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/schedule_source.py +0 -0
  230. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/schedule_target_type.py +0 -0
  231. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/secret.py +0 -0
  232. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session.py +0 -0
  233. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_activity_status.py +0 -0
  234. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_export.py +0 -0
  235. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_export_part.py +0 -0
  236. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_export_part_kind.py +0 -0
  237. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_list_response.py +0 -0
  238. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_responder_kind.py +0 -0
  239. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/session_summary.py +0 -0
  240. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/sidecar_health_probes.py +0 -0
  241. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/signal_severity.py +0 -0
  242. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/skill_file.py +0 -0
  243. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/stage_binding.py +0 -0
  244. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/stage_expectation.py +0 -0
  245. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/start_ask_guild200_response.py +0 -0
  246. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/start_chat_json_body.py +0 -0
  247. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/start_chat_response.py +0 -0
  248. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/subagent_spawn_contract.py +0 -0
  249. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/supported_formats.py +0 -0
  250. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/supported_formats_keys_inner.py +0 -0
  251. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/sync_response.py +0 -0
  252. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/task_error_category.py +0 -0
  253. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/task_status.py +0 -0
  254. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/terminate_session_response.py +0 -0
  255. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/toggle_chat_subscription_request.py +0 -0
  256. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/trace_dag_response.py +0 -0
  257. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/trigger_schedule202_response.py +0 -0
  258. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/trigger_webhook202_response.py +0 -0
  259. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/update_chat_subscription_request.py +0 -0
  260. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/update_secret_by_id_request.py +0 -0
  261. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/upsert_integration_request.py +0 -0
  262. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/version_status.py +0 -0
  263. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/webhook_run.py +0 -0
  264. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/webhook_run_detail.py +0 -0
  265. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/webhook_run_list_response.py +0 -0
  266. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow.py +0 -0
  267. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_metadata.py +0 -0
  268. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_output_contract.py +0 -0
  269. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_run_expectations.py +0 -0
  270. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_stage.py +0 -0
  271. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_tool_middleware.py +0 -0
  272. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +0 -0
  273. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +0 -0
  274. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_trigger.py +0 -0
  275. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/models/workflow_trigger_type.py +0 -0
  276. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/generated/rest.py +0 -0
  277. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/logging.py +0 -0
  278. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/orgs/__init__.py +0 -0
  279. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/orgs/namespace.py +0 -0
  280. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/sre/__init__.py +0 -0
  281. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/sre/namespace.py +0 -0
  282. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/vault/__init__.py +0 -0
  283. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/src/stackgen/vault/metadata.py +0 -0
  284. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc32}/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.0rc29
3
+ Version: 0.4.0rc32
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/
@@ -228,6 +228,45 @@ def request(
228
228
  raise HttpError(f"{method} {url} -> {err}") from err
229
229
 
230
230
 
231
+ def build_multipart_body(
232
+ fields: dict[str, str],
233
+ files: list[dict[str, Any]] | None = None,
234
+ ) -> tuple[bytes, str]:
235
+ """Build a ``multipart/form-data`` body by hand (stdlib has no encoder).
236
+
237
+ ``files`` entries look like ``{"field_name", "filename", "content",
238
+ "content_type"}`` (``content_type`` optional, defaults to
239
+ ``application/octet-stream``). Returns ``(body_bytes, content_type)``.
240
+ """
241
+ boundary = f"----stackgenSdk{time.time_ns():x}{os.getpid():x}"
242
+ crlf = b"\r\n"
243
+ parts: list[bytes] = []
244
+ for name, value in fields.items():
245
+ if value is None:
246
+ continue
247
+ parts.append(
248
+ f'--{boundary}\r\nContent-Disposition: form-data; name="{name}"\r\n\r\n{value}\r\n'.encode(
249
+ "utf-8"
250
+ )
251
+ )
252
+ for file in files or []:
253
+ content_type = file.get("content_type") or "application/octet-stream"
254
+ header = (
255
+ f"--{boundary}\r\n"
256
+ f'Content-Disposition: form-data; name="{file["field_name"]}"; '
257
+ f'filename="{file["filename"]}"\r\n'
258
+ f"Content-Type: {content_type}\r\n\r\n"
259
+ ).encode("utf-8")
260
+ content = file["content"]
261
+ if isinstance(content, str):
262
+ content = content.encode("utf-8")
263
+ parts.append(header)
264
+ parts.append(content)
265
+ parts.append(crlf)
266
+ parts.append(f"--{boundary}--\r\n".encode("utf-8"))
267
+ return b"".join(parts), f"multipart/form-data; boundary={boundary}"
268
+
269
+
231
270
  def as_list(payload: Any) -> list[dict[str, Any]]:
232
271
  if isinstance(payload, list):
233
272
  return [item for item in payload if isinstance(item, dict)]
@@ -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.0rc29'
22
- __version_tuple__ = version_tuple = (0, 4, 0, 'rc29')
21
+ __version__ = version = '0.4.0rc32'
22
+ __version_tuple__ = version_tuple = (0, 4, 0, 'rc32')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -203,6 +203,65 @@ class ModelRegistry:
203
203
  )
204
204
  return {"provider": chosen, "model": model}
205
205
 
206
+ def test_model(
207
+ self,
208
+ *,
209
+ provider_name: str,
210
+ model_id: str,
211
+ variant: str | None = None,
212
+ max_tokens: int | None = None,
213
+ temperature: float | None = None,
214
+ reasoning_effort: str | None = None,
215
+ ) -> dict[str, Any]:
216
+ """POST /guild/api/v1/models/test — probe a config without registering it.
217
+
218
+ Runs a small generation call against the provider and returns
219
+ ``{"success", "message"}``, or raises ``HttpError(400)`` with the
220
+ provider's error on an invalid configuration.
221
+ """
222
+ body: dict[str, Any] = {"provider_name": provider_name, "model_id": model_id}
223
+ if variant is not None:
224
+ body["variant"] = variant
225
+ if max_tokens is not None:
226
+ body["max_tokens"] = max_tokens
227
+ if temperature is not None:
228
+ body["temperature"] = temperature
229
+ if reasoning_effort is not None:
230
+ body["reasoning_effort"] = reasoning_effort
231
+ out = self._json("POST", "/models/test", body)
232
+ if not isinstance(out, dict):
233
+ raise HttpError(f"unexpected test model payload: {out!r}")
234
+ return out
235
+
236
+ def delete_model(self, name: str, *, scope: str | None = None) -> None:
237
+ """DELETE /guild/api/v1/models/{name}.
238
+
239
+ Pass ``scope`` (``TENANT`` / ``PROJECT``) to target a non-default
240
+ owner level. Raises ``HttpError(404)`` when the model is missing.
241
+ """
242
+ enc = urllib.parse.quote(name, safe="")
243
+ params: dict[str, Any] = {"orgId": self._org()}
244
+ if scope:
245
+ params["scope"] = scope
246
+ url = f"{self._config.aiden_url()}/api/v1/models/{enc}?{urllib.parse.urlencode(params)}"
247
+ _http.request(url, self._config.api_token, method="DELETE", expect_json=False)
248
+
249
+ def delete_provider(self, name: str, *, scope: str | None = None) -> None:
250
+ """DELETE /guild/api/v1/model-providers/{name}.
251
+
252
+ Delete every model under the provider first — Guild 404s on an
253
+ unknown provider but does not cascade-delete its models.
254
+ """
255
+ enc = urllib.parse.quote(name, safe="")
256
+ params: dict[str, Any] = {"orgId": self._org()}
257
+ if scope:
258
+ params["scope"] = scope
259
+ url = (
260
+ f"{self._config.aiden_url()}/api/v1/model-providers/{enc}"
261
+ f"?{urllib.parse.urlencode(params)}"
262
+ )
263
+ _http.request(url, self._config.api_token, method="DELETE", expect_json=False)
264
+
206
265
  def get_model(self, name: str) -> dict[str, Any]:
207
266
  """GET /guild/api/v1/models/{name}."""
208
267
  enc = urllib.parse.quote(name, safe="")
@@ -154,6 +154,46 @@ class AidenNamespace:
154
154
  """POST /guild/api/v1/sessions/{sessionId}/terminate."""
155
155
  return self._webhook_ops.terminate_session(session_id, reason=reason)
156
156
 
157
+ def update_session(
158
+ self,
159
+ session_id: str,
160
+ *,
161
+ title: str | None = None,
162
+ starred: bool | None = None,
163
+ archived: bool | None = None,
164
+ ) -> dict[str, Any]:
165
+ """PATCH /guild/api/v1/sessions/{sessionId}/metadata — rename, star/unstar,
166
+ or archive/unarchive. Only the fields you pass change."""
167
+ return self._webhook_ops.update_session(
168
+ session_id, title=title, starred=starred, archived=archived
169
+ )
170
+
171
+ def download_session_attachment(
172
+ self, session_id: str, attachment_id: str, output_path: str
173
+ ) -> Path:
174
+ """Download a chat attachment by its stable ``attachment_id`` (the UUID
175
+ half of an ``attachment://<session_id>/<attachment_id>`` handle)."""
176
+ return self._webhook_ops.download_session_attachment(
177
+ session_id, attachment_id, output_path
178
+ )
179
+
180
+ def delete_session_attachments(self, session_id: str) -> None:
181
+ """Delete every stored chat attachment for a session."""
182
+ self._webhook_ops.delete_session_attachments(session_id)
183
+
184
+ def start_agent_chat_with_files(
185
+ self,
186
+ agent_name: str,
187
+ *,
188
+ message: str = "",
189
+ session_id: str | None = None,
190
+ files: list[dict[str, Any]],
191
+ ) -> dict[str, Any]:
192
+ """Start a chat turn with one or more file attachments (multipart)."""
193
+ return self._resources.start_agent_chat_with_files(
194
+ agent_name, message=message, session_id=session_id, files=files
195
+ )
196
+
157
197
  def run_ask_and_download_artifact(
158
198
  self,
159
199
  message: str,
@@ -326,6 +366,18 @@ class AidenNamespace:
326
366
  def delete_webhook(self, webhook_id: str) -> dict[str, Any]:
327
367
  return self._resources.delete_webhook(webhook_id)
328
368
 
369
+ def preview_webhook_filter(
370
+ self,
371
+ filter_cel: str,
372
+ payload_json: str = "",
373
+ *,
374
+ headers: list[dict[str, str]] | None = None,
375
+ ) -> bool:
376
+ """Try a draft `filter_cel` condition against a sample event; saves nothing."""
377
+ return self._resources.preview_webhook_filter(
378
+ filter_cel, payload_json, headers=headers
379
+ )
380
+
329
381
  def create_schedule(self, body: dict[str, Any]) -> dict[str, Any]:
330
382
  return self._resources.create_schedule(body)
331
383
 
@@ -112,6 +112,29 @@ class AidenResources:
112
112
  def delete_webhook(self, webhook_id: str) -> dict[str, Any]:
113
113
  return _as_object(self._send(f"/webhooks/{webhook_id}", "DELETE"), "deleteWebhook")
114
114
 
115
+ def preview_webhook_filter(
116
+ self,
117
+ filter_cel: str,
118
+ payload_json: str = "",
119
+ *,
120
+ headers: list[dict[str, str]] | None = None,
121
+ ) -> bool:
122
+ """POST /webhooks/filter/preview — try a draft CEL condition, save nothing.
123
+
124
+ Returns ``matched`` for the given ``payload_json`` sample (a JSON
125
+ string, not a dict) and optional sample ``headers``. Same evaluator
126
+ webhook delivery uses: an empty ``filter_cel`` always matches, even
127
+ against non-JSON samples. Raises :class:`StackgenError` on an invalid
128
+ expression, invalid JSON, or an evaluation error (HTTP 400).
129
+ """
130
+ body: dict[str, Any] = {"filter_cel": filter_cel, "payload_json": payload_json}
131
+ if headers:
132
+ body["headers"] = headers
133
+ data = _as_object(
134
+ self._send("/webhooks/filter/preview", "POST", body), "previewWebhookFilter"
135
+ )
136
+ return bool(data.get("matched"))
137
+
115
138
  def create_schedule(self, body: dict[str, Any]) -> dict[str, Any]:
116
139
  return _as_object(self._send("/schedules", "POST", body), "createSchedule")
117
140
 
@@ -351,6 +374,64 @@ class AidenResources:
351
374
  )
352
375
  return record
353
376
 
377
+ def start_agent_chat_with_files(
378
+ self,
379
+ agent_name: str,
380
+ *,
381
+ message: str = "",
382
+ session_id: str | None = None,
383
+ files: list[dict[str, Any]],
384
+ ) -> dict[str, Any]:
385
+ """POST /agents/{name}/chat/start as ``multipart/form-data``.
386
+
387
+ ``files`` entries are ``{"filename", "content", "content_type"}``
388
+ (``content`` is ``bytes``; ``content_type`` optional). Send multiple
389
+ files by adding multiple entries — Guild accepts many ``file`` parts
390
+ per request (cap 10, 3 MiB each for inline agents, 10 MiB for
391
+ reference agents, 40 MiB total).
392
+
393
+ There is no list-attachments endpoint: the returned
394
+ ``attachment://<session_id>/<attachment_id>`` handle for each file
395
+ surfaces later in the turn's content (tool-call args, or ask the model
396
+ to repeat it) or the execution debug ZIP
397
+ (:meth:`AidenNamespace.download_execution_debug_zip`). Once you have
398
+ an ``attachment_id``, use :meth:`AidenNamespace.download_session_attachment`
399
+ / :meth:`AidenNamespace.delete_session_attachments`.
400
+ """
401
+ if not files:
402
+ raise ValueError("start_agent_chat_with_files requires at least one file")
403
+ fields: dict[str, str] = {"message": message}
404
+ if session_id:
405
+ fields["session_id"] = session_id
406
+ multipart_files = [
407
+ {
408
+ "field_name": "file",
409
+ "filename": f["filename"],
410
+ "content": f["content"],
411
+ "content_type": f.get("content_type"),
412
+ }
413
+ for f in files
414
+ ]
415
+ body, content_type = _http.build_multipart_body(fields, multipart_files)
416
+ data = _http.request(
417
+ self._url(f"/agents/{agent_name}/chat/start"),
418
+ self._config.api_token,
419
+ method="POST",
420
+ body=body,
421
+ content_type=content_type,
422
+ transient_retry_budget_ms=self._config.transient_retry_budget_ms,
423
+ )
424
+ record = _as_object(data, "startAgentChatWithFiles")
425
+ self._config.emit_session_started(
426
+ {
427
+ "kind": "chat",
428
+ "session_id": record.get("session_id") or record.get("sessionId"),
429
+ "trace_id": record.get("trace_id") or record.get("traceId"),
430
+ "agent": agent_name,
431
+ }
432
+ )
433
+ return record
434
+
354
435
  def list_chat_subscriptions(self, **params: Any) -> list[dict[str, Any]]:
355
436
  return _http.as_list(self._get("/platforms/chat/subscriptions", params))
356
437
 
@@ -254,6 +254,80 @@ class WebhookOps:
254
254
  out.append({"name": name, "path": str(dest), "meta": meta})
255
255
  return out
256
256
 
257
+ def update_session(
258
+ self,
259
+ session_id: str,
260
+ *,
261
+ title: str | None = None,
262
+ starred: bool | None = None,
263
+ archived: bool | None = None,
264
+ ) -> dict[str, Any]:
265
+ """PATCH /guild/api/v1/sessions/{sessionId}/metadata.
266
+
267
+ Only the keyword args you pass are written; omit ``title`` /
268
+ ``starred`` / ``archived`` to leave them unchanged. Pass
269
+ ``title=""`` to clear a previously set title and revert to the
270
+ original prompt snippet. Returns the updated ``SessionSummary``.
271
+ """
272
+ patch: dict[str, Any] = {}
273
+ if title is not None:
274
+ patch["title"] = title
275
+ if starred is not None:
276
+ patch["starred"] = starred
277
+ if archived is not None:
278
+ patch["archived"] = archived
279
+ url = (
280
+ f"{self._config.aiden_url()}/api/v1/sessions/{session_id}/metadata"
281
+ f"{_http.query(self._config.org_id)}"
282
+ )
283
+ data = _http.request(
284
+ url,
285
+ self._config.api_token,
286
+ method="PATCH",
287
+ body=json.dumps(patch).encode("utf-8"),
288
+ content_type="application/json",
289
+ )
290
+ if not isinstance(data, dict):
291
+ raise StackgenError(f"unexpected update session payload: {data!r}")
292
+ return data
293
+
294
+ def download_session_attachment(
295
+ self,
296
+ session_id: str,
297
+ attachment_id: str,
298
+ output_path: str,
299
+ ) -> Path:
300
+ """GET .../sessions/{sessionId}/attachments/{attachmentId}/download.
301
+
302
+ ``attachment_id`` is the UUID half of an
303
+ ``attachment://<session_id>/<attachment_id>`` handle — see
304
+ :meth:`AidenResources.start_agent_chat_with_files`. Writes the
305
+ stored bytes (original content type) to ``output_path``.
306
+ """
307
+ encoded = urllib.parse.quote(attachment_id, safe="")
308
+ url = (
309
+ f"{self._config.aiden_url()}/api/v1/sessions/{session_id}/attachments/"
310
+ f"{encoded}/download"
311
+ )
312
+ raw = _http.request(url, self._config.api_token, expect_json=False)
313
+ dest = Path(output_path)
314
+ dest.parent.mkdir(parents=True, exist_ok=True)
315
+ dest.write_bytes(raw)
316
+ return dest
317
+
318
+ def delete_session_attachments(self, session_id: str) -> None:
319
+ """DELETE .../sessions/{sessionId}/attachments.
320
+
321
+ Removes every stored chat attachment (and best-effort RAG vector
322
+ rows) for the session. Raises ``HttpError(404)`` when no attachment
323
+ session exists for ``session_id``.
324
+ """
325
+ url = (
326
+ f"{self._config.aiden_url()}/api/v1/sessions/{session_id}/attachments"
327
+ f"{_http.query(self._config.org_id)}"
328
+ )
329
+ _http.request(url, self._config.api_token, method="DELETE", expect_json=False)
330
+
257
331
  def export_session(
258
332
  self,
259
333
  session_id: str,
@@ -213,6 +213,8 @@ stackgen/generated/docs/SyncResponse.md
213
213
  stackgen/generated/docs/TaskErrorCategory.md
214
214
  stackgen/generated/docs/TaskStatus.md
215
215
  stackgen/generated/docs/TerminateSessionResponse.md
216
+ stackgen/generated/docs/TestModelRequest.md
217
+ stackgen/generated/docs/TestModelResponse.md
216
218
  stackgen/generated/docs/ToggleChatSubscriptionRequest.md
217
219
  stackgen/generated/docs/TraceDAGResponse.md
218
220
  stackgen/generated/docs/TriggerSchedule202Response.md
@@ -220,10 +222,15 @@ stackgen/generated/docs/TriggerWebhook202Response.md
220
222
  stackgen/generated/docs/UpdateAgentRequest.md
221
223
  stackgen/generated/docs/UpdateChatSubscriptionRequest.md
222
224
  stackgen/generated/docs/UpdateSecretByIdRequest.md
225
+ stackgen/generated/docs/UpdateSessionMetadataRequest.md
226
+ stackgen/generated/docs/UpdateWebhookRequest.md
223
227
  stackgen/generated/docs/UpsertIntegrationRequest.md
224
228
  stackgen/generated/docs/VaultApi.md
225
229
  stackgen/generated/docs/VersionStatus.md
226
230
  stackgen/generated/docs/Webhook.md
231
+ stackgen/generated/docs/WebhookFilterPreviewHeader.md
232
+ stackgen/generated/docs/WebhookFilterPreviewRequest.md
233
+ stackgen/generated/docs/WebhookFilterPreviewResponse.md
227
234
  stackgen/generated/docs/WebhookRun.md
228
235
  stackgen/generated/docs/WebhookRunDetail.md
229
236
  stackgen/generated/docs/WebhookRunListResponse.md
@@ -442,6 +449,8 @@ stackgen/generated/models/sync_response.py
442
449
  stackgen/generated/models/task_error_category.py
443
450
  stackgen/generated/models/task_status.py
444
451
  stackgen/generated/models/terminate_session_response.py
452
+ stackgen/generated/models/test_model_request.py
453
+ stackgen/generated/models/test_model_response.py
445
454
  stackgen/generated/models/toggle_chat_subscription_request.py
446
455
  stackgen/generated/models/trace_dag_response.py
447
456
  stackgen/generated/models/trigger_schedule202_response.py
@@ -449,9 +458,14 @@ stackgen/generated/models/trigger_webhook202_response.py
449
458
  stackgen/generated/models/update_agent_request.py
450
459
  stackgen/generated/models/update_chat_subscription_request.py
451
460
  stackgen/generated/models/update_secret_by_id_request.py
461
+ stackgen/generated/models/update_session_metadata_request.py
462
+ stackgen/generated/models/update_webhook_request.py
452
463
  stackgen/generated/models/upsert_integration_request.py
453
464
  stackgen/generated/models/version_status.py
454
465
  stackgen/generated/models/webhook.py
466
+ stackgen/generated/models/webhook_filter_preview_header.py
467
+ stackgen/generated/models/webhook_filter_preview_request.py
468
+ stackgen/generated/models/webhook_filter_preview_response.py
455
469
  stackgen/generated/models/webhook_run.py
456
470
  stackgen/generated/models/webhook_run_detail.py
457
471
  stackgen/generated/models/webhook_run_list_response.py
@@ -672,6 +686,8 @@ stackgen/generated/test/test_sync_response.py
672
686
  stackgen/generated/test/test_task_error_category.py
673
687
  stackgen/generated/test/test_task_status.py
674
688
  stackgen/generated/test/test_terminate_session_response.py
689
+ stackgen/generated/test/test_test_model_request.py
690
+ stackgen/generated/test/test_test_model_response.py
675
691
  stackgen/generated/test/test_toggle_chat_subscription_request.py
676
692
  stackgen/generated/test/test_trace_dag_response.py
677
693
  stackgen/generated/test/test_trigger_schedule202_response.py
@@ -679,10 +695,15 @@ stackgen/generated/test/test_trigger_webhook202_response.py
679
695
  stackgen/generated/test/test_update_agent_request.py
680
696
  stackgen/generated/test/test_update_chat_subscription_request.py
681
697
  stackgen/generated/test/test_update_secret_by_id_request.py
698
+ stackgen/generated/test/test_update_session_metadata_request.py
699
+ stackgen/generated/test/test_update_webhook_request.py
682
700
  stackgen/generated/test/test_upsert_integration_request.py
683
701
  stackgen/generated/test/test_vault_api.py
684
702
  stackgen/generated/test/test_version_status.py
685
703
  stackgen/generated/test/test_webhook.py
704
+ stackgen/generated/test/test_webhook_filter_preview_header.py
705
+ stackgen/generated/test/test_webhook_filter_preview_request.py
706
+ stackgen/generated/test/test_webhook_filter_preview_response.py
686
707
  stackgen/generated/test/test_webhook_run.py
687
708
  stackgen/generated/test/test_webhook_run_detail.py
688
709
  stackgen/generated/test/test_webhook_run_list_response.py
@@ -233,6 +233,8 @@ __all__ = [
233
233
  "TaskErrorCategory",
234
234
  "TaskStatus",
235
235
  "TerminateSessionResponse",
236
+ "TestModelRequest",
237
+ "TestModelResponse",
236
238
  "ToggleChatSubscriptionRequest",
237
239
  "TraceDAGResponse",
238
240
  "TriggerSchedule202Response",
@@ -240,9 +242,14 @@ __all__ = [
240
242
  "UpdateAgentRequest",
241
243
  "UpdateChatSubscriptionRequest",
242
244
  "UpdateSecretByIdRequest",
245
+ "UpdateSessionMetadataRequest",
246
+ "UpdateWebhookRequest",
243
247
  "UpsertIntegrationRequest",
244
248
  "VersionStatus",
245
249
  "Webhook",
250
+ "WebhookFilterPreviewHeader",
251
+ "WebhookFilterPreviewRequest",
252
+ "WebhookFilterPreviewResponse",
246
253
  "WebhookRun",
247
254
  "WebhookRunDetail",
248
255
  "WebhookRunListResponse",
@@ -478,6 +485,8 @@ from stackgen.generated.models.sync_response import SyncResponse as SyncResponse
478
485
  from stackgen.generated.models.task_error_category import TaskErrorCategory as TaskErrorCategory
479
486
  from stackgen.generated.models.task_status import TaskStatus as TaskStatus
480
487
  from stackgen.generated.models.terminate_session_response import TerminateSessionResponse as TerminateSessionResponse
488
+ from stackgen.generated.models.test_model_request import TestModelRequest as TestModelRequest
489
+ from stackgen.generated.models.test_model_response import TestModelResponse as TestModelResponse
481
490
  from stackgen.generated.models.toggle_chat_subscription_request import ToggleChatSubscriptionRequest as ToggleChatSubscriptionRequest
482
491
  from stackgen.generated.models.trace_dag_response import TraceDAGResponse as TraceDAGResponse
483
492
  from stackgen.generated.models.trigger_schedule202_response import TriggerSchedule202Response as TriggerSchedule202Response
@@ -485,9 +494,14 @@ from stackgen.generated.models.trigger_webhook202_response import TriggerWebhook
485
494
  from stackgen.generated.models.update_agent_request import UpdateAgentRequest as UpdateAgentRequest
486
495
  from stackgen.generated.models.update_chat_subscription_request import UpdateChatSubscriptionRequest as UpdateChatSubscriptionRequest
487
496
  from stackgen.generated.models.update_secret_by_id_request import UpdateSecretByIdRequest as UpdateSecretByIdRequest
497
+ from stackgen.generated.models.update_session_metadata_request import UpdateSessionMetadataRequest as UpdateSessionMetadataRequest
498
+ from stackgen.generated.models.update_webhook_request import UpdateWebhookRequest as UpdateWebhookRequest
488
499
  from stackgen.generated.models.upsert_integration_request import UpsertIntegrationRequest as UpsertIntegrationRequest
489
500
  from stackgen.generated.models.version_status import VersionStatus as VersionStatus
490
501
  from stackgen.generated.models.webhook import Webhook as Webhook
502
+ from stackgen.generated.models.webhook_filter_preview_header import WebhookFilterPreviewHeader as WebhookFilterPreviewHeader
503
+ from stackgen.generated.models.webhook_filter_preview_request import WebhookFilterPreviewRequest as WebhookFilterPreviewRequest
504
+ from stackgen.generated.models.webhook_filter_preview_response import WebhookFilterPreviewResponse as WebhookFilterPreviewResponse
491
505
  from stackgen.generated.models.webhook_run import WebhookRun as WebhookRun
492
506
  from stackgen.generated.models.webhook_run_detail import WebhookRunDetail as WebhookRunDetail
493
507
  from stackgen.generated.models.webhook_run_list_response import WebhookRunListResponse as WebhookRunListResponse