iac-code 0.10.0__tar.gz → 0.11.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.
- {iac_code-0.10.0 → iac_code-0.11.0}/PKG-INFO +11 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/README.md +10 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/pyproject.toml +7 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/setup.py +8 -2
- iac_code-0.11.0/src/iac_code/__init__.py +2 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/artifacts.py +19 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/metadata_redaction.py +4 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_events.py +177 -4
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_executor.py +155 -29
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_outbound.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_snapshot.py +50 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_stream.py +54 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/runtime_overrides.py +43 -14
- iac_code-0.11.0/src/iac_code/a2a/runtime_registry.py +57 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/dispatcher.py +24 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/convert.py +1 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/tools.py +3 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/agent_loop.py +238 -50
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/agent_tool.py +15 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/message.py +57 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/main.py +21 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/output_formats.py +7 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/process_mode.py +5 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/auth.py +3 -19
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/prompt.py +14 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/__init__.py +46 -5
- iac_code-0.11.0/src/iac_code/i18n/html_extractor.py +27 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +3055 -218
- iac_code-0.11.0/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/de/LC_MESSAGES/webui.po +3777 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +3016 -223
- iac_code-0.11.0/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/es/LC_MESSAGES/webui.po +3762 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +3043 -218
- iac_code-0.11.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/webui.po +3780 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +2750 -224
- iac_code-0.11.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/webui.po +3667 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +2969 -216
- iac_code-0.11.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/webui.po +3754 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +2754 -246
- iac_code-0.11.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.mo +0 -0
- iac_code-0.11.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/webui.po +3661 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/cli.py +4 -0
- iac_code-0.11.0/src/iac_code/pipeline/config.py +64 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_semantic_planning.py +40 -3
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/ask_user_question_tool.py +26 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/cleanup.py +16 -4
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/observability.py +70 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/pipeline_runner.py +222 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/prerequisites.py +34 -3
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/show_diagram_tool.py +11 -4
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/step_executor.py +83 -4
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/sub_pipeline_executor.py +13 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/transcript_storage.py +4 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/pipeline.yaml +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/intent_parsing.md +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/SKILL.md +2 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/SKILL.md +1 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/SKILL.md +2 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/SKILL.md +2 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/anthropic_provider.py +23 -14
- iac_code-0.11.0/src/iac_code/providers/manager.py +1541 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/minimax_provider.py +2 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/openai_provider.py +12 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/registry.py +25 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/thinking.py +43 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/agent_factory.py +38 -11
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/context_manager.py +190 -21
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/providers/aliyun.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_index.py +192 -24
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_storage.py +83 -14
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/__init__.py +29 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/attributes.py +11 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/client.py +35 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/content_serializer.py +86 -24
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/events.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/metrics.py +2 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/names.py +47 -1
- iac_code-0.11.0/src/iac_code/services/telemetry/scope.py +67 -0
- iac_code-0.11.0/src/iac_code/services/telemetry/tracing.py +82 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/update_checker.py +19 -9
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/SKILL.md +3 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/processor.py +2 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/settings.py +4 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/base.py +15 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/bash_tool.py +29 -7
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/acs3_transport.py +14 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/aliyun_api.py +526 -105
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/api_hooks.py +30 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/contract_store.py +16 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/hooks/ros_parameters.py +23 -16
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +174 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/public_errors.py +10 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/result_contract.py +218 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/ros_stack.py +83 -15
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/ros_stack_instances.py +1 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/__init__.py +53 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/action_policy.py +527 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/analyzer.py +5410 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/count.py +158 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_official_resource_index.json +12961 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_resource_value_specs.json +56214 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/data/ros_template_body_action_policies.json +260 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/facts.py +242 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/function_specs.py +240 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/model.py +542 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/outcome.py +108 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/parser.py +856 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/renderer.py +74 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/resource_value_specs.py +245 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/rules/__init__.py +1 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/rules/base.py +24 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/rules/registry.py +22 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/symbols.py +213 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/types.py +352 -0
- iac_code-0.11.0/src/iac_code/tools/cloud/aliyun/ros_validation/validator.py +267 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/ros_yaml.py +13 -36
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/runtime.py +11 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/base_stack.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/glob.py +54 -23
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/grep.py +13 -8
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/path_safety.py +43 -10
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/tool_executor.py +25 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/types/stream_events.py +66 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/renderer.py +15 -2
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/repl.py +117 -5
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/command_provider.py +3 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/skill_provider.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/types.py +1 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/public_errors.py +33 -2
- iac_code-0.11.0/src/iac_code/web/__init__.py +1 -0
- iac_code-0.11.0/src/iac_code/web/app.py +4808 -0
- iac_code-0.11.0/src/iac_code/web/cleanup.py +121 -0
- iac_code-0.11.0/src/iac_code/web/commands.py +202 -0
- iac_code-0.11.0/src/iac_code/web/diagram_cache.py +90 -0
- iac_code-0.11.0/src/iac_code/web/diagram_optimizer.py +143 -0
- iac_code-0.11.0/src/iac_code/web/diagrams.py +149 -0
- iac_code-0.11.0/src/iac_code/web/events.py +789 -0
- iac_code-0.11.0/src/iac_code/web/files.py +370 -0
- iac_code-0.11.0/src/iac_code/web/images.py +277 -0
- iac_code-0.11.0/src/iac_code/web/mcp_settings.py +813 -0
- iac_code-0.11.0/src/iac_code/web/memory.py +193 -0
- iac_code-0.11.0/src/iac_code/web/outputs.py +380 -0
- iac_code-0.11.0/src/iac_code/web/permissions.py +327 -0
- iac_code-0.11.0/src/iac_code/web/pipeline.py +185 -0
- iac_code-0.11.0/src/iac_code/web/pipeline_actions.py +641 -0
- iac_code-0.11.0/src/iac_code/web/pipeline_prerequisites.py +169 -0
- iac_code-0.11.0/src/iac_code/web/pipeline_transcript.py +1419 -0
- iac_code-0.11.0/src/iac_code/web/runtime.py +829 -0
- iac_code-0.11.0/src/iac_code/web/security.py +69 -0
- iac_code-0.11.0/src/iac_code/web/server.py +266 -0
- iac_code-0.11.0/src/iac_code/web/session_manager.py +3389 -0
- iac_code-0.11.0/src/iac_code/web/settings.py +1042 -0
- iac_code-0.11.0/src/iac_code/web/shell.py +297 -0
- iac_code-0.11.0/src/iac_code/web/skills.py +51 -0
- iac_code-0.11.0/src/iac_code/web/static/icons/sidebar-new-thread.svg +5 -0
- iac_code-0.11.0/src/iac_code/web/static/icons/sidebar-project-open.svg +16 -0
- iac_code-0.11.0/src/iac_code/web/static/icons/sidebar-search.svg +4 -0
- iac_code-0.11.0/src/iac_code/web/static/icons/sidebar-settings.svg +4 -0
- iac_code-0.11.0/src/iac_code/web/static/icons/sidebar-skills.svg +6 -0
- iac_code-0.11.0/src/iac_code/web/static/index.html +479 -0
- iac_code-0.11.0/src/iac_code/web/static/js/api.js +915 -0
- iac_code-0.11.0/src/iac_code/web/static/js/app.js +5822 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/blocking.js +474 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/composer.js +2212 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/output_panel.js +339 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/pipeline.js +1145 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/tool_cards.js +1343 -0
- iac_code-0.11.0/src/iac_code/web/static/js/components/workspace.js +4664 -0
- iac_code-0.11.0/src/iac_code/web/static/js/events.js +803 -0
- iac_code-0.11.0/src/iac_code/web/static/js/i18n.js +37 -0
- iac_code-0.11.0/src/iac_code/web/static/js/mermaid_render.js +130 -0
- iac_code-0.11.0/src/iac_code/web/static/js/vendor/markdown-it.LICENSE +22 -0
- iac_code-0.11.0/src/iac_code/web/static/js/vendor/markdown-it.min.js +2 -0
- iac_code-0.11.0/src/iac_code/web/static/js/vendor/mermaid.LICENSE +21 -0
- iac_code-0.11.0/src/iac_code/web/static/js/vendor/mermaid.min.js +2029 -0
- iac_code-0.11.0/src/iac_code/web/static/styles.css +11838 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code.egg-info/PKG-INFO +11 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code.egg-info/SOURCES.txt +84 -1
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code.egg-info/requires.txt +2 -0
- iac_code-0.10.0/src/iac_code/__init__.py +0 -2
- iac_code-0.10.0/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.mo +0 -0
- iac_code-0.10.0/src/iac_code/pipeline/config.py +0 -30
- iac_code-0.10.0/src/iac_code/providers/manager.py +0 -925
- iac_code-0.10.0/src/iac_code/services/telemetry/tracing.py +0 -38
- iac_code-0.10.0/src/iac_code/tools/cloud/aliyun/hooks/ros_validate.py +0 -218
- {iac_code-0.10.0 → iac_code-0.11.0}/LICENSE +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/MANIFEST.in +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/setup.cfg +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/agent_card.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/app.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/backup.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/client.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/events.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/executor.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/exposure.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/jsonrpc_passthrough.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/metrics.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/parts.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/persistence.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_delta_coalescing.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_flow_monitor.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_journal.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_paths.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_performance.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_recovery.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/pipeline_transport_delivery.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/push.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/push_queue.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/push_secrets.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/push_worker.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/router.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/signing.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/task_store.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/thinking_metadata.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transport.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/base.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/grpc.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/grpc_jsonrpc.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/http.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/redis_streams.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/stdio.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/unix.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/transports/websocket.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/a2a/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/http_sse.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/mcp.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/metrics.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/runner.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/server.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/session.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/slash_registry.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/state.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/acp/version.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/agent_types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/agent/system_prompt.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/headless.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/install_git_bash.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/process_events.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/process_protocol.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/cli/update.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/clear.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/compact.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/debug.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/effort.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/exit.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/help.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/mcp.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/memory.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/model.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/registry.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/rename.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/resume.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/skills.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/status.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/tasks.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/commands/thinking_enabled.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/config.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/client.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/config.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/env_expansion.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/errors.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/manager.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/oauth.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/output.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/progress.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/prompt_dispatch.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/prompts.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/redaction.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/skills.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/storage.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/tools.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/mcp/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/memory/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/memory/memory_manager.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/memory/memory_tools.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/memory/project_memory.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/memory/recall.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/constants.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/display_names.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_graph.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_meta.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_metas/Categories.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_metas/config.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_metas/products.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_resource_inventory.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_rule_candidates.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_rule_drafts.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_rule_facts.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_rules.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/architecture_rules.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/complete_step_tool.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/completion_guard_state.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/context.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/display_replay.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/events.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/handoff.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/interrupt.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/loader.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/prompts/interrupt_judge.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/public_errors.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/recovery.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/resume_recovery.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/session.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/state_machine.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/step_spec.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/ui_contract.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/engine/user_input.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/hooks/deploying.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/architecture_planning.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/confirm_and_select.a2a.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/confirm_and_select.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/cost_estimating.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/deploying.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/evaluate_candidates.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/reviewing.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/prompts/template_generating.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/ecs.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/oss.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/rds.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/redis.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/slb.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/cloud-products/vpc.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/ros-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/template-parameters.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/references/terraform-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/SKILL.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-architecture/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/ecs.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/oss.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/rds.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/redis.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/slb.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/cloud-products/vpc.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/ros-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/template-parameters.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-cost/references/terraform-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/ecs.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/oss.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/rds.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/redis.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/slb.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/cloud-products/vpc.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/ros-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/template-parameters.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-deploying/references/terraform-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-intent/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/SKILL.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-review/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/evals.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/ecs.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/oss.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/rds.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/redis.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/slb.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/cloud-products/vpc.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/ros-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/template-parameters.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/skills/iac-aliyun-template-generating/references/terraform-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/tools/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/tools/infraguard_scan_tool.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/tools/ros_deploy_tool.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/tools/ros_template_tools.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/pipeline/selling/tools/show_candidate_detail_tool.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/azure_openai_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/base.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/dashscope_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/deepseek_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/gemini_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/kimi_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/lmstudio_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/modelscope_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/ollama_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/openrouter_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/request_logging.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/request_policy.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/retry.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/siliconflow_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/stream_watchdog.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/volcengine_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/providers/zhipu_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/capabilities/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/capabilities/auto_detect.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/capabilities/multimodal.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/cloud_credentials.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/audit.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/loader.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/pipeline.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/rule_scope.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/storage.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/permissions/trusted_roots.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/providers/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/providers/aliyun_oauth.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/qwenpaw_source.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_backup.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_backup_state.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_layout.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_metadata.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_resolver.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/session_usage.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/config.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/constants.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/fallback.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/identity.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/sanitize.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/sink.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/telemetry/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/token_budget.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/services/token_counter.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/auto_trigger.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/ros-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameter-recommendation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/pac_aliyun/SKILL.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/pac_aliyun/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/pac_aliyun/auto_trigger.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/pac_aliyun/references/infraguard-policy-generation.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/bundled/simplify.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/discovery.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/frontmatter.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/listing.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/loader.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/management.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/renderer.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/skill_definition.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/skills/skill_tool.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/state/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/state/app_state.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tasks/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tasks/notification_queue.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tasks/task_state.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tasks/task_tools.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/argv_safety.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/command_parser.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/mode_validation.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/path_validation.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/permissions.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/readonly_commands.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/rule_matching.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/bash/safety_checks.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/aliyun_api_doc.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/api_contract.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/api_identifiers.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/README.md +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/catalog.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/generation_report.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/legacy.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/overrides.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/endpoints/unavailable.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/api_overrides.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/exclusions.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_aliases.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/openmeta/product_catalog.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/oss/operation_catalog.json +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/validation/judgments.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/data/validation/overrides.yml +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/endpoint_resolver.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/hooks/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/openmeta.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/oss_v4_adapter.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/product_resolver.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/retry_policy.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/ros_client.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/ros_template_tools.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/template_source.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/user_agent.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/aliyun/validation_policy.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/base_api.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/registry.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/cloud/types.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/edit_file.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/list_files.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/read_file.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/result_storage.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/web_fetch.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/tools/write_file.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/types/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/types/permissions.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/types/skill_source.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/banner.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/candidate_selection.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/dialog.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/divider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/fuzzy_picker.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/parallel_tabs.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/progress_bar.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/search_box.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/select.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/status_icon.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/components/tabs.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/in_place_render.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/input_history.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/key_event.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/prompt_input.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/raw_input.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/raw_input_win.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/core/screen.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/diagram_rendering.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/global_search.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/history_search.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/mcp_manager.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/memory.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/memory_editor.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/model_picker.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/quick_open.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/resume_picker.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/dialogs/skills_picker.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/keybindings/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/keybindings/manager.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/pipeline_display_replay.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/pipeline_styles.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/spinner.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/stream_accumulator.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/aggregator.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/directory_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/file_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/shell_history_provider.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/suggestions/token_extractor.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/ui/transcript_view.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/async_lifecycle.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/background_housekeeping.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/cleanup.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/console.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/file_security.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/__init__.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/clipboard.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/format_detect.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/pasted_content.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/processor.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/resizer.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/image/store.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/json_utils.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/log.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/path_components.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/path_locks.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/platform.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/project_paths.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/public_paths.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/signals.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/state_io.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/tool_input_parser.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/tool_result_redaction.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code/utils/windows_paths.py +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code.egg-info/dependency_links.txt +0 -0
- {iac_code-0.10.0 → iac_code-0.11.0}/src/iac_code.egg-info/entry_points.txt +0 -0
- {iac_code-0.10.0 → iac_code-0.11.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.
|
|
3
|
+
Version: 0.11.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
|
|
@@ -75,6 +75,16 @@ Reading from stdin is also supported:
|
|
|
75
75
|
echo "Create an OSS Bucket" | iac-code --prompt -
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
### Web App
|
|
79
|
+
|
|
80
|
+
Prefer a graphical interface? Launch the local web app, which runs the same engine as the CLI and shares the same sessions:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
iac-code web
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
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.
|
|
87
|
+
|
|
78
88
|
## Contributing
|
|
79
89
|
|
|
80
90
|
Install [uv](https://docs.astral.sh/uv/getting-started/installation/), then:
|
|
@@ -55,6 +55,16 @@ Reading from stdin is also supported:
|
|
|
55
55
|
echo "Create an OSS Bucket" | iac-code --prompt -
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
### Web App
|
|
59
|
+
|
|
60
|
+
Prefer a graphical interface? Launch the local web app, which runs the same engine as the CLI and shares the same sessions:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
iac-code web
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
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.
|
|
67
|
+
|
|
58
68
|
## Contributing
|
|
59
69
|
|
|
60
70
|
Install [uv](https://docs.astral.sh/uv/getting-started/installation/), then:
|
|
@@ -46,10 +46,12 @@ dependencies = [
|
|
|
46
46
|
"alibabacloud-gateway-oss>=0.0.25,<1",
|
|
47
47
|
"alibabacloud-gateway-pop>=0.1.3,<1",
|
|
48
48
|
"aliyun-python-sdk-core>=2.16,<3",
|
|
49
|
+
"python-dateutil==2.8.2",
|
|
49
50
|
]
|
|
50
51
|
|
|
51
52
|
[project.optional-dependencies]
|
|
52
53
|
http = [
|
|
54
|
+
"a2a-sdk[http-server,signing]>=1.0.2,<2",
|
|
53
55
|
"starlette>=0.39.0",
|
|
54
56
|
"uvicorn[standard]>=0.30.0",
|
|
55
57
|
]
|
|
@@ -104,6 +106,11 @@ version = {attr = "iac_code.__version__"}
|
|
|
104
106
|
"**/*.yaml",
|
|
105
107
|
"**/*.json",
|
|
106
108
|
"**/*.md",
|
|
109
|
+
"**/*.html",
|
|
110
|
+
"**/*.css",
|
|
111
|
+
"**/*.js",
|
|
112
|
+
"**/*.svg",
|
|
113
|
+
"**/*.LICENSE",
|
|
107
114
|
"**/*.rego",
|
|
108
115
|
"**/*.mo",
|
|
109
116
|
"**/*.po",
|
|
@@ -47,6 +47,7 @@ INSTALL_REQUIRES = [
|
|
|
47
47
|
]
|
|
48
48
|
EXTRAS_REQUIRE = {
|
|
49
49
|
"http": [
|
|
50
|
+
"a2a-sdk[http-server,signing]>=1.0.2,<2",
|
|
50
51
|
"starlette>=0.39.0",
|
|
51
52
|
"uvicorn[standard]>=0.30.0",
|
|
52
53
|
],
|
|
@@ -77,6 +78,11 @@ PACKAGE_DATA = {
|
|
|
77
78
|
"**/*.json",
|
|
78
79
|
"**/*.md",
|
|
79
80
|
"**/*.rego",
|
|
81
|
+
"**/*.html",
|
|
82
|
+
"**/*.css",
|
|
83
|
+
"**/*.js",
|
|
84
|
+
"**/*.svg",
|
|
85
|
+
"**/*.LICENSE",
|
|
80
86
|
"**/*.mo",
|
|
81
87
|
"**/*.po",
|
|
82
88
|
],
|
|
@@ -194,7 +200,7 @@ def _compile_translations():
|
|
|
194
200
|
|
|
195
201
|
|
|
196
202
|
def _replace_release_date():
|
|
197
|
-
if platform.system() ==
|
|
203
|
+
if platform.system() == "Darwin":
|
|
198
204
|
return
|
|
199
205
|
content = INIT_PATH.read_text(encoding="utf-8")
|
|
200
206
|
today = date.today().isoformat()
|
|
@@ -325,5 +331,5 @@ setup(
|
|
|
325
331
|
cmdclass={
|
|
326
332
|
"build_py": InjectReleaseDateBuildPy,
|
|
327
333
|
"sdist": CompileTranslationsSdist,
|
|
328
|
-
}
|
|
334
|
+
},
|
|
329
335
|
)
|
|
@@ -20,7 +20,7 @@ from iac_code.services.session_layout import (
|
|
|
20
20
|
ensure_session_owned_dir,
|
|
21
21
|
require_supported_session_layout,
|
|
22
22
|
)
|
|
23
|
-
from iac_code.utils.public_errors import sanitize_public_text
|
|
23
|
+
from iac_code.utils.public_errors import all_redaction_suppressed, sanitize_public_text
|
|
24
24
|
from iac_code.utils.public_paths import relativize_public_file_uri
|
|
25
25
|
from iac_code.utils.state_io import atomic_write_bytes
|
|
26
26
|
from iac_code.utils.tool_result_redaction import (
|
|
@@ -124,6 +124,10 @@ def sanitize_public_artifact_data(
|
|
|
124
124
|
*,
|
|
125
125
|
public_path_roots: Iterable[Mapping[str, str]] | None = None,
|
|
126
126
|
) -> Any:
|
|
127
|
+
if all_redaction_suppressed():
|
|
128
|
+
# 环回 web 上下文:结构化数据整体原样(含敏感键 → 不再打 [REDACTED]、不再删文件内容),
|
|
129
|
+
# 使 journal 与快照保留完整模板/结论,重载可正常出图。
|
|
130
|
+
return value
|
|
127
131
|
if isinstance(value, list):
|
|
128
132
|
return [sanitize_public_artifact_data(item, public_path_roots=public_path_roots) for item in value]
|
|
129
133
|
if isinstance(value, tuple):
|
|
@@ -166,6 +170,10 @@ def sanitize_public_tool_output_data(
|
|
|
166
170
|
*,
|
|
167
171
|
public_path_roots: Iterable[Mapping[str, str]] | None = None,
|
|
168
172
|
) -> Any:
|
|
173
|
+
if all_redaction_suppressed():
|
|
174
|
+
# 环回 web 上下文:工具输出整体原样(敏感键也不打 [REDACTED]、不再删文件内容),
|
|
175
|
+
# 与 sanitize_public_artifact_data 一致,使 journal/快照保留完整结果供重载。
|
|
176
|
+
return value
|
|
169
177
|
if isinstance(value, str):
|
|
170
178
|
value = redact_file_content_from_json_string(value)
|
|
171
179
|
return sanitize_public_artifact_text(value, fallback_summary="", public_path_roots=public_path_roots)
|
|
@@ -229,6 +237,8 @@ def _sanitize_artifact_string(
|
|
|
229
237
|
except UnsafeArtifactNameError:
|
|
230
238
|
pass
|
|
231
239
|
if value.lower().startswith("file://"):
|
|
240
|
+
if all_redaction_suppressed():
|
|
241
|
+
return value
|
|
232
242
|
return relativize_public_file_uri(value, public_path_roots) or "[PATH]"
|
|
233
243
|
return _sanitize_artifact_scalar_string(value, public_path_roots=public_path_roots)
|
|
234
244
|
|
|
@@ -239,10 +249,14 @@ def _sanitize_artifact_scalar_string(
|
|
|
239
249
|
public_path_roots: Iterable[Mapping[str, str]] | None = None,
|
|
240
250
|
) -> str:
|
|
241
251
|
if value.lower().startswith("file://"):
|
|
252
|
+
if all_redaction_suppressed():
|
|
253
|
+
return value
|
|
242
254
|
return relativize_public_file_uri(value, public_path_roots) or "[PATH]"
|
|
243
255
|
decoded = unquote(value)
|
|
244
256
|
if decoded != value:
|
|
245
257
|
if decoded.lower().startswith("file://"):
|
|
258
|
+
if all_redaction_suppressed():
|
|
259
|
+
return value
|
|
246
260
|
return relativize_public_file_uri(decoded, public_path_roots) or "[PATH]"
|
|
247
261
|
decoded_sanitized = sanitize_public_artifact_text(
|
|
248
262
|
decoded,
|
|
@@ -287,6 +301,9 @@ def _replace_file_uri_tokens(
|
|
|
287
301
|
*,
|
|
288
302
|
public_path_roots: Iterable[Mapping[str, str]] | None = None,
|
|
289
303
|
) -> str:
|
|
304
|
+
if all_redaction_suppressed():
|
|
305
|
+
return value
|
|
306
|
+
|
|
290
307
|
def replace_file_uri(match: re.Match[str]) -> str:
|
|
291
308
|
uri = match.group(0)
|
|
292
309
|
trailing = ""
|
|
@@ -330,7 +347,7 @@ def _replace_public_artifact_uri_tokens(
|
|
|
330
347
|
trailing = uri[-1] + trailing
|
|
331
348
|
uri = uri[:-1]
|
|
332
349
|
if not is_valid_public_artifact_uri(uri):
|
|
333
|
-
return "[PATH]"
|
|
350
|
+
return match.group(0) if all_redaction_suppressed() else "[PATH]"
|
|
334
351
|
placeholder = f"{prefix}{len(placeholders)}__"
|
|
335
352
|
placeholders[placeholder] = uri
|
|
336
353
|
return f"{placeholder}{trailing}"
|
|
@@ -7,6 +7,7 @@ from a2a.types import Message
|
|
|
7
7
|
from google.protobuf.json_format import MessageToDict, ParseDict
|
|
8
8
|
|
|
9
9
|
from iac_code.a2a.artifacts import sanitize_public_artifact_text
|
|
10
|
+
from iac_code.utils.public_errors import all_redaction_suppressed
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class A2AMetadataEchoRedactor:
|
|
@@ -62,6 +63,9 @@ class A2AMetadataEchoRedactor:
|
|
|
62
63
|
*,
|
|
63
64
|
public_path_roots: Iterable[Mapping[str, str]] | None = None,
|
|
64
65
|
) -> Any:
|
|
66
|
+
if all_redaction_suppressed():
|
|
67
|
+
# 环回 web 上下文:敏感键也不打 *** —— 整体原样返回。
|
|
68
|
+
return value
|
|
65
69
|
if isinstance(value, Mapping):
|
|
66
70
|
return {
|
|
67
71
|
key: self.REDACTED_VALUE
|
|
@@ -16,13 +16,19 @@ from iac_code.services.permissions.audit import build_input_summary, build_redac
|
|
|
16
16
|
from iac_code.types.stream_events import (
|
|
17
17
|
AskUserQuestionEvent,
|
|
18
18
|
CandidateDetailEvent,
|
|
19
|
+
CompactionEvent,
|
|
20
|
+
ContextUsageEvent,
|
|
19
21
|
DiagramEvent,
|
|
20
22
|
MCPProgressEvent,
|
|
23
|
+
MessageStartEvent,
|
|
21
24
|
PermissionRequestEvent,
|
|
22
25
|
ResourceObservedEvent,
|
|
26
|
+
StackInstancesProgressEvent,
|
|
27
|
+
StackProgressEvent,
|
|
23
28
|
SubPipelineStreamEvent,
|
|
24
29
|
TextDeltaEvent,
|
|
25
30
|
ThinkingDeltaEvent,
|
|
31
|
+
TombstoneEvent,
|
|
26
32
|
ToolResultEvent,
|
|
27
33
|
ToolUseEndEvent,
|
|
28
34
|
)
|
|
@@ -285,6 +291,8 @@ class PipelineEventTranslator:
|
|
|
285
291
|
def translate(self, event: Any) -> list[dict[str, Any]]:
|
|
286
292
|
if isinstance(event, PipelineEvent):
|
|
287
293
|
return self._translate_pipeline_event(event)
|
|
294
|
+
if isinstance(event, MessageStartEvent):
|
|
295
|
+
return [self._translate_parent_scoped_display_event("message_started", {"messageId": event.message_id})]
|
|
288
296
|
if isinstance(event, TextDeltaEvent):
|
|
289
297
|
return [self._translate_text_delta_event(event)]
|
|
290
298
|
if isinstance(event, ThinkingDeltaEvent):
|
|
@@ -297,7 +305,9 @@ class PipelineEventTranslator:
|
|
|
297
305
|
return [self._translate_permission_request_event(event)]
|
|
298
306
|
if isinstance(event, ToolUseEndEvent):
|
|
299
307
|
self._remember_tool_input(event)
|
|
300
|
-
return []
|
|
308
|
+
return [self._translate_tool_started_event(event)]
|
|
309
|
+
if isinstance(event, TombstoneEvent):
|
|
310
|
+
return [self._translate_parent_scoped_display_event("message_tombstone", _tombstone_data(event))]
|
|
301
311
|
if isinstance(event, CandidateDetailEvent):
|
|
302
312
|
envelope = self._translate_candidate_detail_event(event)
|
|
303
313
|
return [] if envelope is None else [envelope]
|
|
@@ -310,8 +320,20 @@ class PipelineEventTranslator:
|
|
|
310
320
|
return [] if envelope is None else [envelope]
|
|
311
321
|
if isinstance(event, MCPProgressEvent):
|
|
312
322
|
return [self._translate_parent_scoped_display_event("tool_progress", _mcp_progress_data(event))]
|
|
323
|
+
if isinstance(event, StackProgressEvent):
|
|
324
|
+
return [self._translate_parent_scoped_display_event("stack_progress", _stack_progress_data(event))]
|
|
325
|
+
if isinstance(event, StackInstancesProgressEvent):
|
|
326
|
+
return [
|
|
327
|
+
self._translate_parent_scoped_display_event(
|
|
328
|
+
"stack_instances_progress", _stack_instances_progress_data(event)
|
|
329
|
+
)
|
|
330
|
+
]
|
|
313
331
|
if isinstance(event, SubPipelineStreamEvent):
|
|
314
332
|
return self._translate_sub_pipeline_stream_event(event)
|
|
333
|
+
if isinstance(event, CompactionEvent):
|
|
334
|
+
return self._translate_compaction_event(event)
|
|
335
|
+
if isinstance(event, ContextUsageEvent):
|
|
336
|
+
return [self._translate_parent_scoped_display_event("context_usage", _usage_data(event.usage))]
|
|
315
337
|
return []
|
|
316
338
|
|
|
317
339
|
def manual_event(
|
|
@@ -562,7 +584,12 @@ class PipelineEventTranslator:
|
|
|
562
584
|
if state.current_step_id is not None:
|
|
563
585
|
stack_envelope["candidateStep"] = self._candidate_step_coordinate(state, state.current_step_id)
|
|
564
586
|
return [stack_envelope]
|
|
565
|
-
if isinstance(inner,
|
|
587
|
+
if isinstance(inner, MessageStartEvent):
|
|
588
|
+
event_type = "message_started"
|
|
589
|
+
data = {"messageId": inner.message_id}
|
|
590
|
+
input_data = None
|
|
591
|
+
permission = None
|
|
592
|
+
elif isinstance(inner, TextDeltaEvent):
|
|
566
593
|
event_type = "text_delta"
|
|
567
594
|
data = {"text": inner.text}
|
|
568
595
|
input_data = None
|
|
@@ -604,10 +631,32 @@ class PipelineEventTranslator:
|
|
|
604
631
|
permission = _permission_request_metadata(inner)
|
|
605
632
|
elif isinstance(inner, ToolUseEndEvent):
|
|
606
633
|
self._remember_tool_input(inner)
|
|
607
|
-
|
|
634
|
+
event_type = "tool_started"
|
|
635
|
+
data = {
|
|
636
|
+
"toolName": inner.name,
|
|
637
|
+
"toolUseId": inner.tool_use_id,
|
|
638
|
+
"input": _sanitize_tool_input(inner.input),
|
|
639
|
+
}
|
|
640
|
+
input_data = None
|
|
641
|
+
permission = None
|
|
642
|
+
elif isinstance(inner, TombstoneEvent):
|
|
643
|
+
event_type = "message_tombstone"
|
|
644
|
+
data = _tombstone_data(inner)
|
|
645
|
+
input_data = None
|
|
646
|
+
permission = None
|
|
608
647
|
elif isinstance(inner, ToolResultEvent):
|
|
609
648
|
event_type = "tool_result"
|
|
610
649
|
data = _tool_result_data(inner)
|
|
650
|
+
recorded_input = self._recorded_tool_input(inner.tool_use_id)
|
|
651
|
+
if recorded_input is not None:
|
|
652
|
+
data["input"] = recorded_input
|
|
653
|
+
input_data = None
|
|
654
|
+
permission = None
|
|
655
|
+
elif isinstance(inner, CompactionEvent):
|
|
656
|
+
event_type = _COMPACTION_PHASE_EVENT_TYPES.get(inner.phase)
|
|
657
|
+
if event_type is None:
|
|
658
|
+
return []
|
|
659
|
+
data = _compaction_data(inner)
|
|
611
660
|
input_data = None
|
|
612
661
|
permission = None
|
|
613
662
|
elif isinstance(inner, MCPProgressEvent):
|
|
@@ -615,6 +664,21 @@ class PipelineEventTranslator:
|
|
|
615
664
|
data = _mcp_progress_data(inner)
|
|
616
665
|
input_data = None
|
|
617
666
|
permission = None
|
|
667
|
+
elif isinstance(inner, StackProgressEvent):
|
|
668
|
+
event_type = "stack_progress"
|
|
669
|
+
data = _stack_progress_data(inner)
|
|
670
|
+
input_data = None
|
|
671
|
+
permission = None
|
|
672
|
+
elif isinstance(inner, StackInstancesProgressEvent):
|
|
673
|
+
event_type = "stack_instances_progress"
|
|
674
|
+
data = _stack_instances_progress_data(inner)
|
|
675
|
+
input_data = None
|
|
676
|
+
permission = None
|
|
677
|
+
elif isinstance(inner, ContextUsageEvent):
|
|
678
|
+
event_type = "context_usage"
|
|
679
|
+
data = _usage_data(inner.usage)
|
|
680
|
+
input_data = None
|
|
681
|
+
permission = None
|
|
618
682
|
else:
|
|
619
683
|
return []
|
|
620
684
|
|
|
@@ -674,6 +738,12 @@ class PipelineEventTranslator:
|
|
|
674
738
|
def _translate_diagram_event(self, event: DiagramEvent) -> dict[str, Any]:
|
|
675
739
|
return self._translate_parent_scoped_display_event("diagram_shown", _diagram_data(event))
|
|
676
740
|
|
|
741
|
+
def _translate_compaction_event(self, event: CompactionEvent) -> list[dict[str, Any]]:
|
|
742
|
+
event_type = _COMPACTION_PHASE_EVENT_TYPES.get(event.phase)
|
|
743
|
+
if event_type is None:
|
|
744
|
+
return []
|
|
745
|
+
return [self._translate_parent_scoped_display_event(event_type, _compaction_data(event))]
|
|
746
|
+
|
|
677
747
|
def _translate_parent_scoped_display_event(self, event_type: str, data: dict[str, Any]) -> dict[str, Any]:
|
|
678
748
|
scope = "step" if self._current_parent_step_id is not None else "pipeline"
|
|
679
749
|
envelope = self._envelope(event_type, scope, "working", data)
|
|
@@ -681,6 +751,17 @@ class PipelineEventTranslator:
|
|
|
681
751
|
envelope["step"] = self._parent_step_coordinate(self._current_parent_step_id)
|
|
682
752
|
return envelope
|
|
683
753
|
|
|
754
|
+
def _translate_tool_started_event(self, event: ToolUseEndEvent) -> dict[str, Any]:
|
|
755
|
+
"""Emit a ``tool_started`` envelope the moment the model finishes a tool
|
|
756
|
+
call (its input is complete but the result has not arrived), so the web
|
|
757
|
+
transcript can show the tool as *running* before completing it in place."""
|
|
758
|
+
data = {
|
|
759
|
+
"toolName": event.name,
|
|
760
|
+
"toolUseId": event.tool_use_id,
|
|
761
|
+
"input": _sanitize_tool_input(event.input),
|
|
762
|
+
}
|
|
763
|
+
return self._translate_parent_scoped_display_event("tool_started", data)
|
|
764
|
+
|
|
684
765
|
def _translate_tool_result_event(self, event: ToolResultEvent) -> list[dict[str, Any]]:
|
|
685
766
|
envelopes: list[dict[str, Any]] = []
|
|
686
767
|
candidate_detail_envelope = self._translate_candidate_detail_from_tool_result(event)
|
|
@@ -689,9 +770,23 @@ class PipelineEventTranslator:
|
|
|
689
770
|
stack_envelope = self._translate_stack_current_changed_event(event)
|
|
690
771
|
if stack_envelope is not None:
|
|
691
772
|
envelopes.append(stack_envelope)
|
|
692
|
-
|
|
773
|
+
data = _tool_result_data(event)
|
|
774
|
+
tool_input = self._recorded_tool_input(event.tool_use_id)
|
|
775
|
+
if tool_input is not None:
|
|
776
|
+
data["input"] = tool_input
|
|
777
|
+
envelopes.append(self._translate_parent_scoped_display_event("tool_result", data))
|
|
693
778
|
return envelopes
|
|
694
779
|
|
|
780
|
+
def _recorded_tool_input(self, tool_use_id: str) -> dict[str, Any] | None:
|
|
781
|
+
"""Return the input recorded for a completed tool call, so the web
|
|
782
|
+
transcript can show *what* each tool was invoked with (and render the
|
|
783
|
+
``complete_step`` conclusion, which lives in that tool's input)."""
|
|
784
|
+
record = self._tool_inputs.get(tool_use_id)
|
|
785
|
+
if not isinstance(record, dict):
|
|
786
|
+
return None
|
|
787
|
+
tool_input = record.get("input")
|
|
788
|
+
return _sanitize_tool_input(tool_input) if isinstance(tool_input, dict) else None
|
|
789
|
+
|
|
695
790
|
def _remember_tool_input(self, event: ToolUseEndEvent) -> None:
|
|
696
791
|
self._tool_inputs[event.tool_use_id] = {"toolName": event.name, "input": dict(event.input)}
|
|
697
792
|
|
|
@@ -1399,10 +1494,38 @@ def _tool_result_data(event: ToolResultEvent) -> dict[str, Any]:
|
|
|
1399
1494
|
}
|
|
1400
1495
|
|
|
1401
1496
|
|
|
1497
|
+
def _sanitize_tool_input(tool_input: dict[str, Any]) -> dict[str, Any]:
|
|
1498
|
+
# journal 是本地用户数据;真正远程出口由 pipeline_stream._sanitize_remote_envelope 兜底脱敏,
|
|
1499
|
+
# 故写入时不再脱敏,避免把 [REDACTED]/*** 注入模板 YAML 与 complete_step conclusion。
|
|
1500
|
+
return dict(tool_input) if isinstance(tool_input, dict) else {}
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
def _usage_data(usage: dict[str, Any]) -> dict[str, Any]:
|
|
1504
|
+
usage = usage or {}
|
|
1505
|
+
return {
|
|
1506
|
+
"totalTokens": usage.get("total_tokens"),
|
|
1507
|
+
"contextWindow": usage.get("context_window"),
|
|
1508
|
+
"usagePercent": usage.get("usage_percent"),
|
|
1509
|
+
"messageCount": usage.get("message_count"),
|
|
1510
|
+
"systemPromptTokens": usage.get("system_prompt_tokens"),
|
|
1511
|
+
"toolDefinitionTokens": usage.get("tool_definition_tokens"),
|
|
1512
|
+
"userMessageTokens": usage.get("user_message_tokens"),
|
|
1513
|
+
"assistantMessageTokens": usage.get("assistant_message_tokens"),
|
|
1514
|
+
"toolResultTokens": usage.get("tool_result_tokens"),
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
|
|
1402
1518
|
def _thinking_delta_data(event: ThinkingDeltaEvent) -> dict[str, Any]:
|
|
1403
1519
|
return {"type": "raw_thinking", "text": _truncate(event.text)}
|
|
1404
1520
|
|
|
1405
1521
|
|
|
1522
|
+
def _tombstone_data(event: TombstoneEvent) -> dict[str, Any]:
|
|
1523
|
+
return {
|
|
1524
|
+
"messageId": event.message_id,
|
|
1525
|
+
"affectedToolUseIds": list(event.affected_tool_use_ids),
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
|
|
1406
1529
|
def _mcp_progress_data(event: MCPProgressEvent) -> dict[str, Any]:
|
|
1407
1530
|
canonical_progress = mcp_progress_metadata(event)
|
|
1408
1531
|
data: dict[str, Any] = {
|
|
@@ -1421,6 +1544,37 @@ def _mcp_progress_data(event: MCPProgressEvent) -> dict[str, Any]:
|
|
|
1421
1544
|
return data
|
|
1422
1545
|
|
|
1423
1546
|
|
|
1547
|
+
def _stack_progress_data(event: StackProgressEvent) -> dict[str, Any]:
|
|
1548
|
+
"""Public envelope data for a stack lifecycle progress frame.
|
|
1549
|
+
|
|
1550
|
+
Field names mirror the web consumers (``pipeline.js`` workspace panel and
|
|
1551
|
+
the inline tool card via ``pipeline_transcript`` → ``events.js``): stackName,
|
|
1552
|
+
stackId, status, progressPercentage, resources, elapsedSeconds, toolUseId.
|
|
1553
|
+
"""
|
|
1554
|
+
return {
|
|
1555
|
+
"toolUseId": event.tool_use_id,
|
|
1556
|
+
"stackId": event.stack_id,
|
|
1557
|
+
"stackName": event.stack_name,
|
|
1558
|
+
"status": event.status,
|
|
1559
|
+
"progressPercentage": event.progress_percentage,
|
|
1560
|
+
"resources": event.resources,
|
|
1561
|
+
"elapsedSeconds": event.elapsed_seconds,
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
def _stack_instances_progress_data(event: StackInstancesProgressEvent) -> dict[str, Any]:
|
|
1566
|
+
"""Public envelope data for a StackGroup instances progress frame."""
|
|
1567
|
+
return {
|
|
1568
|
+
"toolUseId": event.tool_use_id,
|
|
1569
|
+
"stackGroupName": event.stack_group_name,
|
|
1570
|
+
"operationId": event.operation_id,
|
|
1571
|
+
"status": event.status,
|
|
1572
|
+
"progressPercentage": event.progress_percentage,
|
|
1573
|
+
"instances": event.instances,
|
|
1574
|
+
"elapsedSeconds": event.elapsed_seconds,
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
|
|
1424
1578
|
def _completion_step_id(envelope: dict[str, Any]) -> str | None:
|
|
1425
1579
|
candidate_step = envelope.get("candidateStep")
|
|
1426
1580
|
if isinstance(candidate_step, dict):
|
|
@@ -1558,6 +1712,25 @@ def _candidate_detail_data_from_tool_input(tool_use_id: str, tool_input: dict[st
|
|
|
1558
1712
|
)
|
|
1559
1713
|
|
|
1560
1714
|
|
|
1715
|
+
# 压缩事件三相位 → 转录事件类型。旧实现只放行 finished,丢弃 started/failed,导致流水线子代理里
|
|
1716
|
+
# 自动压缩时前端收不到「压缩开始/结束」信号:只见步骤计时(syncPipelineThinking),看不到底部
|
|
1717
|
+
# 「正在自动压缩上下文」流光条。全部转发后由 pipeline_transcript 折成 compaction.started/finished
|
|
1718
|
+
# SSE(started 起条、finished/failed 撤条),与普通模式 WebEventTranslator 的相位映射一致。
|
|
1719
|
+
_COMPACTION_PHASE_EVENT_TYPES = {
|
|
1720
|
+
"started": "context_compaction_started",
|
|
1721
|
+
"finished": "context_compacted",
|
|
1722
|
+
"failed": "context_compaction_failed",
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
def _compaction_data(event: CompactionEvent) -> dict[str, Any]:
|
|
1727
|
+
return {
|
|
1728
|
+
"summary": event.summary,
|
|
1729
|
+
"originalTokens": event.original_tokens,
|
|
1730
|
+
"compactedTokens": event.compacted_tokens,
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
|
|
1561
1734
|
def _diagram_data(event: DiagramEvent) -> dict[str, Any]:
|
|
1562
1735
|
data: dict[str, Any] = {
|
|
1563
1736
|
"candidateName": event.candidate_name,
|