From cab361788ec7596cc4ee7fe0cbd22f2aec960c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Thu, 17 Sep 2026 10:31:59 +0800 Subject: [PATCH 1/3] chore: bump version to 0.16.0 --- desktop/helpers/Cargo.lock | 2 +- desktop/helpers/Cargo.toml | 2 +- desktop/package-lock.json | 4 ++-- desktop/package.json | 2 +- desktop/src-tauri/Cargo.lock | 4 ++-- desktop/src-tauri/Cargo.toml | 2 +- desktop/src-tauri/tauri.conf.json | 2 +- src/iac_code/__init__.py | 2 +- src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/desktop/helpers/Cargo.lock b/desktop/helpers/Cargo.lock index 91ba46431..ee144f953 100644 --- a/desktop/helpers/Cargo.lock +++ b/desktop/helpers/Cargo.lock @@ -183,7 +183,7 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "iac-code-desktop-helpers" -version = "0.15.0" +version = "0.16.0" dependencies = [ "anyhow", "hex", diff --git a/desktop/helpers/Cargo.toml b/desktop/helpers/Cargo.toml index 05886a3b0..a5d0f198f 100644 --- a/desktop/helpers/Cargo.toml +++ b/desktop/helpers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iac-code-desktop-helpers" -version = "0.15.0" +version = "0.16.0" license = "Apache-2.0" edition = "2021" rust-version = "1.77.2" diff --git a/desktop/package-lock.json b/desktop/package-lock.json index ac3b0a60a..5cc890cfe 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "iac-code-desktop", - "version": "0.15.0", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "iac-code-desktop", - "version": "0.15.0", + "version": "0.16.0", "devDependencies": { "@tauri-apps/cli": "2.11.2" } diff --git a/desktop/package.json b/desktop/package.json index d1417907d..9d69fd1a7 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,7 +1,7 @@ { "name": "iac-code-desktop", "private": true, - "version": "0.15.0", + "version": "0.16.0", "scripts": { "tauri": "tauri", "dev": "tauri dev --features updater", diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 2951d6b71..4eea3f471 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -1577,7 +1577,7 @@ dependencies = [ [[package]] name = "iac-code-desktop" -version = "0.15.0" +version = "0.16.0" dependencies = [ "anyhow", "fs2", @@ -1605,7 +1605,7 @@ dependencies = [ [[package]] name = "iac-code-desktop-helpers" -version = "0.15.0" +version = "0.16.0" dependencies = [ "anyhow", "hex", diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 1ed82ff8d..88a75e34e 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iac-code-desktop" -version = "0.15.0" +version = "0.16.0" description = "iac-code" authors = ["iac-code contributors"] license = "Apache-2.0" diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 7661c5d9c..294b946df 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "iac-code", - "version": "0.15.0", + "version": "0.16.0", "identifier": "com.alibaba.cloud.iaccode.desktop", "build": { "frontendDist": "../bootstrap" diff --git a/src/iac_code/__init__.py b/src/iac_code/__init__.py index d89da73ce..7757cc28f 100644 --- a/src/iac_code/__init__.py +++ b/src/iac_code/__init__.py @@ -1,2 +1,2 @@ -__version__ = "0.15.0" +__version__ = "0.16.0" __release_date__ = "" diff --git a/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po index fd7bb346f..52e8e88ed 100644 --- a/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po index 2d843f1e0..a827fcc0f 100644 --- a/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po index aff075787..0a5e30dc2 100644 --- a/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po index 765a55bfe..889a5bbec 100644 --- a/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po index c301c3375..8e2652ae4 100644 --- a/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po index 7421d6094..cf161b409 100644 --- a/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.15.0\n" +"Project-Id-Version: iac-code 0.16.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-04-02 00:00+0000\n" From 376e65be9337a12112314ce76dfa80b4398f9619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Thu, 17 Sep 2026 10:53:41 +0800 Subject: [PATCH 2/3] fix: stabilize cancellation and isolation tests --- .../execution_control/run_execution_control_scenarios.py | 2 +- src/iac_code/pipeline/engine/show_diagram_tool.py | 6 +++++- tests/pipeline/engine/test_show_diagram_tool.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py b/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py index a138cd42b..64b4d03b5 100644 --- a/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py +++ b/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py @@ -539,7 +539,7 @@ def _assert_other_context_progress(self) -> None: other = self._stream(_message_payload(self.workspace), name="other-context") started = time.monotonic() other.start() - other.join(min(self.timeout, 2.0)) + other.join(self.timeout) other_context = _first(other.snapshot(), "contextId") assert other_context and other_context != self.context_id assert "ISOLATION_FIXTURE_FINAL" in json.dumps(other.snapshot()) diff --git a/src/iac_code/pipeline/engine/show_diagram_tool.py b/src/iac_code/pipeline/engine/show_diagram_tool.py index 8ae3ef5cc..acbe4cd8b 100644 --- a/src/iac_code/pipeline/engine/show_diagram_tool.py +++ b/src/iac_code/pipeline/engine/show_diagram_tool.py @@ -155,7 +155,11 @@ async def execute(self, *, tool_input: dict[str, Any], context: ToolContext) -> ) except asyncio.CancelledError: if context.event_queue is not None: - await context.event_queue.put( + # Cancellation may be requested more than once while the tool executor + # is draining this task. The queue is intentionally unbounded, so use + # the synchronous API to guarantee the fallback event is visible before + # propagating cancellation. + context.event_queue.put_nowait( _diagram_event_from_render_result( candidate_name=candidate_name, template_content=template_content, diff --git a/tests/pipeline/engine/test_show_diagram_tool.py b/tests/pipeline/engine/test_show_diagram_tool.py index 80cce2d4d..c4e775437 100644 --- a/tests/pipeline/engine/test_show_diagram_tool.py +++ b/tests/pipeline/engine/test_show_diagram_tool.py @@ -578,14 +578,14 @@ async def test_facts_mode_emits_fallback_optimized_event_when_executor_cancels_l class ShortTimeoutShowArchitectureDiagramTool(ShowArchitectureDiagramTool): @property def timeout(self) -> float | None: - return 0.05 + return 1.0 template = tmp_path / "template.yml" template.write_text(SLB_TEMPLATE, encoding="utf-8") queue: asyncio.Queue = asyncio.Queue() registry = ToolRegistry() registry.register(ShortTimeoutShowArchitectureDiagramTool()) - executor = ToolExecutor(registry, tool_timeout=0.05) + executor = ToolExecutor(registry, tool_timeout=1.0) async def slow_create_semantic_plan_for_architecture_with_llm( architecture_context: dict, From f89c81eff8382ea0b830d4dc70a0932dfc2a7a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Thu, 17 Sep 2026 10:59:50 +0800 Subject: [PATCH 3/3] Revert "fix: stabilize cancellation and isolation tests" This reverts commit 376e65be9337a12112314ce76dfa80b4398f9619. --- .../execution_control/run_execution_control_scenarios.py | 2 +- src/iac_code/pipeline/engine/show_diagram_tool.py | 6 +----- tests/pipeline/engine/test_show_diagram_tool.py | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py b/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py index 64b4d03b5..a138cd42b 100644 --- a/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py +++ b/scripts/a2a/e2e/execution_control/run_execution_control_scenarios.py @@ -539,7 +539,7 @@ def _assert_other_context_progress(self) -> None: other = self._stream(_message_payload(self.workspace), name="other-context") started = time.monotonic() other.start() - other.join(self.timeout) + other.join(min(self.timeout, 2.0)) other_context = _first(other.snapshot(), "contextId") assert other_context and other_context != self.context_id assert "ISOLATION_FIXTURE_FINAL" in json.dumps(other.snapshot()) diff --git a/src/iac_code/pipeline/engine/show_diagram_tool.py b/src/iac_code/pipeline/engine/show_diagram_tool.py index acbe4cd8b..8ae3ef5cc 100644 --- a/src/iac_code/pipeline/engine/show_diagram_tool.py +++ b/src/iac_code/pipeline/engine/show_diagram_tool.py @@ -155,11 +155,7 @@ async def execute(self, *, tool_input: dict[str, Any], context: ToolContext) -> ) except asyncio.CancelledError: if context.event_queue is not None: - # Cancellation may be requested more than once while the tool executor - # is draining this task. The queue is intentionally unbounded, so use - # the synchronous API to guarantee the fallback event is visible before - # propagating cancellation. - context.event_queue.put_nowait( + await context.event_queue.put( _diagram_event_from_render_result( candidate_name=candidate_name, template_content=template_content, diff --git a/tests/pipeline/engine/test_show_diagram_tool.py b/tests/pipeline/engine/test_show_diagram_tool.py index c4e775437..80cce2d4d 100644 --- a/tests/pipeline/engine/test_show_diagram_tool.py +++ b/tests/pipeline/engine/test_show_diagram_tool.py @@ -578,14 +578,14 @@ async def test_facts_mode_emits_fallback_optimized_event_when_executor_cancels_l class ShortTimeoutShowArchitectureDiagramTool(ShowArchitectureDiagramTool): @property def timeout(self) -> float | None: - return 1.0 + return 0.05 template = tmp_path / "template.yml" template.write_text(SLB_TEMPLATE, encoding="utf-8") queue: asyncio.Queue = asyncio.Queue() registry = ToolRegistry() registry.register(ShortTimeoutShowArchitectureDiagramTool()) - executor = ToolExecutor(registry, tool_timeout=1.0) + executor = ToolExecutor(registry, tool_timeout=0.05) async def slow_create_semantic_plan_for_architecture_with_llm( architecture_context: dict,