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