stackgen-sdk 0.4.0rc29__tar.gz → 0.4.0rc30__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 (280) hide show
  1. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/PKG-INFO +1 -1
  2. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/_http.py +39 -0
  3. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/_version.py +2 -2
  4. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/models.py +59 -0
  5. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/namespace.py +40 -0
  6. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/resources.py +58 -0
  7. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/webhook_ops.py +74 -0
  8. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/.openapi-generator/FILES +9 -0
  9. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/__init__.py +6 -0
  10. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api/aiden_api.py +5387 -3636
  11. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/__init__.py +3 -0
  12. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_info.py +13 -1
  13. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/register_agent_request.py +13 -1
  14. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/secret_sub_category.py +1 -0
  15. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/skill.py +1 -1
  16. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/skill_summary.py +1 -1
  17. stackgen_sdk-0.4.0rc30/src/stackgen/generated/models/test_model_request.py +98 -0
  18. stackgen_sdk-0.4.0rc30/src/stackgen/generated/models/test_model_response.py +89 -0
  19. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/update_agent_request.py +19 -2
  20. stackgen_sdk-0.4.0rc30/src/stackgen/generated/models/update_session_metadata_request.py +106 -0
  21. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/.gitignore +0 -0
  22. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/README.md +0 -0
  23. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/pyproject.toml +0 -0
  24. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/__init__.py +0 -0
  25. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/__init__.py +0 -0
  26. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/ask.py +0 -0
  27. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/audit.py +0 -0
  28. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/integration_secrets.py +0 -0
  29. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/run_status.py +0 -0
  30. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/runs.py +0 -0
  31. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/sessions.py +0 -0
  32. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/steer.py +0 -0
  33. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/subscribe.py +0 -0
  34. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/subscribe_frames.py +0 -0
  35. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/transient.py +0 -0
  36. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/webhook.py +0 -0
  37. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/workflow_builder.py +0 -0
  38. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/aiden/workflow_publish.py +0 -0
  39. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/cli.py +0 -0
  40. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/client.py +0 -0
  41. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/config.py +0 -0
  42. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/errors.py +0 -0
  43. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/.openapi-generator/VERSION +0 -0
  44. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/.openapi-generator-ignore +0 -0
  45. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api/__init__.py +0 -0
  46. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api/sre_api.py +0 -0
  47. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api/vault_api.py +0 -0
  48. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api_client.py +0 -0
  49. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/api_response.py +0 -0
  50. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/configuration.py +0 -0
  51. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/exceptions.py +0 -0
  52. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/activate_break_glass_request.py +0 -0
  53. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_app_mcp_binding.py +0 -0
  54. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_health_check.py +0 -0
  55. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_health_response.py +0 -0
  56. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_lifecycle_status.py +0 -0
  57. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_model_config.py +0 -0
  58. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_schedule.py +0 -0
  59. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/agent_status.py +0 -0
  60. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_analysis_status.py +0 -0
  61. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_attention.py +0 -0
  62. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_categorization_summary.py +0 -0
  63. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_role.py +0 -0
  64. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_sort_by.py +0 -0
  65. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_status.py +0 -0
  66. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_summary.py +0 -0
  67. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_sync_run_status.py +0 -0
  68. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/alert_v1.py +0 -0
  69. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/approval_item.py +0 -0
  70. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/artifact_info.py +0 -0
  71. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ask_execution_mode.py +0 -0
  72. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ask_guild_request.py +0 -0
  73. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ask_guild_route_decision.py +0 -0
  74. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ask_guild_route_response.py +0 -0
  75. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ask_guild_start_response.py +0 -0
  76. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/attach_policy_request.py +0 -0
  77. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/audit_event.py +0 -0
  78. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/audit_event_list_response.py +0 -0
  79. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/audit_facets.py +0 -0
  80. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/auto_approve_tool_rule.py +0 -0
  81. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/autonomy_budget_config.py +0 -0
  82. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/autonomy_budget_snapshot.py +0 -0
  83. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/autonomy_budget_tier.py +0 -0
  84. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/autonomy_budget_tier_reason.py +0 -0
  85. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/break_glass_state.py +0 -0
  86. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/candidate_type.py +0 -0
  87. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/chat_channel_selector.py +0 -0
  88. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/chat_subscription.py +0 -0
  89. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/chat_subscription_list_response.py +0 -0
  90. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/chat_subscription_target_type.py +0 -0
  91. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/chat_subscription_trigger_type.py +0 -0
  92. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/combining_algorithm.py +0 -0
  93. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/combining_algorithm_request.py +0 -0
  94. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/container_image.py +0 -0
  95. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/cost_band.py +0 -0
  96. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_chat_subscription_request.py +0 -0
  97. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_document_request.py +0 -0
  98. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_knowledge_base_request.py +0 -0
  99. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_policy_request.py +0 -0
  100. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_remote_runner_request.py +0 -0
  101. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_remote_runner_response.py +0 -0
  102. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_schedule_request.py +0 -0
  103. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_skill_companion_file.py +0 -0
  104. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_skill_request.py +0 -0
  105. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/create_webhook_request.py +0 -0
  106. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/dag_edge.py +0 -0
  107. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/dag_node.py +0 -0
  108. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/diary_compression.py +0 -0
  109. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/diary_config.py +0 -0
  110. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/discovered_tool.py +0 -0
  111. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/document_ingest_status.py +0 -0
  112. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/document_ingest_workflow_status.py +0 -0
  113. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/document_processing_status.py +0 -0
  114. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/duration_band.py +0 -0
  115. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/entity_ref.py +0 -0
  116. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/error_response.py +0 -0
  117. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/eval_config.py +0 -0
  118. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/evaluate_policy_request.py +0 -0
  119. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/evaluate_policy_response.py +0 -0
  120. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/execution_list_item.py +0 -0
  121. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/execution_meta.py +0 -0
  122. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/execution_structured_output.py +0 -0
  123. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/execution_tool_call.py +0 -0
  124. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/execution_tool_call_list.py +0 -0
  125. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/external_secret_reference.py +0 -0
  126. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/fork_session_request.py +0 -0
  127. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/git_config.py +0 -0
  128. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/guild_integration.py +0 -0
  129. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/guild_json_error.py +0 -0
  130. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/guild_platform_config.py +0 -0
  131. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/hal_guard_config.py +0 -0
  132. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/health_check_status.py +0 -0
  133. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/hitl_config.py +0 -0
  134. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ingested_document.py +0 -0
  135. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/ingested_document1.py +0 -0
  136. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_availability_reason.py +0 -0
  137. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_availability_status.py +0 -0
  138. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_mcp_auth_promotion.py +0 -0
  139. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_remote_runner.py +0 -0
  140. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_scope.py +0 -0
  141. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_sidecar_launch.py +0 -0
  142. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_test_result.py +0 -0
  143. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/integration_type_info.py +0 -0
  144. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigate_alert_request.py +0 -0
  145. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigate_response.py +0 -0
  146. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation.py +0 -0
  147. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_evidence.py +0 -0
  148. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_evidence_kind.py +0 -0
  149. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_evidence_source.py +0 -0
  150. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_hypothesis.py +0 -0
  151. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_plain_summary.py +0 -0
  152. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_prior_incident.py +0 -0
  153. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_recommended_next_step.py +0 -0
  154. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_ref.py +0 -0
  155. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_status.py +0 -0
  156. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_structured_hypothesis_entry.py +0 -0
  157. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_structured_limitation_entry.py +0 -0
  158. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_structured_rca.py +0 -0
  159. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/investigation_triage_metadata.py +0 -0
  160. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/judge_execution_request.py +0 -0
  161. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/key_definition_type.py +0 -0
  162. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_base.py +0 -0
  163. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_config.py +0 -0
  164. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_item.py +0 -0
  165. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_item_backend.py +0 -0
  166. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_item_operation.py +0 -0
  167. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/knowledge_type.py +0 -0
  168. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/list_alerts_response.py +0 -0
  169. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/list_investigations_response.py +0 -0
  170. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/list_remote_runner_tasks_response.py +0 -0
  171. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/list_remote_runners_response.py +0 -0
  172. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/llm_provider_type.py +0 -0
  173. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/metadata.py +0 -0
  174. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config.py +0 -0
  175. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_circuit_breaker.py +0 -0
  176. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_concurrency.py +0 -0
  177. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_context_mode.py +0 -0
  178. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_context_mode_per_tool_value.py +0 -0
  179. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_metrics.py +0 -0
  180. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_rate_limit.py +0 -0
  181. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_retry.py +0 -0
  182. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_sanitize.py +0 -0
  183. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_timeout.py +0 -0
  184. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_tracing.py +0 -0
  185. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/middleware_config_validation.py +0 -0
  186. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/model_pricing.py +0 -0
  187. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/model_provider_config.py +0 -0
  188. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/navigation_mode.py +0 -0
  189. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/o_auth_support.py +0 -0
  190. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/owner_type.py +0 -0
  191. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/pagination.py +0 -0
  192. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/persona_variant_config.py +0 -0
  193. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/pii_redaction_config.py +0 -0
  194. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/pii_regex_rule.py +0 -0
  195. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy.py +0 -0
  196. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input.py +0 -0
  197. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_agent.py +0 -0
  198. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_approver.py +0 -0
  199. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_environment.py +0 -0
  200. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_principal.py +0 -0
  201. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_project_membership.py +0 -0
  202. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_requester.py +0 -0
  203. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_input_tool.py +0 -0
  204. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_evaluation_outcome.py +0 -0
  205. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/policy_type.py +0 -0
  206. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/qualified_candidate.py +0 -0
  207. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/rca_config.py +0 -0
  208. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/reasoning_effort_setting.py +0 -0
  209. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/registered_model.py +0 -0
  210. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/remote_runner_info.py +0 -0
  211. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/remote_runner_task_info.py +0 -0
  212. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/resolve_approval_request.py +0 -0
  213. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/run_workflow_request.py +0 -0
  214. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/run_workflow_response.py +0 -0
  215. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/runbook_config.py +0 -0
  216. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/runner_capability.py +0 -0
  217. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/runner_status.py +0 -0
  218. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/runtime_approval_binding.py +0 -0
  219. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/runtime_approval_item.py +0 -0
  220. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/scan_finding.py +0 -0
  221. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/schedule_history.py +0 -0
  222. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/schedule_run_list_response.py +0 -0
  223. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/schedule_run_status.py +0 -0
  224. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/schedule_source.py +0 -0
  225. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/schedule_target_type.py +0 -0
  226. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/secret.py +0 -0
  227. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session.py +0 -0
  228. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_activity_status.py +0 -0
  229. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_export.py +0 -0
  230. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_export_part.py +0 -0
  231. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_export_part_kind.py +0 -0
  232. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_list_response.py +0 -0
  233. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_responder_kind.py +0 -0
  234. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/session_summary.py +0 -0
  235. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/sidecar_health_probes.py +0 -0
  236. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/signal_severity.py +0 -0
  237. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/skill_file.py +0 -0
  238. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/stage_binding.py +0 -0
  239. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/stage_expectation.py +0 -0
  240. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/start_ask_guild200_response.py +0 -0
  241. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/start_chat_json_body.py +0 -0
  242. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/start_chat_response.py +0 -0
  243. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/subagent_spawn_contract.py +0 -0
  244. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/supported_formats.py +0 -0
  245. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/supported_formats_keys_inner.py +0 -0
  246. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/sync_response.py +0 -0
  247. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/task_error_category.py +0 -0
  248. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/task_status.py +0 -0
  249. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/terminate_session_response.py +0 -0
  250. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/toggle_chat_subscription_request.py +0 -0
  251. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/trace_dag_response.py +0 -0
  252. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/trigger_schedule202_response.py +0 -0
  253. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/trigger_webhook202_response.py +0 -0
  254. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/update_chat_subscription_request.py +0 -0
  255. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/update_secret_by_id_request.py +0 -0
  256. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/upsert_integration_request.py +0 -0
  257. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/version_status.py +0 -0
  258. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/webhook.py +0 -0
  259. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/webhook_run.py +0 -0
  260. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/webhook_run_detail.py +0 -0
  261. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/webhook_run_list_response.py +0 -0
  262. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow.py +0 -0
  263. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_metadata.py +0 -0
  264. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_output_contract.py +0 -0
  265. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_run_expectations.py +0 -0
  266. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_stage.py +0 -0
  267. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_tool_middleware.py +0 -0
  268. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_tool_middleware_circuit_breaker.py +0 -0
  269. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_tool_middleware_concurrency.py +0 -0
  270. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_trigger.py +0 -0
  271. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/models/workflow_trigger_type.py +0 -0
  272. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/generated/rest.py +0 -0
  273. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/logging.py +0 -0
  274. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/orgs/__init__.py +0 -0
  275. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/orgs/namespace.py +0 -0
  276. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/sre/__init__.py +0 -0
  277. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/sre/namespace.py +0 -0
  278. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/vault/__init__.py +0 -0
  279. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/src/stackgen/vault/metadata.py +0 -0
  280. {stackgen_sdk-0.4.0rc29 → stackgen_sdk-0.4.0rc30}/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.0rc30
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.0rc30'
22
+ __version_tuple__ = version_tuple = (0, 4, 0, 'rc30')
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,
@@ -351,6 +351,64 @@ class AidenResources:
351
351
  )
352
352
  return record
353
353
 
354
+ def start_agent_chat_with_files(
355
+ self,
356
+ agent_name: str,
357
+ *,
358
+ message: str = "",
359
+ session_id: str | None = None,
360
+ files: list[dict[str, Any]],
361
+ ) -> dict[str, Any]:
362
+ """POST /agents/{name}/chat/start as ``multipart/form-data``.
363
+
364
+ ``files`` entries are ``{"filename", "content", "content_type"}``
365
+ (``content`` is ``bytes``; ``content_type`` optional). Send multiple
366
+ files by adding multiple entries — Guild accepts many ``file`` parts
367
+ per request (cap 10, 3 MiB each for inline agents, 10 MiB for
368
+ reference agents, 40 MiB total).
369
+
370
+ There is no list-attachments endpoint: the returned
371
+ ``attachment://<session_id>/<attachment_id>`` handle for each file
372
+ surfaces later in the turn's content (tool-call args, or ask the model
373
+ to repeat it) or the execution debug ZIP
374
+ (:meth:`AidenNamespace.download_execution_debug_zip`). Once you have
375
+ an ``attachment_id``, use :meth:`AidenNamespace.download_session_attachment`
376
+ / :meth:`AidenNamespace.delete_session_attachments`.
377
+ """
378
+ if not files:
379
+ raise ValueError("start_agent_chat_with_files requires at least one file")
380
+ fields: dict[str, str] = {"message": message}
381
+ if session_id:
382
+ fields["session_id"] = session_id
383
+ multipart_files = [
384
+ {
385
+ "field_name": "file",
386
+ "filename": f["filename"],
387
+ "content": f["content"],
388
+ "content_type": f.get("content_type"),
389
+ }
390
+ for f in files
391
+ ]
392
+ body, content_type = _http.build_multipart_body(fields, multipart_files)
393
+ data = _http.request(
394
+ self._url(f"/agents/{agent_name}/chat/start"),
395
+ self._config.api_token,
396
+ method="POST",
397
+ body=body,
398
+ content_type=content_type,
399
+ transient_retry_budget_ms=self._config.transient_retry_budget_ms,
400
+ )
401
+ record = _as_object(data, "startAgentChatWithFiles")
402
+ self._config.emit_session_started(
403
+ {
404
+ "kind": "chat",
405
+ "session_id": record.get("session_id") or record.get("sessionId"),
406
+ "trace_id": record.get("trace_id") or record.get("traceId"),
407
+ "agent": agent_name,
408
+ }
409
+ )
410
+ return record
411
+
354
412
  def list_chat_subscriptions(self, **params: Any) -> list[dict[str, Any]]:
355
413
  return _http.as_list(self._get("/platforms/chat/subscriptions", params))
356
414
 
@@ -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,6 +222,7 @@ 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
223
226
  stackgen/generated/docs/UpsertIntegrationRequest.md
224
227
  stackgen/generated/docs/VaultApi.md
225
228
  stackgen/generated/docs/VersionStatus.md
@@ -442,6 +445,8 @@ stackgen/generated/models/sync_response.py
442
445
  stackgen/generated/models/task_error_category.py
443
446
  stackgen/generated/models/task_status.py
444
447
  stackgen/generated/models/terminate_session_response.py
448
+ stackgen/generated/models/test_model_request.py
449
+ stackgen/generated/models/test_model_response.py
445
450
  stackgen/generated/models/toggle_chat_subscription_request.py
446
451
  stackgen/generated/models/trace_dag_response.py
447
452
  stackgen/generated/models/trigger_schedule202_response.py
@@ -449,6 +454,7 @@ stackgen/generated/models/trigger_webhook202_response.py
449
454
  stackgen/generated/models/update_agent_request.py
450
455
  stackgen/generated/models/update_chat_subscription_request.py
451
456
  stackgen/generated/models/update_secret_by_id_request.py
457
+ stackgen/generated/models/update_session_metadata_request.py
452
458
  stackgen/generated/models/upsert_integration_request.py
453
459
  stackgen/generated/models/version_status.py
454
460
  stackgen/generated/models/webhook.py
@@ -672,6 +678,8 @@ stackgen/generated/test/test_sync_response.py
672
678
  stackgen/generated/test/test_task_error_category.py
673
679
  stackgen/generated/test/test_task_status.py
674
680
  stackgen/generated/test/test_terminate_session_response.py
681
+ stackgen/generated/test/test_test_model_request.py
682
+ stackgen/generated/test/test_test_model_response.py
675
683
  stackgen/generated/test/test_toggle_chat_subscription_request.py
676
684
  stackgen/generated/test/test_trace_dag_response.py
677
685
  stackgen/generated/test/test_trigger_schedule202_response.py
@@ -679,6 +687,7 @@ stackgen/generated/test/test_trigger_webhook202_response.py
679
687
  stackgen/generated/test/test_update_agent_request.py
680
688
  stackgen/generated/test/test_update_chat_subscription_request.py
681
689
  stackgen/generated/test/test_update_secret_by_id_request.py
690
+ stackgen/generated/test/test_update_session_metadata_request.py
682
691
  stackgen/generated/test/test_upsert_integration_request.py
683
692
  stackgen/generated/test/test_vault_api.py
684
693
  stackgen/generated/test/test_version_status.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,6 +242,7 @@ __all__ = [
240
242
  "UpdateAgentRequest",
241
243
  "UpdateChatSubscriptionRequest",
242
244
  "UpdateSecretByIdRequest",
245
+ "UpdateSessionMetadataRequest",
243
246
  "UpsertIntegrationRequest",
244
247
  "VersionStatus",
245
248
  "Webhook",
@@ -478,6 +481,8 @@ from stackgen.generated.models.sync_response import SyncResponse as SyncResponse
478
481
  from stackgen.generated.models.task_error_category import TaskErrorCategory as TaskErrorCategory
479
482
  from stackgen.generated.models.task_status import TaskStatus as TaskStatus
480
483
  from stackgen.generated.models.terminate_session_response import TerminateSessionResponse as TerminateSessionResponse
484
+ from stackgen.generated.models.test_model_request import TestModelRequest as TestModelRequest
485
+ from stackgen.generated.models.test_model_response import TestModelResponse as TestModelResponse
481
486
  from stackgen.generated.models.toggle_chat_subscription_request import ToggleChatSubscriptionRequest as ToggleChatSubscriptionRequest
482
487
  from stackgen.generated.models.trace_dag_response import TraceDAGResponse as TraceDAGResponse
483
488
  from stackgen.generated.models.trigger_schedule202_response import TriggerSchedule202Response as TriggerSchedule202Response
@@ -485,6 +490,7 @@ from stackgen.generated.models.trigger_webhook202_response import TriggerWebhook
485
490
  from stackgen.generated.models.update_agent_request import UpdateAgentRequest as UpdateAgentRequest
486
491
  from stackgen.generated.models.update_chat_subscription_request import UpdateChatSubscriptionRequest as UpdateChatSubscriptionRequest
487
492
  from stackgen.generated.models.update_secret_by_id_request import UpdateSecretByIdRequest as UpdateSecretByIdRequest
493
+ from stackgen.generated.models.update_session_metadata_request import UpdateSessionMetadataRequest as UpdateSessionMetadataRequest
488
494
  from stackgen.generated.models.upsert_integration_request import UpsertIntegrationRequest as UpsertIntegrationRequest
489
495
  from stackgen.generated.models.version_status import VersionStatus as VersionStatus
490
496
  from stackgen.generated.models.webhook import Webhook as Webhook