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.
Files changed (620) hide show
  1. {iac_code-0.11.2 → iac_code-0.11.4}/PKG-INFO +1 -1
  2. iac_code-0.11.4/src/iac_code/__init__.py +2 -0
  3. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/executor.py +1 -0
  4. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_events.py +6 -2
  5. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_executor.py +66 -1
  6. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_stream.py +13 -0
  7. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/task_store.py +20 -5
  8. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/dispatcher.py +5 -1
  9. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/server.py +1 -1
  10. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_loop.py +2 -0
  11. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/headless.py +1 -0
  12. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/main.py +16 -2
  13. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_mode.py +2 -0
  14. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/config.py +2 -21
  15. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
  16. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +29 -2
  17. iac_code-0.11.4/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  18. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +125 -4
  19. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
  20. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +27 -2
  21. iac_code-0.11.4/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  22. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +126 -5
  23. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
  24. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +27 -2
  25. iac_code-0.11.4/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  26. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +126 -5
  27. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  28. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +27 -2
  29. iac_code-0.11.4/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  30. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +106 -4
  31. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
  32. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +29 -2
  33. iac_code-0.11.4/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  34. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +125 -5
  35. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
  36. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +27 -2
  37. iac_code-0.11.4/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  38. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +106 -4
  39. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/completion_guard_state.py +27 -1
  40. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/pipeline_runner.py +17 -46
  41. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/recovery.py +1 -0
  42. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_executor.py +13 -0
  43. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/pipeline.yaml +1 -1
  44. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +1 -0
  45. iac_code-0.11.4/src/iac_code/pipeline/selling/references/solutions/iac-code-web.md +31 -0
  46. iac_code-0.11.4/src/iac_code/pipeline/selling/references/solutions/iac-code-web.ros.yml +314 -0
  47. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +3 -0
  48. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.md +31 -0
  49. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.ros.yml +314 -0
  50. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +1 -0
  51. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.md +31 -0
  52. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.ros.yml +314 -0
  53. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +4 -0
  54. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.md +31 -0
  55. iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.ros.yml +314 -0
  56. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +3 -4
  57. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/manager.py +77 -6
  58. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/agent_factory.py +51 -0
  59. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun_oauth.py +69 -10
  60. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_backup.py +135 -29
  61. iac_code-0.11.4/src/iac_code/services/session_logging.py +279 -0
  62. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/config.py +53 -9
  63. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/identity.py +9 -2
  64. iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +31 -0
  65. iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +314 -0
  66. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack.py +15 -0
  67. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_stack.py +67 -6
  68. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/types.py +1 -0
  69. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/stream_events.py +26 -0
  70. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/renderer.py +15 -5
  71. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/repl.py +87 -6
  72. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/log.py +19 -1
  73. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/app.py +66 -3
  74. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/events.py +20 -1
  75. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/outputs.py +31 -8
  76. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/runtime.py +1 -0
  77. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/server.py +43 -5
  78. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/session_manager.py +68 -0
  79. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/settings.py +143 -19
  80. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/index.html +2 -2
  81. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/api.js +159 -11
  82. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/app.js +116 -14
  83. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/composer.js +12 -3
  84. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/output_panel.js +114 -7
  85. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/workspace.js +119 -15
  86. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/events.js +14 -0
  87. iac_code-0.11.4/src/iac_code/web/static/js/token_transport.js +441 -0
  88. iac_code-0.11.4/src/iac_code/web/static/js/vendor/token-crypto.js +302 -0
  89. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/styles.css +100 -3
  90. iac_code-0.11.4/src/iac_code/web/token_transport.py +594 -0
  91. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/PKG-INFO +1 -1
  92. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/SOURCES.txt +15 -1
  93. iac_code-0.11.2/src/iac_code/__init__.py +0 -2
  94. iac_code-0.11.2/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  95. iac_code-0.11.2/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  96. iac_code-0.11.2/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  97. iac_code-0.11.2/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  98. iac_code-0.11.2/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  99. iac_code-0.11.2/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  100. {iac_code-0.11.2 → iac_code-0.11.4}/LICENSE +0 -0
  101. {iac_code-0.11.2 → iac_code-0.11.4}/MANIFEST.in +0 -0
  102. {iac_code-0.11.2 → iac_code-0.11.4}/README.md +0 -0
  103. {iac_code-0.11.2 → iac_code-0.11.4}/pyproject.toml +0 -0
  104. {iac_code-0.11.2 → iac_code-0.11.4}/setup.cfg +0 -0
  105. {iac_code-0.11.2 → iac_code-0.11.4}/setup.py +0 -0
  106. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/__init__.py +0 -0
  107. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/agent_card.py +0 -0
  108. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/app.py +0 -0
  109. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/artifacts.py +0 -0
  110. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/backup.py +0 -0
  111. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/client.py +0 -0
  112. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/events.py +0 -0
  113. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/exposure.py +0 -0
  114. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
  115. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/metadata_redaction.py +0 -0
  116. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/metrics.py +0 -0
  117. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/parts.py +0 -0
  118. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/persistence.py +0 -0
  119. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
  120. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
  121. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_journal.py +0 -0
  122. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_outbound.py +0 -0
  123. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_paths.py +0 -0
  124. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_performance.py +0 -0
  125. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_recovery.py +0 -0
  126. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_snapshot.py +0 -0
  127. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
  128. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/projection.py +0 -0
  129. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push.py +0 -0
  130. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_queue.py +0 -0
  131. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_secrets.py +0 -0
  132. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/push_worker.py +0 -0
  133. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/router.py +0 -0
  134. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/runtime_overrides.py +0 -0
  135. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/runtime_registry.py +0 -0
  136. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/signing.py +0 -0
  137. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/thinking_metadata.py +0 -0
  138. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transport.py +0 -0
  139. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/__init__.py +0 -0
  140. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/base.py +0 -0
  141. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc.py +0 -0
  142. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
  143. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/http.py +0 -0
  144. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/redis_streams.py +0 -0
  145. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/stdio.py +0 -0
  146. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/unix.py +0 -0
  147. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/transports/websocket.py +0 -0
  148. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/a2a/types.py +0 -0
  149. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/__init__.py +0 -0
  150. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/convert.py +0 -0
  151. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/http_sse.py +0 -0
  152. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/mcp.py +0 -0
  153. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/metrics.py +0 -0
  154. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/runner.py +0 -0
  155. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/session.py +0 -0
  156. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/slash_registry.py +0 -0
  157. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/state.py +0 -0
  158. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/tools.py +0 -0
  159. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/types.py +0 -0
  160. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/acp/version.py +0 -0
  161. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/__init__.py +0 -0
  162. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_tool.py +0 -0
  163. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/agent_types.py +0 -0
  164. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/message.py +0 -0
  165. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/agent/system_prompt.py +0 -0
  166. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/__init__.py +0 -0
  167. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/install_git_bash.py +0 -0
  168. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/output_formats.py +0 -0
  169. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_events.py +0 -0
  170. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/process_protocol.py +0 -0
  171. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/cli/update.py +0 -0
  172. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/__init__.py +0 -0
  173. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/auth.py +0 -0
  174. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/clear.py +0 -0
  175. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/compact.py +0 -0
  176. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/debug.py +0 -0
  177. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/effort.py +0 -0
  178. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/exit.py +0 -0
  179. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/help.py +0 -0
  180. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/mcp.py +0 -0
  181. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/memory.py +0 -0
  182. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/model.py +0 -0
  183. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/prompt.py +0 -0
  184. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/registry.py +0 -0
  185. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/rename.py +0 -0
  186. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/resume.py +0 -0
  187. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/skills.py +0 -0
  188. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/status.py +0 -0
  189. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/tasks.py +0 -0
  190. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/commands/thinking_enabled.py +0 -0
  191. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/__init__.py +0 -0
  192. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/i18n/html_extractor.py +0 -0
  193. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/__init__.py +0 -0
  194. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/cli.py +0 -0
  195. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/client.py +0 -0
  196. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/config.py +0 -0
  197. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/env_expansion.py +0 -0
  198. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/errors.py +0 -0
  199. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/manager.py +0 -0
  200. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/oauth.py +0 -0
  201. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/output.py +0 -0
  202. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/progress.py +0 -0
  203. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/prompt_dispatch.py +0 -0
  204. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/prompts.py +0 -0
  205. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/redaction.py +0 -0
  206. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/skills.py +0 -0
  207. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/storage.py +0 -0
  208. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/tools.py +0 -0
  209. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/mcp/types.py +0 -0
  210. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/__init__.py +0 -0
  211. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/memory_manager.py +0 -0
  212. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/memory_tools.py +0 -0
  213. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/project_memory.py +0 -0
  214. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/memory/recall.py +0 -0
  215. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/__init__.py +0 -0
  216. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/config.py +0 -0
  217. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/constants.py +0 -0
  218. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/display_names.py +0 -0
  219. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/__init__.py +0 -0
  220. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
  221. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
  222. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
  223. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
  224. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
  225. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
  226. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
  227. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
  228. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
  229. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
  230. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
  231. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
  232. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
  233. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/cleanup.py +0 -0
  234. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
  235. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/context.py +0 -0
  236. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/display_replay.py +0 -0
  237. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/events.py +0 -0
  238. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/handoff.py +0 -0
  239. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/interrupt.py +0 -0
  240. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/loader.py +0 -0
  241. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/observability.py +0 -0
  242. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
  243. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
  244. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/public_errors.py +0 -0
  245. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
  246. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/session.py +0 -0
  247. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
  248. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/state_machine.py +0 -0
  249. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_spec.py +0 -0
  250. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
  251. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
  252. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/types.py +0 -0
  253. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
  254. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/engine/user_input.py +0 -0
  255. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
  256. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
  257. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
  258. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
  259. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
  260. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
  261. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
  262. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
  263. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
  264. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
  265. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
  266. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
  267. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
  268. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
  269. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
  270. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
  271. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
  272. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
  273. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
  274. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
  275. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +0 -0
  276. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {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
  283. {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
  284. {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
  285. {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
  286. {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
  287. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
  299. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
  300. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
  301. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
  302. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
  303. {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
  304. {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
  305. {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
  306. {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
  307. {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
  308. {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
  309. {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
  310. {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
  311. {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
  312. {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
  313. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
  314. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
  315. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
  316. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
  317. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/__init__.py +0 -0
  318. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/anthropic_provider.py +0 -0
  319. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/azure_openai_provider.py +0 -0
  320. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/base.py +0 -0
  321. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/dashscope_provider.py +0 -0
  322. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/deepseek_provider.py +0 -0
  323. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/gemini_provider.py +0 -0
  324. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/kimi_provider.py +0 -0
  325. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/lmstudio_provider.py +0 -0
  326. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/minimax_provider.py +0 -0
  327. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/modelscope_provider.py +0 -0
  328. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/ollama_provider.py +0 -0
  329. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/openai_provider.py +0 -0
  330. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/openrouter_provider.py +0 -0
  331. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/registry.py +0 -0
  332. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/request_logging.py +0 -0
  333. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/request_policy.py +0 -0
  334. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/retry.py +0 -0
  335. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/siliconflow_provider.py +0 -0
  336. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/stream_watchdog.py +0 -0
  337. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/thinking.py +0 -0
  338. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/volcengine_provider.py +0 -0
  339. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/providers/zhipu_provider.py +0 -0
  340. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/__init__.py +0 -0
  341. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/__init__.py +0 -0
  342. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/auto_detect.py +0 -0
  343. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/capabilities/multimodal.py +0 -0
  344. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/cloud_credentials.py +0 -0
  345. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/context_manager.py +0 -0
  346. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/__init__.py +0 -0
  347. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/audit.py +0 -0
  348. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/loader.py +0 -0
  349. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/pipeline.py +0 -0
  350. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/rule_scope.py +0 -0
  351. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/storage.py +0 -0
  352. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/permissions/trusted_roots.py +0 -0
  353. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/__init__.py +0 -0
  354. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun.py +0 -0
  355. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/qwenpaw_source.py +0 -0
  356. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_backup_state.py +0 -0
  357. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_index.py +0 -0
  358. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_layout.py +0 -0
  359. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_metadata.py +0 -0
  360. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_resolver.py +0 -0
  361. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_storage.py +0 -0
  362. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/session_usage.py +0 -0
  363. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/__init__.py +0 -0
  364. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/attributes.py +0 -0
  365. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/client.py +0 -0
  366. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/constants.py +0 -0
  367. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/content_serializer.py +0 -0
  368. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/events.py +0 -0
  369. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/fallback.py +0 -0
  370. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/metrics.py +0 -0
  371. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/names.py +0 -0
  372. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/sanitize.py +0 -0
  373. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/scope.py +0 -0
  374. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/sink.py +0 -0
  375. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/tracing.py +0 -0
  376. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/telemetry/types.py +0 -0
  377. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/token_budget.py +0 -0
  378. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/token_counter.py +0 -0
  379. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/services/update_checker.py +0 -0
  380. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/__init__.py +0 -0
  381. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/auto_trigger.py +0 -0
  382. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/__init__.py +0 -0
  383. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +0 -0
  384. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
  385. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
  386. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
  387. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
  388. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
  389. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
  390. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
  391. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
  392. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
  393. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
  394. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
  395. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
  396. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
  397. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
  398. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
  399. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
  400. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
  401. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/bundled/simplify.py +0 -0
  402. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/discovery.py +0 -0
  403. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/frontmatter.py +0 -0
  404. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/listing.py +0 -0
  405. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/loader.py +0 -0
  406. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/management.py +0 -0
  407. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/processor.py +0 -0
  408. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/renderer.py +0 -0
  409. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/settings.py +0 -0
  410. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/skill_definition.py +0 -0
  411. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/skills/skill_tool.py +0 -0
  412. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/state/__init__.py +0 -0
  413. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/state/app_state.py +0 -0
  414. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/__init__.py +0 -0
  415. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/notification_queue.py +0 -0
  416. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/task_state.py +0 -0
  417. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tasks/task_tools.py +0 -0
  418. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/__init__.py +0 -0
  419. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/base.py +0 -0
  420. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/__init__.py +0 -0
  421. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/argv_safety.py +0 -0
  422. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/bash_tool.py +0 -0
  423. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/command_parser.py +0 -0
  424. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/mode_validation.py +0 -0
  425. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/path_validation.py +0 -0
  426. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/permissions.py +0 -0
  427. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/readonly_commands.py +0 -0
  428. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/rule_matching.py +0 -0
  429. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/bash/safety_checks.py +0 -0
  430. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/__init__.py +0 -0
  431. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
  432. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
  433. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +0 -0
  434. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
  435. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
  436. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
  437. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
  438. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
  439. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
  440. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
  441. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
  442. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
  443. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
  444. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
  445. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
  446. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
  447. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
  448. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
  449. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
  450. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
  451. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
  452. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
  453. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
  454. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
  455. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
  456. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
  457. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
  458. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
  459. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
  460. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/public_errors.py +0 -0
  461. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/result_contract.py +0 -0
  462. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
  463. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
  464. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +0 -0
  465. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
  466. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
  467. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
  468. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +0 -0
  469. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
  470. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
  471. {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
  472. {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
  473. {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
  474. {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
  475. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
  476. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
  477. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
  478. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
  479. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
  480. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
  481. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
  482. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
  483. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
  484. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
  485. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
  486. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
  487. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
  488. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
  489. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
  490. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
  491. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/runtime.py +0 -0
  492. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
  493. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
  494. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
  495. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_api.py +0 -0
  496. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/cloud/registry.py +0 -0
  497. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/edit_file.py +0 -0
  498. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/glob.py +0 -0
  499. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/grep.py +0 -0
  500. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/list_files.py +0 -0
  501. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/path_safety.py +0 -0
  502. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/read_file.py +0 -0
  503. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/result_storage.py +0 -0
  504. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/tool_executor.py +0 -0
  505. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/web_fetch.py +0 -0
  506. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/tools/write_file.py +0 -0
  507. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/__init__.py +0 -0
  508. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/permissions.py +0 -0
  509. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/types/skill_source.py +0 -0
  510. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/__init__.py +0 -0
  511. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/banner.py +0 -0
  512. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/__init__.py +0 -0
  513. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/candidate_selection.py +0 -0
  514. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/dialog.py +0 -0
  515. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/divider.py +0 -0
  516. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
  517. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/parallel_tabs.py +0 -0
  518. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/progress_bar.py +0 -0
  519. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/search_box.py +0 -0
  520. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/select.py +0 -0
  521. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/status_icon.py +0 -0
  522. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/components/tabs.py +0 -0
  523. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/__init__.py +0 -0
  524. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/in_place_render.py +0 -0
  525. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/input_history.py +0 -0
  526. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/key_event.py +0 -0
  527. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/prompt_input.py +0 -0
  528. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input.py +0 -0
  529. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input_win.py +0 -0
  530. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/core/screen.py +0 -0
  531. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/diagram_rendering.py +0 -0
  532. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/__init__.py +0 -0
  533. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/global_search.py +0 -0
  534. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/history_search.py +0 -0
  535. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
  536. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory.py +0 -0
  537. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
  538. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/model_picker.py +0 -0
  539. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/quick_open.py +0 -0
  540. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
  541. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
  542. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/keybindings/__init__.py +0 -0
  543. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/keybindings/manager.py +0 -0
  544. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/pipeline_display_replay.py +0 -0
  545. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/pipeline_styles.py +0 -0
  546. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/spinner.py +0 -0
  547. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/stream_accumulator.py +0 -0
  548. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/__init__.py +0 -0
  549. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/aggregator.py +0 -0
  550. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/command_provider.py +0 -0
  551. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
  552. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/file_provider.py +0 -0
  553. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
  554. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
  555. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
  556. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/suggestions/types.py +0 -0
  557. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/ui/transcript_view.py +0 -0
  558. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/__init__.py +0 -0
  559. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/async_lifecycle.py +0 -0
  560. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/background_housekeeping.py +0 -0
  561. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/cleanup.py +0 -0
  562. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/console.py +0 -0
  563. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/file_security.py +0 -0
  564. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/__init__.py +0 -0
  565. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/clipboard.py +0 -0
  566. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/format_detect.py +0 -0
  567. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/pasted_content.py +0 -0
  568. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/processor.py +0 -0
  569. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/resizer.py +0 -0
  570. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/image/store.py +0 -0
  571. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/json_utils.py +0 -0
  572. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/path_components.py +0 -0
  573. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/path_locks.py +0 -0
  574. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/platform.py +0 -0
  575. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/project_paths.py +0 -0
  576. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/public_errors.py +0 -0
  577. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/public_paths.py +0 -0
  578. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/signals.py +0 -0
  579. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/state_io.py +0 -0
  580. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/tool_input_parser.py +0 -0
  581. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/tool_result_redaction.py +0 -0
  582. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/utils/windows_paths.py +0 -0
  583. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/__init__.py +0 -0
  584. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/cleanup.py +0 -0
  585. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/commands.py +0 -0
  586. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagram_cache.py +0 -0
  587. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagram_optimizer.py +0 -0
  588. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/diagrams.py +0 -0
  589. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/files.py +0 -0
  590. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/images.py +0 -0
  591. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/mcp_settings.py +0 -0
  592. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/memory.py +0 -0
  593. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/permissions.py +0 -0
  594. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline.py +0 -0
  595. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_actions.py +0 -0
  596. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_prerequisites.py +0 -0
  597. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/pipeline_transcript.py +0 -0
  598. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/security.py +0 -0
  599. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/session_titler.py +0 -0
  600. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/shell.py +0 -0
  601. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/skills.py +0 -0
  602. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
  603. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
  604. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
  605. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
  606. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
  607. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/blocking.js +0 -0
  608. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
  609. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/pipeline.js +0 -0
  610. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/components/tool_cards.js +0 -0
  611. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/i18n.js +0 -0
  612. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/mermaid_render.js +0 -0
  613. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
  614. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
  615. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
  616. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
  617. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/dependency_links.txt +0 -0
  618. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/entry_points.txt +0 -0
  619. {iac_code-0.11.2 → iac_code-0.11.4}/src/iac_code.egg-info/requires.txt +0 -0
  620. {iac_code-0.11.2 → iac_code-0.11.4}/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.11.2
3
+ Version: 0.11.4
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
@@ -0,0 +1,2 @@
1
+ __version__ = "0.11.4"
2
+ __release_date__ = "2026-08-07"
@@ -1179,6 +1179,7 @@ class IacCodeA2AExecutor(AgentExecutor):
1179
1179
  cwd=cwd,
1180
1180
  resume_messages=resume_messages,
1181
1181
  a2a_safe_mode=_a2a_safe_mode_enabled(),
1182
+ source="a2a",
1182
1183
  )
1183
1184
  )
1184
1185
 
@@ -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
- return {
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=_task_state_from_sdk_task(task),
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 = _task_state_from_sdk_task(task)
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 task is not None and active_task is not None and task.status.state not in TERMINAL_TASK_STATES:
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] = {}
@@ -187,6 +187,7 @@ class HeadlessRunner:
187
187
  cli_permission_mode=self._cli_permission_mode,
188
188
  resume_messages=resume_messages,
189
189
  mcp_elicitation_handler=_headless_mcp_elicitation_handler,
190
+ source="headless",
190
191
  )
191
192
  )
192
193
  self._runtime = runtime
@@ -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
- bootstrap_telemetry(session_id="web-server-{}".format(uuid.uuid4()))
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(host=host, port=port, open_browser=open_browser)
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. IAC_CODE_BASE_URL only
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
- if active_key == "openai_compatible":
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
 
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.2\n"
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 "OpenAPI-kompatibel"
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
+