iac-code 0.12.0__tar.gz → 0.13.0__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 (654) hide show
  1. {iac_code-0.12.0 → iac_code-0.13.0}/PKG-INFO +33 -15
  2. {iac_code-0.12.0 → iac_code-0.13.0}/README.md +32 -14
  3. iac_code-0.13.0/src/iac_code/__init__.py +2 -0
  4. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/app.py +20 -9
  5. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/events.py +60 -1
  6. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/executor.py +189 -6
  7. iac_code-0.13.0/src/iac_code/a2a/input_required.py +665 -0
  8. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_events.py +15 -72
  9. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_executor.py +194 -40
  10. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_snapshot.py +1 -1
  11. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_stream.py +486 -64
  12. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/runtime_overrides.py +14 -0
  13. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/task_store.py +38 -3
  14. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/dispatcher.py +48 -9
  15. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/websocket.py +4 -3
  16. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/convert.py +6 -0
  17. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/agent_loop.py +8 -4
  18. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/config.py +7 -0
  19. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/__init__.py +29 -0
  20. iac_code-0.13.0/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
  21. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +222 -5
  22. iac_code-0.13.0/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
  23. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +220 -5
  24. iac_code-0.13.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
  25. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +216 -5
  26. iac_code-0.13.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  27. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +211 -5
  28. iac_code-0.13.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
  29. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +220 -5
  30. iac_code-0.13.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
  31. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +209 -5
  32. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/hard_constraints.py +4 -3
  33. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/loader.py +10 -5
  34. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/pipeline_runner.py +12 -2
  35. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/step_executor.py +102 -1
  36. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/step_spec.py +7 -0
  37. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/pipeline.yaml +92 -3
  38. iac_code-0.13.0/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.rich.md +74 -0
  39. iac_code-0.13.0/src/iac_code/pipeline/selling/references/cloud-products/ga.md +130 -0
  40. {iac_code-0.12.0/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating → iac_code-0.13.0/src/iac_code/pipeline/selling}/references/solutions/iac-code-web.md +7 -4
  41. {iac_code-0.12.0/src/iac_code/pipeline/selling/skills/iac-aliyun-cost → iac_code-0.13.0/src/iac_code/pipeline/selling}/references/solutions/iac-code-web.ros.yml +38 -5
  42. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +1 -1
  43. iac_code-0.13.0/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ga.md +130 -0
  44. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/solutions/iac-code-web.md +7 -4
  45. {iac_code-0.12.0/src/iac_code/pipeline/selling → iac_code-0.13.0/src/iac_code/pipeline/selling/skills/iac-aliyun-cost}/references/solutions/iac-code-web.ros.yml +38 -5
  46. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +1 -1
  47. iac_code-0.13.0/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ga.md +130 -0
  48. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.md +7 -4
  49. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/solutions/iac-code-web.ros.yml +38 -5
  50. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +1 -1
  51. iac_code-0.13.0/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ga.md +130 -0
  52. {iac_code-0.12.0/src/iac_code/pipeline/selling → iac_code-0.13.0/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating}/references/solutions/iac-code-web.md +7 -4
  53. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/solutions/iac-code-web.ros.yml +38 -5
  54. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +78 -4
  55. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/manager.py +7 -1
  56. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/registry.py +9 -4
  57. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/thinking.py +39 -0
  58. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/zhipu_provider.py +10 -2
  59. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/agent_factory.py +7 -0
  60. iac_code-0.13.0/src/iac_code/services/configuration_readiness.py +131 -0
  61. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/context_manager.py +4 -0
  62. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/pipeline.py +10 -4
  63. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_backup.py +10 -1
  64. iac_code-0.13.0/src/iac_code/services/session_backup_staging.py +674 -0
  65. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/constants.py +4 -0
  66. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/content_serializer.py +6 -0
  67. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +2 -1
  68. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +18 -1
  69. iac_code-0.13.0/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ga.md +130 -0
  70. iac_code-0.13.0/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +38 -0
  71. iac_code-0.13.0/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +399 -0
  72. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/base.py +5 -0
  73. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +188 -21
  74. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/public_errors.py +5 -0
  75. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/result_contract.py +6 -0
  76. iac_code-0.13.0/src/iac_code/tools/cloud/aliyun/ros_lifecycle.py +217 -0
  77. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +6 -2
  78. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/runtime.py +132 -2
  79. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/base_stack.py +17 -0
  80. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/registry.py +23 -0
  81. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/write_file.py +12 -1
  82. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/types/stream_events.py +1 -0
  83. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/index.html +1 -1
  84. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/app.js +14 -3
  85. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/composer.js +6 -0
  86. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/tool_cards.js +20 -3
  87. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/workspace.js +4 -0
  88. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code.egg-info/PKG-INFO +33 -15
  89. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code.egg-info/SOURCES.txt +10 -0
  90. iac_code-0.12.0/src/iac_code/__init__.py +0 -2
  91. iac_code-0.12.0/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
  92. iac_code-0.12.0/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
  93. iac_code-0.12.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
  94. iac_code-0.12.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  95. iac_code-0.12.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
  96. iac_code-0.12.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
  97. iac_code-0.12.0/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.md +0 -35
  98. iac_code-0.12.0/src/iac_code/skills/bundled/iac_aliyun/references/solutions/iac-code-web.ros.yml +0 -366
  99. {iac_code-0.12.0 → iac_code-0.13.0}/LICENSE +0 -0
  100. {iac_code-0.12.0 → iac_code-0.13.0}/MANIFEST.in +0 -0
  101. {iac_code-0.12.0 → iac_code-0.13.0}/pyproject.toml +0 -0
  102. {iac_code-0.12.0 → iac_code-0.13.0}/setup.cfg +0 -0
  103. {iac_code-0.12.0 → iac_code-0.13.0}/setup.py +0 -0
  104. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/__init__.py +0 -0
  105. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/agent_card.py +0 -0
  106. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/artifacts.py +0 -0
  107. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/backup.py +0 -0
  108. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/client.py +0 -0
  109. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/exposure.py +0 -0
  110. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
  111. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/metadata_redaction.py +0 -0
  112. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/metrics.py +0 -0
  113. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/parts.py +0 -0
  114. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/persistence.py +0 -0
  115. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
  116. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
  117. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_journal.py +0 -0
  118. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_outbound.py +0 -0
  119. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_paths.py +0 -0
  120. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_performance.py +0 -0
  121. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_recovery.py +0 -0
  122. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
  123. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/projection.py +0 -0
  124. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/push.py +0 -0
  125. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/push_queue.py +0 -0
  126. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/push_secrets.py +0 -0
  127. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/push_worker.py +0 -0
  128. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/router.py +0 -0
  129. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/runtime_registry.py +0 -0
  130. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/signing.py +0 -0
  131. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/thinking_metadata.py +0 -0
  132. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transport.py +0 -0
  133. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/__init__.py +0 -0
  134. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/base.py +0 -0
  135. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/grpc.py +0 -0
  136. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
  137. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/http.py +0 -0
  138. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/redis_streams.py +0 -0
  139. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/stdio.py +0 -0
  140. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/transports/unix.py +0 -0
  141. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/a2a/types.py +0 -0
  142. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/__init__.py +0 -0
  143. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/http_sse.py +0 -0
  144. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/mcp.py +0 -0
  145. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/metrics.py +0 -0
  146. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/runner.py +0 -0
  147. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/server.py +0 -0
  148. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/session.py +0 -0
  149. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/slash_registry.py +0 -0
  150. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/state.py +0 -0
  151. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/tools.py +0 -0
  152. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/types.py +0 -0
  153. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/acp/version.py +0 -0
  154. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/__init__.py +0 -0
  155. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/agent_tool.py +0 -0
  156. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/agent_types.py +0 -0
  157. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/message.py +0 -0
  158. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/agent/system_prompt.py +0 -0
  159. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/__init__.py +0 -0
  160. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/headless.py +0 -0
  161. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/install_git_bash.py +0 -0
  162. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/main.py +0 -0
  163. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/output_formats.py +0 -0
  164. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/process_events.py +0 -0
  165. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/process_mode.py +0 -0
  166. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/process_protocol.py +0 -0
  167. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/cli/update.py +0 -0
  168. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/__init__.py +0 -0
  169. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/auth.py +0 -0
  170. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/clear.py +0 -0
  171. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/compact.py +0 -0
  172. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/debug.py +0 -0
  173. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/effort.py +0 -0
  174. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/exit.py +0 -0
  175. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/help.py +0 -0
  176. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/mcp.py +0 -0
  177. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/memory.py +0 -0
  178. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/model.py +0 -0
  179. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/prompt.py +0 -0
  180. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/registry.py +0 -0
  181. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/rename.py +0 -0
  182. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/resume.py +0 -0
  183. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/skills.py +0 -0
  184. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/status.py +0 -0
  185. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/tasks.py +0 -0
  186. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/commands/thinking_enabled.py +0 -0
  187. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/__init__.py +0 -0
  188. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/__main__.py +0 -0
  189. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/control.py +0 -0
  190. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/controller.py +0 -0
  191. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/diagnostics.py +0 -0
  192. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/download_journal.py +0 -0
  193. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/external_env.py +0 -0
  194. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/git_bash.py +0 -0
  195. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/install_lock.py +0 -0
  196. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/loop_runner.py +0 -0
  197. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/native_preload_manifest.json +0 -0
  198. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/ports.py +0 -0
  199. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/probe_worker.py +0 -0
  200. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/runtime.py +0 -0
  201. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/desktop/tool_paths.py +0 -0
  202. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/html_extractor.py +0 -0
  203. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
  204. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +0 -0
  205. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
  206. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +0 -0
  207. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
  208. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +0 -0
  209. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
  210. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +0 -0
  211. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
  212. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +0 -0
  213. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
  214. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +0 -0
  215. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/__init__.py +0 -0
  216. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/cli.py +0 -0
  217. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/client.py +0 -0
  218. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/config.py +0 -0
  219. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/env_expansion.py +0 -0
  220. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/errors.py +0 -0
  221. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/manager.py +0 -0
  222. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/oauth.py +0 -0
  223. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/output.py +0 -0
  224. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/progress.py +0 -0
  225. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/prompt_dispatch.py +0 -0
  226. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/prompts.py +0 -0
  227. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/redaction.py +0 -0
  228. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/skills.py +0 -0
  229. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/storage.py +0 -0
  230. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/tools.py +0 -0
  231. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/mcp/types.py +0 -0
  232. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/memory/__init__.py +0 -0
  233. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/memory/memory_manager.py +0 -0
  234. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/memory/memory_tools.py +0 -0
  235. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/memory/project_memory.py +0 -0
  236. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/memory/recall.py +0 -0
  237. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/__init__.py +0 -0
  238. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/config.py +0 -0
  239. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/constants.py +0 -0
  240. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/display_names.py +0 -0
  241. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/__init__.py +0 -0
  242. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
  243. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
  244. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
  245. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
  246. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
  247. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
  248. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
  249. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
  250. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
  251. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
  252. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
  253. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +0 -0
  254. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/ask_user_question_tool.py +0 -0
  255. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/cleanup.py +0 -0
  256. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
  257. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/completion_guard_state.py +0 -0
  258. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/context.py +0 -0
  259. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/display_replay.py +0 -0
  260. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/events.py +0 -0
  261. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/handoff.py +0 -0
  262. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/interrupt.py +0 -0
  263. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/observability.py +0 -0
  264. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/prerequisites.py +0 -0
  265. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
  266. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/public_errors.py +0 -0
  267. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/recovery.py +0 -0
  268. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
  269. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/session.py +0 -0
  270. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/show_diagram_tool.py +0 -0
  271. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/state_machine.py +0 -0
  272. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +0 -0
  273. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/transcript_storage.py +0 -0
  274. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/types.py +0 -0
  275. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
  276. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/engine/user_input.py +0 -0
  277. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
  278. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
  279. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
  280. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
  281. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
  282. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
  283. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
  284. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +0 -0
  285. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
  286. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
  287. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
  288. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
  289. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
  290. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
  291. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
  292. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
  293. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
  294. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
  295. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
  296. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
  297. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +0 -0
  298. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
  299. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
  300. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
  301. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
  302. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
  303. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
  304. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
  305. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
  306. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
  307. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
  308. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
  309. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
  310. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
  311. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
  312. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
  313. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
  314. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
  315. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
  316. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
  317. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
  318. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
  319. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
  320. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
  321. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +0 -0
  322. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
  323. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
  324. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
  325. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
  326. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
  327. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
  328. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
  329. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
  330. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
  331. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
  332. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
  333. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
  334. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
  335. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
  336. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
  337. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
  338. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
  339. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
  340. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/__init__.py +0 -0
  341. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/anthropic_provider.py +0 -0
  342. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/azure_openai_provider.py +0 -0
  343. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/base.py +0 -0
  344. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/dashscope_provider.py +0 -0
  345. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/deepseek_provider.py +0 -0
  346. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/gemini_provider.py +0 -0
  347. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/kimi_provider.py +0 -0
  348. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/lmstudio_provider.py +0 -0
  349. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/minimax_provider.py +0 -0
  350. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/modelscope_provider.py +0 -0
  351. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/ollama_provider.py +0 -0
  352. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/openai_provider.py +0 -0
  353. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/openrouter_provider.py +0 -0
  354. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/request_logging.py +0 -0
  355. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/request_policy.py +0 -0
  356. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/retry.py +0 -0
  357. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/siliconflow_provider.py +0 -0
  358. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/stream_watchdog.py +0 -0
  359. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/providers/volcengine_provider.py +0 -0
  360. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/__init__.py +0 -0
  361. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/capabilities/__init__.py +0 -0
  362. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/capabilities/auto_detect.py +0 -0
  363. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/capabilities/multimodal.py +0 -0
  364. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/cloud_credentials.py +0 -0
  365. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/git_bash.py +0 -0
  366. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/__init__.py +0 -0
  367. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/audit.py +0 -0
  368. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/loader.py +0 -0
  369. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/rule_scope.py +0 -0
  370. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/storage.py +0 -0
  371. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/permissions/trusted_roots.py +0 -0
  372. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/providers/__init__.py +0 -0
  373. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/providers/aliyun.py +0 -0
  374. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/providers/aliyun_credentials_runtime.py +0 -0
  375. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/providers/aliyun_oauth.py +0 -0
  376. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/qwenpaw_source.py +0 -0
  377. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_backup_state.py +0 -0
  378. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_index.py +0 -0
  379. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_layout.py +0 -0
  380. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_logging.py +0 -0
  381. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_metadata.py +0 -0
  382. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_resolver.py +0 -0
  383. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_storage.py +0 -0
  384. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/session_usage.py +0 -0
  385. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/__init__.py +0 -0
  386. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/attributes.py +0 -0
  387. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/client.py +0 -0
  388. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/config.py +0 -0
  389. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/events.py +0 -0
  390. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/fallback.py +0 -0
  391. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/identity.py +0 -0
  392. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/metrics.py +0 -0
  393. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/names.py +0 -0
  394. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/sanitize.py +0 -0
  395. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/scope.py +0 -0
  396. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/sink.py +0 -0
  397. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/tracing.py +0 -0
  398. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/telemetry/types.py +0 -0
  399. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/token_budget.py +0 -0
  400. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/token_counter.py +0 -0
  401. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/services/update_checker.py +0 -0
  402. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/__init__.py +0 -0
  403. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/auto_trigger.py +0 -0
  404. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/__init__.py +0 -0
  405. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
  406. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
  407. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
  408. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
  409. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
  410. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
  411. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
  412. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
  413. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
  414. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
  415. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
  416. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
  417. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
  418. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
  419. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
  420. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
  421. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/bundled/simplify.py +0 -0
  422. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/discovery.py +0 -0
  423. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/frontmatter.py +0 -0
  424. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/listing.py +0 -0
  425. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/loader.py +0 -0
  426. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/management.py +0 -0
  427. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/processor.py +0 -0
  428. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/renderer.py +0 -0
  429. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/settings.py +0 -0
  430. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/skill_definition.py +0 -0
  431. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/skills/skill_tool.py +0 -0
  432. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/state/__init__.py +0 -0
  433. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/state/app_state.py +0 -0
  434. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tasks/__init__.py +0 -0
  435. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tasks/notification_queue.py +0 -0
  436. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tasks/task_state.py +0 -0
  437. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tasks/task_tools.py +0 -0
  438. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/__init__.py +0 -0
  439. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/__init__.py +0 -0
  440. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/argv_safety.py +0 -0
  441. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/bash_tool.py +0 -0
  442. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/command_parser.py +0 -0
  443. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/mode_validation.py +0 -0
  444. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/path_validation.py +0 -0
  445. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/permissions.py +0 -0
  446. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/readonly_commands.py +0 -0
  447. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/rule_matching.py +0 -0
  448. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/bash/safety_checks.py +0 -0
  449. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/__init__.py +0 -0
  450. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
  451. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +0 -0
  452. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
  453. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
  454. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
  455. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/api_hooks.py +0 -0
  456. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
  457. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/contract_store.py +0 -0
  458. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
  459. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
  460. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
  461. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
  462. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
  463. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
  464. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
  465. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
  466. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
  467. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
  468. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
  469. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
  470. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
  471. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ecs_credential_errors.py +0 -0
  472. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
  473. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
  474. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +0 -0
  475. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -0
  476. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
  477. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
  478. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
  479. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
  480. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
  481. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_stack.py +0 -0
  482. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
  483. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +0 -0
  484. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +0 -0
  485. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +0 -0
  486. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/association_property_specs.py +0 -0
  487. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +0 -0
  488. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_association_property_specs.json +0 -0
  489. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +0 -0
  490. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +0 -0
  491. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +0 -0
  492. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +0 -0
  493. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +0 -0
  494. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +0 -0
  495. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +0 -0
  496. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +0 -0
  497. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +0 -0
  498. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +0 -0
  499. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +0 -0
  500. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/association_property.py +0 -0
  501. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +0 -0
  502. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +0 -0
  503. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +0 -0
  504. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/template_kind.py +0 -0
  505. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +0 -0
  506. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +0 -0
  507. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +0 -0
  508. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
  509. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
  510. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
  511. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/base_api.py +0 -0
  512. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/cloud/types.py +0 -0
  513. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/edit_file.py +0 -0
  514. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/glob.py +0 -0
  515. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/grep.py +0 -0
  516. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/list_files.py +0 -0
  517. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/path_safety.py +0 -0
  518. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/read_file.py +0 -0
  519. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/result_storage.py +0 -0
  520. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/tool_executor.py +0 -0
  521. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/tools/web_fetch.py +0 -0
  522. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/types/__init__.py +0 -0
  523. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/types/permissions.py +0 -0
  524. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/types/skill_source.py +0 -0
  525. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/__init__.py +0 -0
  526. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/assets/iac-code-terminal-logo.png +0 -0
  527. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/banner.py +0 -0
  528. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/__init__.py +0 -0
  529. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/candidate_selection.py +0 -0
  530. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/dialog.py +0 -0
  531. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/divider.py +0 -0
  532. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
  533. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/parallel_tabs.py +0 -0
  534. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/progress_bar.py +0 -0
  535. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/search_box.py +0 -0
  536. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/select.py +0 -0
  537. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/status_icon.py +0 -0
  538. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/components/tabs.py +0 -0
  539. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/__init__.py +0 -0
  540. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/in_place_render.py +0 -0
  541. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/input_history.py +0 -0
  542. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/key_event.py +0 -0
  543. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/prompt_input.py +0 -0
  544. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/raw_input.py +0 -0
  545. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/raw_input_win.py +0 -0
  546. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/core/screen.py +0 -0
  547. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/diagram_rendering.py +0 -0
  548. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/__init__.py +0 -0
  549. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/global_search.py +0 -0
  550. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/history_search.py +0 -0
  551. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
  552. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/memory.py +0 -0
  553. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
  554. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/model_picker.py +0 -0
  555. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/quick_open.py +0 -0
  556. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
  557. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
  558. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/keybindings/__init__.py +0 -0
  559. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/keybindings/manager.py +0 -0
  560. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/pipeline_display_replay.py +0 -0
  561. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/pipeline_styles.py +0 -0
  562. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/renderer.py +0 -0
  563. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/repl.py +0 -0
  564. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/spinner.py +0 -0
  565. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/stream_accumulator.py +0 -0
  566. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/__init__.py +0 -0
  567. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/aggregator.py +0 -0
  568. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/command_provider.py +0 -0
  569. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
  570. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/file_provider.py +0 -0
  571. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
  572. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/skill_provider.py +0 -0
  573. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
  574. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/suggestions/types.py +0 -0
  575. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/terminal_image.py +0 -0
  576. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/ui/transcript_view.py +0 -0
  577. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/__init__.py +0 -0
  578. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/async_lifecycle.py +0 -0
  579. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/background_housekeeping.py +0 -0
  580. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/cleanup.py +0 -0
  581. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/console.py +0 -0
  582. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/file_security.py +0 -0
  583. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/__init__.py +0 -0
  584. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/clipboard.py +0 -0
  585. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/format_detect.py +0 -0
  586. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/pasted_content.py +0 -0
  587. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/processor.py +0 -0
  588. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/resizer.py +0 -0
  589. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/image/store.py +0 -0
  590. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/json_utils.py +0 -0
  591. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/log.py +0 -0
  592. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/path_components.py +0 -0
  593. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/path_locks.py +0 -0
  594. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/platform.py +0 -0
  595. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/project_paths.py +0 -0
  596. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/public_errors.py +0 -0
  597. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/public_paths.py +0 -0
  598. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/signals.py +0 -0
  599. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/state_io.py +0 -0
  600. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/tool_input_parser.py +0 -0
  601. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/tool_result_redaction.py +0 -0
  602. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/utils/windows_paths.py +0 -0
  603. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/__init__.py +0 -0
  604. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/app.py +0 -0
  605. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/cleanup.py +0 -0
  606. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/commands.py +0 -0
  607. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/diagram_cache.py +0 -0
  608. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/diagram_optimizer.py +0 -0
  609. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/diagrams.py +0 -0
  610. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/events.py +0 -0
  611. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/files.py +0 -0
  612. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/images.py +0 -0
  613. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/mcp_settings.py +0 -0
  614. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/memory.py +0 -0
  615. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/outputs.py +0 -0
  616. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/permissions.py +0 -0
  617. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/pipeline.py +0 -0
  618. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/pipeline_actions.py +0 -0
  619. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/pipeline_prerequisites.py +0 -0
  620. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/pipeline_transcript.py +0 -0
  621. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/runtime.py +0 -0
  622. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/security.py +0 -0
  623. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/server.py +0 -0
  624. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/session_manager.py +0 -0
  625. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/session_titler.py +0 -0
  626. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/settings.py +0 -0
  627. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/shell.py +0 -0
  628. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/skills.py +0 -0
  629. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/iac-code-logo.svg +0 -0
  630. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/sidebar-new-thread.svg +0 -0
  631. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/sidebar-project-open.svg +0 -0
  632. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/sidebar-search.svg +0 -0
  633. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/sidebar-settings.svg +0 -0
  634. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/icons/sidebar-skills.svg +0 -0
  635. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/api.js +0 -0
  636. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/blocking.js +0 -0
  637. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/image_lightbox.js +0 -0
  638. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/output_panel.js +0 -0
  639. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/components/pipeline.js +0 -0
  640. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/events.js +0 -0
  641. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/i18n.js +0 -0
  642. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/mermaid_render.js +0 -0
  643. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/token_transport.js +0 -0
  644. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +0 -0
  645. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/vendor/markdown-it.min.js +0 -0
  646. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/vendor/mermaid.LICENSE +0 -0
  647. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/vendor/mermaid.min.js +0 -0
  648. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/js/vendor/token-crypto.js +0 -0
  649. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/static/styles.css +0 -0
  650. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code/web/token_transport.py +0 -0
  651. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code.egg-info/dependency_links.txt +0 -0
  652. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code.egg-info/entry_points.txt +0 -0
  653. {iac_code-0.12.0 → iac_code-0.13.0}/src/iac_code.egg-info/requires.txt +0 -0
  654. {iac_code-0.12.0 → iac_code-0.13.0}/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.12.0
3
+ Version: 0.13.0
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
@@ -36,14 +36,36 @@ License-File: LICENSE
36
36
  > **Documentation**: [https://aliyun.github.io/iac-code/](https://aliyun.github.io/iac-code/)
37
37
 
38
38
  <p align="center">
39
- <img src="website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
39
+ <a href="https://github.com/aliyun/iac-code/releases/latest"><img src="https://img.shields.io/badge/Download-IaC%20Code%20Desktop-5268f2?style=for-the-badge" alt="Download IaC Code Desktop"></a>
40
+ <br>
41
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-macos-arm64.dmg">macOS Apple Silicon</a> ·
42
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-windows-x64.exe">Windows x64</a> ·
43
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.AppImage">Linux AppImage</a> ·
44
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.deb">Linux deb</a> ·
45
+ <a href="https://github.com/aliyun/iac-code/releases/latest">All release files</a>
46
+ </p>
47
+
48
+ ## Desktop App
49
+
50
+ No Python, pip, or terminal setup required — download the native app and start building cloud infrastructure right away. Get the package for your platform from the [latest GitHub Release](https://github.com/aliyun/iac-code/releases/latest):
51
+
52
+ - macOS Apple Silicon: `.dmg`
53
+ - Windows x64: setup `.exe`
54
+ - Linux x64: `.AppImage` or `.deb`
55
+
56
+ The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
57
+
58
+ <p align="center">
59
+ <img src="website/static/img/screenshots/iac-code-desktop-en.jpg" alt="IaC Code Desktop app" width="100%">
40
60
  </p>
41
61
 
62
+ macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Stable macOS packages are signed with Apple Developer ID and notarized by Apple; stable Windows packages carry an Authenticode publisher signature. Always download from the official release page and verify the accompanying `SHA256SUMS`. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
63
+
42
64
  ## Installation
43
65
 
44
- IaC Code requires Python 3.10 or later. It supports macOS, Linux, and Windows.
66
+ The CLI and Web app below run on Python 3.10 or later, on macOS, Linux, and Windows. If you only use the Desktop app, you can skip this section.
45
67
 
46
- > **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable.
68
+ > **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable. If it is not installed yet, run `iac-code install-git-bash` to install Git for Windows automatically (downloaded via the npmmirror mirror).
47
69
 
48
70
  ```bash
49
71
  pip install iac-code
@@ -61,6 +83,10 @@ Run directly to enter the interactive REPL:
61
83
  iac-code
62
84
  ```
63
85
 
86
+ <p align="center">
87
+ <img src="website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
88
+ </p>
89
+
64
90
  ### Non-Interactive Mode
65
91
 
66
92
  Pass a one-shot prompt via `--prompt`:
@@ -86,17 +112,9 @@ iac-code web
86
112
 
87
113
  By default it opens `http://127.0.0.1:8766` in your browser (loopback only). See the [Web App guide](https://aliyun.github.io/iac-code/web-app) for details.
88
114
 
89
- ### Desktop App
90
-
91
- For an installed native experience, download the package for your platform from [GitHub Releases](https://github.com/aliyun/iac-code/releases):
92
-
93
- - macOS Apple Silicon: `.dmg`
94
- - Windows x64: setup `.exe`
95
- - Linux x64: `.AppImage` or `.deb`
96
-
97
- The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
98
-
99
- macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Release installers do not yet carry commercial publisher signatures, so macOS or Windows may display an unknown-developer warning; verify the accompanying `SHA256SUMS` before installation. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
115
+ <p align="center">
116
+ <img src="website/static/img/screenshots/iac-code-web-en.jpg" alt="IaC Code Web app" width="100%">
117
+ </p>
100
118
 
101
119
  ## Contributing
102
120
 
@@ -16,14 +16,36 @@
16
16
  > **Documentation**: [https://aliyun.github.io/iac-code/](https://aliyun.github.io/iac-code/)
17
17
 
18
18
  <p align="center">
19
- <img src="website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
19
+ <a href="https://github.com/aliyun/iac-code/releases/latest"><img src="https://img.shields.io/badge/Download-IaC%20Code%20Desktop-5268f2?style=for-the-badge" alt="Download IaC Code Desktop"></a>
20
+ <br>
21
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-macos-arm64.dmg">macOS Apple Silicon</a> ·
22
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-windows-x64.exe">Windows x64</a> ·
23
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.AppImage">Linux AppImage</a> ·
24
+ <a href="https://ros-public-tools.oss-cn-beijing.aliyuncs.com/github-releases/aliyun/iac-code/desktop/stable/iac-code-linux-x64.deb">Linux deb</a> ·
25
+ <a href="https://github.com/aliyun/iac-code/releases/latest">All release files</a>
26
+ </p>
27
+
28
+ ## Desktop App
29
+
30
+ No Python, pip, or terminal setup required — download the native app and start building cloud infrastructure right away. Get the package for your platform from the [latest GitHub Release](https://github.com/aliyun/iac-code/releases/latest):
31
+
32
+ - macOS Apple Silicon: `.dmg`
33
+ - Windows x64: setup `.exe`
34
+ - Linux x64: `.AppImage` or `.deb`
35
+
36
+ The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
37
+
38
+ <p align="center">
39
+ <img src="website/static/img/screenshots/iac-code-desktop-en.jpg" alt="IaC Code Desktop app" width="100%">
20
40
  </p>
21
41
 
42
+ macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Stable macOS packages are signed with Apple Developer ID and notarized by Apple; stable Windows packages carry an Authenticode publisher signature. Always download from the official release page and verify the accompanying `SHA256SUMS`. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
43
+
22
44
  ## Installation
23
45
 
24
- IaC Code requires Python 3.10 or later. It supports macOS, Linux, and Windows.
46
+ The CLI and Web app below run on Python 3.10 or later, on macOS, Linux, and Windows. If you only use the Desktop app, you can skip this section.
25
47
 
26
- > **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable.
48
+ > **Windows note**: On Windows, [Git for Windows](https://gitforwindows.org/) must be installed to provide the bash shell used by the tool execution environment. If Git Bash is installed but not on PATH, set the `IAC_CODE_GIT_BASH_PATH` environment variable. If it is not installed yet, run `iac-code install-git-bash` to install Git for Windows automatically (downloaded via the npmmirror mirror).
27
49
 
28
50
  ```bash
29
51
  pip install iac-code
@@ -41,6 +63,10 @@ Run directly to enter the interactive REPL:
41
63
  iac-code
42
64
  ```
43
65
 
66
+ <p align="center">
67
+ <img src="website/static/img/demo_en.gif" alt="iac-code demo" width="100%">
68
+ </p>
69
+
44
70
  ### Non-Interactive Mode
45
71
 
46
72
  Pass a one-shot prompt via `--prompt`:
@@ -66,17 +92,9 @@ iac-code web
66
92
 
67
93
  By default it opens `http://127.0.0.1:8766` in your browser (loopback only). See the [Web App guide](https://aliyun.github.io/iac-code/web-app) for details.
68
94
 
69
- ### Desktop App
70
-
71
- For an installed native experience, download the package for your platform from [GitHub Releases](https://github.com/aliyun/iac-code/releases):
72
-
73
- - macOS Apple Silicon: `.dmg`
74
- - Windows x64: setup `.exe`
75
- - Linux x64: `.AppImage` or `.deb`
76
-
77
- The Desktop app runs the same IaC Code engine and uses the same providers, cloud credentials, settings, projects, and sessions as the CLI and Web app. On first launch, select the project directory you want IaC Code to work in. Windows also checks for Git Bash and guides you through installation if it is missing.
78
-
79
- macOS, Windows, and AppImage builds can check for and apply cryptographically signed updates in the app. The deb package is updated by installing a newer package. Release installers do not yet carry commercial publisher signatures, so macOS or Windows may display an unknown-developer warning; verify the accompanying `SHA256SUMS` before installation. See the [Desktop App guide](https://aliyun.github.io/iac-code/docs/desktop-app) for installation and troubleshooting details.
95
+ <p align="center">
96
+ <img src="website/static/img/screenshots/iac-code-web-en.jpg" alt="IaC Code Web app" width="100%">
97
+ </p>
80
98
 
81
99
  ## Contributing
82
100
 
@@ -0,0 +1,2 @@
1
+ __version__ = "0.13.0"
2
+ __release_date__ = "2026-08-19"
@@ -25,6 +25,7 @@ from starlette.requests import Request
25
25
  from starlette.responses import JSONResponse, Response
26
26
  from starlette.routing import BaseRoute, Route
27
27
 
28
+ from iac_code import __version__
28
29
  from iac_code.a2a.agent_card import agent_card_to_client_dict
29
30
  from iac_code.a2a.jsonrpc_passthrough import (
30
31
  install_jsonrpc_error_data_passthrough,
@@ -37,6 +38,8 @@ from iac_code.a2a.projection import (
37
38
  resolve_a2a_public_path_roots_for_data,
38
39
  )
39
40
  from iac_code.i18n import _
41
+ from iac_code.pipeline.config import get_run_mode
42
+ from iac_code.services.configuration_readiness import configuration_readiness
40
43
 
41
44
  logger = logging.getLogger(__name__)
42
45
  _V03_JSONRPC_METHODS = frozenset(
@@ -161,7 +164,7 @@ class A2AProjectionMiddleware(BaseHTTPMiddleware):
161
164
  request_data = await _a2a_request_data(request)
162
165
  response = await call_next(request)
163
166
  request_data = _with_a2a_path_parameters(request, request_data)
164
- if request.url.path in {"/health", AGENT_CARD_WELL_KNOWN_PATH}:
167
+ if request.url.path in {"/health", "/iac-code/readiness", AGENT_CARD_WELL_KNOWN_PATH}:
165
168
  return response
166
169
 
167
170
  content_type = response.headers.get("content-type", "").lower()
@@ -291,7 +294,7 @@ def _take_sse_frame(data: bytes) -> tuple[bytes, bytes | None, bytes]:
291
294
 
292
295
 
293
296
  async def health(request: Request) -> JSONResponse:
294
- return JSONResponse({"status": "healthy"})
297
+ return JSONResponse({"status": "healthy", "version": __version__, "mode": get_run_mode().value})
295
298
 
296
299
 
297
300
  async def normalize_v03_jsonrpc_version(request: Request) -> None:
@@ -370,11 +373,12 @@ def create_app(
370
373
 
371
374
  @asynccontextmanager
372
375
  async def lifespan(app: Starlette):
373
- await components.task_store.start_cleanup_loop()
374
376
  push_worker_task: asyncio.Task[None] | None = None
375
- if components.push_worker is not None:
376
- push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
377
+ components.start_background_services()
377
378
  try:
379
+ await components.task_store.start_cleanup_loop()
380
+ if components.push_worker is not None:
381
+ push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
378
382
  yield
379
383
  finally:
380
384
  if push_worker_task is not None:
@@ -397,6 +401,9 @@ def create_app(
397
401
  return Response(status_code=304, headers=card_cache_headers)
398
402
  return JSONResponse(card_data, headers=card_cache_headers)
399
403
 
404
+ async def get_readiness(request: Request) -> JSONResponse:
405
+ return JSONResponse(configuration_readiness(model=model))
406
+
400
407
  recovery_service = A2APipelineRecoveryService(task_store=components.task_store)
401
408
 
402
409
  async def recovery_path_roots(*, context_id: str | None, task_id: str | None) -> list[dict[str, str]]:
@@ -442,6 +449,7 @@ def create_app(
442
449
  routes: list[BaseRoute] = [
443
450
  Route("/health", health, methods=["GET"]),
444
451
  Route(AGENT_CARD_WELL_KNOWN_PATH, get_agent_card, methods=["GET"]),
452
+ Route("/iac-code/readiness", get_readiness, methods=["GET"]),
445
453
  Route("/iac-code/pipeline/state", get_pipeline_state, methods=["GET"]),
446
454
  ]
447
455
  install_jsonrpc_error_data_passthrough()
@@ -701,12 +709,15 @@ def run_server(
701
709
 
702
710
 
703
711
  async def _serve_async_transport(server, *, components) -> None:
704
- await components.task_store.start_cleanup_loop()
705
712
  push_worker_task: asyncio.Task[None] | None = None
706
- if components.push_worker is not None:
707
- push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
708
- await asyncio.sleep(0)
713
+ start_background_services = getattr(components, "start_background_services", None)
714
+ if start_background_services is not None:
715
+ start_background_services()
709
716
  try:
717
+ await components.task_store.start_cleanup_loop()
718
+ if components.push_worker is not None:
719
+ push_worker_task = asyncio.create_task(components.push_worker.serve_forever())
720
+ await asyncio.sleep(0)
710
721
  await server.serve()
711
722
  finally:
712
723
  if push_worker_task is not None:
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import asyncio
3
4
  import copy
4
5
  import inspect
5
6
  import logging
@@ -162,7 +163,7 @@ def _extract_artifact_metadata(result: Any, artifact_store: Any | None) -> dict[
162
163
  if not path.is_file():
163
164
  return None
164
165
  metadata = artifact_store.save_bytes(filename=filename, content=path.read_bytes(), media_type=str(media_type))
165
- return metadata.to_dict()
166
+ return {**metadata.to_dict(), "sourcePath": str(path.resolve())}
166
167
  raw_bytes = raw.get("raw")
167
168
  if isinstance(raw_bytes, bytes):
168
169
  metadata = artifact_store.save_bytes(filename=filename, content=raw_bytes, media_type=str(media_type))
@@ -219,6 +220,9 @@ def _artifact_update_event(*, task_id: str, context_id: str, metadata: dict[str,
219
220
  "byteSize": metadata["byteSize"],
220
221
  "sha256": metadata["sha256"],
221
222
  }
223
+ source_path = metadata.get("sourcePath")
224
+ if isinstance(source_path, str) and source_path:
225
+ artifact_metadata["sourcePath"] = source_path
222
226
  artifact = Artifact(
223
227
  artifact_id=str(metadata["artifactId"]),
224
228
  name=str(metadata["filename"]),
@@ -280,6 +284,7 @@ async def publish_stream_event(
280
284
  event: Any,
281
285
  artifact_store: Any | None = None,
282
286
  permission_resolver: A2APermissionResolver | None = None,
287
+ permission_input_registry: Any | None = None,
283
288
  auto_approve_permissions: bool = False,
284
289
  exposure_types: Any = None,
285
290
  iac_code_session_id: str | None = None,
@@ -372,6 +377,8 @@ async def publish_stream_event(
372
377
 
373
378
  if isinstance(event, ToolResultEvent):
374
379
  artifact_metadata = _extract_artifact_metadata(event.result, artifact_store)
380
+ if artifact_metadata is None:
381
+ artifact_metadata = _extract_artifact_metadata(event.metadata, artifact_store)
375
382
  if A2AExposureType.TOOL_TRACE not in enabled_exposure_types:
376
383
  if artifact_metadata is not None:
377
384
  await event_queue.enqueue_event(
@@ -429,6 +436,58 @@ async def publish_stream_event(
429
436
 
430
437
  permission_event = _permission_request_event(event)
431
438
  if permission_event is not None:
439
+ if permission_input_registry is not None and permission_resolver is None and not auto_approve_permissions:
440
+ pending = await permission_input_registry.register(
441
+ permission_event,
442
+ task_id=task_id,
443
+ context_id=context_id,
444
+ )
445
+ try:
446
+ await _enqueue_status(
447
+ event_queue,
448
+ task_id=task_id,
449
+ context_id=context_id,
450
+ state=TaskState.TASK_STATE_INPUT_REQUIRED,
451
+ metadata={
452
+ "iac_code": {
453
+ "input": pending.envelope(),
454
+ "permission": {
455
+ "autoApproved": False,
456
+ "pending": True,
457
+ "toolName": permission_event.tool_name,
458
+ "toolUseId": permission_event.tool_use_id,
459
+ },
460
+ }
461
+ },
462
+ iac_code_session_id=iac_code_session_id,
463
+ )
464
+ future = permission_event.response_future
465
+ if future is None:
466
+ await permission_input_registry.fail(pending)
467
+ return None
468
+ await asyncio.shield(future)
469
+ await _enqueue_status(
470
+ event_queue,
471
+ task_id=task_id,
472
+ context_id=context_id,
473
+ state=TaskState.TASK_STATE_WORKING,
474
+ metadata={
475
+ "iac_code": {
476
+ "inputReceived": {
477
+ "kind": "permission",
478
+ "inputId": pending.input_id,
479
+ "toolUseId": permission_event.tool_use_id,
480
+ }
481
+ }
482
+ },
483
+ iac_code_session_id=iac_code_session_id,
484
+ )
485
+ except BaseException:
486
+ await permission_input_registry.fail(pending)
487
+ raise
488
+ finally:
489
+ await permission_input_registry.complete(pending)
490
+ return None
432
491
  approved = auto_approve_permissions
433
492
  if permission_resolver is not None:
434
493
  decision = permission_resolver(permission_event)