diff --git a/src/adapters/cursor/envelope-echo.ts b/src/adapters/cursor/envelope-echo.ts index ac7ec429c3..0cbeff68db 100644 --- a/src/adapters/cursor/envelope-echo.ts +++ b/src/adapters/cursor/envelope-echo.ts @@ -89,7 +89,7 @@ export type RoutingCommentaryDecision = | { kind: "flush" } | { kind: "hallucination" }; -const ROUTING_NATIVE_TOOL_NAME = /\b(shell|read|grep|list|bash)\b/giu; +const ROUTING_NATIVE_TOOL_NAME = /(\b(?:shell|read|grep|list|bash)\b|네이티브\s*(?:셸|쉘))/giu; const ROUTING_TOOL_HINT = /(?:\b(?:shell|read|grep|list|bash)\b|exec_command|shell_command|브리지|네이티브\s*(?:셸|쉘))/iu; const ROUTING_FAILURE_CLAIM = diff --git a/tests/cursor-envelope-echo-retry.test.ts b/tests/cursor-envelope-echo-retry.test.ts index 0cba08740b..50a248c497 100644 --- a/tests/cursor-envelope-echo-retry.test.ts +++ b/tests/cursor-envelope-echo-retry.test.ts @@ -90,6 +90,9 @@ describe("cursor external output quarantine + corrective retry (devlog 260826 ga expect(multiline.feed("Shell was blocked.\n").kind).toBe("hold"); expect(multiline.feed("Switching to exec_command.").kind).toBe("hallucination"); + const localizedNativeShell = new CursorRoutingCommentarySniffer(); + expect(localizedNativeShell.feed("네이티브 셸이 차단되어 exec_command로 전환합니다.").kind).toBe("hallucination"); + const legitimate = new CursorRoutingCommentarySniffer(); expect(legitimate.feed("Shell is unavailable on this operating system.").kind).toBe("hold"); expect(legitimate.finish().kind).toBe("flush");