From a10a3a2b3f8a1546500038bb93564921418f3e69 Mon Sep 17 00:00:00 2001 From: Imanol Maiztegui Date: Mon, 15 Jun 2026 10:17:42 +0200 Subject: [PATCH] fix(vscode): clarify doom loop permissions --- .changeset/clear-doom-loop-prompts.md | 5 ++++ .../tests/unit/permission-description.test.ts | 25 ++++++++++++++++++- .../src/components/chat/PermissionDock.tsx | 8 ++---- .../components/chat/permission-dock-utils.ts | 24 +++++++++++++++--- .../kilo-vscode/webview-ui/src/i18n/ar.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/br.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/bs.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/da.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/de.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/en.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/es.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/fr.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/it.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/ja.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/ko.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/nl.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/no.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/pl.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/ru.ts | 3 +++ .../kilo-vscode/webview-ui/src/i18n/th.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/tr.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/uk.ts | 3 +++ .../kilo-vscode/webview-ui/src/i18n/zh.ts | 2 ++ .../kilo-vscode/webview-ui/src/i18n/zht.ts | 2 ++ 24 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 .changeset/clear-doom-loop-prompts.md diff --git a/.changeset/clear-doom-loop-prompts.md b/.changeset/clear-doom-loop-prompts.md new file mode 100644 index 00000000000..32ee8b59b6d --- /dev/null +++ b/.changeset/clear-doom-loop-prompts.md @@ -0,0 +1,5 @@ +--- +"kilo-code": patch +--- + +Clarify potential loop permission prompts and auto-approval rules with localized tool names. diff --git a/packages/kilo-vscode/tests/unit/permission-description.test.ts b/packages/kilo-vscode/tests/unit/permission-description.test.ts index 34d6742f1fa..d67145ed20c 100644 --- a/packages/kilo-vscode/tests/unit/permission-description.test.ts +++ b/packages/kilo-vscode/tests/unit/permission-description.test.ts @@ -1,9 +1,11 @@ import { describe, test, expect } from "bun:test" import { describePatterns, + describeRule, resolveLabel, TOOL_LABEL_KEYS, } from "../../webview-ui/src/components/chat/permission-dock-utils" +import { resolveTemplate } from "../../webview-ui/src/context/language-utils" // Mock t() that returns the English label for known keys, or the key itself const labels: Record = { @@ -24,8 +26,10 @@ const labels: Record = { "ui.permission.toolLabel.task": "Task", "ui.permission.toolLabel.skill": "Skill", "ui.permission.toolLabel.lsp": "LSP", + "ui.permission.doomLoop.prompt": "Potential loop detected for the {{tool}} tool. Continue running?", + "ui.permission.doomLoop.rule": "Continue {{tool}} calls", } -const t = (key: string) => labels[key] ?? key +const t = (key: string, params?: Record) => resolveTemplate(labels[key] ?? key, params) describe("describePatterns", () => { test("returns null when patterns is empty", () => { @@ -95,6 +99,14 @@ describe("describePatterns", () => { expect(result).toEqual({ kind: "single", text: "Web Search query" }) }) + test("doom loop describes the repeated tool with its human-readable label", () => { + const result = describePatterns("doom_loop", ["read"], t) + expect(result).toEqual({ + kind: "single", + text: "Potential loop detected for the Read tool. Continue running?", + }) + }) + test("TOOL_LABEL_KEYS maps all expected tools", () => { const expected: Record = { read: "ui.permission.toolLabel.read", @@ -162,6 +174,17 @@ describe("describePatterns", () => { }) }) +describe("describeRule", () => { + test("describes doom loop rules as the action being allowed or denied", () => { + expect(describeRule("doom_loop", "read", t)).toBe("Continue Read calls") + }) + + test("preserves existing permission rule labels", () => { + expect(describeRule("read", "*", t)).toBe("Read") + expect(describeRule("read", "src/app.ts", t)).toBe("Read src/app.ts") + }) +}) + describe("resolveLabel", () => { test("returns translated label for known tool", () => { expect(resolveLabel("read", t)).toBe("Read") diff --git a/packages/kilo-vscode/webview-ui/src/components/chat/PermissionDock.tsx b/packages/kilo-vscode/webview-ui/src/components/chat/PermissionDock.tsx index 62cbcb56f2e..14534929e10 100644 --- a/packages/kilo-vscode/webview-ui/src/components/chat/PermissionDock.tsx +++ b/packages/kilo-vscode/webview-ui/src/components/chat/PermissionDock.tsx @@ -17,7 +17,7 @@ import { Tooltip } from "@kilocode/kilo-ui/tooltip" import { useSession } from "../../context/session" import { useLanguage } from "../../context/language" import { useConfig } from "../../context/config" -import { describePatterns, resolveLabel, savedRuleStates, type RuleDecision } from "./permission-dock-utils" +import { describePatterns, describeRule, savedRuleStates, type RuleDecision } from "./permission-dock-utils" import { PermissionCommand } from "./PermissionCommand" import { PermissionDiff } from "./PermissionDiff" import { permissionDiffs } from "./permission-diff-utils" @@ -249,11 +249,7 @@ export const PermissionDock: Component<{ - {command() - ? label(rule) - : rule === "*" - ? resolveLabel(props.request.toolName, language.t) - : `${resolveLabel(props.request.toolName, language.t)} ${rule}`} + {command() ? label(rule) : describeRule(props.request.toolName, rule, language.t)} )} diff --git a/packages/kilo-vscode/webview-ui/src/components/chat/permission-dock-utils.ts b/packages/kilo-vscode/webview-ui/src/components/chat/permission-dock-utils.ts index 8d726db2901..efa04e468fb 100644 --- a/packages/kilo-vscode/webview-ui/src/components/chat/permission-dock-utils.ts +++ b/packages/kilo-vscode/webview-ui/src/components/chat/permission-dock-utils.ts @@ -52,6 +52,17 @@ export function resolveLabel(tool: string, t: (key: string) => string): string { return key ? t(key) : tool } +export function describeRule( + tool: string, + rule: string, + t: (key: string, params?: Record) => string, +): string { + if (tool === "doom_loop") { + return t("ui.permission.doomLoop.rule", { tool: resolveLabel(rule, t) }) + } + return rule === "*" ? resolveLabel(tool, t) : `${resolveLabel(tool, t)} ${rule}` +} + /** * Build a human-readable description for a permission request's patterns. * @@ -62,13 +73,20 @@ export function resolveLabel(tool: string, t: (key: string) => string): string { export function describePatterns( tool: string, patterns: string[], - t: (key: string) => string, + t: (key: string, params?: Record) => string, ): PatternDescription | null { const filtered = patterns.filter((p) => p !== "*") if (filtered.length === 0) return null - const key = TOOL_LABEL_KEYS[tool] - const label = key ? t(key) : tool + // doom-loop requests always contain one repeated tool pattern. + if (tool === "doom_loop") { + return { + kind: "single", + text: t("ui.permission.doomLoop.prompt", { tool: resolveLabel(filtered[0], t) }), + } + } + + const label = resolveLabel(tool, t) if (filtered.length === 1) return { kind: "single", text: `${label} ${filtered[0]}` } return { kind: "multi", title: `${label}:`, paths: filtered } } diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts index b0084e40d41..87823256130 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts @@ -522,6 +522,8 @@ export const dict = { "notification.permission.titleSubagent": "مطلوب إذن (وكيل فرعي)", "notification.permission.description": "{{sessionTitle}} في {{projectName}} يحتاج إلى إذن", "ui.permission.manageAutoApprove": "إدارة قواعد الموافقة التلقائية", + "ui.permission.doomLoop.prompt": "تم اكتشاف حلقة محتملة في أداة {{tool}}. هل تريد متابعة التشغيل؟", + "ui.permission.doomLoop.rule": "متابعة استدعاءات {{tool}}", "ui.permission.rule.addToAllowed": "أضف إلى قائمة المسموح", "ui.permission.rule.removeFromAllowed": "أزل من قائمة المسموح", "ui.permission.rule.addToDenied": "أضف إلى قائمة المرفوض", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/br.ts b/packages/kilo-vscode/webview-ui/src/i18n/br.ts index ae04ef3315f..2da2912caab 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/br.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/br.ts @@ -527,6 +527,8 @@ export const dict = { "notification.permission.titleSubagent": "Permissão necessária (subagente)", "notification.permission.description": "{{sessionTitle}} em {{projectName}} precisa de permissão", "ui.permission.manageAutoApprove": "Gerenciar regras de aprovação automática", + "ui.permission.doomLoop.prompt": "Possível loop detectado na ferramenta {{tool}}. Continuar executando?", + "ui.permission.doomLoop.rule": "Continuar chamadas de {{tool}}", "ui.permission.rule.addToAllowed": "Adicionar à lista de permitidos", "ui.permission.rule.removeFromAllowed": "Remover da lista de permitidos", "ui.permission.rule.addToDenied": "Adicionar à lista de negados", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts index b6e5725db7a..79f9d982cfe 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts @@ -530,6 +530,8 @@ export const dict = { "notification.permission.titleSubagent": "Potrebna dozvola (podagent)", "notification.permission.description": "{{sessionTitle}} u {{projectName}} traži dozvolu", "ui.permission.manageAutoApprove": "Upravljanje pravilima automatskog odobravanja", + "ui.permission.doomLoop.prompt": "Otkrivena je moguća petlja za alat {{tool}}. Nastaviti izvršavanje?", + "ui.permission.doomLoop.rule": "Nastavi pozive alata {{tool}}", "ui.permission.rule.addToAllowed": "Dodaj na listu dozvoljenih", "ui.permission.rule.removeFromAllowed": "Ukloni sa liste dozvoljenih", "ui.permission.rule.addToDenied": "Dodaj na listu odbijenih", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/da.ts b/packages/kilo-vscode/webview-ui/src/i18n/da.ts index 241e3c45116..d4390284acc 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/da.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/da.ts @@ -527,6 +527,8 @@ export const dict = { "notification.permission.titleSubagent": "Tilladelse påkrævet (underagent)", "notification.permission.description": "{{sessionTitle}} i {{projectName}} kræver tilladelse", "ui.permission.manageAutoApprove": "Administrer regler for automatisk godkendelse", + "ui.permission.doomLoop.prompt": "Der blev registreret en mulig løkke for værktøjet {{tool}}. Fortsæt kørslen?", + "ui.permission.doomLoop.rule": "Fortsæt {{tool}}-kald", "ui.permission.rule.addToAllowed": "Tilføj til tilladelseslisten", "ui.permission.rule.removeFromAllowed": "Fjern fra tilladelseslisten", "ui.permission.rule.addToDenied": "Tilføj til afvisningslisten", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/de.ts b/packages/kilo-vscode/webview-ui/src/i18n/de.ts index 04ffc2f2c13..e4e5627d00d 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/de.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/de.ts @@ -534,6 +534,8 @@ export const dict = { "notification.permission.titleSubagent": "Berechtigung erforderlich (Subagent)", "notification.permission.description": "{{sessionTitle}} in {{projectName}} benötigt Berechtigung", "ui.permission.manageAutoApprove": "Regeln für automatische Genehmigung verwalten", + "ui.permission.doomLoop.prompt": "Potenzielle Schleife beim Tool {{tool}} erkannt. Weiter ausführen?", + "ui.permission.doomLoop.rule": "{{tool}}-Aufrufe fortsetzen", "ui.permission.rule.addToAllowed": "Zur Erlaubt-Liste hinzufügen", "ui.permission.rule.removeFromAllowed": "Aus der Erlaubt-Liste entfernen", "ui.permission.rule.addToDenied": "Zur Verweigert-Liste hinzufügen", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/en.ts b/packages/kilo-vscode/webview-ui/src/i18n/en.ts index affab854d31..86b8aa78937 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/en.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/en.ts @@ -527,6 +527,8 @@ export const dict = { "notification.permission.titleSubagent": "Permission required (subagent)", "notification.permission.description": "{{sessionTitle}} in {{projectName}} needs permission", "ui.permission.manageAutoApprove": "Manage Auto-Approve Rules", + "ui.permission.doomLoop.prompt": "Potential loop detected for the {{tool}} tool. Continue running?", + "ui.permission.doomLoop.rule": "Continue {{tool}} calls", "ui.permission.rule.addToAllowed": "Add to allowed list", "ui.permission.rule.removeFromAllowed": "Remove from allowed list", "ui.permission.rule.addToDenied": "Add to denied list", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/es.ts b/packages/kilo-vscode/webview-ui/src/i18n/es.ts index 68d58c4c587..d756101b4a0 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/es.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/es.ts @@ -531,6 +531,8 @@ export const dict = { "notification.permission.titleSubagent": "Permiso requerido (subagente)", "notification.permission.description": "{{sessionTitle}} en {{projectName}} necesita permiso", "ui.permission.manageAutoApprove": "Gestionar reglas de aprobación automática", + "ui.permission.doomLoop.prompt": "Se detectó un posible bucle en la herramienta {{tool}}. ¿Continuar ejecutando?", + "ui.permission.doomLoop.rule": "Continuar llamadas a {{tool}}", "ui.permission.rule.addToAllowed": "Añadir a la lista de permitidos", "ui.permission.rule.removeFromAllowed": "Quitar de la lista de permitidos", "ui.permission.rule.addToDenied": "Añadir a la lista de denegados", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts index 382d972c4d7..58059b7b5e0 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts @@ -536,6 +536,8 @@ export const dict = { "notification.permission.titleSubagent": "Permission requise (sous-agent)", "notification.permission.description": "{{sessionTitle}} dans {{projectName}} a besoin d'une permission", "ui.permission.manageAutoApprove": "Gérer les règles d'approbation automatique", + "ui.permission.doomLoop.prompt": "Boucle potentielle détectée pour l’outil {{tool}}. Continuer l’exécution ?", + "ui.permission.doomLoop.rule": "Continuer les appels à {{tool}}", "ui.permission.rule.addToAllowed": "Ajouter à la liste des autorisés", "ui.permission.rule.removeFromAllowed": "Retirer de la liste des autorisés", "ui.permission.rule.addToDenied": "Ajouter à la liste des refusés", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/it.ts b/packages/kilo-vscode/webview-ui/src/i18n/it.ts index 4656f1e8950..ba297b9c18b 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/it.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/it.ts @@ -448,6 +448,8 @@ export const dict = { "notification.permission.titleSubagent": "Autorizzazione richiesta (sub-agent)", "notification.permission.description": "{{sessionTitle}} in {{projectName}} richiede autorizzazione", "ui.permission.manageAutoApprove": "Gestisci regole approvazione automatica", + "ui.permission.doomLoop.prompt": "Rilevato un potenziale ciclo nello strumento {{tool}}. Continuare l'esecuzione?", + "ui.permission.doomLoop.rule": "Continua le chiamate a {{tool}}", "ui.permission.rule.addToAllowed": "Aggiungi alla lista consentiti", "ui.permission.rule.removeFromAllowed": "Rimuovi dalla lista consentiti", "ui.permission.rule.addToDenied": "Aggiungi alla lista negati", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts index 277ea1a10bc..ca2ce756fe6 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts @@ -524,6 +524,8 @@ export const dict = { "notification.permission.titleSubagent": "権限が必要です(サブエージェント)", "notification.permission.description": "{{projectName}} の {{sessionTitle}} が権限を必要としています", "ui.permission.manageAutoApprove": "自動承認ルールを管理", + "ui.permission.doomLoop.prompt": "{{tool}} ツールでループの可能性が検出されました。実行を続行しますか?", + "ui.permission.doomLoop.rule": "{{tool}} の呼び出しを続行", "ui.permission.rule.addToAllowed": "許可リストに追加", "ui.permission.rule.removeFromAllowed": "許可リストから削除", "ui.permission.rule.addToDenied": "拒否リストに追加", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts index fdaf39d51d6..d679e27bee9 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts @@ -525,6 +525,8 @@ export const dict = { "notification.permission.titleSubagent": "권한 필요 (서브에이전트)", "notification.permission.description": "{{projectName}}의 {{sessionTitle}}에서 권한이 필요합니다", "ui.permission.manageAutoApprove": "자동 승인 규칙 관리", + "ui.permission.doomLoop.prompt": "{{tool}} 도구에서 잠재적인 반복 실행이 감지되었습니다. 계속 실행하시겠습니까?", + "ui.permission.doomLoop.rule": "{{tool}} 호출 계속", "ui.permission.rule.addToAllowed": "허용 목록에 추가", "ui.permission.rule.removeFromAllowed": "허용 목록에서 제거", "ui.permission.rule.addToDenied": "거부 목록에 추가", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/nl.ts b/packages/kilo-vscode/webview-ui/src/i18n/nl.ts index 42f413e7f75..14a2cc42b82 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/nl.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/nl.ts @@ -530,6 +530,8 @@ export const dict = { "notification.permission.titleSubagent": "Toestemming vereist (subagent)", "notification.permission.description": "{{sessionTitle}} in {{projectName}} heeft toestemming nodig", "ui.permission.manageAutoApprove": "Beheer automatisch goedkeuren regels", + "ui.permission.doomLoop.prompt": "Mogelijke lus gedetecteerd voor het hulpmiddel {{tool}}. Doorgaan met uitvoeren?", + "ui.permission.doomLoop.rule": "Doorgaan met {{tool}}-aanroepen", "ui.permission.rule.addToAllowed": "Toevoegen aan toegestane lijst", "ui.permission.rule.removeFromAllowed": "Verwijderen van toegestane lijst", "ui.permission.rule.addToDenied": "Toevoegen aan geweigerde lijst", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/no.ts b/packages/kilo-vscode/webview-ui/src/i18n/no.ts index 8c5db2c95c9..3e1b704e95c 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/no.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/no.ts @@ -531,6 +531,8 @@ export const dict = { "notification.permission.titleSubagent": "Tillatelse påkrevd (underagent)", "notification.permission.description": "{{sessionTitle}} i {{projectName}} trenger tillatelse", "ui.permission.manageAutoApprove": "Administrer regler for automatisk godkjenning", + "ui.permission.doomLoop.prompt": "Mulig løkke oppdaget for verktøyet {{tool}}. Fortsette kjøringen?", + "ui.permission.doomLoop.rule": "Fortsett {{tool}}-kall", "ui.permission.rule.addToAllowed": "Legg til i tillatt-listen", "ui.permission.rule.removeFromAllowed": "Fjern fra tillatt-listen", "ui.permission.rule.addToDenied": "Legg til i blokkert-listen", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts index 367b7e5dbd2..77b8f2160b8 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts @@ -529,6 +529,8 @@ export const dict = { "notification.permission.titleSubagent": "Wymagane uprawnienie (podagent)", "notification.permission.description": "{{sessionTitle}} w {{projectName}} potrzebuje uprawnienia", "ui.permission.manageAutoApprove": "Zarządzaj regułami automatycznego zatwierdzania", + "ui.permission.doomLoop.prompt": "Wykryto potencjalną pętlę dla narzędzia {{tool}}. Kontynuować działanie?", + "ui.permission.doomLoop.rule": "Kontynuuj wywołania {{tool}}", "ui.permission.rule.addToAllowed": "Dodaj do listy dozwolonych", "ui.permission.rule.removeFromAllowed": "Usuń z listy dozwolonych", "ui.permission.rule.addToDenied": "Dodaj do listy zablokowanych", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts index c84a94b0783..61cc7872f08 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts @@ -529,6 +529,9 @@ export const dict = { "notification.permission.titleSubagent": "Требуется разрешение (субагент)", "notification.permission.description": "{{sessionTitle}} в {{projectName}} требуется разрешение", "ui.permission.manageAutoApprove": "Управление правилами автоодобрения", + "ui.permission.doomLoop.prompt": + "Обнаружен потенциальный цикл при работе инструмента {{tool}}. Продолжить выполнение?", + "ui.permission.doomLoop.rule": "Продолжать вызовы {{tool}}", "ui.permission.rule.addToAllowed": "Добавить в список разрешённых", "ui.permission.rule.removeFromAllowed": "Убрать из списка разрешённых", "ui.permission.rule.addToDenied": "Добавить в список запрещённых", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/th.ts b/packages/kilo-vscode/webview-ui/src/i18n/th.ts index 2646e88a69a..bc3bcdd18ec 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/th.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/th.ts @@ -524,6 +524,8 @@ export const dict = { "notification.permission.titleSubagent": "ต้องการสิทธิ์ (ตัวแทนย่อย)", "notification.permission.description": "{{sessionTitle}} ใน {{projectName}} ต้องการสิทธิ์", "ui.permission.manageAutoApprove": "จัดการกฎการอนุมัติอัตโนมัติ", + "ui.permission.doomLoop.prompt": "ตรวจพบการวนซ้ำที่อาจเกิดขึ้นในเครื่องมือ {{tool}} ต้องการดำเนินการต่อหรือไม่", + "ui.permission.doomLoop.rule": "เรียกใช้ {{tool}} ต่อไป", "ui.permission.rule.addToAllowed": "เพิ่มไปยังรายการที่อนุญาต", "ui.permission.rule.removeFromAllowed": "นำออกจากรายการที่อนุญาต", "ui.permission.rule.addToDenied": "เพิ่มไปยังรายการที่ถูกปฏิเสธ", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/tr.ts b/packages/kilo-vscode/webview-ui/src/i18n/tr.ts index b4331e0522d..0925c620319 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/tr.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/tr.ts @@ -529,6 +529,8 @@ export const dict = { "notification.permission.titleSubagent": "İzin gerekli (alt ajan)", "notification.permission.description": "{{projectName}} içindeki {{sessionTitle}} izin gerektiriyor", "ui.permission.manageAutoApprove": "Otomatik Onay Kurallarını Yönet", + "ui.permission.doomLoop.prompt": "{{tool}} aracında olası bir döngü algılandı. Çalıştırmaya devam edilsin mi?", + "ui.permission.doomLoop.rule": "{{tool}} çağrılarına devam et", "ui.permission.rule.addToAllowed": "İzin listesine ekle", "ui.permission.rule.removeFromAllowed": "İzin listesinden kaldır", "ui.permission.rule.addToDenied": "Engel listesine ekle", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/uk.ts b/packages/kilo-vscode/webview-ui/src/i18n/uk.ts index 31bd1c5a611..3ff24e78cac 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/uk.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/uk.ts @@ -531,6 +531,9 @@ export const dict = { "notification.permission.titleSubagent": "Потрібен дозвіл (підагент)", "notification.permission.description": "{{sessionTitle}} у {{projectName}} потребує дозволу", "ui.permission.manageAutoApprove": "Керувати правилами автоматичного схвалення", + "ui.permission.doomLoop.prompt": + "Виявлено потенційний цикл під час роботи інструмента {{tool}}. Продовжити виконання?", + "ui.permission.doomLoop.rule": "Продовжувати виклики {{tool}}", "ui.permission.rule.addToAllowed": "Додати до дозволених", "ui.permission.rule.removeFromAllowed": "Видалити з дозволених", "ui.permission.rule.addToDenied": "Додати до заблокованих", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts index c186582fd05..8470cde2a2b 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts @@ -518,6 +518,8 @@ export const dict = { "notification.permission.titleSubagent": "需要权限(子代理)", "notification.permission.description": "{{sessionTitle}}({{projectName}})需要权限", "ui.permission.manageAutoApprove": "管理自动审批规则", + "ui.permission.doomLoop.prompt": "检测到 {{tool}} 工具可能陷入循环。是否继续运行?", + "ui.permission.doomLoop.rule": "继续调用 {{tool}}", "ui.permission.rule.addToAllowed": "添加到允许列表", "ui.permission.rule.removeFromAllowed": "从允许列表移除", "ui.permission.rule.addToDenied": "添加到拒绝列表", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts index e9d977f7c0c..edda8ac7240 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts @@ -518,6 +518,8 @@ export const dict = { "notification.permission.titleSubagent": "需要權限(子代理)", "notification.permission.description": "{{sessionTitle}}({{projectName}})需要權限", "ui.permission.manageAutoApprove": "管理自動核准規則", + "ui.permission.doomLoop.prompt": "偵測到 {{tool}} 工具可能陷入迴圈。是否繼續執行?", + "ui.permission.doomLoop.rule": "繼續呼叫 {{tool}}", "ui.permission.rule.addToAllowed": "加入允許清單", "ui.permission.rule.removeFromAllowed": "從允許清單移除", "ui.permission.rule.addToDenied": "加入拒絕清單",