iac-code 0.11.3__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 (622) hide show
  1. {iac_code-0.11.3 → 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.3 → iac_code-0.11.4}/src/iac_code/a2a/executor.py +1 -0
  4. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_events.py +6 -2
  5. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_executor.py +66 -1
  6. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_stream.py +13 -0
  7. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/task_store.py +20 -5
  8. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/dispatcher.py +5 -1
  9. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/server.py +1 -1
  10. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/agent_loop.py +2 -0
  11. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/headless.py +1 -0
  12. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/main.py +5 -1
  13. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/process_mode.py +2 -0
  14. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
  15. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +3 -2
  16. iac_code-0.11.4/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  17. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +55 -4
  18. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
  19. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +3 -2
  20. iac_code-0.11.4/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  21. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +57 -5
  22. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
  23. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +3 -2
  24. iac_code-0.11.4/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  25. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +56 -5
  26. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  27. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +3 -2
  28. iac_code-0.11.4/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  29. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +44 -4
  30. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
  31. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +3 -2
  32. iac_code-0.11.4/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  33. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +56 -5
  34. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
  35. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +3 -2
  36. iac_code-0.11.4/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  37. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +44 -4
  38. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/completion_guard_state.py +27 -1
  39. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/pipeline_runner.py +17 -46
  40. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/recovery.py +1 -0
  41. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_executor.py +13 -0
  42. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/pipeline.yaml +1 -1
  43. {iac_code-0.11.3/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating → iac_code-0.11.4/src/iac_code/pipeline/selling}/references/solutions/iac-code-web.md +4 -5
  44. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/solutions/iac-code-web.ros.yml +13 -17
  45. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +2 -2
  46. {iac_code-0.11.3/src/iac_code/pipeline/selling → iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-cost}/references/solutions/iac-code-web.md +4 -5
  47. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.ros.yml +13 -17
  48. {iac_code-0.11.3/src/iac_code/pipeline/selling/skills/iac-aliyun-cost → iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying}/references/solutions/iac-code-web.md +4 -5
  49. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.ros.yml +13 -17
  50. {iac_code-0.11.3/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying → iac_code-0.11.4/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating}/references/solutions/iac-code-web.md +4 -5
  51. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.ros.yml +13 -17
  52. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +3 -4
  53. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/manager.py +74 -1
  54. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/agent_factory.py +51 -0
  55. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_backup.py +135 -29
  56. iac_code-0.11.4/src/iac_code/services/session_logging.py +279 -0
  57. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/config.py +53 -9
  58. iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +31 -0
  59. iac_code-0.11.4/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +314 -0
  60. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_stack.py +64 -5
  61. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/types/stream_events.py +26 -0
  62. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/renderer.py +15 -5
  63. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/repl.py +87 -6
  64. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/log.py +19 -1
  65. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/app.py +33 -1
  66. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/events.py +20 -1
  67. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/outputs.py +31 -8
  68. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/runtime.py +1 -0
  69. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/server.py +23 -1
  70. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/session_manager.py +68 -0
  71. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/settings.py +42 -4
  72. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/index.html +2 -2
  73. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/api.js +16 -2
  74. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/app.js +104 -11
  75. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/output_panel.js +114 -7
  76. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/workspace.js +102 -12
  77. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/events.js +14 -0
  78. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/styles.css +7 -3
  79. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code.egg-info/PKG-INFO +1 -1
  80. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code.egg-info/SOURCES.txt +1 -0
  81. iac_code-0.11.3/src/iac_code/__init__.py +0 -2
  82. iac_code-0.11.3/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  83. iac_code-0.11.3/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  84. iac_code-0.11.3/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  85. iac_code-0.11.3/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  86. iac_code-0.11.3/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  87. iac_code-0.11.3/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  88. iac_code-0.11.3/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +0 -32
  89. iac_code-0.11.3/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +0 -318
  90. {iac_code-0.11.3 → iac_code-0.11.4}/LICENSE +0 -0
  91. {iac_code-0.11.3 → iac_code-0.11.4}/MANIFEST.in +0 -0
  92. {iac_code-0.11.3 → iac_code-0.11.4}/README.md +0 -0
  93. {iac_code-0.11.3 → iac_code-0.11.4}/pyproject.toml +0 -0
  94. {iac_code-0.11.3 → iac_code-0.11.4}/setup.cfg +0 -0
  95. {iac_code-0.11.3 → iac_code-0.11.4}/setup.py +0 -0
  96. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/__init__.py +0 -0
  97. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/agent_card.py +0 -0
  98. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/app.py +0 -0
  99. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/artifacts.py +0 -0
  100. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/backup.py +0 -0
  101. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/client.py +0 -0
  102. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/events.py +0 -0
  103. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/exposure.py +0 -0
  104. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
  105. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/metadata_redaction.py +0 -0
  106. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/metrics.py +0 -0
  107. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/parts.py +0 -0
  108. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/persistence.py +0 -0
  109. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
  110. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
  111. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_journal.py +0 -0
  112. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_outbound.py +0 -0
  113. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_paths.py +0 -0
  114. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_performance.py +0 -0
  115. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_recovery.py +0 -0
  116. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_snapshot.py +0 -0
  117. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
  118. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/projection.py +0 -0
  119. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/push.py +0 -0
  120. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/push_queue.py +0 -0
  121. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/push_secrets.py +0 -0
  122. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/push_worker.py +0 -0
  123. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/router.py +0 -0
  124. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/runtime_overrides.py +0 -0
  125. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/runtime_registry.py +0 -0
  126. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/signing.py +0 -0
  127. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/thinking_metadata.py +0 -0
  128. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transport.py +0 -0
  129. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/__init__.py +0 -0
  130. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/base.py +0 -0
  131. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc.py +0 -0
  132. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
  133. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/http.py +0 -0
  134. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/redis_streams.py +0 -0
  135. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/stdio.py +0 -0
  136. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/unix.py +0 -0
  137. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/transports/websocket.py +0 -0
  138. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/a2a/types.py +0 -0
  139. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/__init__.py +0 -0
  140. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/convert.py +0 -0
  141. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/http_sse.py +0 -0
  142. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/mcp.py +0 -0
  143. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/metrics.py +0 -0
  144. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/runner.py +0 -0
  145. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/session.py +0 -0
  146. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/slash_registry.py +0 -0
  147. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/state.py +0 -0
  148. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/tools.py +0 -0
  149. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/types.py +0 -0
  150. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/acp/version.py +0 -0
  151. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/__init__.py +0 -0
  152. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/agent_tool.py +0 -0
  153. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/agent_types.py +0 -0
  154. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/message.py +0 -0
  155. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/agent/system_prompt.py +0 -0
  156. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/__init__.py +0 -0
  157. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/install_git_bash.py +0 -0
  158. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/output_formats.py +0 -0
  159. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/process_events.py +0 -0
  160. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/process_protocol.py +0 -0
  161. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/cli/update.py +0 -0
  162. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/__init__.py +0 -0
  163. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/auth.py +0 -0
  164. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/clear.py +0 -0
  165. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/compact.py +0 -0
  166. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/debug.py +0 -0
  167. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/effort.py +0 -0
  168. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/exit.py +0 -0
  169. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/help.py +0 -0
  170. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/mcp.py +0 -0
  171. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/memory.py +0 -0
  172. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/model.py +0 -0
  173. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/prompt.py +0 -0
  174. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/registry.py +0 -0
  175. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/rename.py +0 -0
  176. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/resume.py +0 -0
  177. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/skills.py +0 -0
  178. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/status.py +0 -0
  179. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/tasks.py +0 -0
  180. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/commands/thinking_enabled.py +0 -0
  181. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/config.py +0 -0
  182. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/__init__.py +0 -0
  183. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/i18n/html_extractor.py +0 -0
  184. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/__init__.py +0 -0
  185. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/cli.py +0 -0
  186. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/client.py +0 -0
  187. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/config.py +0 -0
  188. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/env_expansion.py +0 -0
  189. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/errors.py +0 -0
  190. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/manager.py +0 -0
  191. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/oauth.py +0 -0
  192. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/output.py +0 -0
  193. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/progress.py +0 -0
  194. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/prompt_dispatch.py +0 -0
  195. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/prompts.py +0 -0
  196. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/redaction.py +0 -0
  197. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/skills.py +0 -0
  198. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/storage.py +0 -0
  199. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/tools.py +0 -0
  200. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/mcp/types.py +0 -0
  201. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/memory/__init__.py +0 -0
  202. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/memory/memory_manager.py +0 -0
  203. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/memory/memory_tools.py +0 -0
  204. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/memory/project_memory.py +0 -0
  205. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/memory/recall.py +0 -0
  206. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/__init__.py +0 -0
  207. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/config.py +0 -0
  208. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/constants.py +0 -0
  209. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/display_names.py +0 -0
  210. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/__init__.py +0 -0
  211. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
  212. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
  213. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
  214. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
  215. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
  216. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
  217. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
  218. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
  219. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
  220. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
  221. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
  222. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
  223. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
  224. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/cleanup.py +0 -0
  225. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
  226. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/context.py +0 -0
  227. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/display_replay.py +0 -0
  228. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/events.py +0 -0
  229. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/handoff.py +0 -0
  230. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/interrupt.py +0 -0
  231. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/loader.py +0 -0
  232. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/observability.py +0 -0
  233. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
  234. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
  235. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/public_errors.py +0 -0
  236. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
  237. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/session.py +0 -0
  238. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
  239. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/state_machine.py +0 -0
  240. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/step_spec.py +0 -0
  241. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
  242. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
  243. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/types.py +0 -0
  244. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
  245. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/engine/user_input.py +0 -0
  246. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
  247. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
  248. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
  249. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
  250. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
  251. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
  252. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
  253. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +0 -0
  254. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
  255. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
  256. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
  257. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
  258. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
  259. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
  260. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
  261. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
  262. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
  263. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
  264. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
  265. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
  266. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
  267. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +0 -0
  268. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
  269. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
  270. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
  271. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
  272. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
  273. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
  274. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
  275. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
  276. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
  277. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
  278. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
  279. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +0 -0
  280. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
  281. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
  282. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
  283. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
  284. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
  285. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
  286. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
  287. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
  288. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
  289. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
  290. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
  291. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
  292. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
  293. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
  294. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
  295. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +0 -0
  296. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
  297. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
  298. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
  299. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
  300. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
  301. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
  302. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
  303. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
  304. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
  305. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
  306. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
  307. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
  308. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
  309. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
  310. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
  311. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/__init__.py +0 -0
  312. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/anthropic_provider.py +0 -0
  313. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/azure_openai_provider.py +0 -0
  314. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/base.py +0 -0
  315. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/dashscope_provider.py +0 -0
  316. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/deepseek_provider.py +0 -0
  317. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/gemini_provider.py +0 -0
  318. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/kimi_provider.py +0 -0
  319. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/lmstudio_provider.py +0 -0
  320. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/minimax_provider.py +0 -0
  321. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/modelscope_provider.py +0 -0
  322. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/ollama_provider.py +0 -0
  323. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/openai_provider.py +0 -0
  324. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/openrouter_provider.py +0 -0
  325. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/registry.py +0 -0
  326. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/request_logging.py +0 -0
  327. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/request_policy.py +0 -0
  328. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/retry.py +0 -0
  329. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/siliconflow_provider.py +0 -0
  330. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/stream_watchdog.py +0 -0
  331. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/thinking.py +0 -0
  332. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/volcengine_provider.py +0 -0
  333. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/providers/zhipu_provider.py +0 -0
  334. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/__init__.py +0 -0
  335. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/capabilities/__init__.py +0 -0
  336. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/capabilities/auto_detect.py +0 -0
  337. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/capabilities/multimodal.py +0 -0
  338. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/cloud_credentials.py +0 -0
  339. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/context_manager.py +0 -0
  340. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/__init__.py +0 -0
  341. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/audit.py +0 -0
  342. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/loader.py +0 -0
  343. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/pipeline.py +0 -0
  344. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/rule_scope.py +0 -0
  345. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/storage.py +0 -0
  346. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/permissions/trusted_roots.py +0 -0
  347. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/providers/__init__.py +0 -0
  348. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun.py +0 -0
  349. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/providers/aliyun_oauth.py +0 -0
  350. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/qwenpaw_source.py +0 -0
  351. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_backup_state.py +0 -0
  352. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_index.py +0 -0
  353. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_layout.py +0 -0
  354. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_metadata.py +0 -0
  355. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_resolver.py +0 -0
  356. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_storage.py +0 -0
  357. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/session_usage.py +0 -0
  358. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/__init__.py +0 -0
  359. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/attributes.py +0 -0
  360. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/client.py +0 -0
  361. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/constants.py +0 -0
  362. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/content_serializer.py +0 -0
  363. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/events.py +0 -0
  364. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/fallback.py +0 -0
  365. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/identity.py +0 -0
  366. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/metrics.py +0 -0
  367. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/names.py +0 -0
  368. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/sanitize.py +0 -0
  369. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/scope.py +0 -0
  370. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/sink.py +0 -0
  371. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/tracing.py +0 -0
  372. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/telemetry/types.py +0 -0
  373. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/token_budget.py +0 -0
  374. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/token_counter.py +0 -0
  375. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/services/update_checker.py +0 -0
  376. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/__init__.py +0 -0
  377. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/auto_trigger.py +0 -0
  378. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/__init__.py +0 -0
  379. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +0 -0
  380. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
  381. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
  382. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
  383. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
  384. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
  385. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
  386. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
  387. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
  388. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
  389. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
  390. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
  391. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
  392. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
  393. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
  394. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
  395. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
  396. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
  397. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/bundled/simplify.py +0 -0
  398. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/discovery.py +0 -0
  399. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/frontmatter.py +0 -0
  400. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/listing.py +0 -0
  401. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/loader.py +0 -0
  402. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/management.py +0 -0
  403. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/processor.py +0 -0
  404. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/renderer.py +0 -0
  405. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/settings.py +0 -0
  406. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/skill_definition.py +0 -0
  407. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/skills/skill_tool.py +0 -0
  408. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/state/__init__.py +0 -0
  409. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/state/app_state.py +0 -0
  410. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tasks/__init__.py +0 -0
  411. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tasks/notification_queue.py +0 -0
  412. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tasks/task_state.py +0 -0
  413. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tasks/task_tools.py +0 -0
  414. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/__init__.py +0 -0
  415. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/base.py +0 -0
  416. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/__init__.py +0 -0
  417. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/argv_safety.py +0 -0
  418. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/bash_tool.py +0 -0
  419. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/command_parser.py +0 -0
  420. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/mode_validation.py +0 -0
  421. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/path_validation.py +0 -0
  422. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/permissions.py +0 -0
  423. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/readonly_commands.py +0 -0
  424. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/rule_matching.py +0 -0
  425. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/bash/safety_checks.py +0 -0
  426. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/__init__.py +0 -0
  427. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
  428. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
  429. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +0 -0
  430. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
  431. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
  432. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
  433. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
  434. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
  435. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
  436. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
  437. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
  438. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
  439. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
  440. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
  441. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
  442. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
  443. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
  444. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
  445. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
  446. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
  447. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
  448. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
  449. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
  450. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
  451. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
  452. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
  453. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
  454. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
  455. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
  456. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/public_errors.py +0 -0
  457. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/result_contract.py +0 -0
  458. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
  459. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
  460. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack.py +0 -0
  461. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +0 -0
  462. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
  463. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
  464. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
  465. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +0 -0
  466. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
  467. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
  468. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_association_property_specs.json +0 -0
  469. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +0 -0
  470. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +0 -0
  471. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +0 -0
  472. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
  473. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
  474. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
  475. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
  476. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
  477. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
  478. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
  479. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
  480. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
  481. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
  482. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
  483. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
  484. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
  485. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
  486. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
  487. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
  488. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/runtime.py +0 -0
  489. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
  490. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
  491. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
  492. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/base_api.py +0 -0
  493. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/registry.py +0 -0
  494. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/cloud/types.py +0 -0
  495. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/edit_file.py +0 -0
  496. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/glob.py +0 -0
  497. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/grep.py +0 -0
  498. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/list_files.py +0 -0
  499. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/path_safety.py +0 -0
  500. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/read_file.py +0 -0
  501. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/result_storage.py +0 -0
  502. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/tool_executor.py +0 -0
  503. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/web_fetch.py +0 -0
  504. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/tools/write_file.py +0 -0
  505. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/types/__init__.py +0 -0
  506. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/types/permissions.py +0 -0
  507. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/types/skill_source.py +0 -0
  508. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/__init__.py +0 -0
  509. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/banner.py +0 -0
  510. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/__init__.py +0 -0
  511. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/candidate_selection.py +0 -0
  512. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/dialog.py +0 -0
  513. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/divider.py +0 -0
  514. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
  515. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/parallel_tabs.py +0 -0
  516. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/progress_bar.py +0 -0
  517. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/search_box.py +0 -0
  518. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/select.py +0 -0
  519. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/status_icon.py +0 -0
  520. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/components/tabs.py +0 -0
  521. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/__init__.py +0 -0
  522. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/in_place_render.py +0 -0
  523. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/input_history.py +0 -0
  524. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/key_event.py +0 -0
  525. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/prompt_input.py +0 -0
  526. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input.py +0 -0
  527. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/raw_input_win.py +0 -0
  528. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/core/screen.py +0 -0
  529. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/diagram_rendering.py +0 -0
  530. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/__init__.py +0 -0
  531. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/global_search.py +0 -0
  532. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/history_search.py +0 -0
  533. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
  534. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory.py +0 -0
  535. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
  536. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/model_picker.py +0 -0
  537. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/quick_open.py +0 -0
  538. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
  539. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
  540. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/keybindings/__init__.py +0 -0
  541. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/keybindings/manager.py +0 -0
  542. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/pipeline_display_replay.py +0 -0
  543. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/pipeline_styles.py +0 -0
  544. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/spinner.py +0 -0
  545. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/stream_accumulator.py +0 -0
  546. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/__init__.py +0 -0
  547. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/aggregator.py +0 -0
  548. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/command_provider.py +0 -0
  549. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
  550. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/file_provider.py +0 -0
  551. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
  552. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
  553. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
  554. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/suggestions/types.py +0 -0
  555. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/ui/transcript_view.py +0 -0
  556. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/__init__.py +0 -0
  557. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/async_lifecycle.py +0 -0
  558. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/background_housekeeping.py +0 -0
  559. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/cleanup.py +0 -0
  560. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/console.py +0 -0
  561. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/file_security.py +0 -0
  562. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/__init__.py +0 -0
  563. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/clipboard.py +0 -0
  564. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/format_detect.py +0 -0
  565. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/pasted_content.py +0 -0
  566. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/processor.py +0 -0
  567. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/resizer.py +0 -0
  568. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/image/store.py +0 -0
  569. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/json_utils.py +0 -0
  570. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/path_components.py +0 -0
  571. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/path_locks.py +0 -0
  572. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/platform.py +0 -0
  573. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/project_paths.py +0 -0
  574. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/public_errors.py +0 -0
  575. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/public_paths.py +0 -0
  576. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/signals.py +0 -0
  577. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/state_io.py +0 -0
  578. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/tool_input_parser.py +0 -0
  579. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/tool_result_redaction.py +0 -0
  580. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/utils/windows_paths.py +0 -0
  581. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/__init__.py +0 -0
  582. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/cleanup.py +0 -0
  583. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/commands.py +0 -0
  584. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/diagram_cache.py +0 -0
  585. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/diagram_optimizer.py +0 -0
  586. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/diagrams.py +0 -0
  587. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/files.py +0 -0
  588. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/images.py +0 -0
  589. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/mcp_settings.py +0 -0
  590. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/memory.py +0 -0
  591. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/permissions.py +0 -0
  592. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/pipeline.py +0 -0
  593. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/pipeline_actions.py +0 -0
  594. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/pipeline_prerequisites.py +0 -0
  595. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/pipeline_transcript.py +0 -0
  596. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/security.py +0 -0
  597. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/session_titler.py +0 -0
  598. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/shell.py +0 -0
  599. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/skills.py +0 -0
  600. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
  601. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
  602. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
  603. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
  604. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
  605. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/blocking.js +0 -0
  606. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/composer.js +0 -0
  607. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
  608. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/pipeline.js +0 -0
  609. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/components/tool_cards.js +0 -0
  610. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/i18n.js +0 -0
  611. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/mermaid_render.js +0 -0
  612. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/token_transport.js +0 -0
  613. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
  614. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
  615. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
  616. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
  617. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/static/js/vendor/token-crypto.js +0 -0
  618. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code/web/token_transport.py +0 -0
  619. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code.egg-info/dependency_links.txt +0 -0
  620. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code.egg-info/entry_points.txt +0 -0
  621. {iac_code-0.11.3 → iac_code-0.11.4}/src/iac_code.egg-info/requires.txt +0 -0
  622. {iac_code-0.11.3 → 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.3
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
@@ -103,8 +103,11 @@ def web(
103
103
  """Run iac-code as a local Web app."""
104
104
  from iac_code.services.telemetry import bootstrap_telemetry, graceful_shutdown
105
105
  from iac_code.web.server import run_web_server
106
+ from iac_code.web.settings import developer_settings
106
107
 
107
- 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)
108
111
  try:
109
112
  run_web_server(
110
113
  host=host,
@@ -432,6 +435,7 @@ def main(
432
435
  raise typer.Exit(1)
433
436
 
434
437
  setup_logging(session_id=repl.session_id, debug=debug)
438
+ repl.log_session_started()
435
439
 
436
440
  from iac_code.services.telemetry import add_metric, bootstrap_telemetry, graceful_shutdown, log_event
437
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
 
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.3\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"
@@ -4716,7 +4716,7 @@ msgstr "Alibaba Cloud Bailian Token Plan"
4716
4716
 
4717
4717
  #: src/iac_code/providers/registry.py
4718
4718
  msgid "OpenAI Compatible"
4719
- msgstr "OpenAPI-kompatibel"
4719
+ msgstr "OpenAI-kompatibel"
4720
4720
 
4721
4721
  #: src/iac_code/providers/registry.py
4722
4722
  msgid "Kimi (China)"
@@ -12752,3 +12752,4 @@ msgstr "Bash zulassen?"
12752
12752
  #~ msgstr ""
12753
12753
  #~ "Tool-Aufruf genehmigen: {tool}\n"
12754
12754
  #~ "Eingabezusammenfassung: {summary}"
12755
+
@@ -3738,6 +3738,27 @@ msgstr ""
3738
3738
  msgid "Install infraguard"
3739
3739
  msgstr "infraguard installieren"
3740
3740
 
3741
+ #: src/iac_code/web/static/js/components/workspace.js
3742
+ msgid "Help improve iac-code"
3743
+ msgstr "iac-code verbessern helfen"
3744
+
3745
+ #: src/iac_code/web/static/js/components/workspace.js
3746
+ msgid "Share full conversation content"
3747
+ msgstr "Vollständigen Gesprächsinhalt teilen"
3748
+
3749
+ #: src/iac_code/web/static/js/components/workspace.js
3750
+ msgid ""
3751
+ "When enabled, iac-code attaches full conversation content (your prompts, "
3752
+ "model responses, and tool inputs and outputs) to the telemetry it sends "
3753
+ "to iac-code's default backend or an explicitly configured OTLP endpoint, "
3754
+ "to help diagnose issues and improve the product."
3755
+ msgstr ""
3756
+ "Wenn aktiviert, hängt iac-code den vollständigen Gesprächsinhalt (deine "
3757
+ "Eingaben, Modellantworten sowie Werkzeug-Ein- und -Ausgaben) an die "
3758
+ "Telemetrie an, die es an das Standard-Backend von iac-code oder an einen "
3759
+ "explizit konfigurierten OTLP-Endpunkt sendet, um bei der Diagnose von "
3760
+ "Problemen und der Verbesserung des Produkts zu helfen."
3761
+
3741
3762
  #: src/iac_code/web/static/js/components/workspace.js
3742
3763
  msgid "New session defaults"
3743
3764
  msgstr "Standardwerte für neue Sitzungen"
@@ -3837,12 +3858,14 @@ msgid "Install failed: {error}"
3837
3858
  msgstr "Installation fehlgeschlagen: {error}"
3838
3859
 
3839
3860
  #: src/iac_code/web/static/js/components/workspace.js
3840
- msgid "Failed tool calls"
3841
- msgstr "Fehlgeschlagene Tool-Aufrufe"
3861
+ msgid "Debug options"
3862
+ msgstr "Debug-Optionen"
3842
3863
 
3843
3864
  #: src/iac_code/web/static/js/components/workspace.js
3844
- msgid "Control how failed tool calls are shown in the transcript."
3845
- msgstr "Steuert, wie fehlgeschlagene Tool-Aufrufe im Transkript angezeigt werden."
3865
+ msgid "Control local debug highlighting and backend log verbosity."
3866
+ msgstr ""
3867
+ "Steuert die lokale Debug-Hervorhebung und die Ausführlichkeit der "
3868
+ "Backend-Protokolle."
3846
3869
 
3847
3870
  #: src/iac_code/web/static/js/components/workspace.js
3848
3871
  msgid "Highlight failed tool calls in red"
@@ -3856,6 +3879,18 @@ msgstr ""
3856
3879
  "Wenn aktiviert, werden fehlgeschlagene Tool-Aufrufe rot dargestellt. Wenn"
3857
3880
  " deaktiviert, sehen sie aus wie jeder andere Tool-Aufruf."
3858
3881
 
3882
+ #: src/iac_code/web/static/js/components/workspace.js
3883
+ msgid "Enable debug logging"
3884
+ msgstr "Debug-Protokollierung aktivieren"
3885
+
3886
+ #: src/iac_code/web/static/js/components/workspace.js
3887
+ msgid ""
3888
+ "When enabled, the backend writes DEBUG-level logs to the log file. Off by"
3889
+ " default."
3890
+ msgstr ""
3891
+ "Wenn aktiviert, schreibt das Backend Protokolle der Stufe DEBUG in die "
3892
+ "Protokolldatei. Standardmäßig deaktiviert."
3893
+
3859
3894
  #: src/iac_code/web/static/js/components/workspace.js
3860
3895
  msgid "Restart service"
3861
3896
  msgstr "Dienst neu starten"
@@ -3909,3 +3944,19 @@ msgstr ""
3909
3944
  #~ "Tab und wird nicht an den Server"
3910
3945
  #~ " gesendet."
3911
3946
 
3947
+ #~ msgid "Failed tool calls"
3948
+ #~ msgstr "Fehlgeschlagene Tool-Aufrufe"
3949
+
3950
+ #~ msgid "Control how failed tool calls are shown in the transcript."
3951
+ #~ msgstr ""
3952
+ #~ "Steuert, wie fehlgeschlagene Tool-Aufrufe "
3953
+ #~ "im Transkript angezeigt werden."
3954
+
3955
+ #~ msgid "Debug logging"
3956
+ #~ msgstr "Debug-Protokollierung"
3957
+
3958
+ #~ msgid "Control the verbosity of backend logs written to the log file."
3959
+ #~ msgstr ""
3960
+ #~ "Steuert die Ausführlichkeit der in die"
3961
+ #~ " Protokolldatei geschriebenen Backend-Protokolle."
3962
+
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.3\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"
@@ -4681,7 +4681,7 @@ msgstr "Alibaba Cloud Bailian Token Plan"
4681
4681
 
4682
4682
  #: src/iac_code/providers/registry.py
4683
4683
  msgid "OpenAI Compatible"
4684
- msgstr "Compatible con OpenAPI"
4684
+ msgstr "Compatible con OpenAI"
4685
4685
 
4686
4686
  #: src/iac_code/providers/registry.py
4687
4687
  msgid "Kimi (China)"
@@ -12667,3 +12667,4 @@ msgstr "¿Permitir Bash?"
12667
12667
  #~ msgstr ""
12668
12668
  #~ "Aprobar llamada de herramienta: {tool}\n"
12669
12669
  #~ "Resumen de entrada: {summary}"
12670
+
@@ -3726,6 +3726,28 @@ msgstr ""
3726
3726
  msgid "Install infraguard"
3727
3727
  msgstr "Instalar infraguard"
3728
3728
 
3729
+ #: src/iac_code/web/static/js/components/workspace.js
3730
+ msgid "Help improve iac-code"
3731
+ msgstr "Ayuda a mejorar iac-code"
3732
+
3733
+ #: src/iac_code/web/static/js/components/workspace.js
3734
+ msgid "Share full conversation content"
3735
+ msgstr "Compartir el contenido completo de la conversación"
3736
+
3737
+ #: src/iac_code/web/static/js/components/workspace.js
3738
+ msgid ""
3739
+ "When enabled, iac-code attaches full conversation content (your prompts, "
3740
+ "model responses, and tool inputs and outputs) to the telemetry it sends "
3741
+ "to iac-code's default backend or an explicitly configured OTLP endpoint, "
3742
+ "to help diagnose issues and improve the product."
3743
+ msgstr ""
3744
+ "Cuando se activa, iac-code adjunta el contenido completo de la "
3745
+ "conversación (tus indicaciones, las respuestas del modelo y las entradas "
3746
+ "y salidas de las herramientas) a la telemetría que envía al backend "
3747
+ "predeterminado de iac-code o a un endpoint OTLP configurado "
3748
+ "explícitamente, para ayudar a diagnosticar problemas y mejorar el "
3749
+ "producto."
3750
+
3729
3751
  #: src/iac_code/web/static/js/components/workspace.js
3730
3752
  msgid "New session defaults"
3731
3753
  msgstr "Valores predeterminados de nueva sesión"
@@ -3822,14 +3844,14 @@ msgid "Install failed: {error}"
3822
3844
  msgstr "Error en la instalación: {error}"
3823
3845
 
3824
3846
  #: src/iac_code/web/static/js/components/workspace.js
3825
- msgid "Failed tool calls"
3826
- msgstr "Llamadas a herramientas fallidas"
3847
+ msgid "Debug options"
3848
+ msgstr "Opciones de depuración"
3827
3849
 
3828
3850
  #: src/iac_code/web/static/js/components/workspace.js
3829
- msgid "Control how failed tool calls are shown in the transcript."
3851
+ msgid "Control local debug highlighting and backend log verbosity."
3830
3852
  msgstr ""
3831
- "Controla cómo se muestran en la transcripción las llamadas a herramientas"
3832
- " fallidas."
3853
+ "Controla el resaltado de depuración local y el nivel de detalle de los "
3854
+ "registros del backend."
3833
3855
 
3834
3856
  #: src/iac_code/web/static/js/components/workspace.js
3835
3857
  msgid "Highlight failed tool calls in red"
@@ -3844,6 +3866,18 @@ msgstr ""
3844
3866
  "rojo. Cuando se desactiva, se ven como cualquier otra llamada a "
3845
3867
  "herramientas."
3846
3868
 
3869
+ #: src/iac_code/web/static/js/components/workspace.js
3870
+ msgid "Enable debug logging"
3871
+ msgstr "Habilitar registro de depuración"
3872
+
3873
+ #: src/iac_code/web/static/js/components/workspace.js
3874
+ msgid ""
3875
+ "When enabled, the backend writes DEBUG-level logs to the log file. Off by"
3876
+ " default."
3877
+ msgstr ""
3878
+ "Cuando está habilitado, el backend escribe registros de nivel DEBUG en el"
3879
+ " archivo de registro. Desactivado de forma predeterminada."
3880
+
3847
3881
  #: src/iac_code/web/static/js/components/workspace.js
3848
3882
  msgid "Restart service"
3849
3883
  msgstr "Reiniciar servicio"
@@ -3896,3 +3930,21 @@ msgstr ""
3896
3930
  #~ "despliegue. Permanece en esta pestaña y"
3897
3931
  #~ " no se envía al servidor."
3898
3932
 
3933
+ #~ msgid "Failed tool calls"
3934
+ #~ msgstr "Llamadas a herramientas fallidas"
3935
+
3936
+ #~ msgid "Control how failed tool calls are shown in the transcript."
3937
+ #~ msgstr ""
3938
+ #~ "Controla cómo se muestran en la "
3939
+ #~ "transcripción las llamadas a herramientas "
3940
+ #~ "fallidas."
3941
+
3942
+ #~ msgid "Debug logging"
3943
+ #~ msgstr "Registro de depuración"
3944
+
3945
+ #~ msgid "Control the verbosity of backend logs written to the log file."
3946
+ #~ msgstr ""
3947
+ #~ "Controla el nivel de detalle de "
3948
+ #~ "los registros del backend escritos en"
3949
+ #~ " el archivo de registro."
3950
+
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.3\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"
@@ -4698,7 +4698,7 @@ msgstr "Alibaba Cloud Bailian Token Plan"
4698
4698
 
4699
4699
  #: src/iac_code/providers/registry.py
4700
4700
  msgid "OpenAI Compatible"
4701
- msgstr "Compatible OpenAPI"
4701
+ msgstr "Compatible OpenAI"
4702
4702
 
4703
4703
  #: src/iac_code/providers/registry.py
4704
4704
  msgid "Kimi (China)"
@@ -12732,3 +12732,4 @@ msgstr "Autoriser Bash ?"
12732
12732
  #~ msgstr ""
12733
12733
  #~ "Approuver l'appel d'outil : {tool}\n"
12734
12734
  #~ "Résumé de l'entrée : {summary}"
12735
+