iac-code 0.11.1__tar.gz → 0.11.2__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 (600) hide show
  1. {iac_code-0.11.1 → iac_code-0.11.2}/PKG-INFO +1 -1
  2. iac_code-0.11.2/src/iac_code/__init__.py +2 -0
  3. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/dispatcher.py +13 -1
  4. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/config.py +1 -1
  5. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
  6. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +28 -1
  7. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
  8. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +28 -1
  9. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
  10. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +27 -1
  11. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  12. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +27 -1
  13. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
  14. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +27 -1
  15. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
  16. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +23 -1
  17. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/handoff.py +14 -1
  18. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/anthropic_provider.py +6 -1
  19. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/dashscope_provider.py +2 -2
  20. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/deepseek_provider.py +5 -1
  21. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/manager.py +5 -1
  22. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/registry.py +7 -2
  23. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/thinking.py +78 -13
  24. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/context_manager.py +5 -2
  25. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/constants.py +3 -0
  26. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +25 -0
  27. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code.egg-info/PKG-INFO +1 -1
  28. iac_code-0.11.1/src/iac_code/__init__.py +0 -2
  29. {iac_code-0.11.1 → iac_code-0.11.2}/LICENSE +0 -0
  30. {iac_code-0.11.1 → iac_code-0.11.2}/MANIFEST.in +0 -0
  31. {iac_code-0.11.1 → iac_code-0.11.2}/README.md +0 -0
  32. {iac_code-0.11.1 → iac_code-0.11.2}/pyproject.toml +0 -0
  33. {iac_code-0.11.1 → iac_code-0.11.2}/setup.cfg +0 -0
  34. {iac_code-0.11.1 → iac_code-0.11.2}/setup.py +0 -0
  35. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/__init__.py +0 -0
  36. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/agent_card.py +0 -0
  37. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/app.py +0 -0
  38. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/artifacts.py +0 -0
  39. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/backup.py +0 -0
  40. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/client.py +0 -0
  41. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/events.py +0 -0
  42. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/executor.py +0 -0
  43. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/exposure.py +0 -0
  44. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
  45. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/metadata_redaction.py +0 -0
  46. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/metrics.py +0 -0
  47. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/parts.py +0 -0
  48. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/persistence.py +0 -0
  49. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
  50. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_events.py +0 -0
  51. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_executor.py +0 -0
  52. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
  53. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_journal.py +0 -0
  54. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_outbound.py +0 -0
  55. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_paths.py +0 -0
  56. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_performance.py +0 -0
  57. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_recovery.py +0 -0
  58. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_snapshot.py +0 -0
  59. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_stream.py +0 -0
  60. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
  61. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/projection.py +0 -0
  62. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/push.py +0 -0
  63. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/push_queue.py +0 -0
  64. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/push_secrets.py +0 -0
  65. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/push_worker.py +0 -0
  66. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/router.py +0 -0
  67. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/runtime_overrides.py +0 -0
  68. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/runtime_registry.py +0 -0
  69. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/signing.py +0 -0
  70. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/task_store.py +0 -0
  71. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/thinking_metadata.py +0 -0
  72. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transport.py +0 -0
  73. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/__init__.py +0 -0
  74. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/base.py +0 -0
  75. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/grpc.py +0 -0
  76. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
  77. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/http.py +0 -0
  78. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/redis_streams.py +0 -0
  79. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/stdio.py +0 -0
  80. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/unix.py +0 -0
  81. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/transports/websocket.py +0 -0
  82. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/a2a/types.py +0 -0
  83. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/__init__.py +0 -0
  84. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/convert.py +0 -0
  85. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/http_sse.py +0 -0
  86. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/mcp.py +0 -0
  87. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/metrics.py +0 -0
  88. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/runner.py +0 -0
  89. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/server.py +0 -0
  90. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/session.py +0 -0
  91. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/slash_registry.py +0 -0
  92. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/state.py +0 -0
  93. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/tools.py +0 -0
  94. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/types.py +0 -0
  95. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/acp/version.py +0 -0
  96. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/__init__.py +0 -0
  97. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/agent_loop.py +0 -0
  98. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/agent_tool.py +0 -0
  99. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/agent_types.py +0 -0
  100. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/message.py +0 -0
  101. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/agent/system_prompt.py +0 -0
  102. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/__init__.py +0 -0
  103. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/headless.py +0 -0
  104. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/install_git_bash.py +0 -0
  105. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/main.py +0 -0
  106. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/output_formats.py +0 -0
  107. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/process_events.py +0 -0
  108. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/process_mode.py +0 -0
  109. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/process_protocol.py +0 -0
  110. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/cli/update.py +0 -0
  111. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/__init__.py +0 -0
  112. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/auth.py +0 -0
  113. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/clear.py +0 -0
  114. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/compact.py +0 -0
  115. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/debug.py +0 -0
  116. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/effort.py +0 -0
  117. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/exit.py +0 -0
  118. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/help.py +0 -0
  119. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/mcp.py +0 -0
  120. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/memory.py +0 -0
  121. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/model.py +0 -0
  122. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/prompt.py +0 -0
  123. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/registry.py +0 -0
  124. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/rename.py +0 -0
  125. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/resume.py +0 -0
  126. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/skills.py +0 -0
  127. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/status.py +0 -0
  128. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/tasks.py +0 -0
  129. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/commands/thinking_enabled.py +0 -0
  130. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/__init__.py +0 -0
  131. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/html_extractor.py +0 -0
  132. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  133. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +0 -0
  134. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  135. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +0 -0
  136. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  137. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +0 -0
  138. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  139. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +0 -0
  140. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  141. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +0 -0
  142. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  143. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +0 -0
  144. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/__init__.py +0 -0
  145. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/cli.py +0 -0
  146. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/client.py +0 -0
  147. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/config.py +0 -0
  148. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/env_expansion.py +0 -0
  149. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/errors.py +0 -0
  150. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/manager.py +0 -0
  151. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/oauth.py +0 -0
  152. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/output.py +0 -0
  153. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/progress.py +0 -0
  154. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/prompt_dispatch.py +0 -0
  155. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/prompts.py +0 -0
  156. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/redaction.py +0 -0
  157. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/skills.py +0 -0
  158. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/storage.py +0 -0
  159. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/tools.py +0 -0
  160. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/mcp/types.py +0 -0
  161. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/memory/__init__.py +0 -0
  162. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/memory/memory_manager.py +0 -0
  163. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/memory/memory_tools.py +0 -0
  164. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/memory/project_memory.py +0 -0
  165. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/memory/recall.py +0 -0
  166. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/__init__.py +0 -0
  167. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/config.py +0 -0
  168. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/constants.py +0 -0
  169. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/display_names.py +0 -0
  170. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/__init__.py +0 -0
  171. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
  172. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
  173. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
  174. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
  175. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
  176. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
  177. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
  178. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
  179. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
  180. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
  181. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
  182. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
  183. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
  184. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/cleanup.py +0 -0
  185. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
  186. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/completion_guard_state.py +0 -0
  187. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/context.py +0 -0
  188. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/display_replay.py +0 -0
  189. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/events.py +0 -0
  190. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/interrupt.py +0 -0
  191. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/loader.py +0 -0
  192. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/observability.py +0 -0
  193. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/pipeline_runner.py +0 -0
  194. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
  195. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
  196. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/public_errors.py +0 -0
  197. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/recovery.py +0 -0
  198. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
  199. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/session.py +0 -0
  200. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
  201. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/state_machine.py +0 -0
  202. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/step_executor.py +0 -0
  203. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/step_spec.py +0 -0
  204. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
  205. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
  206. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/types.py +0 -0
  207. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
  208. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/engine/user_input.py +0 -0
  209. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
  210. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/pipeline.yaml +0 -0
  211. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
  212. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
  213. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
  214. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
  215. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
  216. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
  217. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +0 -0
  218. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
  219. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
  220. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
  221. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
  222. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
  223. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
  224. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
  225. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
  226. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
  227. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
  228. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
  229. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
  230. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +0 -0
  231. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
  232. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +0 -0
  233. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
  234. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
  235. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
  236. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
  237. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
  238. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
  239. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
  240. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
  241. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
  242. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
  243. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
  244. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +0 -0
  245. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
  246. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
  247. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
  248. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
  249. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
  250. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
  251. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
  252. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
  253. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
  254. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
  255. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
  256. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
  257. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
  258. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
  259. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
  260. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +0 -0
  261. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
  262. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
  263. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
  264. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
  265. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
  266. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
  267. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
  268. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
  269. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
  270. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
  271. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
  272. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
  273. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
  274. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +0 -0
  275. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
  276. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
  277. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/__init__.py +0 -0
  278. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/azure_openai_provider.py +0 -0
  279. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/base.py +0 -0
  280. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/gemini_provider.py +0 -0
  281. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/kimi_provider.py +0 -0
  282. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/lmstudio_provider.py +0 -0
  283. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/minimax_provider.py +0 -0
  284. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/modelscope_provider.py +0 -0
  285. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/ollama_provider.py +0 -0
  286. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/openai_provider.py +0 -0
  287. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/openrouter_provider.py +0 -0
  288. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/request_logging.py +0 -0
  289. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/request_policy.py +0 -0
  290. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/retry.py +0 -0
  291. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/siliconflow_provider.py +0 -0
  292. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/stream_watchdog.py +0 -0
  293. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/volcengine_provider.py +0 -0
  294. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/providers/zhipu_provider.py +0 -0
  295. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/__init__.py +0 -0
  296. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/agent_factory.py +0 -0
  297. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/capabilities/__init__.py +0 -0
  298. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/capabilities/auto_detect.py +0 -0
  299. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/capabilities/multimodal.py +0 -0
  300. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/cloud_credentials.py +0 -0
  301. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/__init__.py +0 -0
  302. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/audit.py +0 -0
  303. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/loader.py +0 -0
  304. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/pipeline.py +0 -0
  305. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/rule_scope.py +0 -0
  306. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/storage.py +0 -0
  307. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/permissions/trusted_roots.py +0 -0
  308. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/providers/__init__.py +0 -0
  309. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/providers/aliyun.py +0 -0
  310. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/providers/aliyun_oauth.py +0 -0
  311. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/qwenpaw_source.py +0 -0
  312. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_backup.py +0 -0
  313. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_backup_state.py +0 -0
  314. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_index.py +0 -0
  315. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_layout.py +0 -0
  316. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_metadata.py +0 -0
  317. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_resolver.py +0 -0
  318. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_storage.py +0 -0
  319. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/session_usage.py +0 -0
  320. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/__init__.py +0 -0
  321. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/attributes.py +0 -0
  322. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/client.py +0 -0
  323. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/config.py +0 -0
  324. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/content_serializer.py +0 -0
  325. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/events.py +0 -0
  326. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/fallback.py +0 -0
  327. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/identity.py +0 -0
  328. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/metrics.py +0 -0
  329. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/names.py +0 -0
  330. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/sanitize.py +0 -0
  331. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/scope.py +0 -0
  332. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/sink.py +0 -0
  333. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/tracing.py +0 -0
  334. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/telemetry/types.py +0 -0
  335. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/token_budget.py +0 -0
  336. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/token_counter.py +0 -0
  337. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/services/update_checker.py +0 -0
  338. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/__init__.py +0 -0
  339. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/auto_trigger.py +0 -0
  340. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/__init__.py +0 -0
  341. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +0 -0
  342. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
  343. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
  344. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
  345. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
  346. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
  347. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
  348. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
  349. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
  350. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
  351. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
  352. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
  353. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
  354. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
  355. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
  356. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
  357. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
  358. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
  359. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/bundled/simplify.py +0 -0
  360. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/discovery.py +0 -0
  361. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/frontmatter.py +0 -0
  362. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/listing.py +0 -0
  363. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/loader.py +0 -0
  364. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/management.py +0 -0
  365. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/processor.py +0 -0
  366. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/renderer.py +0 -0
  367. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/settings.py +0 -0
  368. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/skill_definition.py +0 -0
  369. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/skills/skill_tool.py +0 -0
  370. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/state/__init__.py +0 -0
  371. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/state/app_state.py +0 -0
  372. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tasks/__init__.py +0 -0
  373. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tasks/notification_queue.py +0 -0
  374. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tasks/task_state.py +0 -0
  375. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tasks/task_tools.py +0 -0
  376. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/__init__.py +0 -0
  377. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/base.py +0 -0
  378. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/__init__.py +0 -0
  379. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/argv_safety.py +0 -0
  380. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/bash_tool.py +0 -0
  381. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/command_parser.py +0 -0
  382. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/mode_validation.py +0 -0
  383. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/path_validation.py +0 -0
  384. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/permissions.py +0 -0
  385. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/readonly_commands.py +0 -0
  386. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/rule_matching.py +0 -0
  387. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/bash/safety_checks.py +0 -0
  388. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/__init__.py +0 -0
  389. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
  390. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
  391. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +0 -0
  392. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
  393. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
  394. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
  395. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
  396. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
  397. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
  398. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
  399. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
  400. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
  401. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
  402. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
  403. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
  404. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
  405. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
  406. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
  407. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
  408. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
  409. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
  410. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
  411. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
  412. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
  413. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
  414. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
  415. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
  416. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
  417. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
  418. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/public_errors.py +0 -0
  419. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/result_contract.py +0 -0
  420. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
  421. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
  422. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_stack.py +0 -0
  423. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +0 -0
  424. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
  425. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
  426. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
  427. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
  428. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
  429. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_association_property_specs.json +0 -0
  430. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +0 -0
  431. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +0 -0
  432. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +0 -0
  433. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
  434. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
  435. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
  436. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
  437. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
  438. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
  439. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
  440. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
  441. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
  442. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
  443. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
  444. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
  445. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
  446. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
  447. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
  448. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
  449. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/runtime.py +0 -0
  450. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
  451. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
  452. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
  453. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/base_api.py +0 -0
  454. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/base_stack.py +0 -0
  455. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/registry.py +0 -0
  456. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/cloud/types.py +0 -0
  457. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/edit_file.py +0 -0
  458. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/glob.py +0 -0
  459. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/grep.py +0 -0
  460. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/list_files.py +0 -0
  461. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/path_safety.py +0 -0
  462. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/read_file.py +0 -0
  463. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/result_storage.py +0 -0
  464. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/tool_executor.py +0 -0
  465. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/web_fetch.py +0 -0
  466. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/tools/write_file.py +0 -0
  467. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/types/__init__.py +0 -0
  468. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/types/permissions.py +0 -0
  469. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/types/skill_source.py +0 -0
  470. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/types/stream_events.py +0 -0
  471. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/__init__.py +0 -0
  472. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/banner.py +0 -0
  473. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/__init__.py +0 -0
  474. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/candidate_selection.py +0 -0
  475. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/dialog.py +0 -0
  476. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/divider.py +0 -0
  477. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
  478. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/parallel_tabs.py +0 -0
  479. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/progress_bar.py +0 -0
  480. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/search_box.py +0 -0
  481. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/select.py +0 -0
  482. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/status_icon.py +0 -0
  483. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/components/tabs.py +0 -0
  484. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/__init__.py +0 -0
  485. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/in_place_render.py +0 -0
  486. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/input_history.py +0 -0
  487. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/key_event.py +0 -0
  488. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/prompt_input.py +0 -0
  489. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/raw_input.py +0 -0
  490. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/raw_input_win.py +0 -0
  491. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/core/screen.py +0 -0
  492. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/diagram_rendering.py +0 -0
  493. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/__init__.py +0 -0
  494. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/global_search.py +0 -0
  495. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/history_search.py +0 -0
  496. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
  497. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/memory.py +0 -0
  498. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
  499. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/model_picker.py +0 -0
  500. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/quick_open.py +0 -0
  501. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
  502. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
  503. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/keybindings/__init__.py +0 -0
  504. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/keybindings/manager.py +0 -0
  505. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/pipeline_display_replay.py +0 -0
  506. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/pipeline_styles.py +0 -0
  507. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/renderer.py +0 -0
  508. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/repl.py +0 -0
  509. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/spinner.py +0 -0
  510. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/stream_accumulator.py +0 -0
  511. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/__init__.py +0 -0
  512. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/aggregator.py +0 -0
  513. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/command_provider.py +0 -0
  514. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
  515. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/file_provider.py +0 -0
  516. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
  517. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
  518. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
  519. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/suggestions/types.py +0 -0
  520. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/ui/transcript_view.py +0 -0
  521. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/__init__.py +0 -0
  522. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/async_lifecycle.py +0 -0
  523. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/background_housekeeping.py +0 -0
  524. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/cleanup.py +0 -0
  525. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/console.py +0 -0
  526. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/file_security.py +0 -0
  527. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/__init__.py +0 -0
  528. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/clipboard.py +0 -0
  529. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/format_detect.py +0 -0
  530. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/pasted_content.py +0 -0
  531. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/processor.py +0 -0
  532. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/resizer.py +0 -0
  533. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/image/store.py +0 -0
  534. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/json_utils.py +0 -0
  535. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/log.py +0 -0
  536. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/path_components.py +0 -0
  537. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/path_locks.py +0 -0
  538. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/platform.py +0 -0
  539. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/project_paths.py +0 -0
  540. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/public_errors.py +0 -0
  541. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/public_paths.py +0 -0
  542. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/signals.py +0 -0
  543. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/state_io.py +0 -0
  544. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/tool_input_parser.py +0 -0
  545. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/tool_result_redaction.py +0 -0
  546. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/utils/windows_paths.py +0 -0
  547. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/__init__.py +0 -0
  548. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/app.py +0 -0
  549. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/cleanup.py +0 -0
  550. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/commands.py +0 -0
  551. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/diagram_cache.py +0 -0
  552. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/diagram_optimizer.py +0 -0
  553. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/diagrams.py +0 -0
  554. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/events.py +0 -0
  555. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/files.py +0 -0
  556. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/images.py +0 -0
  557. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/mcp_settings.py +0 -0
  558. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/memory.py +0 -0
  559. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/outputs.py +0 -0
  560. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/permissions.py +0 -0
  561. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/pipeline.py +0 -0
  562. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/pipeline_actions.py +0 -0
  563. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/pipeline_prerequisites.py +0 -0
  564. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/pipeline_transcript.py +0 -0
  565. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/runtime.py +0 -0
  566. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/security.py +0 -0
  567. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/server.py +0 -0
  568. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/session_manager.py +0 -0
  569. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/session_titler.py +0 -0
  570. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/settings.py +0 -0
  571. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/shell.py +0 -0
  572. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/skills.py +0 -0
  573. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
  574. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
  575. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
  576. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
  577. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
  578. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/index.html +0 -0
  579. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/api.js +0 -0
  580. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/app.js +0 -0
  581. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/blocking.js +0 -0
  582. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/composer.js +0 -0
  583. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
  584. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/output_panel.js +0 -0
  585. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/pipeline.js +0 -0
  586. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/tool_cards.js +0 -0
  587. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/components/workspace.js +0 -0
  588. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/events.js +0 -0
  589. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/i18n.js +0 -0
  590. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/mermaid_render.js +0 -0
  591. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
  592. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
  593. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
  594. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
  595. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code/web/static/styles.css +0 -0
  596. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code.egg-info/SOURCES.txt +0 -0
  597. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code.egg-info/dependency_links.txt +0 -0
  598. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code.egg-info/entry_points.txt +0 -0
  599. {iac_code-0.11.1 → iac_code-0.11.2}/src/iac_code.egg-info/requires.txt +0 -0
  600. {iac_code-0.11.1 → iac_code-0.11.2}/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.1
3
+ Version: 0.11.2
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.2"
2
+ __release_date__ = "2026-08-03"
@@ -795,10 +795,22 @@ class IacCodeRequestHandler(DefaultRequestHandler):
795
795
  raise TaskNotFoundError(f"Task {params.id} not found")
796
796
  if isinstance(self.task_store, A2ATaskStore) and not await self.task_store.is_task_active(params.id):
797
797
  raise TaskNotFoundError(f"Task {params.id} is not active")
798
+ terminal_state_seen = False
798
799
  async for event in super().on_subscribe_to_task(params, context):
800
+ event_state = _task_event_state(event)
801
+ terminal_state_seen = terminal_state_seen or event_state in TERMINAL_TASK_STATES
799
802
  yield event
800
- if _task_event_state(event) in INTERRUPTED_TASK_STATES:
803
+ if event_state in INTERRUPTED_TASK_STATES:
801
804
  return
805
+ if terminal_state_seen:
806
+ return
807
+
808
+ # a2a-sdk 1.1 can close its subscriber queue after the producer finishes but
809
+ # before the consumer publishes the last update. Recover the persisted terminal
810
+ # snapshot so subscribers do not observe a silent, non-terminal stream ending.
811
+ final_task = await self.task_store.get(params.id, context)
812
+ if final_task is not None and final_task.status.state in TERMINAL_TASK_STATES:
813
+ yield final_task
802
814
 
803
815
  async def on_create_task_push_notification_config(
804
816
  self, params: TaskPushNotificationConfig, context
@@ -19,7 +19,7 @@ from iac_code.i18n import _
19
19
  from iac_code.utils.file_security import atomic_write_text, ensure_private_dir, ensure_private_file
20
20
 
21
21
  # Default LLM model used when no model is saved in settings
22
- DEFAULT_MODEL = "qwen3.7-max"
22
+ DEFAULT_MODEL = "qwen3.8-max"
23
23
 
24
24
  # Configuration directory
25
25
  _CONFIG_DIR_NAME = ".iac-code"
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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"
@@ -7693,6 +7693,33 @@ msgstr "Fn::GetAtt verweist auf nicht vorhandene Ressource {}."
7693
7693
  msgid "The resource logical name or Count instance name is invalid."
7694
7694
  msgstr "Der logische Ressourcenname oder Count-Instanzname ist ungültig."
7695
7695
 
7696
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7697
+ #, python-brace-format
7698
+ msgid ""
7699
+ "Fn::GetAtt for nested stack {} must use "
7700
+ "Outputs.<nested_stack_output_name>."
7701
+ msgstr ""
7702
+ "Fn::GetAtt für den verschachtelten Stack {} muss "
7703
+ "Outputs.<nested_stack_output_name> verwenden."
7704
+
7705
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7706
+ msgid ""
7707
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7708
+ "Outputs. prefix, followed by a non-empty output name."
7709
+ msgstr ""
7710
+ "ALIYUN::ROS::Stack stellt Ausgaben des untergeordneten Stacks nur über "
7711
+ "das feste Präfix Outputs. bereit, gefolgt von einem nicht leeren "
7712
+ "Ausgabenamen."
7713
+
7714
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7715
+ #, python-brace-format
7716
+ msgid ""
7717
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7718
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7719
+ msgstr ""
7720
+ "Ändern Sie das zweite Argument in Outputs.<nested_stack_output_name>, zum"
7721
+ " Beispiel Fn::GetAtt: [{}, Outputs.MyOutput]."
7722
+
7696
7723
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7697
7724
  #, python-brace-format
7698
7725
  msgid ""
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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"
@@ -7646,6 +7646,33 @@ msgstr "Fn::GetAtt referencias recurso inexistente {}."
7646
7646
  msgid "The resource logical name or Count instance name is invalid."
7647
7647
  msgstr "El nombre lógico de recurso o el nombre de instancia Count es inválido."
7648
7648
 
7649
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7650
+ #, python-brace-format
7651
+ msgid ""
7652
+ "Fn::GetAtt for nested stack {} must use "
7653
+ "Outputs.<nested_stack_output_name>."
7654
+ msgstr ""
7655
+ "Fn::GetAtt para la pila anidada {} debe usar "
7656
+ "Outputs.<nested_stack_output_name>."
7657
+
7658
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7659
+ msgid ""
7660
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7661
+ "Outputs. prefix, followed by a non-empty output name."
7662
+ msgstr ""
7663
+ "ALIYUN::ROS::Stack expone las salidas de la pila secundaria únicamente "
7664
+ "mediante el prefijo fijo Outputs., seguido de un nombre de salida no "
7665
+ "vacío."
7666
+
7667
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7668
+ #, python-brace-format
7669
+ msgid ""
7670
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7671
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7672
+ msgstr ""
7673
+ "Cambie el segundo argumento a Outputs.<nested_stack_output_name>, por "
7674
+ "ejemplo Fn::GetAtt: [{}, Outputs.MyOutput]."
7675
+
7649
7676
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7650
7677
  #, python-brace-format
7651
7678
  msgid ""
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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"
@@ -7684,6 +7684,32 @@ msgstr "Fn::GetAtt références ressource inexistante {}."
7684
7684
  msgid "The resource logical name or Count instance name is invalid."
7685
7685
  msgstr "Le nom logique de la ressource ou le nom d'instance Count est invalide."
7686
7686
 
7687
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7688
+ #, python-brace-format
7689
+ msgid ""
7690
+ "Fn::GetAtt for nested stack {} must use "
7691
+ "Outputs.<nested_stack_output_name>."
7692
+ msgstr ""
7693
+ "Fn::GetAtt pour la pile imbriquée {} doit utiliser "
7694
+ "Outputs.<nested_stack_output_name>."
7695
+
7696
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7697
+ msgid ""
7698
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7699
+ "Outputs. prefix, followed by a non-empty output name."
7700
+ msgstr ""
7701
+ "ALIYUN::ROS::Stack expose les sorties de la pile enfant uniquement via le"
7702
+ " préfixe fixe Outputs., suivi d’un nom de sortie non vide."
7703
+
7704
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7705
+ #, python-brace-format
7706
+ msgid ""
7707
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7708
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7709
+ msgstr ""
7710
+ "Remplacez le deuxième argument par Outputs.<nested_stack_output_name>, "
7711
+ "par exemple Fn::GetAtt: [{}, Outputs.MyOutput]."
7712
+
7687
7713
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7688
7714
  #, python-brace-format
7689
7715
  msgid ""
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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"
@@ -7156,6 +7156,32 @@ msgstr "Fn::GetAtt は、存在しないリソース {} を参照します。"
7156
7156
  msgid "The resource logical name or Count instance name is invalid."
7157
7157
  msgstr "リソース論理名またはCountインスタンス名は無効です。"
7158
7158
 
7159
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7160
+ #, python-brace-format
7161
+ msgid ""
7162
+ "Fn::GetAtt for nested stack {} must use "
7163
+ "Outputs.<nested_stack_output_name>."
7164
+ msgstr ""
7165
+ "ネストされたスタック {} の Fn::GetAtt では Outputs.<nested_stack_output_name> "
7166
+ "を使用する必要があります。"
7167
+
7168
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7169
+ msgid ""
7170
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7171
+ "Outputs. prefix, followed by a non-empty output name."
7172
+ msgstr ""
7173
+ "ALIYUN::ROS::Stack では、固定プレフィックス Outputs. "
7174
+ "の後に空でない出力名を指定した場合にのみ、子スタックの出力を参照できます。"
7175
+
7176
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7177
+ #, python-brace-format
7178
+ msgid ""
7179
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7180
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7181
+ msgstr ""
7182
+ "2 番目の引数を Outputs.<nested_stack_output_name> に変更してください。例: Fn::GetAtt: [{},"
7183
+ " Outputs.MyOutput]。"
7184
+
7159
7185
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7160
7186
  #, python-brace-format
7161
7187
  msgid ""
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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"
@@ -7571,6 +7571,32 @@ msgstr "Referências Fn::GetAtt recurso inexistente {}."
7571
7571
  msgid "The resource logical name or Count instance name is invalid."
7572
7572
  msgstr "O nome lógico do recurso ou o nome da instância Count é inválido."
7573
7573
 
7574
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7575
+ #, python-brace-format
7576
+ msgid ""
7577
+ "Fn::GetAtt for nested stack {} must use "
7578
+ "Outputs.<nested_stack_output_name>."
7579
+ msgstr ""
7580
+ "Fn::GetAtt para a pilha aninhada {} deve usar "
7581
+ "Outputs.<nested_stack_output_name>."
7582
+
7583
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7584
+ msgid ""
7585
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7586
+ "Outputs. prefix, followed by a non-empty output name."
7587
+ msgstr ""
7588
+ "ALIYUN::ROS::Stack expõe as saídas da pilha filha somente por meio do "
7589
+ "prefixo fixo Outputs., seguido de um nome de saída não vazio."
7590
+
7591
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7592
+ #, python-brace-format
7593
+ msgid ""
7594
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7595
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7596
+ msgstr ""
7597
+ "Altere o segundo argumento para Outputs.<nested_stack_output_name>, por "
7598
+ "exemplo, Fn::GetAtt: [{}, Outputs.MyOutput]."
7599
+
7574
7600
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7575
7601
  #, python-brace-format
7576
7602
  msgid ""
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: iac-code 0.11.1\n"
7
+ "Project-Id-Version: iac-code 0.11.2\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-04-02 00:00+0000\n"
@@ -6993,6 +6993,28 @@ msgstr "Fn::GetAtt 引用了不存在的资源 {}。"
6993
6993
  msgid "The resource logical name or Count instance name is invalid."
6994
6994
  msgstr "资源逻辑名或 Count 实例名无效。"
6995
6995
 
6996
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
6997
+ #, python-brace-format
6998
+ msgid ""
6999
+ "Fn::GetAtt for nested stack {} must use "
7000
+ "Outputs.<nested_stack_output_name>."
7001
+ msgstr "嵌套资源栈 {} 的 Fn::GetAtt 必须使用 Outputs.<nested_stack_output_name>。"
7002
+
7003
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7004
+ msgid ""
7005
+ "ALIYUN::ROS::Stack exposes child stack outputs only through the fixed "
7006
+ "Outputs. prefix, followed by a non-empty output name."
7007
+ msgstr "ALIYUN::ROS::Stack 只能通过固定的 Outputs. 前缀访问子资源栈输出,前缀后必须跟一个非空的输出名称。"
7008
+
7009
+ #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
7010
+ #, python-brace-format
7011
+ msgid ""
7012
+ "Change the second argument to Outputs.<nested_stack_output_name>, for "
7013
+ "example Fn::GetAtt: [{}, Outputs.MyOutput]."
7014
+ msgstr ""
7015
+ "请将第二个参数改为 Outputs.<nested_stack_output_name>,例如 Fn::GetAtt: [{}, "
7016
+ "Outputs.MyOutput]。"
7017
+
6996
7018
  #: src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py
6997
7019
  #, python-brace-format
6998
7020
  msgid ""
@@ -43,5 +43,18 @@ def build_handoff_summary(
43
43
  if missing:
44
44
  lines.extend(["", "Missing context fields:"])
45
45
  lines.extend(f"- {field_name}" for field_name in missing)
46
- lines.extend(["", "Use this context when answering follow-up questions after the pipeline handoff."])
46
+ lines.extend(
47
+ [
48
+ "",
49
+ "Safety requirements for normal chat:",
50
+ (
51
+ "- Before performing any operation that releases, deletes, or otherwise destroys a resource, "
52
+ "obtain a fresh, explicit confirmation from the user in normal chat. Any confirmation given "
53
+ "during the pipeline does not count."
54
+ ),
55
+ ("- Exception: pipeline-managed automatic cleanup may proceed without this additional confirmation."),
56
+ "",
57
+ "Use this context when answering follow-up questions after the pipeline handoff.",
58
+ ]
59
+ )
47
60
  return "\n".join(lines)
@@ -144,7 +144,12 @@ class AnthropicProvider(Provider):
144
144
 
145
145
  kwargs: dict[str, Any] = {}
146
146
  if self._thinking_disabled():
147
- if not spec.adaptive_always_on:
147
+ forbidden_disable_efforts = {item.value for item in spec.disable_forbidden_efforts}
148
+ if effort in forbidden_disable_efforts:
149
+ raise ValueError(
150
+ f"Anthropic thinking cannot be disabled for {self._model} at {effort} effort; use high or lower"
151
+ )
152
+ if spec.supports_disable:
148
153
  kwargs["thinking"] = {"type": "disabled"}
149
154
  elif not spec.adaptive_always_on and (effort is not None or self._thinking_forced()):
150
155
  kwargs["thinking"] = {"type": "adaptive"}
@@ -17,7 +17,7 @@ DASHSCOPE_TOKEN_PLAN_BASE_URL = "https://token-plan.cn-beijing.maas.aliyuncs.com
17
17
  # Prefix-matched against the model name. Extend when new models are added.
18
18
  # Ref: https://help.aliyun.com/zh/model-studio/context-cache
19
19
  _EXPLICIT_CACHE_MODEL_PREFIXES: tuple[str, ...] = (
20
- "qwen3.8-max-preview",
20
+ "qwen3.8-max",
21
21
  "qwen3.7-max",
22
22
  "qwen3.7-plus",
23
23
  "qwen3-coder-plus",
@@ -33,7 +33,7 @@ _EXPLICIT_CACHE_MODEL_PREFIXES: tuple[str, ...] = (
33
33
  # Models documented to accept extra_body.preserve_thinking. Keep this list
34
34
  # separate from thinking support: sending the parameter to other models fails.
35
35
  _PRESERVE_THINKING_MODEL_PREFIXES: tuple[str, ...] = (
36
- "qwen3.8-max-preview",
36
+ "qwen3.8-max",
37
37
  "qwen3.7-max",
38
38
  "qwen3.7-plus",
39
39
  "qwen3.6-max-preview",
@@ -14,7 +14,9 @@ class DeepSeekProvider(OpenAIProvider):
14
14
 
15
15
  DeepSeek uses ``reasoning_effort`` plus
16
16
  ``extra_body.thinking.type=enabled``; the registry's ``allowed_efforts``
17
- constrains the effort vocabulary to ``high`` / ``max`` for DeepSeek V4.
17
+ constrains the effort vocabulary to ``low`` / ``high`` / ``max`` for
18
+ DeepSeek V4. Non-thinking mode is selected with
19
+ ``extra_body.thinking.type=disabled``.
18
20
 
19
21
  Reasoning content is captured via ``reasoning_content`` in the stream
20
22
  and echoed back as ``reasoning_content`` on subsequent assistant
@@ -48,6 +50,8 @@ class DeepSeekProvider(OpenAIProvider):
48
50
  )
49
51
 
50
52
  def _build_thinking_kwargs(self) -> dict[str, Any]:
53
+ if self._thinking_disabled():
54
+ return {"extra_body": {"thinking": {"type": "disabled"}}}
51
55
  kwargs = super()._build_thinking_kwargs()
52
56
  if not kwargs:
53
57
  return {}
@@ -304,6 +304,7 @@ def _error_event_from_exception(exc: BaseException) -> ErrorEvent:
304
304
 
305
305
  MODEL_FALLBACK_MAP = {
306
306
  "claude-fable-5": "claude-opus-4-8",
307
+ "claude-opus-5": "claude-opus-4-8",
307
308
  "claude-opus-4-8": "claude-sonnet-5",
308
309
  "claude-opus-4-7": "claude-haiku-4-5-20251001",
309
310
  "claude-opus-4-6": "claude-haiku-4-5-20251001",
@@ -315,17 +316,20 @@ MODEL_FALLBACK_MAP = {
315
316
  "gpt-5.6-terra": "gpt-5.6-luna",
316
317
  "gpt-5.5": "gpt-5.4",
317
318
  "gpt-5.4": "gpt-5.4-mini",
318
- "qwen3.8-max-preview": "qwen3.7-plus",
319
+ "qwen3.8-max": "qwen3.7-plus",
320
+ "qwen3.8-max-preview": "qwen3.8-max",
319
321
  "qwen3.7-max": "qwen3.7-plus",
320
322
  "kimi/kimi-k3": "kimi-k2.7-code",
321
323
  "kimi-k3": "kimi-k2.7-code",
322
324
  "glm-5.2-fast-preview": "glm-5.2",
323
325
  "glm-5.2": "glm-5.1",
324
326
  "deepseek-v4-pro": "deepseek-v4-flash",
327
+ "deepseek-v4-flash-0731": "deepseek-v4-flash",
325
328
  }
326
329
 
327
330
  _MODEL_REFUSAL_FALLBACK_MAP = {
328
331
  "claude-fable-5": "claude-opus-4-8",
332
+ "claude-opus-5": "claude-opus-4-8",
329
333
  }
330
334
 
331
335
  _PROVIDER_MODEL_FALLBACK_MAP = {
@@ -45,7 +45,8 @@ PROVIDER_REGISTRY: dict[str, ProviderDescriptor] = {
45
45
  provider_class="iac_code.providers.dashscope_provider.DashScopeProvider",
46
46
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
47
47
  models=[
48
- ModelEntry("qwen3.7-max", is_default=True),
48
+ ModelEntry("qwen3.8-max", is_default=True, support_multimodal=True),
49
+ ModelEntry("qwen3.7-max"),
49
50
  ModelEntry("qwen3.7-plus", support_multimodal=True),
50
51
  ModelEntry("qwen3.6-plus", support_multimodal=True),
51
52
  ModelEntry("qwen3.6-flash", support_multimodal=True),
@@ -65,6 +66,7 @@ PROVIDER_REGISTRY: dict[str, ProviderDescriptor] = {
65
66
  ModelEntry("kimi-k2.6", support_multimodal=True),
66
67
  ModelEntry("kimi-k2.5", support_multimodal=True),
67
68
  ModelEntry("deepseek-v4-pro"),
69
+ ModelEntry("deepseek-v4-flash-0731"),
68
70
  ModelEntry("deepseek-v4-flash"),
69
71
  ModelEntry("glm-5.2-fast-preview"),
70
72
  ModelEntry("glm-5.2"),
@@ -81,12 +83,14 @@ PROVIDER_REGISTRY: dict[str, ProviderDescriptor] = {
81
83
  provider_class="iac_code.providers.dashscope_provider.DashScopeProvider",
82
84
  base_url="https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
83
85
  models=[
84
- ModelEntry("qwen3.8-max-preview", is_default=True, support_multimodal=True),
86
+ ModelEntry("qwen3.8-max", is_default=True, support_multimodal=True),
87
+ ModelEntry("qwen3.8-max-preview", support_multimodal=True),
85
88
  ModelEntry("qwen3.7-max"),
86
89
  ModelEntry("qwen3.7-plus", support_multimodal=True),
87
90
  ModelEntry("qwen3.6-plus", support_multimodal=True),
88
91
  ModelEntry("qwen3.6-flash", support_multimodal=True),
89
92
  ModelEntry("deepseek-v4-pro"),
93
+ ModelEntry("deepseek-v4-flash-0731"),
90
94
  ModelEntry("deepseek-v4-flash"),
91
95
  ModelEntry("deepseek-v3.2"),
92
96
  ModelEntry("glm-5.2"),
@@ -129,6 +133,7 @@ PROVIDER_REGISTRY: dict[str, ProviderDescriptor] = {
129
133
  base_url=None,
130
134
  models=[
131
135
  ModelEntry("claude-fable-5", is_default=True, support_multimodal=True),
136
+ ModelEntry("claude-opus-5", support_multimodal=True),
132
137
  ModelEntry("claude-opus-4-8", support_multimodal=True),
133
138
  ModelEntry("claude-sonnet-5", support_multimodal=True),
134
139
  ModelEntry("claude-opus-4-7", support_multimodal=True),
@@ -77,6 +77,8 @@ class ThinkingSpec:
77
77
  uses_reasoning_effort_param: bool = False
78
78
  adaptive_always_on: bool = False
79
79
  supports_disable: bool = True
80
+ thinking_enabled_by_default: bool = False
81
+ disable_forbidden_efforts: tuple[EffortLevel, ...] = ()
80
82
 
81
83
  @property
82
84
  def supports_effort(self) -> bool:
@@ -155,8 +157,24 @@ _ANTHROPIC_46_EFFORTS: tuple[EffortLevel, ...] = (
155
157
  EffortLevel.AUTO,
156
158
  )
157
159
 
158
- # DeepSeek V4 accepts only high/max — XHIGH is intentionally skipped.
159
- _DEEPSEEK_EFFORTS: tuple[EffortLevel, ...] = (EffortLevel.HIGH, EffortLevel.MAX)
160
+ # The official DeepSeek endpoint exposes low/high/max — MEDIUM and XHIGH are
161
+ # intentionally skipped because the API rejects them.
162
+ _DEEPSEEK_EFFORTS: tuple[EffortLevel, ...] = (
163
+ EffortLevel.LOW,
164
+ EffortLevel.HIGH,
165
+ EffortLevel.MAX,
166
+ )
167
+
168
+ # DashScope accepts the full effort vocabulary for its hosted DeepSeek V4
169
+ # models. Low/medium currently map to high and xhigh maps to max server-side,
170
+ # but keeping the accepted wire values lets callers migrate without a 400.
171
+ _DASHSCOPE_DEEPSEEK_EFFORTS: tuple[EffortLevel, ...] = (
172
+ EffortLevel.LOW,
173
+ EffortLevel.MEDIUM,
174
+ EffortLevel.HIGH,
175
+ EffortLevel.XHIGH,
176
+ EffortLevel.MAX,
177
+ )
160
178
 
161
179
  _GLM_EFFORTS: tuple[EffortLevel, ...] = (
162
180
  EffortLevel.NONE,
@@ -209,11 +227,20 @@ _DASHSCOPE_GLM51_SPEC = ThinkingSpec(
209
227
  )
210
228
 
211
229
  _DASHSCOPE_QWEN38_SPEC = ThinkingSpec(
230
+ ThinkingFamily.DASHSCOPE,
231
+ (EffortLevel.LOW, EffortLevel.MEDIUM, EffortLevel.XHIGH),
232
+ EffortLevel.XHIGH,
233
+ uses_reasoning_effort_param=True,
234
+ thinking_enabled_by_default=True,
235
+ )
236
+
237
+ _DASHSCOPE_QWEN38_PREVIEW_SPEC = ThinkingSpec(
212
238
  ThinkingFamily.DASHSCOPE,
213
239
  (EffortLevel.LOW, EffortLevel.MEDIUM, EffortLevel.XHIGH),
214
240
  EffortLevel.XHIGH,
215
241
  uses_reasoning_effort_param=True,
216
242
  supports_disable=False,
243
+ thinking_enabled_by_default=True,
217
244
  )
218
245
 
219
246
  _DASHSCOPE_KIMI_K3_SPEC = ThinkingSpec(
@@ -230,6 +257,14 @@ _ANTHROPIC_ADAPTIVE_SPEC = ThinkingSpec(
230
257
  EffortLevel.HIGH,
231
258
  )
232
259
 
260
+ _ANTHROPIC_OPUS5_SPEC = ThinkingSpec(
261
+ ThinkingFamily.ANTHROPIC_ADAPTIVE,
262
+ _ANTHROPIC_MODERN_EFFORTS,
263
+ EffortLevel.HIGH,
264
+ thinking_enabled_by_default=True,
265
+ disable_forbidden_efforts=(EffortLevel.XHIGH, EffortLevel.MAX),
266
+ )
267
+
233
268
  _ANTHROPIC_46_ADAPTIVE_SPEC = ThinkingSpec(
234
269
  ThinkingFamily.ANTHROPIC_ADAPTIVE,
235
270
  _ANTHROPIC_46_EFFORTS,
@@ -250,6 +285,12 @@ _OPENAI_GPT55_SPEC = ThinkingSpec(ThinkingFamily.OPENAI, _OPENAI_EFFORTS, Effort
250
285
  _OPENAI_REASONING_SPEC = ThinkingSpec(ThinkingFamily.OPENAI, _OPENAI_EFFORTS, EffortLevel.HIGH)
251
286
  _OPENAI_CODEX_SPEC = ThinkingSpec(ThinkingFamily.OPENAI, _OPENAI_CODEX_EFFORTS, EffortLevel.MEDIUM)
252
287
  _OPENAI_O_SERIES_SPEC = ThinkingSpec(ThinkingFamily.OPENAI, _OPENAI_O_SERIES_EFFORTS, EffortLevel.HIGH)
288
+ _DEEPSEEK_SPEC = ThinkingSpec(
289
+ ThinkingFamily.OPENAI,
290
+ _DEEPSEEK_EFFORTS,
291
+ EffortLevel.HIGH,
292
+ thinking_enabled_by_default=True,
293
+ )
253
294
  _KIMI_K3_SPEC = ThinkingSpec(ThinkingFamily.KIMI, _KIMI_K3_EFFORTS, EffortLevel.MAX)
254
295
  _ZHIPU_GLM52_SPEC = ThinkingSpec(
255
296
  ThinkingFamily.ZHIPU,
@@ -262,6 +303,7 @@ _ZHIPU_GLM52_SPEC = ThinkingSpec(
262
303
  MODEL_THINKING: dict[str, dict[str, ThinkingSpec]] = {
263
304
  "anthropic": {
264
305
  "claude-fable-5": _ANTHROPIC_ADAPTIVE_ALWAYS_ON_SPEC,
306
+ "claude-opus-5": _ANTHROPIC_OPUS5_SPEC,
265
307
  "claude-sonnet-5": _ANTHROPIC_ADAPTIVE_SPEC,
266
308
  "claude-opus-4-8": _ANTHROPIC_ADAPTIVE_SPEC,
267
309
  "claude-opus-4-7": _ANTHROPIC_ADAPTIVE_SPEC,
@@ -291,10 +333,11 @@ MODEL_THINKING: dict[str, dict[str, ThinkingSpec]] = {
291
333
  "o4-mini": _OPENAI_O_SERIES_SPEC,
292
334
  },
293
335
  "deepseek": {
294
- "deepseek-v4-pro": ThinkingSpec(ThinkingFamily.OPENAI, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
295
- "deepseek-v4-flash": ThinkingSpec(ThinkingFamily.OPENAI, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
336
+ "deepseek-v4-pro": _DEEPSEEK_SPEC,
337
+ "deepseek-v4-flash": _DEEPSEEK_SPEC,
296
338
  },
297
339
  "dashscope": {
340
+ "qwen3.8-max": _DASHSCOPE_QWEN38_SPEC,
298
341
  "qwen3.7-max": ThinkingSpec(ThinkingFamily.DASHSCOPE),
299
342
  "qwen3.7-plus": ThinkingSpec(ThinkingFamily.DASHSCOPE),
300
343
  "qwen3.6-max-preview": ThinkingSpec(ThinkingFamily.DASHSCOPE),
@@ -314,16 +357,34 @@ MODEL_THINKING: dict[str, dict[str, ThinkingSpec]] = {
314
357
  "glm-5.1": _DASHSCOPE_GLM51_SPEC,
315
358
  "MiniMax-M2.5": ThinkingSpec(ThinkingFamily.DASHSCOPE),
316
359
  "MiniMax/MiniMax-M3": ThinkingSpec(ThinkingFamily.MINIMAX),
317
- "deepseek-v4-pro": ThinkingSpec(ThinkingFamily.DASHSCOPE, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
318
- "deepseek-v4-flash": ThinkingSpec(ThinkingFamily.DASHSCOPE, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
360
+ "deepseek-v4-pro": ThinkingSpec(
361
+ ThinkingFamily.DASHSCOPE,
362
+ _DASHSCOPE_DEEPSEEK_EFFORTS,
363
+ EffortLevel.HIGH,
364
+ uses_reasoning_effort_param=True,
365
+ ),
366
+ "deepseek-v4-flash-0731": ThinkingSpec(
367
+ ThinkingFamily.DASHSCOPE,
368
+ _DASHSCOPE_DEEPSEEK_EFFORTS,
369
+ EffortLevel.HIGH,
370
+ uses_reasoning_effort_param=True,
371
+ ),
372
+ "deepseek-v4-flash": ThinkingSpec(
373
+ ThinkingFamily.DASHSCOPE,
374
+ _DASHSCOPE_DEEPSEEK_EFFORTS,
375
+ EffortLevel.HIGH,
376
+ uses_reasoning_effort_param=True,
377
+ ),
319
378
  },
320
379
  "dashscope_token_plan": {
321
- "qwen3.8-max-preview": _DASHSCOPE_QWEN38_SPEC,
380
+ "qwen3.8-max": _DASHSCOPE_QWEN38_SPEC,
381
+ "qwen3.8-max-preview": _DASHSCOPE_QWEN38_PREVIEW_SPEC,
322
382
  "qwen3.7-max": ThinkingSpec(ThinkingFamily.DASHSCOPE),
323
383
  "qwen3.7-plus": ThinkingSpec(ThinkingFamily.DASHSCOPE),
324
384
  "qwen3.6-plus": ThinkingSpec(ThinkingFamily.DASHSCOPE),
325
385
  "qwen3.6-flash": ThinkingSpec(ThinkingFamily.DASHSCOPE),
326
386
  "deepseek-v4-pro": ThinkingSpec(ThinkingFamily.DASHSCOPE, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
387
+ "deepseek-v4-flash-0731": ThinkingSpec(ThinkingFamily.DASHSCOPE, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
327
388
  "deepseek-v4-flash": ThinkingSpec(ThinkingFamily.DASHSCOPE, _DEEPSEEK_EFFORTS, EffortLevel.HIGH),
328
389
  "deepseek-v3.2": ThinkingSpec(ThinkingFamily.DASHSCOPE),
329
390
  "glm-5.1": _DASHSCOPE_GLM51_SPEC,
@@ -473,9 +534,9 @@ _THINKING_DISABLE_EFFORTS: frozenset[str] = frozenset({"none", "off", "disable",
473
534
  # Families whose providers emit an explicit "thinking on" directive by default
474
535
  # when the user has NOT configured ``thinkingEnabled`` (DashScope
475
536
  # ``enable_thinking=True``, Kimi/Zhipu ``thinking.type=enabled``). For these an
476
- # unset config still means the next turn thinks. Reasoning-effort families
477
- # (OpenAI/Anthropic/Gemini) instead emit nothing when unset and let the server
478
- # decide unobservable here, so they resolve to off.
537
+ # unset config still means the next turn thinks. Most reasoning-effort models
538
+ # (OpenAI/Anthropic/Gemini) instead emit nothing when unset and resolve to off;
539
+ # models with a documented server-side thinking default opt in explicitly.
479
540
  _DEFAULT_ON_FAMILIES: frozenset[ThinkingFamily] = frozenset(
480
541
  {ThinkingFamily.DASHSCOPE, ThinkingFamily.KIMI, ThinkingFamily.ZHIPU}
481
542
  )
@@ -498,15 +559,19 @@ def resolve_thinking_active(
498
559
  spec = get_thinking_spec(provider_key or "", model or "")
499
560
  if spec.family is ThinkingFamily.NONE:
500
561
  return False
562
+ normalized_effort = normalize_effort(effort)
501
563
  if thinking_enabled is False:
502
- return False
564
+ if not spec.supports_disable:
565
+ return True
566
+ forbidden = {item.value for item in spec.disable_forbidden_efforts}
567
+ return normalized_effort in forbidden
503
568
  # DashScope disable-effort tokens force thinking off even when configured on.
504
- if spec.family is ThinkingFamily.DASHSCOPE and normalize_effort(effort) in _THINKING_DISABLE_EFFORTS:
569
+ if spec.family is ThinkingFamily.DASHSCOPE and normalized_effort in _THINKING_DISABLE_EFFORTS:
505
570
  return False
506
571
  if thinking_enabled is True:
507
572
  return True
508
573
  # thinking_enabled is None (not configured): use the family default.
509
- return spec.family in _DEFAULT_ON_FAMILIES
574
+ return spec.thinking_enabled_by_default or spec.adaptive_always_on or spec.family in _DEFAULT_ON_FAMILIES
510
575
 
511
576
 
512
577
  # Anthropic extended-thinking budget tokens per effort level.