iac-code 0.11.2__tar.gz → 0.11.4__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.11.2 → iac_code-0.11.4}/PKG-INFO +1 -1
- iac_code-0.11.4/src/iac_code/__init__.py +2 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/executor.py +1 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_events.py +6 -2
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_executor.py +66 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_stream.py +13 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/task_store.py +20 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/dispatcher.py +5 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/server.py +1 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_loop.py +2 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/headless.py +1 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/main.py +16 -2
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_mode.py +2 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/config.py +2 -21
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +29 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +125 -4
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +27 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +126 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +27 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +126 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +27 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +106 -4
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +29 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +125 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +27 -2
- iac_code-0.11.4/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +106 -4
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/completion_guard_state.py +27 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/pipeline_runner.py +17 -46
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/recovery.py +1 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_executor.py +13 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/pipeline.yaml +1 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +1 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/references/solutions/iac-code-web.md +31 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/references/solutions/iac-code-web.ros.yml +314 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +3 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.md +31 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.ros.yml +314 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +1 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.md +31 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.ros.yml +314 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +4 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.md +31 -0
- iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.ros.yml +314 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +3 -4
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/manager.py +77 -6
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/agent_factory.py +51 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun_oauth.py +69 -10
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_backup.py +135 -29
- iac_code-0.11.4/src/iac_code/services/session_logging.py +279 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/config.py +53 -9
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/identity.py +9 -2
- iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +31 -0
- iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +314 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack.py +15 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_stack.py +67 -6
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/types.py +1 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/stream_events.py +26 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/renderer.py +15 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/repl.py +87 -6
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/log.py +19 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/app.py +66 -3
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/events.py +20 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/outputs.py +31 -8
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/runtime.py +1 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/server.py +43 -5
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/session_manager.py +68 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/settings.py +143 -19
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/index.html +2 -2
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/api.js +159 -11
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/app.js +116 -14
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/composer.js +12 -3
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/output_panel.js +114 -7
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/workspace.js +119 -15
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/events.js +14 -0
- iac_code-0.11.4/src/iac_code/web/static/js/token_transport.js +441 -0
- iac_code-0.11.4/src/iac_code/web/static/js/vendor/token-crypto.js +302 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/styles.css +100 -3
- iac_code-0.11.4/src/iac_code/web/token_transport.py +594 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/PKG-INFO +1 -1
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/SOURCES.txt +15 -1
- iac_code-0.11.2/src/iac_code/__init__.py +0 -2
- iac_code-0.11.2/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.2/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.2/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.2/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.2/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.2/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/LICENSE +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/MANIFEST.in +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/README.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/pyproject.toml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/setup.cfg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/setup.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/agent_card.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/app.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/artifacts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/backup.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/client.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/events.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/exposure.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/metadata_redaction.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/metrics.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/parts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/persistence.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_journal.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_outbound.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_paths.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_performance.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_recovery.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_snapshot.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/projection.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_queue.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_secrets.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_worker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/router.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/runtime_overrides.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/runtime_registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/signing.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/thinking_metadata.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transport.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/base.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/http.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/redis_streams.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/stdio.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/unix.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/websocket.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/convert.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/http_sse.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/mcp.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/metrics.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/runner.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/session.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/slash_registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/state.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/version.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/message.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/system_prompt.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/install_git_bash.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/output_formats.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_events.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_protocol.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/update.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/auth.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/clear.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/compact.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/debug.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/effort.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/exit.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/help.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/mcp.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/memory.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/model.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/prompt.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/rename.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/resume.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/skills.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/status.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/tasks.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/thinking_enabled.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/html_extractor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/cli.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/client.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/config.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/env_expansion.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/errors.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/manager.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/oauth.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/output.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/progress.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/prompt_dispatch.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/prompts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/redaction.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/skills.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/storage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/memory_manager.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/memory_tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/project_memory.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/recall.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/config.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/constants.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/display_names.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/cleanup.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/context.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/display_replay.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/events.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/handoff.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/interrupt.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/loader.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/observability.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/public_errors.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/session.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/state_machine.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_spec.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/user_input.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/anthropic_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/azure_openai_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/base.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/dashscope_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/deepseek_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/gemini_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/kimi_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/lmstudio_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/minimax_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/modelscope_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/ollama_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/openai_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/openrouter_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/request_logging.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/request_policy.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/retry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/siliconflow_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/stream_watchdog.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/thinking.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/volcengine_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/zhipu_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/auto_detect.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/multimodal.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/cloud_credentials.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/context_manager.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/audit.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/loader.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/pipeline.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/rule_scope.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/storage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/trusted_roots.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/qwenpaw_source.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_backup_state.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_index.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_layout.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_metadata.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_resolver.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_storage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_usage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/attributes.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/client.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/constants.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/content_serializer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/events.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/fallback.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/metrics.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/names.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/sanitize.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/scope.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/sink.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/tracing.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/token_budget.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/token_counter.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/update_checker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/auto_trigger.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/simplify.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/discovery.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/frontmatter.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/listing.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/loader.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/management.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/processor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/renderer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/settings.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/skill_definition.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/skill_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/state/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/state/app_state.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/notification_queue.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/task_state.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/task_tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/base.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/argv_safety.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/bash_tool.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/command_parser.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/mode_validation.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/path_validation.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/permissions.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/readonly_commands.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/rule_matching.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/safety_checks.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/public_errors.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/result_contract.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_association_property_specs.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/runtime.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_api.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/registry.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/edit_file.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/glob.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/grep.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/list_files.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/path_safety.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/read_file.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/result_storage.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/tool_executor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/web_fetch.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/write_file.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/permissions.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/skill_source.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/banner.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/candidate_selection.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/dialog.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/divider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/parallel_tabs.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/progress_bar.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/search_box.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/select.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/status_icon.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/tabs.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/in_place_render.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/input_history.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/key_event.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/prompt_input.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input_win.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/screen.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/diagram_rendering.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/global_search.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/history_search.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/model_picker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/quick_open.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/keybindings/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/keybindings/manager.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/pipeline_display_replay.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/pipeline_styles.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/spinner.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/stream_accumulator.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/aggregator.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/command_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/file_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/types.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/transcript_view.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/async_lifecycle.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/background_housekeeping.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/cleanup.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/console.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/file_security.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/clipboard.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/format_detect.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/pasted_content.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/processor.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/resizer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/store.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/json_utils.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/path_components.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/path_locks.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/platform.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/project_paths.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/public_errors.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/public_paths.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/signals.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/state_io.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/tool_input_parser.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/tool_result_redaction.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/windows_paths.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/__init__.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/cleanup.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/commands.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagram_cache.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagram_optimizer.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagrams.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/files.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/images.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/mcp_settings.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/memory.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/permissions.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_actions.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_prerequisites.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_transcript.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/security.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/session_titler.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/shell.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/skills.py +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/blocking.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/pipeline.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/tool_cards.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/i18n.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/mermaid_render.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/dependency_links.txt +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/entry_points.txt +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/requires.txt +0 -0
- {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/top_level.txt +0 -0
|
@@ -14,6 +14,7 @@ from iac_code.a2a.pipeline_journal import to_json_safe
|
|
|
14
14
|
from iac_code.mcp.progress import mcp_progress_metadata
|
|
15
15
|
from iac_code.pipeline.engine.events import PipelineEvent, PipelineEventType
|
|
16
16
|
from iac_code.services.permissions.audit import build_input_summary, build_redacted_tool_input, fingerprint_text
|
|
17
|
+
from iac_code.tools.cloud.base_stack import stack_result_from_metadata
|
|
17
18
|
from iac_code.types.stream_events import (
|
|
18
19
|
AskUserQuestionEvent,
|
|
19
20
|
CandidateDetailEvent,
|
|
@@ -900,7 +901,7 @@ class PipelineEventTranslator:
|
|
|
900
901
|
action = operation["action"]
|
|
901
902
|
params = operation["params"]
|
|
902
903
|
|
|
903
|
-
result = _json_object_from_string(event.result)
|
|
904
|
+
result = stack_result_from_metadata(event.metadata) or _json_object_from_string(event.result)
|
|
904
905
|
if result is None:
|
|
905
906
|
return None
|
|
906
907
|
is_success = _bool_or_none(result.get("is_success"))
|
|
@@ -1480,12 +1481,15 @@ def _safe_permission_field_name(key: Any) -> str:
|
|
|
1480
1481
|
|
|
1481
1482
|
|
|
1482
1483
|
def _tool_result_data(event: ToolResultEvent) -> dict[str, Any]:
|
|
1483
|
-
|
|
1484
|
+
data = {
|
|
1484
1485
|
"toolName": event.tool_name,
|
|
1485
1486
|
"toolUseId": event.tool_use_id,
|
|
1486
1487
|
"isError": event.is_error,
|
|
1487
1488
|
"result": to_json_safe(event.result),
|
|
1488
1489
|
}
|
|
1490
|
+
if stack_result := stack_result_from_metadata(event.metadata):
|
|
1491
|
+
data["stackResult"] = to_json_safe(stack_result)
|
|
1492
|
+
return data
|
|
1489
1493
|
|
|
1490
1494
|
|
|
1491
1495
|
def _sanitize_tool_input(tool_input: dict[str, Any]) -> dict[str, Any]:
|
|
@@ -320,6 +320,7 @@ class IacCodeA2APipelineExecutor:
|
|
|
320
320
|
provider_config_frozen=self._provider_config_frozen,
|
|
321
321
|
provider_config_override=self._provider_config_override,
|
|
322
322
|
effort_override=self._effort_override,
|
|
323
|
+
source="a2a-pipeline",
|
|
323
324
|
)
|
|
324
325
|
)
|
|
325
326
|
|
|
@@ -722,6 +723,7 @@ class IacCodeA2APipelineExecutor:
|
|
|
722
723
|
provider_config_frozen=self._provider_config_frozen,
|
|
723
724
|
provider_config_override=self._provider_config_override,
|
|
724
725
|
effort_override=self._effort_override,
|
|
726
|
+
source="a2a-pipeline",
|
|
725
727
|
)
|
|
726
728
|
),
|
|
727
729
|
)
|
|
@@ -1753,10 +1755,22 @@ class IacCodeA2APipelineExecutor:
|
|
|
1753
1755
|
ctx=ctx,
|
|
1754
1756
|
)
|
|
1755
1757
|
|
|
1758
|
+
async def after_enqueue(envelope: dict[str, Any]) -> None:
|
|
1759
|
+
await self._backup_after_pipeline_publication(
|
|
1760
|
+
envelope,
|
|
1761
|
+
publisher=publisher,
|
|
1762
|
+
pipeline=pipeline,
|
|
1763
|
+
cwd=cwd,
|
|
1764
|
+
session_id=session_id,
|
|
1765
|
+
task=task,
|
|
1766
|
+
ctx=ctx,
|
|
1767
|
+
)
|
|
1768
|
+
|
|
1756
1769
|
async def after_backup_commit(envelope: dict[str, Any]) -> None:
|
|
1757
1770
|
self._mirror_a2a_snapshots_for_pipeline_publication(envelope, task=task, ctx=ctx)
|
|
1758
1771
|
|
|
1759
1772
|
publisher.before_enqueue = before_enqueue
|
|
1773
|
+
publisher.after_enqueue = after_enqueue
|
|
1760
1774
|
publisher.after_backup_commit = after_backup_commit
|
|
1761
1775
|
|
|
1762
1776
|
async def _backup_before_pipeline_publication(
|
|
@@ -1773,11 +1787,63 @@ class IacCodeA2APipelineExecutor:
|
|
|
1773
1787
|
reason = _backup_reason_for_pipeline_envelope(envelope)
|
|
1774
1788
|
if reason is None:
|
|
1775
1789
|
return True
|
|
1790
|
+
if reason in {BackupReason.INPUT_REQUIRED, BackupReason.WAITING_INPUT}:
|
|
1791
|
+
return True
|
|
1776
1792
|
if reason in {BackupReason.TERMINAL, BackupReason.HANDOFF_READY}:
|
|
1777
1793
|
if _is_pending_backup_publication_event(envelope):
|
|
1778
1794
|
return True
|
|
1779
1795
|
else:
|
|
1780
1796
|
self._mirror_a2a_snapshots_for_pipeline_publication(envelope, task=task, ctx=ctx)
|
|
1797
|
+
await self._backup_pipeline_publication(
|
|
1798
|
+
envelope,
|
|
1799
|
+
publisher=publisher,
|
|
1800
|
+
pipeline=pipeline,
|
|
1801
|
+
cwd=cwd,
|
|
1802
|
+
session_id=session_id,
|
|
1803
|
+
task=task,
|
|
1804
|
+
ctx=ctx,
|
|
1805
|
+
reason=reason,
|
|
1806
|
+
)
|
|
1807
|
+
return True
|
|
1808
|
+
|
|
1809
|
+
async def _backup_after_pipeline_publication(
|
|
1810
|
+
self,
|
|
1811
|
+
envelope: dict[str, Any],
|
|
1812
|
+
*,
|
|
1813
|
+
publisher: PipelineA2AEventPublisher,
|
|
1814
|
+
pipeline: Any,
|
|
1815
|
+
cwd: str,
|
|
1816
|
+
session_id: str,
|
|
1817
|
+
task: Any,
|
|
1818
|
+
ctx: Any,
|
|
1819
|
+
) -> None:
|
|
1820
|
+
reason = _backup_reason_for_pipeline_envelope(envelope)
|
|
1821
|
+
if reason not in {BackupReason.INPUT_REQUIRED, BackupReason.WAITING_INPUT}:
|
|
1822
|
+
return
|
|
1823
|
+
self._mirror_a2a_snapshots_for_pipeline_publication(envelope, task=task, ctx=ctx)
|
|
1824
|
+
await self._backup_pipeline_publication(
|
|
1825
|
+
envelope,
|
|
1826
|
+
publisher=publisher,
|
|
1827
|
+
pipeline=pipeline,
|
|
1828
|
+
cwd=cwd,
|
|
1829
|
+
session_id=session_id,
|
|
1830
|
+
task=task,
|
|
1831
|
+
ctx=ctx,
|
|
1832
|
+
reason=reason,
|
|
1833
|
+
)
|
|
1834
|
+
|
|
1835
|
+
async def _backup_pipeline_publication(
|
|
1836
|
+
self,
|
|
1837
|
+
envelope: dict[str, Any],
|
|
1838
|
+
*,
|
|
1839
|
+
publisher: PipelineA2AEventPublisher,
|
|
1840
|
+
pipeline: Any,
|
|
1841
|
+
cwd: str,
|
|
1842
|
+
session_id: str,
|
|
1843
|
+
task: Any,
|
|
1844
|
+
ctx: Any,
|
|
1845
|
+
reason: BackupReason,
|
|
1846
|
+
) -> None:
|
|
1781
1847
|
publication_proofs = None
|
|
1782
1848
|
if reason == BackupReason.HANDOFF_READY and envelope.get("visibility") == "committed":
|
|
1783
1849
|
publication_proofs = {
|
|
@@ -1831,7 +1897,6 @@ class IacCodeA2APipelineExecutor:
|
|
|
1831
1897
|
self._task_store.mirror_task(task)
|
|
1832
1898
|
self._task_store.mirror_context(ctx)
|
|
1833
1899
|
raise _PipelineBackupBlockedTransitionError from exc
|
|
1834
|
-
return True
|
|
1835
1900
|
|
|
1836
1901
|
def _mirror_a2a_snapshots_for_pipeline_publication(
|
|
1837
1902
|
self,
|
|
@@ -50,6 +50,7 @@ from iac_code.utils.public_errors import sanitize_strict_text
|
|
|
50
50
|
|
|
51
51
|
PipelinePermissionResolver = Callable[[PermissionRequestEvent], bool | Awaitable[bool]]
|
|
52
52
|
PipelineBeforeEnqueueHook = Callable[[dict[str, Any]], bool | Awaitable[bool]]
|
|
53
|
+
PipelineAfterEnqueueHook = Callable[[dict[str, Any]], None | Awaitable[None]]
|
|
53
54
|
PipelineAfterBackupCommitHook = Callable[[dict[str, Any]], None | Awaitable[None]]
|
|
54
55
|
PipelineBackupCommitGate = Callable[[dict[str, Any]], bool]
|
|
55
56
|
logger = logging.getLogger(__name__)
|
|
@@ -147,6 +148,7 @@ class PipelineA2AEventPublisher:
|
|
|
147
148
|
delivery_task_id: str | None = None,
|
|
148
149
|
delivery_context_id: str | None = None,
|
|
149
150
|
before_enqueue: PipelineBeforeEnqueueHook | None = None,
|
|
151
|
+
after_enqueue: PipelineAfterEnqueueHook | None = None,
|
|
150
152
|
after_backup_commit: PipelineAfterBackupCommitHook | None = None,
|
|
151
153
|
backup_commit_gate: PipelineBackupCommitGate | None = None,
|
|
152
154
|
extreme_performance: bool | None = None,
|
|
@@ -161,6 +163,7 @@ class PipelineA2AEventPublisher:
|
|
|
161
163
|
self.delivery_task_id = delivery_task_id
|
|
162
164
|
self.delivery_context_id = delivery_context_id
|
|
163
165
|
self.before_enqueue = before_enqueue
|
|
166
|
+
self.after_enqueue = after_enqueue
|
|
164
167
|
self.after_backup_commit = after_backup_commit
|
|
165
168
|
self.backup_commit_gate = backup_commit_gate
|
|
166
169
|
self.flow_monitor = flow_monitor
|
|
@@ -715,6 +718,7 @@ class PipelineA2AEventPublisher:
|
|
|
715
718
|
await self._forward_local_pipeline_envelope(local_envelope)
|
|
716
719
|
await self._enqueue_status(envelope, wait_for_transport=wait_for_transport)
|
|
717
720
|
self.last_envelope = envelope
|
|
721
|
+
await self._run_after_enqueue_hook(envelope)
|
|
718
722
|
return True
|
|
719
723
|
|
|
720
724
|
async def _forward_local_pipeline_envelope(self, local_envelope: dict[str, Any]) -> None:
|
|
@@ -761,6 +765,8 @@ class PipelineA2AEventPublisher:
|
|
|
761
765
|
pending,
|
|
762
766
|
wait_for_transport=wait_for_transport,
|
|
763
767
|
)
|
|
768
|
+
for envelope in deliverable:
|
|
769
|
+
await self._run_after_enqueue_hook(envelope)
|
|
764
770
|
return frame_count
|
|
765
771
|
|
|
766
772
|
async def _enqueue_persisted_batches(
|
|
@@ -899,6 +905,13 @@ class PipelineA2AEventPublisher:
|
|
|
899
905
|
should_enqueue = await should_enqueue
|
|
900
906
|
return should_enqueue is not False
|
|
901
907
|
|
|
908
|
+
async def _run_after_enqueue_hook(self, envelope: dict[str, Any]) -> None:
|
|
909
|
+
if self.after_enqueue is None:
|
|
910
|
+
return
|
|
911
|
+
result = self.after_enqueue(envelope)
|
|
912
|
+
if inspect.isawaitable(result):
|
|
913
|
+
await result
|
|
914
|
+
|
|
902
915
|
async def _run_after_backup_commit_hook(self, envelope: dict[str, Any]) -> None:
|
|
903
916
|
if self.after_backup_commit is None:
|
|
904
917
|
return
|
|
@@ -57,6 +57,7 @@ class A2ATaskStore(TaskStore):
|
|
|
57
57
|
self._sdk_tasks: dict[str, dict[str, Task]] = {}
|
|
58
58
|
self._sdk_tasks_by_context: dict[str, dict[str, set[str]]] = {}
|
|
59
59
|
self._tasks: dict[str, A2ATaskRecord] = {}
|
|
60
|
+
self._task_persistence_dirty: set[str] = set()
|
|
60
61
|
self._contexts: dict[str, A2AContextRecord] = {}
|
|
61
62
|
self._expired_task_tombstones: dict[str, float] = {}
|
|
62
63
|
self._metrics = metrics or NoOpA2AMetrics()
|
|
@@ -99,22 +100,32 @@ class A2ATaskStore(TaskStore):
|
|
|
99
100
|
owner_tasks[task_id] = _copy_task(task)
|
|
100
101
|
self._sdk_tasks_by_context.setdefault(owner, {}).setdefault(task.context_id, set()).add(task_id)
|
|
101
102
|
record = self._tasks.get(task_id)
|
|
103
|
+
next_state = _task_state_from_sdk_task(task)
|
|
104
|
+
# The SDK saves the full Task before yielding every streaming frame. Executors already
|
|
105
|
+
# mirror task records explicitly at output/state durability boundaries, so repeated SDK
|
|
106
|
+
# saves with the same projected state only need the session-local mirror below.
|
|
107
|
+
persist_shared_snapshot = (
|
|
108
|
+
record is None
|
|
109
|
+
or task_id in self._task_persistence_dirty
|
|
110
|
+
or record.state != next_state
|
|
111
|
+
or record.owner != owner
|
|
112
|
+
)
|
|
102
113
|
if record is None:
|
|
103
114
|
record = A2ATaskRecord(
|
|
104
115
|
task_id=task_id,
|
|
105
116
|
context_id=task.context_id,
|
|
106
|
-
state=
|
|
117
|
+
state=next_state,
|
|
107
118
|
owner=owner,
|
|
108
119
|
updated_at=_task_updated_at_from_sdk_task(task),
|
|
109
120
|
)
|
|
110
121
|
self._tasks[task_id] = record
|
|
111
122
|
self._metrics.record_task_created()
|
|
112
123
|
else:
|
|
113
|
-
record.state =
|
|
124
|
+
record.state = next_state
|
|
114
125
|
record.owner = owner
|
|
115
126
|
record.updated_at = _task_updated_at_from_sdk_task(task)
|
|
116
127
|
record.touch()
|
|
117
|
-
self._mirror_task(record)
|
|
128
|
+
self._mirror_task(record, persist_shared_snapshot=persist_shared_snapshot)
|
|
118
129
|
|
|
119
130
|
def _attach_context_metadata(self, task: Task) -> None:
|
|
120
131
|
context = self._contexts.get(task.context_id)
|
|
@@ -135,6 +146,7 @@ class A2ATaskStore(TaskStore):
|
|
|
135
146
|
self._remove_sdk_task_from_index(owner, task_id, existing.context_id)
|
|
136
147
|
owner_tasks.pop(task_id, None)
|
|
137
148
|
self._tasks.pop(task_id, None)
|
|
149
|
+
self._task_persistence_dirty.discard(task_id)
|
|
138
150
|
self._expired_task_tombstones.pop(task_id, None)
|
|
139
151
|
|
|
140
152
|
async def list(self, params: ListTasksRequest, context: ServerCallContext | None = None) -> ListTasksResponse:
|
|
@@ -798,6 +810,7 @@ class A2ATaskStore(TaskStore):
|
|
|
798
810
|
if now - expired_at > self._cleanup_interval_seconds:
|
|
799
811
|
self._expired_task_tombstones.pop(task_id, None)
|
|
800
812
|
self._tasks.pop(task_id, None)
|
|
813
|
+
self._task_persistence_dirty.discard(task_id)
|
|
801
814
|
for owner, owner_tasks in list(self._sdk_tasks.items()):
|
|
802
815
|
existing = owner_tasks.pop(task_id, None)
|
|
803
816
|
if existing is not None:
|
|
@@ -846,7 +859,7 @@ class A2ATaskStore(TaskStore):
|
|
|
846
859
|
except Exception:
|
|
847
860
|
logger.exception("A2A cleanup loop failed")
|
|
848
861
|
|
|
849
|
-
def _mirror_task(self, record: A2ATaskRecord) -> None:
|
|
862
|
+
def _mirror_task(self, record: A2ATaskRecord, *, persist_shared_snapshot: bool = True) -> None:
|
|
850
863
|
snapshot = A2ATaskSnapshot(
|
|
851
864
|
task_id=record.task_id,
|
|
852
865
|
context_id=record.context_id,
|
|
@@ -855,10 +868,12 @@ class A2ATaskStore(TaskStore):
|
|
|
855
868
|
output_text=list(record.output_text),
|
|
856
869
|
updated_at=record.updated_at,
|
|
857
870
|
)
|
|
858
|
-
if self._persistence is not None:
|
|
871
|
+
if self._persistence is not None and persist_shared_snapshot:
|
|
859
872
|
try:
|
|
860
873
|
self._persistence.save_task(snapshot)
|
|
874
|
+
self._task_persistence_dirty.discard(record.task_id)
|
|
861
875
|
except Exception:
|
|
876
|
+
self._task_persistence_dirty.add(record.task_id)
|
|
862
877
|
logger.exception("Failed to persist A2A task %s", record.task_id)
|
|
863
878
|
self._mirror_session_task(snapshot)
|
|
864
879
|
|
|
@@ -472,7 +472,11 @@ class IacCodeRequestHandler(DefaultRequestHandler):
|
|
|
472
472
|
if task_id and isinstance(self.task_store, A2ATaskStore) and await self.task_store.is_task_active(task_id):
|
|
473
473
|
task = await self.task_store.get(task_id, context)
|
|
474
474
|
active_task = await self._active_task_registry.get(task_id)
|
|
475
|
-
if
|
|
475
|
+
if (
|
|
476
|
+
task is not None
|
|
477
|
+
and active_task is not None
|
|
478
|
+
and task.status.state not in TERMINAL_TASK_STATES | INTERRUPTED_TASK_STATES
|
|
479
|
+
):
|
|
476
480
|
active_stream = self._on_active_message_send_stream(
|
|
477
481
|
params,
|
|
478
482
|
context,
|
|
@@ -803,7 +803,7 @@ class ACPServer:
|
|
|
803
803
|
"""Create an agent runtime, converting auth errors to ACP RequestError."""
|
|
804
804
|
try:
|
|
805
805
|
return create_agent_runtime(
|
|
806
|
-
AgentFactoryOptions(model=model, session_id=session_id, cwd=cwd, mcp_configs=mcp_configs)
|
|
806
|
+
AgentFactoryOptions(model=model, session_id=session_id, cwd=cwd, mcp_configs=mcp_configs, source="acp")
|
|
807
807
|
)
|
|
808
808
|
except Exception as exc:
|
|
809
809
|
if _is_auth_error(exc):
|
|
@@ -1815,10 +1815,12 @@ class AgentLoop:
|
|
|
1815
1815
|
ALIYUN_HTTP_METADATA_KEY,
|
|
1816
1816
|
sanitize_aliyun_http_metadata,
|
|
1817
1817
|
)
|
|
1818
|
+
from iac_code.tools.cloud.base_stack import persisted_stack_metadata
|
|
1818
1819
|
|
|
1819
1820
|
aliyun_http = sanitize_aliyun_http_metadata(result_metadata.get(ALIYUN_HTTP_METADATA_KEY))
|
|
1820
1821
|
if aliyun_http is not None:
|
|
1821
1822
|
metadata[ALIYUN_HTTP_METADATA_KEY] = aliyun_http
|
|
1823
|
+
metadata.update(persisted_stack_metadata(result_metadata))
|
|
1822
1824
|
render_metadata = result_metadata.get(TOOL_RENDER_METADATA_KEY)
|
|
1823
1825
|
if isinstance(render_metadata, dict):
|
|
1824
1826
|
safe_render_metadata: dict[str, Any] = {}
|
|
@@ -89,6 +89,11 @@ app.add_typer(_mcp_app, name="mcp")
|
|
|
89
89
|
def web(
|
|
90
90
|
host: str = typer.Option("127.0.0.1", help=_("HTTP server host")),
|
|
91
91
|
port: int = typer.Option(8766, help=_("HTTP server port")),
|
|
92
|
+
access_token_file: str | None = typer.Option(
|
|
93
|
+
None,
|
|
94
|
+
"--access-token-file",
|
|
95
|
+
help=_("Enable encrypted public access using the token stored in this file."),
|
|
96
|
+
),
|
|
92
97
|
open_browser: bool = typer.Option(
|
|
93
98
|
True,
|
|
94
99
|
"--open/--no-open",
|
|
@@ -98,10 +103,18 @@ def web(
|
|
|
98
103
|
"""Run iac-code as a local Web app."""
|
|
99
104
|
from iac_code.services.telemetry import bootstrap_telemetry, graceful_shutdown
|
|
100
105
|
from iac_code.web.server import run_web_server
|
|
106
|
+
from iac_code.web.settings import developer_settings
|
|
101
107
|
|
|
102
|
-
|
|
108
|
+
session_id = "web-server-{}".format(uuid.uuid4())
|
|
109
|
+
setup_logging(session_id=session_id, debug=bool(developer_settings().get("debug")))
|
|
110
|
+
bootstrap_telemetry(session_id=session_id)
|
|
103
111
|
try:
|
|
104
|
-
run_web_server(
|
|
112
|
+
run_web_server(
|
|
113
|
+
host=host,
|
|
114
|
+
port=port,
|
|
115
|
+
open_browser=open_browser,
|
|
116
|
+
access_token_file=access_token_file,
|
|
117
|
+
)
|
|
105
118
|
finally:
|
|
106
119
|
graceful_shutdown()
|
|
107
120
|
|
|
@@ -422,6 +435,7 @@ def main(
|
|
|
422
435
|
raise typer.Exit(1)
|
|
423
436
|
|
|
424
437
|
setup_logging(session_id=repl.session_id, debug=debug)
|
|
438
|
+
repl.log_session_started()
|
|
425
439
|
|
|
426
440
|
from iac_code.services.telemetry import add_metric, bootstrap_telemetry, graceful_shutdown, log_event
|
|
427
441
|
from iac_code.services.telemetry.names import Events, Metrics
|
|
@@ -194,6 +194,7 @@ class ProcessRuntimeController:
|
|
|
194
194
|
cli_allowed_tools=self._options.cli_allowed_tools,
|
|
195
195
|
cli_disallowed_tools=self._options.cli_disallowed_tools,
|
|
196
196
|
cli_permission_mode=self._options.cli_permission_mode,
|
|
197
|
+
source="process-mode",
|
|
197
198
|
)
|
|
198
199
|
)
|
|
199
200
|
self.session_id = runtime.session_id
|
|
@@ -780,6 +781,7 @@ class PipelineProcessRuntimeController:
|
|
|
780
781
|
cli_allowed_tools=self._options.cli_allowed_tools,
|
|
781
782
|
cli_disallowed_tools=self._options.cli_disallowed_tools,
|
|
782
783
|
cli_permission_mode=self._options.cli_permission_mode,
|
|
784
|
+
source="process-pipeline",
|
|
783
785
|
)
|
|
784
786
|
)
|
|
785
787
|
|
|
@@ -141,11 +141,6 @@ _MODEL_PREFIX_TO_PROVIDER: tuple[tuple[str, str], ...] = (
|
|
|
141
141
|
("doubao-", "volcengine_cn"),
|
|
142
142
|
)
|
|
143
143
|
|
|
144
|
-
# Module-level flag — warn once per process when IAC_CODE_BASE_URL is set
|
|
145
|
-
# but the active provider is not OpenAICompatible. Reset by tests.
|
|
146
|
-
_warned_base_url_ignored: bool = False
|
|
147
|
-
|
|
148
|
-
|
|
149
144
|
# ---------------------------------------------------------------------------
|
|
150
145
|
# Environment variable overrides
|
|
151
146
|
# ---------------------------------------------------------------------------
|
|
@@ -328,12 +323,8 @@ def get_provider_config(key_name: str) -> dict[str, Any]:
|
|
|
328
323
|
"""Return the persisted per-provider config dict (empty when unset).
|
|
329
324
|
|
|
330
325
|
When ``key_name`` is the active provider, IAC_CODE_MODEL and
|
|
331
|
-
IAC_CODE_BASE_URL env values are overlaid.
|
|
332
|
-
applies when the active provider is ``openai_compatible``; setting
|
|
333
|
-
it for other providers logs a one-time warning and is ignored.
|
|
326
|
+
IAC_CODE_BASE_URL env values are overlaid.
|
|
334
327
|
"""
|
|
335
|
-
global _warned_base_url_ignored
|
|
336
|
-
|
|
337
328
|
key_name = _LEGACY_KEY_NAME_ALIASES.get(key_name, key_name)
|
|
338
329
|
settings = _load_yaml(get_settings_path())
|
|
339
330
|
providers = settings.get("providers")
|
|
@@ -361,17 +352,7 @@ def get_provider_config(key_name: str) -> dict[str, Any]:
|
|
|
361
352
|
if env["model"]:
|
|
362
353
|
entry["model"] = env["model"]
|
|
363
354
|
if env["api_base"]:
|
|
364
|
-
|
|
365
|
-
entry["apiBase"] = env["api_base"]
|
|
366
|
-
elif not _warned_base_url_ignored:
|
|
367
|
-
from loguru import logger
|
|
368
|
-
|
|
369
|
-
logger.warning(
|
|
370
|
-
"IAC_CODE_BASE_URL is set but active provider is "
|
|
371
|
-
f"{active_key!r}; the value is ignored. "
|
|
372
|
-
"IAC_CODE_BASE_URL only applies to OpenAICompatible."
|
|
373
|
-
)
|
|
374
|
-
_warned_base_url_ignored = True
|
|
355
|
+
entry["apiBase"] = env["api_base"]
|
|
375
356
|
|
|
376
357
|
return entry
|
|
377
358
|
|
|
Binary file
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
msgid ""
|
|
6
6
|
msgstr ""
|
|
7
|
-
"Project-Id-Version: iac-code 0.11.
|
|
7
|
+
"Project-Id-Version: iac-code 0.11.4\n"
|
|
8
8
|
"Report-Msgid-Bugs-To: \n"
|
|
9
9
|
"POT-Creation-Date: 2026-06-04 15:58+0800\n"
|
|
10
10
|
"PO-Revision-Date: 2026-05-13 00:00+0000\n"
|
|
@@ -727,6 +727,12 @@ msgstr "HTTP-Server-Host"
|
|
|
727
727
|
msgid "HTTP server port"
|
|
728
728
|
msgstr "HTTP-Server-Port"
|
|
729
729
|
|
|
730
|
+
#: src/iac_code/cli/main.py
|
|
731
|
+
msgid "Enable encrypted public access using the token stored in this file."
|
|
732
|
+
msgstr ""
|
|
733
|
+
"Verschlüsselten öffentlichen Zugriff mit dem Token aus dieser Datei "
|
|
734
|
+
"aktivieren."
|
|
735
|
+
|
|
730
736
|
#: src/iac_code/cli/main.py
|
|
731
737
|
msgid ""
|
|
732
738
|
"Open the Web app in the default browser on startup (use --no-open to "
|
|
@@ -4710,7 +4716,7 @@ msgstr "Alibaba Cloud Bailian Token Plan"
|
|
|
4710
4716
|
|
|
4711
4717
|
#: src/iac_code/providers/registry.py
|
|
4712
4718
|
msgid "OpenAI Compatible"
|
|
4713
|
-
msgstr "
|
|
4719
|
+
msgstr "OpenAI-kompatibel"
|
|
4714
4720
|
|
|
4715
4721
|
#: src/iac_code/providers/registry.py
|
|
4716
4722
|
msgid "Kimi (China)"
|
|
@@ -11965,6 +11971,10 @@ msgstr "Lokal: {}"
|
|
|
11965
11971
|
msgid "Press Ctrl+C to stop"
|
|
11966
11972
|
msgstr "Zum Beenden Strg+C drücken"
|
|
11967
11973
|
|
|
11974
|
+
#: src/iac_code/web/server.py
|
|
11975
|
+
msgid "Token mode requires an IP address as the HTTP server host."
|
|
11976
|
+
msgstr "Der Token-Modus erfordert eine IP-Adresse als Host des HTTP-Servers."
|
|
11977
|
+
|
|
11968
11978
|
#: src/iac_code/web/server.py
|
|
11969
11979
|
msgid ""
|
|
11970
11980
|
"Web server dependencies are missing. Install with: pip install 'iac-"
|
|
@@ -12039,6 +12049,22 @@ msgstr "unbekannte Partnerquelle"
|
|
|
12039
12049
|
msgid "unknown aliyun credential mode"
|
|
12040
12050
|
msgstr "unbekannter Aliyun-Anmeldeinformationsmodus"
|
|
12041
12051
|
|
|
12052
|
+
#: src/iac_code/web/settings.py
|
|
12053
|
+
msgid "OAuth authorization flow is invalid or expired."
|
|
12054
|
+
msgstr "Der OAuth-Autorisierungsablauf ist ungültig oder abgelaufen."
|
|
12055
|
+
|
|
12056
|
+
#: src/iac_code/web/settings.py
|
|
12057
|
+
msgid "Authorization code is required."
|
|
12058
|
+
msgstr "Der Autorisierungscode ist erforderlich."
|
|
12059
|
+
|
|
12060
|
+
#: src/iac_code/web/settings.py
|
|
12061
|
+
msgid "OAuth callback URL does not match the authorization flow."
|
|
12062
|
+
msgstr "Die OAuth-Callback-URL stimmt nicht mit dem Autorisierungsablauf überein."
|
|
12063
|
+
|
|
12064
|
+
#: src/iac_code/web/settings.py
|
|
12065
|
+
msgid "OAuth callback state is invalid."
|
|
12066
|
+
msgstr "Der OAuth-Callback-Status ist ungültig."
|
|
12067
|
+
|
|
12042
12068
|
#: src/iac_code/web/settings.py
|
|
12043
12069
|
msgid "stored aliyun credentials are invalid"
|
|
12044
12070
|
msgstr "gespeicherte Aliyun-Anmeldeinformationen sind ungültig"
|
|
@@ -12726,3 +12752,4 @@ msgstr "Bash zulassen?"
|
|
|
12726
12752
|
#~ msgstr ""
|
|
12727
12753
|
#~ "Tool-Aufruf genehmigen: {tool}\n"
|
|
12728
12754
|
#~ "Eingabezusammenfassung: {summary}"
|
|
12755
|
+
|
|
Binary file
|