iac-code 0.12.1__tar.gz → 0.13.1__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.
- {iac_code-0.12.1 → iac_code-0.13.1}/PKG-INFO +34 -19
- iac_code-0.12.1/src/iac_code.egg-info/PKG-INFO → iac_code-0.13.1/README.md +32 -34
- {iac_code-0.12.1 → iac_code-0.13.1}/pyproject.toml +1 -2
- {iac_code-0.12.1 → iac_code-0.13.1}/setup.py +14 -1
- iac_code-0.13.1/src/iac_code/__init__.py +2 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/app.py +122 -14
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/events.py +60 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/executor.py +219 -8
- iac_code-0.13.1/src/iac_code/a2a/input_required.py +665 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/parts.py +15 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/persistence.py +3 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_events.py +15 -72
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_executor.py +194 -40
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_snapshot.py +1 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_stream.py +486 -64
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/runtime_overrides.py +18 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/task_store.py +123 -10
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/dispatcher.py +48 -9
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/websocket.py +4 -3
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/types.py +1 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/agent_loop.py +8 -4
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/main.py +2 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/config.py +7 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/__init__.py +29 -0
- iac_code-0.13.1/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +183 -5
- iac_code-0.13.1/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +181 -5
- iac_code-0.13.1/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +177 -5
- iac_code-0.13.1/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +173 -5
- iac_code-0.13.1/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +181 -5
- iac_code-0.13.1/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +173 -5
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/loader.py +9 -2
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/pipeline_runner.py +12 -2
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/step_executor.py +102 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/step_spec.py +7 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/pipeline.yaml +60 -0
- iac_code-0.13.1/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.rich.md +74 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +78 -4
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/manager.py +85 -3
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/registry.py +9 -4
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/thinking.py +39 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/zhipu_provider.py +10 -2
- iac_code-0.13.1/src/iac_code/services/configuration_readiness.py +131 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/context_manager.py +4 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/providers/aliyun.py +150 -48
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_backup.py +10 -1
- iac_code-0.13.1/src/iac_code/services/session_backup_staging.py +674 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/__init__.py +2 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/attributes.py +29 -2
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/constants.py +4 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/base_stack.py +17 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/write_file.py +12 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/types/stream_events.py +1 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/session_manager.py +3 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/session_titler.py +18 -3
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/index.html +1 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/app.js +355 -57
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/composer.js +6 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/tool_cards.js +6 -1
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/workspace.js +4 -0
- iac_code-0.13.1/src/iac_code.egg-info/PKG-INFO +134 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code.egg-info/SOURCES.txt +4 -0
- iac_code-0.12.1/README.md +0 -99
- iac_code-0.12.1/src/iac_code/__init__.py +0 -2
- iac_code-0.12.1/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.12.1/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.12.1/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.12.1/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.12.1/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.12.1/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/LICENSE +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/MANIFEST.in +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/setup.cfg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/agent_card.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/artifacts.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/backup.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/client.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/exposure.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/metadata_redaction.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/metrics.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_journal.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_outbound.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_paths.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_performance.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_recovery.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/projection.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/push.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/push_queue.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/push_secrets.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/push_worker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/router.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/runtime_registry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/signing.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/thinking_metadata.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transport.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/base.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/grpc.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/http.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/redis_streams.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/stdio.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/a2a/transports/unix.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/convert.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/http_sse.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/mcp.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/metrics.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/runner.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/server.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/session.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/slash_registry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/state.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/acp/version.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/agent_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/agent_types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/message.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/agent/system_prompt.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/headless.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/install_git_bash.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/output_formats.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/process_events.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/process_mode.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/process_protocol.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/cli/update.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/auth.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/clear.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/compact.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/debug.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/effort.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/exit.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/help.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/mcp.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/memory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/model.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/prompt.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/registry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/rename.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/resume.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/skills.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/status.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/tasks.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/commands/thinking_enabled.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/__main__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/control.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/controller.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/diagnostics.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/download_journal.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/external_env.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/git_bash.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/install_lock.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/loop_runner.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/native_preload_manifest.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/ports.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/probe_worker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/runtime.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/desktop/tool_paths.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/html_extractor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/cli.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/client.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/config.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/env_expansion.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/errors.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/manager.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/oauth.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/output.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/progress.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/prompt_dispatch.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/prompts.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/redaction.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/skills.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/storage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/mcp/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/memory/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/memory/memory_manager.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/memory/memory_tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/memory/project_memory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/memory/recall.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/config.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/constants.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/display_names.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/cleanup.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/completion_guard_state.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/context.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/display_replay.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/events.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/handoff.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/hard_constraints.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/interrupt.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/observability.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/public_errors.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/recovery.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/session.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/state_machine.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/engine/user_input.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/ga.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/solutions/iac-code-web.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/solutions/iac-code-web.ros.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ga.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.ros.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ga.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.ros.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ga.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.ros.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/anthropic_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/azure_openai_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/base.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/dashscope_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/deepseek_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/gemini_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/kimi_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/lmstudio_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/minimax_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/modelscope_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/ollama_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/openai_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/openrouter_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/request_logging.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/request_policy.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/retry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/siliconflow_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/stream_watchdog.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/providers/volcengine_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/agent_factory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/capabilities/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/capabilities/auto_detect.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/capabilities/multimodal.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/cloud_credentials.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/git_bash.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/audit.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/loader.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/pipeline.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/rule_scope.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/storage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/permissions/trusted_roots.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/providers/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/providers/aliyun_credentials_runtime.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/providers/aliyun_oauth.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/qwenpaw_source.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_backup_state.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_index.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_layout.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_logging.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_metadata.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_resolver.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_storage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/session_usage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/client.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/config.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/content_serializer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/events.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/fallback.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/identity.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/metrics.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/names.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/sanitize.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/scope.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/sink.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/tracing.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/telemetry/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/token_budget.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/token_counter.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/services/update_checker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/auto_trigger.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ga.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/bundled/simplify.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/discovery.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/frontmatter.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/listing.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/loader.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/management.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/processor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/renderer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/settings.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/skill_definition.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/skills/skill_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/state/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/state/app_state.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tasks/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tasks/notification_queue.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tasks/task_state.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tasks/task_tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/base.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/argv_safety.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/bash_tool.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/command_parser.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/mode_validation.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/path_validation.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/permissions.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/readonly_commands.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/rule_matching.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/bash/safety_checks.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ecs_credential_errors.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/public_errors.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/result_contract.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_lifecycle.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_stack.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_association_property_specs.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/runtime.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/base_api.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/registry.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/cloud/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/edit_file.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/glob.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/grep.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/list_files.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/path_safety.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/read_file.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/result_storage.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/tool_executor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/tools/web_fetch.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/types/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/types/permissions.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/types/skill_source.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/assets/iac-code-terminal-logo.png +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/banner.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/candidate_selection.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/dialog.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/divider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/parallel_tabs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/progress_bar.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/search_box.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/select.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/status_icon.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/components/tabs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/in_place_render.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/input_history.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/key_event.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/prompt_input.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/raw_input.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/raw_input_win.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/core/screen.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/diagram_rendering.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/global_search.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/history_search.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/memory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/model_picker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/quick_open.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/keybindings/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/keybindings/manager.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/pipeline_display_replay.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/pipeline_styles.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/renderer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/repl.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/spinner.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/stream_accumulator.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/aggregator.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/command_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/file_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/suggestions/types.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/terminal_image.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/ui/transcript_view.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/async_lifecycle.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/background_housekeeping.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/cleanup.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/console.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/file_security.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/clipboard.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/format_detect.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/pasted_content.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/processor.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/resizer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/image/store.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/json_utils.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/log.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/path_components.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/path_locks.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/platform.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/project_paths.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/public_errors.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/public_paths.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/signals.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/state_io.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/tool_input_parser.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/tool_result_redaction.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/utils/windows_paths.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/__init__.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/app.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/cleanup.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/commands.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/diagram_cache.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/diagram_optimizer.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/diagrams.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/events.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/files.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/images.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/mcp_settings.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/memory.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/outputs.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/permissions.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/pipeline.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/pipeline_actions.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/pipeline_prerequisites.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/pipeline_transcript.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/runtime.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/security.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/server.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/settings.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/shell.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/skills.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/iac-code-logo.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/api.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/blocking.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/output_panel.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/components/pipeline.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/events.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/i18n.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/mermaid_render.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/token_transport.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/js/vendor/token-crypto.js +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/static/styles.css +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code/web/token_transport.py +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code.egg-info/dependency_links.txt +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code.egg-info/entry_points.txt +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code.egg-info/requires.txt +0 -0
- {iac_code-0.12.1 → iac_code-0.13.1}/src/iac_code.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iac_code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.1
|
|
4
4
|
Summary: Your AI-powered Infrastructure as Code assistant
|
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -19,7 +19,7 @@ Provides-Extra: http
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
22
|
-
<img src="website/static/img/logo-with-front.png" alt="iac-code" width="200">
|
|
22
|
+
<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/logo-with-front.png" alt="iac-code" width="200">
|
|
23
23
|
</p>
|
|
24
24
|
<p align="center">
|
|
25
25
|
<em>AI-powered Infrastructure as Code assistant for cloud infrastructure through natural language interaction. Currently supports Alibaba Cloud ROS and Terraform workflows.</em>
|
|
@@ -29,21 +29,40 @@ License-File: LICENSE
|
|
|
29
29
|
<a href="https://pypi.org/project/iac-code"><img src="https://img.shields.io/pypi/v/iac-code?color=%2334D058&label=pypi%20package" alt="PyPI Package"></a>
|
|
30
30
|
<a href="https://pypi.org/project/iac-code"><img src="https://img.shields.io/pypi/pyversions/iac-code?color=%2334D058&label=python" alt="Python"></a>
|
|
31
31
|
</p>
|
|
32
|
+
|
|
33
|
+
> **Documentation**: [https://aliyun.github.io/iac-code/](https://aliyun.github.io/iac-code/)
|
|
34
|
+
|
|
32
35
|
<p align="center">
|
|
33
|
-
<
|
|
36
|
+
<a href="https://github.com/aliyun/iac-code/releases/latest"><img src="https://img.shields.io/badge/Download-IaC%20Code%20Desktop-5268f2?style=for-the-badge" alt="Download IaC Code Desktop"></a>
|
|
37
|
+
<br>
|
|
38
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-macos-arm64.dmg">macOS Apple Silicon</a> ·
|
|
39
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-windows-x64.exe">Windows x64</a> ·
|
|
40
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.AppImage">Linux AppImage</a> ·
|
|
41
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.deb">Linux deb</a> ·
|
|
42
|
+
<a href="https://github.com/aliyun/iac-code/releases/latest">All release files</a>
|
|
34
43
|
</p>
|
|
35
44
|
|
|
36
|
-
|
|
45
|
+
## Desktop App
|
|
46
|
+
|
|
47
|
+
No Python, pip, or terminal setup required — download the native app and start building cloud infrastructure right away. Get the package for your platform from the [latest GitHub Release](https://github.com/aliyun/iac-code/releases/latest):
|
|
48
|
+
|
|
49
|
+
- macOS Apple Silicon: `.dmg`
|
|
50
|
+
- Windows x64: setup `.exe`
|
|
51
|
+
- Linux x64: `.AppImage` or `.deb`
|
|
52
|
+
|
|
53
|
+
The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
|
|
37
54
|
|
|
38
55
|
<p align="center">
|
|
39
|
-
<img src="website/static/img/
|
|
56
|
+
<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/screenshots/iac-code-desktop-en.jpg" alt="IaC Code Desktop app" width="100%">
|
|
40
57
|
</p>
|
|
41
58
|
|
|
59
|
+
macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Stable macOS packages are signed with Apple Developer ID and notarized by Apple; stable Windows packages carry an Authenticode publisher signature. Always download from the official release page and verify the accompanying `SHA256SUMS`. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
|
|
60
|
+
|
|
42
61
|
## Installation
|
|
43
62
|
|
|
44
|
-
|
|
63
|
+
The CLI and Web app below run on Python 3.10 or later, on macOS, Linux, and Windows. If you only use the Desktop app, you can skip this section.
|
|
45
64
|
|
|
46
|
-
> **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable.
|
|
65
|
+
> **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable. If it is not installed yet, run `iac-code install-git-bash` to install Git for Windows automatically (downloaded via the npmmirror mirror).
|
|
47
66
|
|
|
48
67
|
```bash
|
|
49
68
|
pip install iac-code
|
|
@@ -61,6 +80,10 @@ Run directly to enter the interactive REPL:
|
|
|
61
80
|
iac-code
|
|
62
81
|
```
|
|
63
82
|
|
|
83
|
+
<p align="center">
|
|
84
|
+
<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
|
|
85
|
+
</p>
|
|
86
|
+
|
|
64
87
|
### Non-Interactive Mode
|
|
65
88
|
|
|
66
89
|
Pass a one-shot prompt via `--prompt`:
|
|
@@ -86,17 +109,9 @@ iac-code web
|
|
|
86
109
|
|
|
87
110
|
By default it opens `http://127.0.0.1:8766` in your browser (loopback only). See the [Web App guide](https://aliyun.github.io/iac-code/web-app) for details.
|
|
88
111
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- macOS Apple Silicon: `.dmg`
|
|
94
|
-
- Windows x64: setup `.exe`
|
|
95
|
-
- Linux x64: `.AppImage` or `.deb`
|
|
96
|
-
|
|
97
|
-
The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
|
|
98
|
-
|
|
99
|
-
macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Release installers do not yet carry commercial publisher signatures, so macOS or Windows may display an unknown-developer warning; verify the accompanying `SHA256SUMS` before installation. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
|
|
112
|
+
<p align="center">
|
|
113
|
+
<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/screenshots/iac-code-web-en.jpg" alt="IaC Code Web app" width="100%">
|
|
114
|
+
</p>
|
|
100
115
|
|
|
101
116
|
## Contributing
|
|
102
117
|
|
|
@@ -116,4 +131,4 @@ See the [Contributing Guide](https://aliyun.github.io/iac-code/getting-started/c
|
|
|
116
131
|
|
|
117
132
|
| [DingTalk](https://qr.dingtalk.com/action/joingroup?code=v1,k1,ubm/77U7qRh/STFZUNBP26X4PNg2z6+uhiPcLGtDNfU=&_dt_no_comment=1&origin=11) | [Discord](https://discord.gg/qECFuFBwF) |
|
|
118
133
|
| :----------------------------------------------------------: | :----------------------------------------------------------: |
|
|
119
|
-
| [<img src="website/static/img/qrcode-dingtalk.jpg" width="120" height="120" alt="DingTalk">](https://qr.dingtalk.com/action/joingroup?code=v1,k1,ubm/77U7qRh/STFZUNBP26X4PNg2z6+uhiPcLGtDNfU=&_dt_no_comment=1&origin=11) | [<img src="website/static/img/qrcode-discord.jpg" width="120" height="120" alt="Discord">](https://discord.gg/qECFuFBwF) |
|
|
134
|
+
| [<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/qrcode-dingtalk.jpg" width="120" height="120" alt="DingTalk">](https://qr.dingtalk.com/action/joingroup?code=v1,k1,ubm/77U7qRh/STFZUNBP26X4PNg2z6+uhiPcLGtDNfU=&_dt_no_comment=1&origin=11) | [<img src="https://raw.githubusercontent.com/aliyun/iac-code/main/website/static/img/qrcode-discord.jpg" width="120" height="120" alt="Discord">](https://discord.gg/qECFuFBwF) |
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: iac-code
|
|
3
|
-
Version: 0.12.1
|
|
4
|
-
Summary: Your AI-powered Infrastructure as Code assistant
|
|
5
|
-
Classifier: Programming Language :: Python :: 3
|
|
6
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
7
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
8
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
11
|
-
Requires-Python: >=3.10
|
|
12
|
-
Description-Content-Type: text/markdown
|
|
13
|
-
Provides-Extra: a2a
|
|
14
|
-
Provides-Extra: a2a-grpc
|
|
15
|
-
Provides-Extra: a2a-redis
|
|
16
|
-
Provides-Extra: a2a-signing
|
|
17
|
-
Provides-Extra: diagram
|
|
18
|
-
Provides-Extra: http
|
|
19
|
-
License-File: LICENSE
|
|
20
|
-
|
|
21
1
|
<p align="center">
|
|
22
2
|
<img src="website/static/img/logo-with-front.png" alt="iac-code" width="200">
|
|
23
3
|
</p>
|
|
@@ -36,14 +16,36 @@ License-File: LICENSE
|
|
|
36
16
|
> **Documentation**: [https://aliyun.github.io/iac-code/](https://aliyun.github.io/iac-code/)
|
|
37
17
|
|
|
38
18
|
<p align="center">
|
|
39
|
-
<
|
|
19
|
+
<a href="https://github.com/aliyun/iac-code/releases/latest"><img src="https://img.shields.io/badge/Download-IaC%20Code%20Desktop-5268f2?style=for-the-badge" alt="Download IaC Code Desktop"></a>
|
|
20
|
+
<br>
|
|
21
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-macos-arm64.dmg">macOS Apple Silicon</a> ·
|
|
22
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-windows-x64.exe">Windows x64</a> ·
|
|
23
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.AppImage">Linux AppImage</a> ·
|
|
24
|
+
<a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.deb">Linux deb</a> ·
|
|
25
|
+
<a href="https://github.com/aliyun/iac-code/releases/latest">All release files</a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
## Desktop App
|
|
29
|
+
|
|
30
|
+
No Python, pip, or terminal setup required — download the native app and start building cloud infrastructure right away. Get the package for your platform from the [latest GitHub Release](https://github.com/aliyun/iac-code/releases/latest):
|
|
31
|
+
|
|
32
|
+
- macOS Apple Silicon: `.dmg`
|
|
33
|
+
- Windows x64: setup `.exe`
|
|
34
|
+
- Linux x64: `.AppImage` or `.deb`
|
|
35
|
+
|
|
36
|
+
The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
<img src="website/static/img/screenshots/iac-code-desktop-en.jpg" alt="IaC Code Desktop app" width="100%">
|
|
40
40
|
</p>
|
|
41
41
|
|
|
42
|
+
macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Stable macOS packages are signed with Apple Developer ID and notarized by Apple; stable Windows packages carry an Authenticode publisher signature. Always download from the official release page and verify the accompanying `SHA256SUMS`. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
|
|
43
|
+
|
|
42
44
|
## Installation
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
The CLI and Web app below run on Python 3.10 or later, on macOS, Linux, and Windows. If you only use the Desktop app, you can skip this section.
|
|
45
47
|
|
|
46
|
-
> **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable.
|
|
48
|
+
> **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable. If it is not installed yet, run `iac-code install-git-bash` to install Git for Windows automatically (downloaded via the npmmirror mirror).
|
|
47
49
|
|
|
48
50
|
```bash
|
|
49
51
|
pip install iac-code
|
|
@@ -61,6 +63,10 @@ Run directly to enter the interactive REPL:
|
|
|
61
63
|
iac-code
|
|
62
64
|
```
|
|
63
65
|
|
|
66
|
+
<p align="center">
|
|
67
|
+
<img src="website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
|
|
68
|
+
</p>
|
|
69
|
+
|
|
64
70
|
### Non-Interactive Mode
|
|
65
71
|
|
|
66
72
|
Pass a one-shot prompt via `--prompt`:
|
|
@@ -86,17 +92,9 @@ iac-code web
|
|
|
86
92
|
|
|
87
93
|
By default it opens `http://127.0.0.1:8766` in your browser (loopback only). See the [Web App guide](https://aliyun.github.io/iac-code/web-app) for details.
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- macOS Apple Silicon: `.dmg`
|
|
94
|
-
- Windows x64: setup `.exe`
|
|
95
|
-
- Linux x64: `.AppImage` or `.deb`
|
|
96
|
-
|
|
97
|
-
The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
|
|
98
|
-
|
|
99
|
-
macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Release installers do not yet carry commercial publisher signatures, so macOS or Windows may display an unknown-developer warning; verify the accompanying `SHA256SUMS` before installation. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
|
|
95
|
+
<p align="center">
|
|
96
|
+
<img src="website/static/img/screenshots/iac-code-web-en.jpg" alt="IaC Code Web app" width="100%">
|
|
97
|
+
</p>
|
|
100
98
|
|
|
101
99
|
## Contributing
|
|
102
100
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "iac_code"
|
|
3
|
-
dynamic = ["version"]
|
|
3
|
+
dynamic = ["version", "readme"]
|
|
4
4
|
description = "Your AI-powered Infrastructure as Code assistant"
|
|
5
|
-
readme = "README.md"
|
|
6
5
|
requires-python = ">=3.10"
|
|
7
6
|
classifiers = [
|
|
8
7
|
"Programming Language :: Python :: 3",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Custom build hook to inject __release_date__ at build time."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
import platform
|
|
4
5
|
import re
|
|
5
6
|
import shutil
|
|
@@ -99,7 +100,19 @@ def _read_version():
|
|
|
99
100
|
|
|
100
101
|
def _read_long_description():
|
|
101
102
|
readme = Path("README.md")
|
|
102
|
-
|
|
103
|
+
if not readme.is_file():
|
|
104
|
+
return ""
|
|
105
|
+
text = readme.read_text(encoding="utf-8")
|
|
106
|
+
# PyPI renders the package description standalone, where the README's
|
|
107
|
+
# relative image paths have no repository base and show up broken.
|
|
108
|
+
# Rewrite them to absolute raw URLs at build time so the checked-in
|
|
109
|
+
# README keeps GitHub-friendly relative paths.
|
|
110
|
+
# The language switcher links point at in-repo translated READMEs, which
|
|
111
|
+
# cannot resolve on PyPI's standalone rendering; drop the line there.
|
|
112
|
+
text = re.sub(r'<p align="center">\s*<strong>Language</strong>.*?</p>\n?', "", text, flags=re.S)
|
|
113
|
+
ref = os.environ.get("IAC_CODE_README_IMG_REF", "main")
|
|
114
|
+
base = "https://raw.githubusercontent.com/aliyun/iac-code/{}/website/static/img/".format(ref)
|
|
115
|
+
return text.replace('src="website/static/img/', 'src="{}'.format(base))
|
|
103
116
|
|
|
104
117
|
|
|
105
118
|
def _try_import_babel():
|
|
@@ -7,7 +7,9 @@ import hashlib
|
|
|
7
7
|
import hmac
|
|
8
8
|
import json
|
|
9
9
|
import logging
|
|
10
|
+
import math
|
|
10
11
|
import os
|
|
12
|
+
import signal
|
|
11
13
|
from contextlib import asynccontextmanager, suppress
|
|
12
14
|
from email.utils import formatdate
|
|
13
15
|
from pathlib import Path
|
|
@@ -25,6 +27,7 @@ from starlette.requests import Request
|
|
|
25
27
|
from starlette.responses import JSONResponse, Response
|
|
26
28
|
from starlette.routing import BaseRoute, Route
|
|
27
29
|
|
|
30
|
+
from iac_code import __version__
|
|
28
31
|
from iac_code.a2a.agent_card import agent_card_to_client_dict
|
|
29
32
|
from iac_code.a2a.jsonrpc_passthrough import (
|
|
30
33
|
install_jsonrpc_error_data_passthrough,
|
|
@@ -37,6 +40,8 @@ from iac_code.a2a.projection import (
|
|
|
37
40
|
resolve_a2a_public_path_roots_for_data,
|
|
38
41
|
)
|
|
39
42
|
from iac_code.i18n import _
|
|
43
|
+
from iac_code.pipeline.config import get_run_mode
|
|
44
|
+
from iac_code.services.configuration_readiness import configuration_readiness
|
|
40
45
|
|
|
41
46
|
logger = logging.getLogger(__name__)
|
|
42
47
|
_V03_JSONRPC_METHODS = frozenset(
|
|
@@ -69,6 +74,58 @@ class _PrincipalUser(User):
|
|
|
69
74
|
return self._principal
|
|
70
75
|
|
|
71
76
|
|
|
77
|
+
class _A2AIdleShutdownController:
|
|
78
|
+
def __init__(self, timeout_seconds: float, callback: Callable[[], None]) -> None:
|
|
79
|
+
self._timeout_seconds = timeout_seconds
|
|
80
|
+
self._callback = callback
|
|
81
|
+
self._inflight_requests = 0
|
|
82
|
+
self._last_activity = 0.0
|
|
83
|
+
|
|
84
|
+
def touch(self) -> None:
|
|
85
|
+
self._last_activity = asyncio.get_running_loop().time()
|
|
86
|
+
|
|
87
|
+
def request_started(self) -> None:
|
|
88
|
+
self._inflight_requests += 1
|
|
89
|
+
self.touch()
|
|
90
|
+
|
|
91
|
+
def request_finished(self) -> None:
|
|
92
|
+
self._inflight_requests = max(0, self._inflight_requests - 1)
|
|
93
|
+
self.touch()
|
|
94
|
+
|
|
95
|
+
async def monitor(self, task_store: Any) -> None:
|
|
96
|
+
interval = min(1.0, max(0.05, self._timeout_seconds / 10))
|
|
97
|
+
while True:
|
|
98
|
+
await asyncio.sleep(interval)
|
|
99
|
+
if self._inflight_requests:
|
|
100
|
+
continue
|
|
101
|
+
now = asyncio.get_running_loop().time()
|
|
102
|
+
if now - self._last_activity < self._timeout_seconds:
|
|
103
|
+
continue
|
|
104
|
+
if await task_store.has_active_work():
|
|
105
|
+
self._last_activity = asyncio.get_running_loop().time()
|
|
106
|
+
continue
|
|
107
|
+
if self._inflight_requests:
|
|
108
|
+
continue
|
|
109
|
+
self._callback()
|
|
110
|
+
return
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class _A2AIdleActivityMiddleware:
|
|
114
|
+
def __init__(self, app: Any, *, controller: _A2AIdleShutdownController) -> None:
|
|
115
|
+
self._app = app
|
|
116
|
+
self._controller = controller
|
|
117
|
+
|
|
118
|
+
async def __call__(self, scope: dict[str, Any], receive: Any, send: Any) -> None:
|
|
119
|
+
if scope["type"] != "http":
|
|
120
|
+
await self._app(scope, receive, send)
|
|
121
|
+
return
|
|
122
|
+
self._controller.request_started()
|
|
123
|
+
try:
|
|
124
|
+
await self._app(scope, receive, send)
|
|
125
|
+
finally:
|
|
126
|
+
self._controller.request_finished()
|
|
127
|
+
|
|
128
|
+
|
|
72
129
|
def resolve_token(cli_token: str | None) -> str | None:
|
|
73
130
|
return cli_token or os.environ.get("IACCODE_A2A_HTTP_TOKEN")
|
|
74
131
|
|
|
@@ -161,7 +218,7 @@ class A2AProjectionMiddleware(BaseHTTPMiddleware):
|
|
|
161
218
|
request_data = await _a2a_request_data(request)
|
|
162
219
|
response = await call_next(request)
|
|
163
220
|
request_data = _with_a2a_path_parameters(request, request_data)
|
|
164
|
-
if request.url.path in {"/health", AGENT_CARD_WELL_KNOWN_PATH}:
|
|
221
|
+
if request.url.path in {"/health", "/iac-code/readiness", AGENT_CARD_WELL_KNOWN_PATH}:
|
|
165
222
|
return response
|
|
166
223
|
|
|
167
224
|
content_type = response.headers.get("content-type", "").lower()
|
|
@@ -291,7 +348,7 @@ def _take_sse_frame(data: bytes) -> tuple[bytes, bytes | None, bytes]:
|
|
|
291
348
|
|
|
292
349
|
|
|
293
350
|
async def health(request: Request) -> JSONResponse:
|
|
294
|
-
return JSONResponse({"status": "healthy"})
|
|
351
|
+
return JSONResponse({"status": "healthy", "version": __version__, "mode": get_run_mode().value})
|
|
295
352
|
|
|
296
353
|
|
|
297
354
|
async def normalize_v03_jsonrpc_version(request: Request) -> None:
|
|
@@ -336,6 +393,8 @@ def create_app(
|
|
|
336
393
|
agent_extensions: object | None = None,
|
|
337
394
|
auto_approve_permissions: bool = False,
|
|
338
395
|
thinking_exposure: object | None = None,
|
|
396
|
+
idle_shutdown_seconds: float = 0,
|
|
397
|
+
idle_shutdown_callback: Callable[[], None] | None = None,
|
|
339
398
|
) -> Starlette:
|
|
340
399
|
from iac_code.a2a.transports.dispatcher import create_runtime_components
|
|
341
400
|
|
|
@@ -368,15 +427,31 @@ def create_app(
|
|
|
368
427
|
)
|
|
369
428
|
from iac_code.a2a.pipeline_recovery import A2APipelineRecoveryService
|
|
370
429
|
|
|
430
|
+
idle_controller: _A2AIdleShutdownController | None = None
|
|
431
|
+
if idle_shutdown_seconds > 0:
|
|
432
|
+
idle_controller = _A2AIdleShutdownController(
|
|
433
|
+
idle_shutdown_seconds,
|
|
434
|
+
idle_shutdown_callback or (lambda: os.kill(os.getpid(), signal.SIGTERM)),
|
|
435
|
+
)
|
|
436
|
+
|
|
371
437
|
@asynccontextmanager
|
|
372
438
|
async def lifespan(app: Starlette):
|
|
373
|
-
await components.task_store.start_cleanup_loop()
|
|
374
439
|
push_worker_task: asyncio.Task[None] | None = None
|
|
375
|
-
|
|
376
|
-
|
|
440
|
+
idle_shutdown_task: asyncio.Task[None] | None = None
|
|
441
|
+
components.start_background_services()
|
|
377
442
|
try:
|
|
443
|
+
await components.task_store.start_cleanup_loop()
|
|
444
|
+
if components.push_worker is not None:
|
|
445
|
+
push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
|
|
446
|
+
if idle_controller is not None:
|
|
447
|
+
idle_controller.touch()
|
|
448
|
+
idle_shutdown_task = asyncio.create_task(idle_controller.monitor(components.task_store))
|
|
378
449
|
yield
|
|
379
450
|
finally:
|
|
451
|
+
if idle_shutdown_task is not None:
|
|
452
|
+
idle_shutdown_task.cancel()
|
|
453
|
+
with suppress(asyncio.CancelledError):
|
|
454
|
+
await idle_shutdown_task
|
|
380
455
|
if push_worker_task is not None:
|
|
381
456
|
push_worker_task.cancel()
|
|
382
457
|
with suppress(asyncio.CancelledError):
|
|
@@ -397,6 +472,9 @@ def create_app(
|
|
|
397
472
|
return Response(status_code=304, headers=card_cache_headers)
|
|
398
473
|
return JSONResponse(card_data, headers=card_cache_headers)
|
|
399
474
|
|
|
475
|
+
async def get_readiness(request: Request) -> JSONResponse:
|
|
476
|
+
return JSONResponse(configuration_readiness(model=model))
|
|
477
|
+
|
|
400
478
|
recovery_service = A2APipelineRecoveryService(task_store=components.task_store)
|
|
401
479
|
|
|
402
480
|
async def recovery_path_roots(*, context_id: str | None, task_id: str | None) -> list[dict[str, str]]:
|
|
@@ -442,6 +520,7 @@ def create_app(
|
|
|
442
520
|
routes: list[BaseRoute] = [
|
|
443
521
|
Route("/health", health, methods=["GET"]),
|
|
444
522
|
Route(AGENT_CARD_WELL_KNOWN_PATH, get_agent_card, methods=["GET"]),
|
|
523
|
+
Route("/iac-code/readiness", get_readiness, methods=["GET"]),
|
|
445
524
|
Route("/iac-code/pipeline/state", get_pipeline_state, methods=["GET"]),
|
|
446
525
|
]
|
|
447
526
|
install_jsonrpc_error_data_passthrough()
|
|
@@ -464,6 +543,8 @@ def create_app(
|
|
|
464
543
|
api_key=api_key,
|
|
465
544
|
api_key_header=api_key_header,
|
|
466
545
|
)
|
|
546
|
+
if idle_controller is not None:
|
|
547
|
+
app.add_middleware(_A2AIdleActivityMiddleware, controller=idle_controller)
|
|
467
548
|
return app
|
|
468
549
|
|
|
469
550
|
|
|
@@ -527,10 +608,20 @@ def run_server(
|
|
|
527
608
|
push_lease_timeout_ms: int = 300_000,
|
|
528
609
|
auto_approve_permissions: bool = False,
|
|
529
610
|
thinking_exposure: object | None = None,
|
|
611
|
+
idle_shutdown_seconds: float = 0,
|
|
530
612
|
) -> None:
|
|
531
613
|
from iac_code.a2a.transports.base import normalize_transport_name, validate_transport_for_platform
|
|
532
614
|
|
|
533
615
|
normalized_transport = normalize_transport_name(transport)
|
|
616
|
+
if isinstance(idle_shutdown_seconds, bool) or not isinstance(idle_shutdown_seconds, (int, float)):
|
|
617
|
+
raise ValueError("idle_shutdown_seconds must be a non-negative number.")
|
|
618
|
+
idle_shutdown_seconds = float(idle_shutdown_seconds)
|
|
619
|
+
if not math.isfinite(idle_shutdown_seconds):
|
|
620
|
+
raise ValueError("idle_shutdown_seconds must be a non-negative number.")
|
|
621
|
+
if idle_shutdown_seconds < 0:
|
|
622
|
+
raise ValueError("idle_shutdown_seconds must be a non-negative number.")
|
|
623
|
+
if idle_shutdown_seconds > 0 and normalized_transport != "http":
|
|
624
|
+
raise RuntimeError("idle_shutdown_seconds is only supported with the HTTP transport.")
|
|
534
625
|
if persistence_dir is None:
|
|
535
626
|
from iac_code.config import get_config_dir
|
|
536
627
|
|
|
@@ -655,6 +746,13 @@ def run_server(
|
|
|
655
746
|
)
|
|
656
747
|
return
|
|
657
748
|
|
|
749
|
+
idle_server_holder: dict[str, Any] = {}
|
|
750
|
+
|
|
751
|
+
def request_idle_shutdown() -> None:
|
|
752
|
+
server = idle_server_holder.get("server")
|
|
753
|
+
if server is not None:
|
|
754
|
+
server.should_exit = True
|
|
755
|
+
|
|
658
756
|
if normalized_transport == "websocket":
|
|
659
757
|
from iac_code.a2a.transports.websocket import WebSocketA2AServerApp
|
|
660
758
|
|
|
@@ -686,6 +784,8 @@ def run_server(
|
|
|
686
784
|
supported_interfaces=supported_interfaces,
|
|
687
785
|
auto_approve_permissions=auto_approve_permissions,
|
|
688
786
|
thinking_exposure=thinking_exposure,
|
|
787
|
+
idle_shutdown_seconds=idle_shutdown_seconds,
|
|
788
|
+
idle_shutdown_callback=request_idle_shutdown,
|
|
689
789
|
)
|
|
690
790
|
|
|
691
791
|
try:
|
|
@@ -693,20 +793,28 @@ def run_server(
|
|
|
693
793
|
except ImportError as exc:
|
|
694
794
|
raise RuntimeError("A2A server dependencies are missing. Install with: pip install 'iac-code[a2a]'") from exc
|
|
695
795
|
|
|
696
|
-
|
|
697
|
-
app,
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
796
|
+
if idle_shutdown_seconds > 0:
|
|
797
|
+
server = uvicorn.Server(uvicorn.Config(app, host=host, port=port))
|
|
798
|
+
idle_server_holder["server"] = server
|
|
799
|
+
server.run()
|
|
800
|
+
else:
|
|
801
|
+
uvicorn.run(
|
|
802
|
+
app,
|
|
803
|
+
host=host,
|
|
804
|
+
port=port,
|
|
805
|
+
)
|
|
701
806
|
|
|
702
807
|
|
|
703
808
|
async def _serve_async_transport(server, *, components) -> None:
|
|
704
|
-
await components.task_store.start_cleanup_loop()
|
|
705
809
|
push_worker_task: asyncio.Task[None] | None = None
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
810
|
+
start_background_services = getattr(components, "start_background_services", None)
|
|
811
|
+
if start_background_services is not None:
|
|
812
|
+
start_background_services()
|
|
709
813
|
try:
|
|
814
|
+
await components.task_store.start_cleanup_loop()
|
|
815
|
+
if components.push_worker is not None:
|
|
816
|
+
push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
|
|
817
|
+
await asyncio.sleep(0)
|
|
710
818
|
await server.serve()
|
|
711
819
|
finally:
|
|
712
820
|
if push_worker_task is not None:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
3
4
|
import copy
|
|
4
5
|
import inspect
|
|
5
6
|
import logging
|
|
@@ -162,7 +163,7 @@ def _extract_artifact_metadata(result: Any, artifact_store: Any | None) -> dict[
|
|
|
162
163
|
if not path.is_file():
|
|
163
164
|
return None
|
|
164
165
|
metadata = artifact_store.save_bytes(filename=filename, content=path.read_bytes(), media_type=str(media_type))
|
|
165
|
-
return metadata.to_dict()
|
|
166
|
+
return {**metadata.to_dict(), "sourcePath": str(path.resolve())}
|
|
166
167
|
raw_bytes = raw.get("raw")
|
|
167
168
|
if isinstance(raw_bytes, bytes):
|
|
168
169
|
metadata = artifact_store.save_bytes(filename=filename, content=raw_bytes, media_type=str(media_type))
|
|
@@ -219,6 +220,9 @@ def _artifact_update_event(*, task_id: str, context_id: str, metadata: dict[str,
|
|
|
219
220
|
"byteSize": metadata["byteSize"],
|
|
220
221
|
"sha256": metadata["sha256"],
|
|
221
222
|
}
|
|
223
|
+
source_path = metadata.get("sourcePath")
|
|
224
|
+
if isinstance(source_path, str) and source_path:
|
|
225
|
+
artifact_metadata["sourcePath"] = source_path
|
|
222
226
|
artifact = Artifact(
|
|
223
227
|
artifact_id=str(metadata["artifactId"]),
|
|
224
228
|
name=str(metadata["filename"]),
|
|
@@ -280,6 +284,7 @@ async def publish_stream_event(
|
|
|
280
284
|
event: Any,
|
|
281
285
|
artifact_store: Any | None = None,
|
|
282
286
|
permission_resolver: A2APermissionResolver | None = None,
|
|
287
|
+
permission_input_registry: Any | None = None,
|
|
283
288
|
auto_approve_permissions: bool = False,
|
|
284
289
|
exposure_types: Any = None,
|
|
285
290
|
iac_code_session_id: str | None = None,
|
|
@@ -372,6 +377,8 @@ async def publish_stream_event(
|
|
|
372
377
|
|
|
373
378
|
if isinstance(event, ToolResultEvent):
|
|
374
379
|
artifact_metadata = _extract_artifact_metadata(event.result, artifact_store)
|
|
380
|
+
if artifact_metadata is None:
|
|
381
|
+
artifact_metadata = _extract_artifact_metadata(event.metadata, artifact_store)
|
|
375
382
|
if A2AExposureType.TOOL_TRACE not in enabled_exposure_types:
|
|
376
383
|
if artifact_metadata is not None:
|
|
377
384
|
await event_queue.enqueue_event(
|
|
@@ -429,6 +436,58 @@ async def publish_stream_event(
|
|
|
429
436
|
|
|
430
437
|
permission_event = _permission_request_event(event)
|
|
431
438
|
if permission_event is not None:
|
|
439
|
+
if permission_input_registry is not None and permission_resolver is None and not auto_approve_permissions:
|
|
440
|
+
pending = await permission_input_registry.register(
|
|
441
|
+
permission_event,
|
|
442
|
+
task_id=task_id,
|
|
443
|
+
context_id=context_id,
|
|
444
|
+
)
|
|
445
|
+
try:
|
|
446
|
+
await _enqueue_status(
|
|
447
|
+
event_queue,
|
|
448
|
+
task_id=task_id,
|
|
449
|
+
context_id=context_id,
|
|
450
|
+
state=TaskState.TASK_STATE_INPUT_REQUIRED,
|
|
451
|
+
metadata={
|
|
452
|
+
"iac_code": {
|
|
453
|
+
"input": pending.envelope(),
|
|
454
|
+
"permission": {
|
|
455
|
+
"autoApproved": False,
|
|
456
|
+
"pending": True,
|
|
457
|
+
"toolName": permission_event.tool_name,
|
|
458
|
+
"toolUseId": permission_event.tool_use_id,
|
|
459
|
+
},
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
iac_code_session_id=iac_code_session_id,
|
|
463
|
+
)
|
|
464
|
+
future = permission_event.response_future
|
|
465
|
+
if future is None:
|
|
466
|
+
await permission_input_registry.fail(pending)
|
|
467
|
+
return None
|
|
468
|
+
await asyncio.shield(future)
|
|
469
|
+
await _enqueue_status(
|
|
470
|
+
event_queue,
|
|
471
|
+
task_id=task_id,
|
|
472
|
+
context_id=context_id,
|
|
473
|
+
state=TaskState.TASK_STATE_WORKING,
|
|
474
|
+
metadata={
|
|
475
|
+
"iac_code": {
|
|
476
|
+
"inputReceived": {
|
|
477
|
+
"kind": "permission",
|
|
478
|
+
"inputId": pending.input_id,
|
|
479
|
+
"toolUseId": permission_event.tool_use_id,
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
iac_code_session_id=iac_code_session_id,
|
|
484
|
+
)
|
|
485
|
+
except BaseException:
|
|
486
|
+
await permission_input_registry.fail(pending)
|
|
487
|
+
raise
|
|
488
|
+
finally:
|
|
489
|
+
await permission_input_registry.complete(pending)
|
|
490
|
+
return None
|
|
432
491
|
approved = auto_approve_permissions
|
|
433
492
|
if permission_resolver is not None:
|
|
434
493
|
decision = permission_resolver(permission_event)
|