From b981a33ccb7057cd691680bb65dfeacfb008e4e8 Mon Sep 17 00:00:00 2001 From: sam hoang Date: Sat, 10 May 2025 18:18:57 +0700 Subject: [PATCH] Add warning thresholds and new task summary feature --- src/exports/roo-code.d.ts | 7 + src/exports/types.ts | 7 + src/schemas/index.ts | 10 + src/shared/support-prompt.ts | 14 + webview-ui/package-lock.json | 287 ++++++++++ webview-ui/package.json | 2 + webview-ui/src/components/chat/ChatView.tsx | 37 +- .../src/components/chat/TokenUsageWarning.tsx | 128 +++++ .../src/components/settings/ApiOptions.tsx | 5 + .../settings/WarningThresholdControl.tsx | 149 ++++++ webview-ui/src/components/ui/switch.tsx | 27 + webview-ui/src/i18n/locales/ca/chat.json | 5 + webview-ui/src/i18n/locales/ca/prompts.json | 4 + webview-ui/src/i18n/locales/ca/settings.json | 11 +- webview-ui/src/i18n/locales/de/chat.json | 5 + webview-ui/src/i18n/locales/de/prompts.json | 4 + webview-ui/src/i18n/locales/de/settings.json | 11 +- webview-ui/src/i18n/locales/en/chat.json | 5 + webview-ui/src/i18n/locales/en/prompts.json | 4 + webview-ui/src/i18n/locales/en/settings.json | 9 + webview-ui/src/i18n/locales/es/chat.json | 5 + webview-ui/src/i18n/locales/es/prompts.json | 4 + webview-ui/src/i18n/locales/es/settings.json | 11 +- webview-ui/src/i18n/locales/fr/chat.json | 5 + webview-ui/src/i18n/locales/fr/prompts.json | 4 + webview-ui/src/i18n/locales/fr/settings.json | 11 +- webview-ui/src/i18n/locales/hi/chat.json | 5 + webview-ui/src/i18n/locales/hi/prompts.json | 4 + webview-ui/src/i18n/locales/hi/settings.json | 11 +- webview-ui/src/i18n/locales/it/chat.json | 5 + webview-ui/src/i18n/locales/it/prompts.json | 4 + webview-ui/src/i18n/locales/it/settings.json | 11 +- webview-ui/src/i18n/locales/ja/chat.json | 5 + webview-ui/src/i18n/locales/ja/prompts.json | 4 + webview-ui/src/i18n/locales/ja/settings.json | 11 +- webview-ui/src/i18n/locales/ko/chat.json | 5 + webview-ui/src/i18n/locales/ko/prompts.json | 4 + webview-ui/src/i18n/locales/ko/settings.json | 11 +- webview-ui/src/i18n/locales/nl/chat.json | 501 +++++++++--------- webview-ui/src/i18n/locales/nl/prompts.json | 6 +- webview-ui/src/i18n/locales/nl/settings.json | 11 +- webview-ui/src/i18n/locales/pl/chat.json | 5 + webview-ui/src/i18n/locales/pl/prompts.json | 4 + webview-ui/src/i18n/locales/pl/settings.json | 11 +- webview-ui/src/i18n/locales/pt-BR/chat.json | 5 + .../src/i18n/locales/pt-BR/prompts.json | 4 + .../src/i18n/locales/pt-BR/settings.json | 11 +- webview-ui/src/i18n/locales/ru/chat.json | 5 + webview-ui/src/i18n/locales/ru/prompts.json | 4 + webview-ui/src/i18n/locales/ru/settings.json | 11 +- webview-ui/src/i18n/locales/tr/chat.json | 5 + webview-ui/src/i18n/locales/tr/prompts.json | 4 + webview-ui/src/i18n/locales/tr/settings.json | 11 +- webview-ui/src/i18n/locales/vi/chat.json | 5 + webview-ui/src/i18n/locales/vi/prompts.json | 4 + webview-ui/src/i18n/locales/vi/settings.json | 11 +- webview-ui/src/i18n/locales/zh-CN/chat.json | 5 + .../src/i18n/locales/zh-CN/prompts.json | 4 + .../src/i18n/locales/zh-CN/settings.json | 11 +- webview-ui/src/i18n/locales/zh-TW/chat.json | 5 + .../src/i18n/locales/zh-TW/prompts.json | 4 + .../src/i18n/locales/zh-TW/settings.json | 11 +- 62 files changed, 1242 insertions(+), 267 deletions(-) create mode 100644 webview-ui/src/components/chat/TokenUsageWarning.tsx create mode 100644 webview-ui/src/components/settings/WarningThresholdControl.tsx create mode 100644 webview-ui/src/components/ui/switch.tsx diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index 98290336ce..cf55a824af 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -205,6 +205,13 @@ type ProviderSettings = { fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined + warningThreshold?: + | { + context?: number | undefined + tokens?: number | undefined + cost?: number | undefined + } + | undefined modelMaxTokens?: number | undefined modelMaxThinkingTokens?: number | undefined apiModelId?: string | undefined diff --git a/src/exports/types.ts b/src/exports/types.ts index 4b71ad5d0b..a6e27e14ca 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -207,6 +207,13 @@ type ProviderSettings = { fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined + warningThreshold?: + | { + context?: number | undefined + tokens?: number | undefined + cost?: number | undefined + } + | undefined modelMaxTokens?: number | undefined modelMaxThinkingTokens?: number | undefined apiModelId?: string | undefined diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 70ea39f624..e4af5379ab 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -334,6 +334,14 @@ type _AssertExperiments = AssertEqual>> * ProviderSettingsEntry */ +export const warningThresholdSchema = z.object({ + context: z.number().optional(), // Context window warning threshold + tokens: z.number().optional(), // Total tokens warning threshold + cost: z.number().optional(), // Cost warning threshold +}) + +export type WarningThreshold = z.infer + export const providerSettingsEntrySchema = z.object({ id: z.string(), name: z.string(), @@ -353,6 +361,7 @@ const baseProviderSettingsSchema = z.object({ fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), + warningThreshold: warningThresholdSchema.optional(), // Claude 3.7 Sonnet Thinking modelMaxTokens: z.number().optional(), modelMaxThinkingTokens: z.number().optional(), @@ -633,6 +642,7 @@ const providerSettingsRecord: ProviderSettingsRecord = { fuzzyMatchThreshold: undefined, modelTemperature: undefined, rateLimitSeconds: undefined, + warningThreshold: undefined, // Fake AI fakeAi: undefined, // X.AI (Grok) diff --git a/src/shared/support-prompt.ts b/src/shared/support-prompt.ts index 2dfa478e15..1f8743f77c 100644 --- a/src/shared/support-prompt.ts +++ b/src/shared/support-prompt.ts @@ -122,6 +122,20 @@ Please provide: NEW_TASK: { template: `\${userInput}`, }, + SUMMARY_AND_START_NEW_TASK: { + template: `STOP CURRENT TASK AND Provide a concise summary of the current task status and progress then create a new task using new_task tool. + Create a follow-up task that: + - Continues from the current progress point + - Maintains context from previous work + - Clearly defines next objectives + - Links to relevant artifacts and dependencies + +Please include: +- Key decisions and outcomes from current task +- Blocking issues or dependencies +- Suggested next steps +- Related @-mentions and code references`, + }, } as const type SupportPromptType = keyof typeof supportPromptConfigs diff --git a/webview-ui/package-lock.json b/webview-ui/package-lock.json index 355c02817f..7b6ca11b48 100644 --- a/webview-ui/package-lock.json +++ b/webview-ui/package-lock.json @@ -14,12 +14,14 @@ "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.4", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-progress": "^1.1.2", "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.2", "@radix-ui/react-slider": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.2.2", "@radix-ui/react-tooltip": "^1.1.8", "@tailwindcss/vite": "^4.0.0", "@tanstack/react-query": "^5.68.0", @@ -4477,6 +4479,85 @@ } } }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.4.tgz", + "integrity": "sha512-wy3dqizZnZVV4ja0FNnUhIWNwWdoldXrneEyUcVtLYDAt8ovGS4ridtMAOGgXBBIfggL4BOveVWsjXDORdGEQg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-menu": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.5.tgz", @@ -5292,6 +5373,179 @@ } } }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.2.tgz", + "integrity": "sha512-7Z8n6L+ifMIIYZ83f28qWSceUpkXuslI2FJ34+kDMTiyj91ENdpdQ7VCidrzj5JfwfZTeano/BnGBbu/jqa5rQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-tooltip": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", @@ -5488,6 +5742,39 @@ } } }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", diff --git a/webview-ui/package.json b/webview-ui/package.json index 4f9a6a4504..67aec7a0f0 100644 --- a/webview-ui/package.json +++ b/webview-ui/package.json @@ -23,12 +23,14 @@ "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.4", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-progress": "^1.1.2", "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.2", "@radix-ui/react-slider": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.2.2", "@radix-ui/react-tooltip": "^1.1.8", "@tailwindcss/vite": "^4.0.0", "@tanstack/react-query": "^5.68.0", diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 78df5eb188..7aa9e87393 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -20,6 +20,7 @@ import { combineCommandSequences } from "@roo/shared/combineCommandSequences" import { getApiMetrics } from "@roo/shared/getApiMetrics" import { AudioType } from "@roo/shared/WebviewMessage" import { getAllModes } from "@roo/shared/modes" +import { supportPrompt } from "@roo/shared/support-prompt" import { useExtensionState } from "@src/context/ExtensionStateContext" import { vscode } from "@src/utils/vscode" @@ -40,6 +41,7 @@ import TaskHeader from "./TaskHeader" import AutoApproveMenu from "./AutoApproveMenu" import SystemPromptWarning from "./SystemPromptWarning" import { CheckpointWarning } from "./CheckpointWarning" +import TokenUsageWarning from "./TokenUsageWarning" export interface ChatViewProps { isHidden: boolean @@ -130,6 +132,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction("") const [wasStreaming, setWasStreaming] = useState(false) const [showCheckpointWarning, setShowCheckpointWarning] = useState(false) + const [forceShowTokenWarning, setForceShowTokenWarning] = useState(false) // UI layout depends on the last 2 messages // (since it relies on the content of these messages, we are deep comparing. i.e. the button state after hitting button sets enableButtons to false, and this effect otherwise would have to true again even if messages didn't change @@ -158,6 +161,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction 0) { if (messages.length === 0) { vscode.postMessage({ type: "newTask", text, images }) + setForceShowTokenWarning(false) } else if (clineAsk) { switch (clineAsk) { case "followup": @@ -432,7 +439,10 @@ const ChatViewComponent: React.ForwardRefRenderFunction vscode.postMessage({ type: "clearTask" }), []) + const startNewTask = useCallback(() => { + vscode.postMessage({ type: "clearTask" }) + setForceShowTokenWarning(false) + }, []) // This logic depends on the useEffect[messages] above to set clineAsk, // after which buttons are shown and we then send an askResponse to the @@ -443,6 +453,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction startNewTask(), [startNewTask]) + const handleTaskCloseButtonClick = useCallback(() => { + startNewTask() + setForceShowTokenWarning(false) + }, [startNewTask]) const { info: model } = useSelectedModel(apiConfiguration) @@ -1316,6 +1333,22 @@ const ChatViewComponent: React.ForwardRefRenderFunction + { + if (isStreaming) { + vscode.postMessage({ type: "cancelTask" }) + setDidClickCancel(true) + } + let prompt = supportPrompt.create("SUMMARY_AND_START_NEW_TASK", {}) + handleSendMessage(prompt, []) + setForceShowTokenWarning(false) + }} + forceShow={forceShowTokenWarning} + /> {showScrollToBottom ? (
diff --git a/webview-ui/src/components/chat/TokenUsageWarning.tsx b/webview-ui/src/components/chat/TokenUsageWarning.tsx new file mode 100644 index 0000000000..6bdb1022b0 --- /dev/null +++ b/webview-ui/src/components/chat/TokenUsageWarning.tsx @@ -0,0 +1,128 @@ +import { useAppTranslation } from "@src/i18n/TranslationContext" +import { Button } from "../ui/button" +import { useExtensionState } from "@src/context/ExtensionStateContext" +import { calculateTokenDistribution, getMaxTokensForModel } from "@src/utils/model-utils" +import { useSelectedModel } from "../ui/hooks/useSelectedModel" +import { useState, useEffect } from "react" + +interface TokenUsageWarningProps { + contextTokens: number + tokensIn: number + tokensOut: number + totalCost: number + onStartNewTask: () => void + forceShow?: boolean +} + +const TokenUsageWarning = ({ + contextTokens, + tokensIn, + tokensOut, + totalCost, + onStartNewTask, + forceShow, +}: TokenUsageWarningProps) => { + const { t } = useAppTranslation() + const [isDismissed, setIsDismissed] = useState(false) + const [isExiting, setIsExiting] = useState(false) + + useEffect(() => { + if (forceShow) { + setIsExiting(false) + setIsDismissed(false) + } + }, [forceShow]) + const { apiConfiguration } = useExtensionState() + const warningThreshold = apiConfiguration?.warningThreshold + const { info: model } = useSelectedModel(apiConfiguration) + const contextWindow = model?.contextWindow || 1 + const maxTokens = getMaxTokensForModel(model, apiConfiguration) + + // Calculate token distribution using shared utility + const { currentPercent } = calculateTokenDistribution(contextWindow, contextTokens || 0, maxTokens) + const contextPercent = currentPercent / 100 // Convert percentage to decimal for threshold comparison + + // Check if any thresholds are exceeded using configured or default values + // Skip warning if threshold is -1 (disabled) + const showContextWarning = + warningThreshold?.context !== -1 && contextPercent > (warningThreshold?.context ?? 75) / 100 + const showTokensWarning = + warningThreshold?.tokens !== -1 && tokensIn + tokensOut > (warningThreshold?.tokens ?? 5_500_000) + const showCostWarning = warningThreshold?.cost !== -1 && totalCost > (warningThreshold?.cost ?? 2) + + if ((isDismissed && !forceShow) || (!showContextWarning && !showTokensWarning && !showCostWarning)) { + return null + } + + const handleDismiss = () => { + setIsExiting(true) + // Add a slight delay before setting isDismissed to allow animation to complete + setTimeout(() => { + setIsDismissed(true) + }, 300) + } + + return ( +
+ {/* Header with Warning Icon */} +
+
+ + {/* Action Button */} +
+ +
+
+ ) +} + +export default TokenUsageWarning diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index a8b4deb73d..cc7111becb 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -51,6 +51,7 @@ import { ReasoningEffort } from "./ReasoningEffort" import { DiffSettingsControl } from "./DiffSettingsControl" import { TemperatureControl } from "./TemperatureControl" import { RateLimitSecondsControl } from "./RateLimitSecondsControl" +import { WarningThresholdControl } from "./WarningThresholdControl" import { BedrockCustomArn } from "./providers/BedrockCustomArn" export interface ApiOptionsProps { @@ -484,6 +485,10 @@ const ApiOptions = ({ value={apiConfiguration.rateLimitSeconds || 0} onChange={(value) => setApiConfigurationField("rateLimitSeconds", value)} /> + setApiConfigurationField("warningThreshold", value)} + /> )}
diff --git a/webview-ui/src/components/settings/WarningThresholdControl.tsx b/webview-ui/src/components/settings/WarningThresholdControl.tsx new file mode 100644 index 0000000000..e88fff39a3 --- /dev/null +++ b/webview-ui/src/components/settings/WarningThresholdControl.tsx @@ -0,0 +1,149 @@ +import React, { useCallback } from "react" +import { useAppTranslation } from "@/i18n/TranslationContext" +import { WarningThreshold } from "@roo/schemas" +import { Switch } from "@/components/ui/switch" + +type DefaultValues = { + context: number + tokens: number + cost: number +} + +const defaultValues: DefaultValues = { + context: 75, + tokens: 5_500_000, + cost: 2, +} + +interface WarningThresholdControlProps { + value: WarningThreshold + onChange: (value: WarningThreshold) => void +} + +export const WarningThresholdControl: React.FC = ({ value, onChange }) => { + const { t } = useAppTranslation() + + const handleChange = useCallback( + (field: keyof WarningThreshold, newValue: number) => { + onChange({ ...value, [field]: newValue }) + }, + [onChange, value], + ) + + const handleSwitchChange = useCallback( + (field: keyof WarningThreshold, checked: boolean) => { + handleChange(field, checked ? defaultValues[field] : -1) + }, + [handleChange], + ) + + return ( +
+ {t("settings:providers.warningThreshold.label")} + +
+
+
+
+
+ { + const newValue = e.target.value === "" ? -1 : parseFloat(e.target.value) + if (!isNaN(newValue)) { + handleChange("context", newValue) + } + }} + onClick={(e) => e.currentTarget.select()} + data-testid="context-warning-threshold-input" + placeholder="-1" + /> + % +
+ {t("settings:providers.warningThreshold.context")} +
+ handleSwitchChange("context", checked)} + className="data-[state=checked]:bg-vscode-button-background" + /> +
+
+ {t("settings:providers.warningThreshold.contextDescription")} +
+
+ +
+
+
+ { + const newValue = e.target.value === "" ? -1 : parseInt(e.target.value, 10) + if (!isNaN(newValue)) { + handleChange("tokens", newValue === -1 ? -1 : Math.max(150_000, newValue)) + } + }} + onClick={(e) => e.currentTarget.select()} + data-testid="tokens-warning-threshold-input" + placeholder="-1" + /> + {t("settings:providers.warningThreshold.tokens")} +
+ handleSwitchChange("tokens", checked)} + className="data-[state=checked]:bg-vscode-button-background" + /> +
+
+ {t("settings:providers.warningThreshold.tokensDescription")} +
+
+ +
+
+
+ { + const newValue = e.target.value === "" ? -1 : parseFloat(e.target.value) + if (!isNaN(newValue)) { + handleChange("cost", newValue === -1 ? -1 : Math.max(0.1, newValue)) + } + }} + onClick={(e) => e.currentTarget.select()} + data-testid="cost-warning-threshold-input" + placeholder="-1" + /> + {t("settings:providers.warningThreshold.cost")} +
+ handleSwitchChange("cost", checked)} + className="data-[state=checked]:bg-vscode-button-background" + /> +
+
+ {t("settings:providers.warningThreshold.costDescription")} +
+
+
+
+ ) +} diff --git a/webview-ui/src/components/ui/switch.tsx b/webview-ui/src/components/ui/switch.tsx new file mode 100644 index 0000000000..9750a7b526 --- /dev/null +++ b/webview-ui/src/components/ui/switch.tsx @@ -0,0 +1,27 @@ +"use client" + +import * as React from "react" +import * as SwitchPrimitives from "@radix-ui/react-switch" +import { cn } from "@/lib/utils" + +const Switch = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +Switch.displayName = "Switch" + +export { Switch } diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index bad37a04bd..15b86a3d10 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -247,5 +247,10 @@ "title": "Advertència d'execució d'ordres", "description": "La teva ordre s'està executant sense la integració de shell del terminal VSCode. Per suprimir aquest advertiment, pots desactivar la integració de shell a la secció Terminal de la configuració de Roo Code o solucionar problemes d'integració del terminal VSCode utilitzant l'enllaç a continuació.", "troubleshooting": "Fes clic aquí per a la documentació d'integració de shell." + }, + "warning": { + "contextLimit": "L'ús de la finestra de context està al {{percent}}%. Considera iniciar una nova tasca per evitar arribar als límits.", + "tokenLimit": "L'ús de tokens ha arribat a {{tokens}} tokens. Considera iniciar una nova tasca per gestionar els costos.", + "costLimit": "El cost ha arribat a ${{cost}}. Considera iniciar una nova tasca per gestionar les despeses." } } diff --git a/webview-ui/src/i18n/locales/ca/prompts.json b/webview-ui/src/i18n/locales/ca/prompts.json index 308b3ed1b4..5aff6f14fd 100644 --- a/webview-ui/src/i18n/locales/ca/prompts.json +++ b/webview-ui/src/i18n/locales/ca/prompts.json @@ -99,6 +99,10 @@ "label": "Explicar comanda del terminal", "description": "Obtingueu explicacions detallades de les comandes del terminal i les seves sortides. Disponible al menú contextual del terminal (clic dret al contingut seleccionat del terminal)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Resumeix i inicia una nova tasca", + "description": "Resumeix la tasca actual i comença una de nova amb el resum com a context. Això ajuda a gestionar tasques complexes dividint-les en subtasques més petites i enfocades." + }, "NEW_TASK": { "label": "Iniciar nova tasca", "description": "Inicieu una nova tasca amb l'entrada proporcionada. Disponible a la paleta de comandes." diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index c9e1cb5606..8c5454c2f6 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -248,7 +248,16 @@ "medium": "Mitjà", "low": "Baix" }, - "setReasoningLevel": "Activa l'esforç de raonament" + "setReasoningLevel": "Activa l'esforç de raonament", + "warningThreshold": { + "label": "Llindars d'advertència", + "context": "Llindar d'advertència d'ús de finestra de context", + "contextDescription": "Mostra una advertència quan l'ús de la finestra de context supera aquest percentatge. Establiu -1 per desactivar.", + "tokens": "Llindar d'advertència d'ús de tokens", + "tokensDescription": "Mostra una advertència quan l'ús total de tokens supera aquesta quantitat. Establiu -1 per desactivar.", + "cost": "Llindar d'advertència de cost", + "costDescription": "Mostra una advertència quan el cost total supera aquesta quantitat en USD. Establiu -1 per desactivar." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 1b7b199f5b..03b81a2d20 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -247,5 +247,10 @@ "title": "Befehlsausführungswarnung", "description": "Dein Befehl wird ohne VSCode Terminal-Shell-Integration ausgeführt. Um diese Warnung zu unterdrücken, kannst du die Shell-Integration im Abschnitt Terminal der Roo Code Einstellungen deaktivieren oder die VSCode Terminal-Integration mit dem Link unten beheben.", "troubleshooting": "Klicke hier für die Shell-Integrationsdokumentation." + }, + "warning": { + "contextLimit": "Die Kontextfensternutzung liegt bei {{percent}}%. Erwägen Sie eine neue Aufgabe zu starten, um Limits zu vermeiden.", + "tokenLimit": "Die Token-Nutzung hat {{tokens}} Token erreicht. Erwägen Sie eine neue Aufgabe zu starten, um Kosten zu kontrollieren.", + "costLimit": "Die Kosten haben ${{cost}} erreicht. Erwägen Sie eine neue Aufgabe zu starten, um Ausgaben zu kontrollieren." } } diff --git a/webview-ui/src/i18n/locales/de/prompts.json b/webview-ui/src/i18n/locales/de/prompts.json index c89529805d..1acc7e7dda 100644 --- a/webview-ui/src/i18n/locales/de/prompts.json +++ b/webview-ui/src/i18n/locales/de/prompts.json @@ -99,6 +99,10 @@ "label": "Terminal-Befehl erklären", "description": "Erhalten Sie detaillierte Erklärungen zu Terminal-Befehlen und deren Ausgaben. Verfügbar im Kontextmenü des Terminals (Rechtsklick auf ausgewählten Terminal-Inhalt)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Zusammenfassen und neue Aufgabe starten", + "description": "Fasst die aktuelle Aufgabe zusammen und startet eine neue mit der Zusammenfassung als Kontext. Dies hilft bei der Verwaltung komplexer Aufgaben, indem sie in kleinere, fokussierte Teilaufgaben aufgeteilt werden." + }, "NEW_TASK": { "label": "Neue Aufgabe starten", "description": "Starte eine neue Aufgabe mit deiner Eingabe. Verfügbar in der Befehlspalette." diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index aac308c4a1..abcb7a0e03 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -248,7 +248,16 @@ "medium": "Mittel", "low": "Niedrig" }, - "setReasoningLevel": "Denkaufwand aktivieren" + "setReasoningLevel": "Denkaufwand aktivieren", + "warningThreshold": { + "label": "Warnschwellen", + "context": "Warnschwelle für Kontextfensternutzung", + "contextDescription": "Zeigt eine Warnung an, wenn die Kontextfensternutzung diesen Prozentsatz überschreitet. Auf -1 setzen zum Deaktivieren.", + "tokens": "Warnschwelle für Token-Nutzung", + "tokensDescription": "Zeigt eine Warnung an, wenn die Gesamttoken-Nutzung diesen Wert überschreitet. Auf -1 setzen zum Deaktivieren.", + "cost": "Warnschwelle für Kosten", + "costDescription": "Zeigt eine Warnung an, wenn die Gesamtkosten diesen Betrag in USD überschreiten. Auf -1 setzen zum Deaktivieren." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index dc04575b83..650c0318d1 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -247,5 +247,10 @@ "title": "Command Execution Warning", "description": "Your command is being executed without VSCode terminal shell integration. To suppress this warning you can disable shell integration in the Terminal section of the Roo Code settings or troubleshoot VSCode terminal integration using the link below.", "troubleshooting": "Click here for shell integration documentation." + }, + "warning": { + "contextLimit": "Context window usage is at {{percent}}%. Consider starting a new task to avoid hitting limits.", + "tokenLimit": "Token usage has reached {{tokens}} tokens. Consider starting a new task to manage costs.", + "costLimit": "Cost has reached ${{cost}}. Consider starting a new task to manage expenses." } } diff --git a/webview-ui/src/i18n/locales/en/prompts.json b/webview-ui/src/i18n/locales/en/prompts.json index bae3acebfe..6ab7d58012 100644 --- a/webview-ui/src/i18n/locales/en/prompts.json +++ b/webview-ui/src/i18n/locales/en/prompts.json @@ -99,6 +99,10 @@ "label": "Explain Terminal Command", "description": "Get detailed explanations of terminal commands and their outputs. Available in the terminal context menu (right-click on selected terminal content)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Summarize and Start New Task", + "description": "Summarize the current task and start a new one with the summary as context. This helps manage complex tasks by breaking them into smaller, focused subtasks." + }, "NEW_TASK": { "label": "Start New Task", "description": "Start a new task with user input. Available in the Command Palette." diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 12d94b4337..6174159c85 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -242,6 +242,15 @@ "label": "Rate limit", "description": "Minimum time between API requests." }, + "warningThreshold": { + "label": "Warning Thresholds", + "context": "Context window usage warning threshold", + "contextDescription": "Show a warning when context window usage exceeds this percentage. Set to -1 to disable.", + "tokens": "Token usage warning threshold", + "tokensDescription": "Show a warning when total token usage exceeds this amount. Set to -1 to disable.", + "cost": "Cost warning threshold", + "costDescription": "Show a warning when total cost exceeds this amount in USD. Set to -1 to disable." + }, "reasoningEffort": { "label": "Model Reasoning Effort", "high": "High", diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 6e7fec9862..ad7bb91d76 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -247,5 +247,10 @@ "title": "Advertencia de ejecución de comandos", "description": "Tu comando se está ejecutando sin la integración de shell de terminal de VSCode. Para suprimir esta advertencia, puedes desactivar la integración de shell en la sección Terminal de la configuración de Roo Code o solucionar problemas de integración de terminal de VSCode usando el enlace de abajo.", "troubleshooting": "Haz clic aquí para ver la documentación de integración de shell." + }, + "warning": { + "contextLimit": "El uso de la ventana de contexto está al {{percent}}%. Considera iniciar una nueva tarea para evitar alcanzar los límites.", + "tokenLimit": "El uso de tokens ha alcanzado {{tokens}} tokens. Considera iniciar una nueva tarea para gestionar los costos.", + "costLimit": "El costo ha alcanzado ${{cost}}. Considera iniciar una nueva tarea para gestionar los gastos." } } diff --git a/webview-ui/src/i18n/locales/es/prompts.json b/webview-ui/src/i18n/locales/es/prompts.json index 207729e8f3..7fbeb4f848 100644 --- a/webview-ui/src/i18n/locales/es/prompts.json +++ b/webview-ui/src/i18n/locales/es/prompts.json @@ -99,6 +99,10 @@ "label": "Explicar comando de terminal", "description": "Obtén explicaciones detalladas de comandos de terminal y sus salidas. Disponible en el menú contextual de la terminal (clic derecho en el contenido seleccionado de la terminal)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Resumir e iniciar nueva tarea", + "description": "Resume la tarea actual e inicia una nueva con el resumen como contexto. Esto ayuda a gestionar tareas complejas dividiéndolas en subtareas más pequeñas y enfocadas." + }, "NEW_TASK": { "label": "Iniciar nueva tarea", "description": "Inicia una nueva tarea con entrada del usuario. Disponible en la Paleta de comandos." diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index f862f13405..a35de1f253 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -248,7 +248,16 @@ "medium": "Medio", "low": "Bajo" }, - "setReasoningLevel": "Habilitar esfuerzo de razonamiento" + "setReasoningLevel": "Habilitar esfuerzo de razonamiento", + "warningThreshold": { + "label": "Umbrales de Advertencia", + "context": "Umbral de advertencia de uso de ventana de contexto", + "contextDescription": "Mostrar una advertencia cuando el uso de la ventana de contexto exceda este porcentaje. Establecer a -1 para deshabilitar.", + "tokens": "Umbral de advertencia de uso de tokens", + "tokensDescription": "Mostrar una advertencia cuando el uso total de tokens exceda esta cantidad. Establecer a -1 para deshabilitar.", + "cost": "Umbral de advertencia de costo", + "costDescription": "Mostrar una advertencia cuando el costo total exceda esta cantidad en USD. Establecer a -1 para deshabilitar." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index b4b6139cff..aede97eaf1 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -247,5 +247,10 @@ "title": "Avertissement d'exécution de commande", "description": "Votre commande est exécutée sans l'intégration shell du terminal VSCode. Pour supprimer cet avertissement, vous pouvez désactiver l'intégration shell dans la section Terminal des paramètres de Roo Code ou résoudre les problèmes d'intégration du terminal VSCode en utilisant le lien ci-dessous.", "troubleshooting": "Cliquez ici pour la documentation d'intégration shell." + }, + "warning": { + "contextLimit": "L'utilisation de la fenêtre de contexte est à {{percent}}%. Envisagez de démarrer une nouvelle tâche pour éviter d'atteindre les limites.", + "tokenLimit": "L'utilisation des tokens a atteint {{tokens}} tokens. Envisagez de démarrer une nouvelle tâche pour gérer les coûts.", + "costLimit": "Le coût a atteint ${{cost}}. Envisagez de démarrer une nouvelle tâche pour gérer les dépenses." } } diff --git a/webview-ui/src/i18n/locales/fr/prompts.json b/webview-ui/src/i18n/locales/fr/prompts.json index db4f4ac9b0..71d50d4a4b 100644 --- a/webview-ui/src/i18n/locales/fr/prompts.json +++ b/webview-ui/src/i18n/locales/fr/prompts.json @@ -99,6 +99,10 @@ "label": "Expliquer la commande du terminal", "description": "Obtenez des explications détaillées sur les commandes du terminal et leurs sorties. Disponible dans le menu contextuel du terminal (clic droit sur le contenu sélectionné du terminal)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Résumer et démarrer une nouvelle tâche", + "description": "Résume la tâche actuelle et en démarre une nouvelle avec le résumé comme contexte. Cela aide à gérer les tâches complexes en les divisant en sous-tâches plus petites et ciblées." + }, "NEW_TASK": { "label": "Démarrer une nouvelle tâche", "description": "Démarre une nouvelle tâche avec ton entrée. Disponible dans la palette de commandes." diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 9f694c5aa3..6be97f000f 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -248,7 +248,16 @@ "medium": "Moyen", "low": "Faible" }, - "setReasoningLevel": "Activer l'effort de raisonnement" + "setReasoningLevel": "Activer l'effort de raisonnement", + "warningThreshold": { + "label": "Seuils d'avertissement", + "context": "Seuil d'avertissement d'utilisation de la fenêtre de contexte", + "contextDescription": "Afficher un avertissement lorsque l'utilisation de la fenêtre de contexte dépasse ce pourcentage. Définir à -1 pour désactiver.", + "tokens": "Seuil d'avertissement d'utilisation des tokens", + "tokensDescription": "Afficher un avertissement lorsque l'utilisation totale des tokens dépasse cette quantité. Définir à -1 pour désactiver.", + "cost": "Seuil d'avertissement de coût", + "costDescription": "Afficher un avertissement lorsque le coût total dépasse ce montant en USD. Définir à -1 pour désactiver." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 7ee3aad0b1..0ddd4fbeab 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -247,5 +247,10 @@ "title": "कमांड निष्पादन चेतावनी", "description": "आपका कमांड VSCode टर्मिनल शेल इंटीग्रेशन के बिना निष्पादित हो रहा है। इस चेतावनी को दबाने के लिए आप Roo Code सेटिंग्स के Terminal अनुभाग में शेल इंटीग्रेशन को अक्षम कर सकते हैं या नीचे दिए गए लिंक का उपयोग करके VSCode टर्मिनल इंटीग्रेशन की समस्या का समाधान कर सकते हैं।", "troubleshooting": "शेल इंटीग्रेशन दस्तावेज़ के लिए यहां क्लिक करें।" + }, + "warning": { + "contextLimit": "संदर्भ विंडो उपयोग {{percent}}% पर है। सीमाओं से बचने के लिए नया कार्य शुरू करने पर विचार करें।", + "tokenLimit": "Token उपयोग {{tokens}} tokens तक पहुंच गया है। लागत प्रबंधित करने के लिए नया कार्य शुरू करने पर विचार करें।", + "costLimit": "लागत ${{cost}} तक पहुंच गई है। खर्च प्रबंधित करने के लिए नया कार्य शुरू करने पर विचार करें।" } } diff --git a/webview-ui/src/i18n/locales/hi/prompts.json b/webview-ui/src/i18n/locales/hi/prompts.json index 3c9ecbedf4..267caff873 100644 --- a/webview-ui/src/i18n/locales/hi/prompts.json +++ b/webview-ui/src/i18n/locales/hi/prompts.json @@ -99,6 +99,10 @@ "label": "टर्मिनल कमांड समझाएँ", "description": "टर्मिनल कमांड और उनके आउटपुट के विस्तृत स्पष्टीकरण प्राप्त करें। टर्मिनल के कंटेक्स्ट मेनू (चयनित टर्मिनल सामग्री पर राइट-क्लिक) में उपलब्ध है।" }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "सारांश करें और नया कार्य शुरू करें", + "description": "वर्तमान कार्य का सारांश करें और सारांश को संदर्भ के रूप में उपयोग करके एक नया कार्य शुरू करें। यह जटिल कार्यों को छोटे, केंद्रित उप-कार्यों में विभाजित करके उनका प्रबंधन करने में मदद करता है।" + }, "NEW_TASK": { "label": "नया कार्य शुरू करें", "description": "इनपुट के साथ नया कार्य शुरू करें। कमांड पैलेट में उपलब्ध है।" diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 0b21ed906b..d55982fcea 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -248,7 +248,16 @@ "medium": "मध्यम", "low": "निम्न" }, - "setReasoningLevel": "तर्क प्रयास सक्षम करें" + "setReasoningLevel": "तर्क प्रयास सक्षम करें", + "warningThreshold": { + "label": "चेतावनी सीमाएँ", + "context": "संदर्भ विंडो उपयोग चेतावनी सीमा", + "contextDescription": "जब संदर्भ विंडो उपयोग इस प्रतिशत से अधिक हो जाए तो चेतावनी दिखाएँ। अक्षम करने के लिए -1 पर सेट करें।", + "tokens": "Token उपयोग चेतावनी सीमा", + "tokensDescription": "जब कुल Token उपयोग इस राशि से अधिक हो जाए तो चेतावनी दिखाएँ। अक्षम करने के लिए -1 पर सेट करें।", + "cost": "लागत चेतावनी सीमा", + "costDescription": "जब कुल लागत इस USD राशि से अधिक हो जाए तो चेतावनी दिखाएँ। अक्षम करने के लिए -1 पर सेट करें।" + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 30cae6a29b..b86740b3ad 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -247,5 +247,10 @@ "title": "Avviso di esecuzione comando", "description": "Il tuo comando viene eseguito senza l'integrazione shell del terminale VSCode. Per sopprimere questo avviso puoi disattivare l'integrazione shell nella sezione Terminal delle impostazioni di Roo Code o risolvere i problemi di integrazione del terminale VSCode utilizzando il link qui sotto.", "troubleshooting": "Clicca qui per la documentazione sull'integrazione shell." + }, + "warning": { + "contextLimit": "L'utilizzo della finestra di contesto è al {{percent}}%. Considera di iniziare una nuova attività per evitare di raggiungere i limiti.", + "tokenLimit": "L'utilizzo dei token ha raggiunto {{tokens}} token. Considera di iniziare una nuova attività per gestire i costi.", + "costLimit": "Il costo ha raggiunto ${{cost}}. Considera di iniziare una nuova attività per gestire le spese." } } diff --git a/webview-ui/src/i18n/locales/it/prompts.json b/webview-ui/src/i18n/locales/it/prompts.json index f7356f3d89..8b6bb4fb12 100644 --- a/webview-ui/src/i18n/locales/it/prompts.json +++ b/webview-ui/src/i18n/locales/it/prompts.json @@ -99,6 +99,10 @@ "label": "Spiega comando del terminale", "description": "Ottieni spiegazioni dettagliate sui comandi del terminale e sui loro output. Disponibile nel menu contestuale del terminale (clic destro sul contenuto selezionato del terminale)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Riassumi e inizia nuovo task", + "description": "Riassume il task corrente e ne inizia uno nuovo utilizzando il riassunto come contesto. Questo aiuta a gestire task complessi suddividendoli in subtask più piccoli e mirati." + }, "NEW_TASK": { "label": "Avvia nuova attività", "description": "Avvia una nuova attività con il tuo input. Disponibile nella palette dei comandi." diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index a3e210c480..5bd0857b27 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -248,7 +248,16 @@ "medium": "Medio", "low": "Basso" }, - "setReasoningLevel": "Abilita sforzo di ragionamento" + "setReasoningLevel": "Abilita sforzo di ragionamento", + "warningThreshold": { + "label": "Soglie di avviso", + "context": "Soglia di avviso per l'utilizzo della finestra di contesto", + "contextDescription": "Mostra un avviso quando l'utilizzo della finestra di contesto supera questa percentuale. Imposta a -1 per disabilitare.", + "tokens": "Soglia di avviso per l'utilizzo dei token", + "tokensDescription": "Mostra un avviso quando l'utilizzo totale dei token supera questo valore. Imposta a -1 per disabilitare.", + "cost": "Soglia di avviso per il costo", + "costDescription": "Mostra un avviso quando il costo totale supera questo importo in USD. Imposta a -1 per disabilitare." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 95ed9a275b..a031750fd9 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -247,5 +247,10 @@ "title": "コマンド実行警告", "description": "コマンドはVSCodeターミナルシェル統合なしで実行されています。この警告を非表示にするには、Roo Code設定Terminalセクションでシェル統合を無効にするか、以下のリンクを使用してVSCodeターミナル統合のトラブルシューティングを行ってください。", "troubleshooting": "シェル統合のドキュメントはこちらをクリック" + }, + "warning": { + "contextLimit": "コンテキストウィンドウの使用量が{{percent}}%に達しています。制限に達しないよう、新しいタスクの開始を検討してください。", + "tokenLimit": "トークン使用量が{{tokens}}トークンに達しました。コストを管理するため、新しいタスクの開始を検討してください。", + "costLimit": "コストが${{cost}}に達しました。支出を管理するため、新しいタスクの開始を検討してください。" } } diff --git a/webview-ui/src/i18n/locales/ja/prompts.json b/webview-ui/src/i18n/locales/ja/prompts.json index 4392d71304..10ba9b5d43 100644 --- a/webview-ui/src/i18n/locales/ja/prompts.json +++ b/webview-ui/src/i18n/locales/ja/prompts.json @@ -99,6 +99,10 @@ "label": "ターミナルコマンドを説明", "description": "ターミナルコマンドとその出力の詳細な説明を得ることができます。ターミナルのコンテキストメニュー(選択したターミナルの内容で右クリック)から利用できます。" }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "要約して新しいタスクを開始", + "description": "現在のタスクを要約し、その要約を文脈として新しいタスクを開始します。これにより、複雑なタスクをより小さく焦点を絞ったサブタスクに分割して管理することができます。" + }, "NEW_TASK": { "label": "新しいタスクを開始", "description": "入力内容で新しいタスクを開始できます。コマンドパレットから利用できます。" diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 1f1ec12c54..d14f78eb4d 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -248,7 +248,16 @@ "medium": "中", "low": "低" }, - "setReasoningLevel": "推論労力を有効にする" + "setReasoningLevel": "推論労力を有効にする", + "warningThreshold": { + "label": "警告しきい値", + "context": "コンテキストウィンドウ使用量の警告しきい値", + "contextDescription": "コンテキストウィンドウの使用量がこの割合を超えた場合に警告を表示。-1を設定すると無効化されます。", + "tokens": "トークン使用量の警告しきい値", + "tokensDescription": "トークンの総使用量がこの値を超えた場合に警告を表示。-1を設定すると無効化されます。", + "cost": "コストの警告しきい値", + "costDescription": "総コストがこのUSD金額を超えた場合に警告を表示。-1を設定すると無効化されます。" + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 3b68f351ad..f6ac72dd90 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -247,5 +247,10 @@ "title": "명령 실행 경고", "description": "명령이 VSCode 터미널 쉘 통합 없이 실행되고 있습니다. 이 경고를 숨기려면 Roo Code 설정Terminal 섹션에서 쉘 통합을 비활성화하거나 아래 링크를 사용하여 VSCode 터미널 통합 문제를 해결하세요.", "troubleshooting": "쉘 통합 문서를 보려면 여기를 클릭하세요." + }, + "warning": { + "contextLimit": "컨텍스트 창 사용량이 {{percent}}%에 도달했습니다. 제한에 도달하지 않도록 새 작업을 시작하는 것을 고려하세요.", + "tokenLimit": "토큰 사용량이 {{tokens}} 토큰에 도달했습니다. 비용을 관리하기 위해 새 작업을 시작하는 것을 고려하세요.", + "costLimit": "비용이 ${{cost}}에 도달했습니다. 지출을 관리하기 위해 새 작업을 시작하는 것을 고려하세요." } } diff --git a/webview-ui/src/i18n/locales/ko/prompts.json b/webview-ui/src/i18n/locales/ko/prompts.json index 4259c52646..7ee5a7be9c 100644 --- a/webview-ui/src/i18n/locales/ko/prompts.json +++ b/webview-ui/src/i18n/locales/ko/prompts.json @@ -99,6 +99,10 @@ "label": "터미널 명령 설명", "description": "터미널 명령과 그 출력에 대한 상세한 설명을 얻을 수 있습니다. 터미널 컨텍스트 메뉴(선택한 터미널 콘텐츠에서 우클릭)에서 이용 가능합니다." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "요약하고 새 작업 시작", + "description": "현재 작업을 요약하고 그 요약을 컨텍스트로 사용하여 새 작업을 시작합니다. 이는 복잡한 작업을 더 작고 집중된 하위 작업으로 나누어 관리하는 데 도움이 됩니다." + }, "NEW_TASK": { "label": "새 작업 시작", "description": "입력한 내용으로 새 작업을 시작할 수 있습니다. 명령 팔레트에서 이용 가능합니다." diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 95195ff0a2..427156ced2 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -248,7 +248,16 @@ "medium": "중간", "low": "낮음" }, - "setReasoningLevel": "추론 노력 활성화" + "setReasoningLevel": "추론 노력 활성화", + "warningThreshold": { + "label": "경고 임계값", + "context": "컨텍스트 창 사용량 경고 임계값", + "contextDescription": "컨텍스트 창 사용량이 이 비율을 초과할 때 경고 표시. -1로 설정하여 비활성화.", + "tokens": "토큰 사용량 경고 임계값", + "tokensDescription": "총 토큰 사용량이 이 값을 초과할 때 경고 표시. -1로 설정하여 비활성화.", + "cost": "비용 경고 임계값", + "costDescription": "총 비용이 이 USD 금액을 초과할 때 경고 표시. -1로 설정하여 비활성화." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index 1d1afdf9d3..3dcf3f4c7d 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -1,251 +1,256 @@ { "greeting": "Welkom bij Roo Code", - "task": { - "title": "Taak", - "seeMore": "Meer weergeven", - "seeLess": "Minder weergeven", - "tokens": "Tokens:", - "cache": "Cache:", - "apiCost": "API-kosten:", - "contextWindow": "Contextlengte:", - "closeAndStart": "Taak sluiten en een nieuwe starten", - "export": "Taakgeschiedenis exporteren", - "delete": "Taak verwijderen (Shift + Klik om bevestiging over te slaan)" - }, - "unpin": "Losmaken", - "pin": "Vastmaken", - "retry": { - "title": "Opnieuw proberen", - "tooltip": "Probeer de bewerking opnieuw" - }, - "startNewTask": { - "title": "Nieuwe taak starten", - "tooltip": "Begin een nieuwe taak" - }, - "proceedAnyways": { - "title": "Toch doorgaan", - "tooltip": "Ga door terwijl het commando wordt uitgevoerd" - }, - "save": { - "title": "Opslaan", - "tooltip": "Bestandswijzigingen opslaan" - }, - "tokenProgress": { - "availableSpace": "Beschikbare ruimte: {{amount}} tokens", - "tokensUsed": "Gebruikte tokens: {{used}} van {{total}}", - "reservedForResponse": "Gereserveerd voor modelantwoord: {{amount}} tokens" - }, - "reject": { - "title": "Weigeren", - "tooltip": "Deze actie weigeren" - }, - "completeSubtaskAndReturn": "Subtaak voltooien en terugkeren", - "approve": { - "title": "Goedkeuren", - "tooltip": "Deze actie goedkeuren" - }, - "runCommand": { - "title": "Commando uitvoeren", - "tooltip": "Voer dit commando uit" - }, - "proceedWhileRunning": { - "title": "Doorgaan tijdens uitvoeren", - "tooltip": "Ga door ondanks waarschuwingen" - }, - "killCommand": { - "title": "Commando stoppen", - "tooltip": "Huidig commando stoppen" - }, - "resumeTask": { - "title": "Taak hervatten", - "tooltip": "Ga door met de huidige taak" - }, - "terminate": { - "title": "Beëindigen", - "tooltip": "Beëindig de huidige taak" - }, - "cancel": { - "title": "Annuleren", - "tooltip": "Annuleer de huidige bewerking" - }, - "scrollToBottom": "Scroll naar onderaan de chat", - "about": "Genereer, refactor en debug code met AI-assistentie.
Bekijk onze documentatie voor meer informatie.", - "onboarding": "Je takenlijst in deze werkruimte is leeg.", - "rooTips": { - "boomerangTasks": { - "title": "Boomerang-taken", - "description": "Splits taken op in kleinere, beheersbare delen" - }, - "stickyModels": { - "title": "Vastgezette modellen", - "description": "Elke modus onthoudt je laatst gebruikte model" - }, - "tools": { - "title": "Tools", - "description": "Laat de AI problemen oplossen door te browsen, commando's uit te voeren en meer" - }, - "customizableModes": { - "title": "Aanpasbare modi", - "description": "Gespecialiseerde persona's met hun eigen gedrag en toegewezen modellen" - } - }, - "selectMode": "Selecteer modus voor interactie", - "selectApiConfig": "Selecteer API-configuratie", - "enhancePrompt": "Prompt verbeteren met extra context", - "enhancePromptDescription": "De knop 'Prompt verbeteren' helpt je prompt te verbeteren door extra context, verduidelijking of herformulering te bieden. Probeer hier een prompt te typen en klik opnieuw op de knop om te zien hoe het werkt.", - "addImages": "Afbeeldingen toevoegen aan bericht", - "sendMessage": "Bericht verzenden", - "typeMessage": "Typ een bericht...", - "typeTask": "Typ hier je taak...", - "addContext": "@ om context toe te voegen, / om van modus te wisselen", - "dragFiles": "houd shift ingedrukt om bestanden te slepen", - "dragFilesImages": "houd shift ingedrukt om bestanden/afbeeldingen te slepen", - "errorReadingFile": "Fout bij het lezen van bestand:", - "noValidImages": "Er zijn geen geldige afbeeldingen verwerkt", - "separator": "Scheidingsteken", - "edit": "Bewerken...", - "forNextMode": "voor volgende modus", - "apiRequest": { - "title": "API-verzoek", - "failed": "API-verzoek mislukt", - "streaming": "API-verzoek...", - "cancelled": "API-verzoek geannuleerd", - "streamingFailed": "API-streaming mislukt" - }, - "checkpoint": { - "initial": "Initiële checkpoint", - "regular": "Checkpoint", - "initializingWarning": "Checkpoint wordt nog steeds geïnitialiseerd... Als dit te lang duurt, kun je checkpoints uitschakelen in de instellingen en je taak opnieuw starten.", - "menu": { - "viewDiff": "Bekijk verschil", - "restore": "Herstel checkpoint", - "restoreFiles": "Bestanden herstellen", - "restoreFilesDescription": "Herstelt de bestanden van je project naar een momentopname die op dit punt is gemaakt.", - "restoreFilesAndTask": "Bestanden & taak herstellen", - "confirm": "Bevestigen", - "cancel": "Annuleren", - "cannotUndo": "Deze actie kan niet ongedaan worden gemaakt.", - "restoreFilesAndTaskDescription": "Herstelt de bestanden van je project naar een momentopname die op dit punt is gemaakt en verwijdert alle berichten na dit punt." - }, - "current": "Huidig" - }, - "instructions": { - "wantsToFetch": "Roo wil gedetailleerde instructies ophalen om te helpen met de huidige taak" - }, - "fileOperations": { - "wantsToRead": "Roo wil dit bestand lezen:", - "wantsToReadOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte lezen:", - "didRead": "Roo heeft dit bestand gelezen:", - "wantsToEdit": "Roo wil dit bestand bewerken:", - "wantsToEditOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte bewerken:", - "wantsToCreate": "Roo wil een nieuw bestand aanmaken:", - "wantsToSearchReplace": "Roo wil zoeken en vervangen in dit bestand:", - "didSearchReplace": "Roo heeft zoeken en vervangen uitgevoerd op dit bestand:", - "wantsToInsert": "Roo wil inhoud invoegen in dit bestand:", - "wantsToInsertWithLineNumber": "Roo wil inhoud invoegen in dit bestand op regel {{lineNumber}}:", - "wantsToInsertAtEnd": "Roo wil inhoud toevoegen aan het einde van dit bestand:" - }, - "directoryOperations": { - "wantsToViewTopLevel": "Roo wil de bovenliggende bestanden in deze map bekijken:", - "didViewTopLevel": "Roo heeft de bovenliggende bestanden in deze map bekeken:", - "wantsToViewRecursive": "Roo wil alle bestanden in deze map recursief bekijken:", - "didViewRecursive": "Roo heeft alle bestanden in deze map recursief bekeken:", - "wantsToViewDefinitions": "Roo wil broncode-definitienamen bekijken die in deze map worden gebruikt:", - "didViewDefinitions": "Roo heeft broncode-definitienamen bekeken die in deze map worden gebruikt:", - "wantsToSearch": "Roo wil deze map doorzoeken op {{regex}}:", - "didSearch": "Roo heeft deze map doorzocht op {{regex}}:" - }, - "commandOutput": "Commando-uitvoer", - "response": "Antwoord", - "arguments": "Argumenten", - "mcp": { - "wantsToUseTool": "Roo wil een tool gebruiken op de {{serverName}} MCP-server:", - "wantsToAccessResource": "Roo wil een bron benaderen op de {{serverName}} MCP-server:" - }, - "modes": { - "wantsToSwitch": "Roo wil overschakelen naar {{mode}} modus", - "wantsToSwitchWithReason": "Roo wil overschakelen naar {{mode}} modus omdat: {{reason}}", - "didSwitch": "Roo is overgeschakeld naar {{mode}} modus", - "didSwitchWithReason": "Roo is overgeschakeld naar {{mode}} modus omdat: {{reason}}" - }, - "subtasks": { - "wantsToCreate": "Roo wil een nieuwe subtaak aanmaken in {{mode}} modus:", - "wantsToFinish": "Roo wil deze subtaak voltooien", - "newTaskContent": "Subtaak-instructies", - "completionContent": "Subtaak voltooid", - "resultContent": "Subtaakresultaten", - "defaultResult": "Ga verder met de volgende taak.", - "completionInstructions": "Subtaak voltooid! Je kunt de resultaten bekijken en eventuele correcties of volgende stappen voorstellen. Als alles goed is, bevestig dan om het resultaat terug te sturen naar de hoofdtaak." - }, - "questions": { - "hasQuestion": "Roo heeft een vraag:" - }, - "taskCompleted": "Taak voltooid", - "error": "Fout", - "diffError": { - "title": "Bewerking mislukt" - }, - "troubleMessage": "Roo ondervindt problemen...", - "powershell": { - "issues": "Het lijkt erop dat je problemen hebt met Windows PowerShell, zie deze" - }, - "autoApprove": { - "title": "Automatisch goedkeuren:", - "none": "Geen", - "description": "Met automatisch goedkeuren kan Roo Code acties uitvoeren zonder om toestemming te vragen. Schakel dit alleen in voor acties die je volledig vertrouwt. Meer gedetailleerde configuratie beschikbaar in de Instellingen." - }, - "announcement": { - "title": "🎉 Roo Code 3.16 uitgebracht", - "description": "Roo Code 3.16 brengt nieuwe functies en verbeteringen op basis van jouw feedback.", - "feature1": "Groq en Chutes API-providers: Ondersteuning toegevoegd voor Groq en Chutes API-providers (dank aan @shariqriazz!)", - "feature2": "Klikbare codeverwijzingen: Codeverwijzingen in modelantwoorden navigeren nu naar bronregels (dank aan @KJ7LNW!)", - "feature3": "MCP-stabiliteitsverbeteringen: Verschillende bugs opgelost om de stabiliteit van MCP-integraties te verbeteren", - "hideButton": "Aankondiging verbergen", - "detailsDiscussLinks": "Meer details en discussie in Discord en Reddit 🚀", - "whatsNew": "Wat is er nieuw" - }, - "reasoning": { - "thinking": "Denkt na", - "seconds": "{{count}}s" - }, - "followUpSuggest": { - "copyToInput": "Kopiëren naar invoer (zelfde als shift + klik)" - }, - "browser": { - "rooWantsToUse": "Roo wil de browser gebruiken:", - "consoleLogs": "Console-logboeken", - "noNewLogs": "(Geen nieuwe logboeken)", - "screenshot": "Browserschermopname", - "cursor": "cursor", - "navigation": { - "step": "Stap {{current}} van {{total}}", - "previous": "Vorige", - "next": "Volgende" - }, - "sessionStarted": "Browsersessie gestart", - "actions": { - "title": "Browse-actie: ", - "launch": "Browser starten op {{url}}", - "click": "Klik ({{coordinate}})", - "type": "Typ \"{{text}}\"", - "scrollDown": "Scroll naar beneden", - "scrollUp": "Scroll naar boven", - "close": "Browser sluiten" - } - }, - "codeblock": { - "tooltips": { - "expand": "Codeblok uitvouwen", - "collapse": "Codeblok samenvouwen", - "enable_wrap": "Regelafbreking inschakelen", - "disable_wrap": "Regelafbreking uitschakelen", - "copy_code": "Code kopiëren" - } - }, - "systemPromptWarning": "WAARSCHUWING: Aangepaste systeemprompt actief. Dit kan de functionaliteit ernstig verstoren en onvoorspelbaar gedrag veroorzaken.", - "shellIntegration": { - "title": "Waarschuwing commando-uitvoering", - "description": "Je commando wordt uitgevoerd zonder VSCode-terminal shell-integratie. Om deze waarschuwing te onderdrukken kun je shell-integratie uitschakelen in het gedeelte Terminal van de Roo Code-instellingen of de VSCode-terminalintegratie oplossen via de onderstaande link.", - "troubleshooting": "Klik hier voor shell-integratie documentatie." - } + "task": { + "title": "Taak", + "seeMore": "Meer weergeven", + "seeLess": "Minder weergeven", + "tokens": "Tokens:", + "cache": "Cache:", + "apiCost": "API-kosten:", + "contextWindow": "Contextlengte:", + "closeAndStart": "Taak sluiten en een nieuwe starten", + "export": "Taakgeschiedenis exporteren", + "delete": "Taak verwijderen (Shift + Klik om bevestiging over te slaan)" + }, + "unpin": "Losmaken", + "pin": "Vastmaken", + "retry": { + "title": "Opnieuw proberen", + "tooltip": "Probeer de bewerking opnieuw" + }, + "startNewTask": { + "title": "Nieuwe taak starten", + "tooltip": "Begin een nieuwe taak" + }, + "proceedAnyways": { + "title": "Toch doorgaan", + "tooltip": "Ga door terwijl het commando wordt uitgevoerd" + }, + "save": { + "title": "Opslaan", + "tooltip": "Bestandswijzigingen opslaan" + }, + "tokenProgress": { + "availableSpace": "Beschikbare ruimte: {{amount}} tokens", + "tokensUsed": "Gebruikte tokens: {{used}} van {{total}}", + "reservedForResponse": "Gereserveerd voor modelantwoord: {{amount}} tokens" + }, + "reject": { + "title": "Weigeren", + "tooltip": "Deze actie weigeren" + }, + "completeSubtaskAndReturn": "Subtaak voltooien en terugkeren", + "approve": { + "title": "Goedkeuren", + "tooltip": "Deze actie goedkeuren" + }, + "runCommand": { + "title": "Commando uitvoeren", + "tooltip": "Voer dit commando uit" + }, + "proceedWhileRunning": { + "title": "Doorgaan tijdens uitvoeren", + "tooltip": "Ga door ondanks waarschuwingen" + }, + "killCommand": { + "title": "Commando stoppen", + "tooltip": "Huidig commando stoppen" + }, + "resumeTask": { + "title": "Taak hervatten", + "tooltip": "Ga door met de huidige taak" + }, + "terminate": { + "title": "Beëindigen", + "tooltip": "Beëindig de huidige taak" + }, + "cancel": { + "title": "Annuleren", + "tooltip": "Annuleer de huidige bewerking" + }, + "scrollToBottom": "Scroll naar onderaan de chat", + "about": "Genereer, refactor en debug code met AI-assistentie.
Bekijk onze documentatie voor meer informatie.", + "onboarding": "Je takenlijst in deze werkruimte is leeg.", + "rooTips": { + "boomerangTasks": { + "title": "Boomerang-taken", + "description": "Splits taken op in kleinere, beheersbare delen" + }, + "stickyModels": { + "title": "Vastgezette modellen", + "description": "Elke modus onthoudt je laatst gebruikte model" + }, + "tools": { + "title": "Tools", + "description": "Laat de AI problemen oplossen door te browsen, commando's uit te voeren en meer" + }, + "customizableModes": { + "title": "Aanpasbare modi", + "description": "Gespecialiseerde persona's met hun eigen gedrag en toegewezen modellen" + } + }, + "selectMode": "Selecteer modus voor interactie", + "selectApiConfig": "Selecteer API-configuratie", + "enhancePrompt": "Prompt verbeteren met extra context", + "enhancePromptDescription": "De knop 'Prompt verbeteren' helpt je prompt te verbeteren door extra context, verduidelijking of herformulering te bieden. Probeer hier een prompt te typen en klik opnieuw op de knop om te zien hoe het werkt.", + "addImages": "Afbeeldingen toevoegen aan bericht", + "sendMessage": "Bericht verzenden", + "typeMessage": "Typ een bericht...", + "typeTask": "Typ hier je taak...", + "addContext": "@ om context toe te voegen, / om van modus te wisselen", + "dragFiles": "houd shift ingedrukt om bestanden te slepen", + "dragFilesImages": "houd shift ingedrukt om bestanden/afbeeldingen te slepen", + "errorReadingFile": "Fout bij het lezen van bestand:", + "noValidImages": "Er zijn geen geldige afbeeldingen verwerkt", + "separator": "Scheidingsteken", + "edit": "Bewerken...", + "forNextMode": "voor volgende modus", + "apiRequest": { + "title": "API-verzoek", + "failed": "API-verzoek mislukt", + "streaming": "API-verzoek...", + "cancelled": "API-verzoek geannuleerd", + "streamingFailed": "API-streaming mislukt" + }, + "checkpoint": { + "initial": "Initiële checkpoint", + "regular": "Checkpoint", + "initializingWarning": "Checkpoint wordt nog steeds geïnitialiseerd... Als dit te lang duurt, kun je checkpoints uitschakelen in de instellingen en je taak opnieuw starten.", + "menu": { + "viewDiff": "Bekijk verschil", + "restore": "Herstel checkpoint", + "restoreFiles": "Bestanden herstellen", + "restoreFilesDescription": "Herstelt de bestanden van je project naar een momentopname die op dit punt is gemaakt.", + "restoreFilesAndTask": "Bestanden & taak herstellen", + "confirm": "Bevestigen", + "cancel": "Annuleren", + "cannotUndo": "Deze actie kan niet ongedaan worden gemaakt.", + "restoreFilesAndTaskDescription": "Herstelt de bestanden van je project naar een momentopname die op dit punt is gemaakt en verwijdert alle berichten na dit punt." + }, + "current": "Huidig" + }, + "instructions": { + "wantsToFetch": "Roo wil gedetailleerde instructies ophalen om te helpen met de huidige taak" + }, + "fileOperations": { + "wantsToRead": "Roo wil dit bestand lezen:", + "wantsToReadOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte lezen:", + "didRead": "Roo heeft dit bestand gelezen:", + "wantsToEdit": "Roo wil dit bestand bewerken:", + "wantsToEditOutsideWorkspace": "Roo wil dit bestand buiten de werkruimte bewerken:", + "wantsToCreate": "Roo wil een nieuw bestand aanmaken:", + "wantsToSearchReplace": "Roo wil zoeken en vervangen in dit bestand:", + "didSearchReplace": "Roo heeft zoeken en vervangen uitgevoerd op dit bestand:", + "wantsToInsert": "Roo wil inhoud invoegen in dit bestand:", + "wantsToInsertWithLineNumber": "Roo wil inhoud invoegen in dit bestand op regel {{lineNumber}}:", + "wantsToInsertAtEnd": "Roo wil inhoud toevoegen aan het einde van dit bestand:" + }, + "directoryOperations": { + "wantsToViewTopLevel": "Roo wil de bovenliggende bestanden in deze map bekijken:", + "didViewTopLevel": "Roo heeft de bovenliggende bestanden in deze map bekeken:", + "wantsToViewRecursive": "Roo wil alle bestanden in deze map recursief bekijken:", + "didViewRecursive": "Roo heeft alle bestanden in deze map recursief bekeken:", + "wantsToViewDefinitions": "Roo wil broncode-definitienamen bekijken die in deze map worden gebruikt:", + "didViewDefinitions": "Roo heeft broncode-definitienamen bekeken die in deze map worden gebruikt:", + "wantsToSearch": "Roo wil deze map doorzoeken op {{regex}}:", + "didSearch": "Roo heeft deze map doorzocht op {{regex}}:" + }, + "commandOutput": "Commando-uitvoer", + "response": "Antwoord", + "arguments": "Argumenten", + "mcp": { + "wantsToUseTool": "Roo wil een tool gebruiken op de {{serverName}} MCP-server:", + "wantsToAccessResource": "Roo wil een bron benaderen op de {{serverName}} MCP-server:" + }, + "modes": { + "wantsToSwitch": "Roo wil overschakelen naar {{mode}} modus", + "wantsToSwitchWithReason": "Roo wil overschakelen naar {{mode}} modus omdat: {{reason}}", + "didSwitch": "Roo is overgeschakeld naar {{mode}} modus", + "didSwitchWithReason": "Roo is overgeschakeld naar {{mode}} modus omdat: {{reason}}" + }, + "subtasks": { + "wantsToCreate": "Roo wil een nieuwe subtaak aanmaken in {{mode}} modus:", + "wantsToFinish": "Roo wil deze subtaak voltooien", + "newTaskContent": "Subtaak-instructies", + "completionContent": "Subtaak voltooid", + "resultContent": "Subtaakresultaten", + "defaultResult": "Ga verder met de volgende taak.", + "completionInstructions": "Subtaak voltooid! Je kunt de resultaten bekijken en eventuele correcties of volgende stappen voorstellen. Als alles goed is, bevestig dan om het resultaat terug te sturen naar de hoofdtaak." + }, + "questions": { + "hasQuestion": "Roo heeft een vraag:" + }, + "taskCompleted": "Taak voltooid", + "error": "Fout", + "diffError": { + "title": "Bewerking mislukt" + }, + "troubleMessage": "Roo ondervindt problemen...", + "powershell": { + "issues": "Het lijkt erop dat je problemen hebt met Windows PowerShell, zie deze" + }, + "autoApprove": { + "title": "Automatisch goedkeuren:", + "none": "Geen", + "description": "Met automatisch goedkeuren kan Roo Code acties uitvoeren zonder om toestemming te vragen. Schakel dit alleen in voor acties die je volledig vertrouwt. Meer gedetailleerde configuratie beschikbaar in de Instellingen." + }, + "announcement": { + "title": "🎉 Roo Code 3.16 uitgebracht", + "description": "Roo Code 3.16 brengt nieuwe functies en verbeteringen op basis van jouw feedback.", + "feature1": "Groq en Chutes API-providers: Ondersteuning toegevoegd voor Groq en Chutes API-providers (dank aan @shariqriazz!)", + "feature2": "Klikbare codeverwijzingen: Codeverwijzingen in modelantwoorden navigeren nu naar bronregels (dank aan @KJ7LNW!)", + "feature3": "MCP-stabiliteitsverbeteringen: Verschillende bugs opgelost om de stabiliteit van MCP-integraties te verbeteren", + "hideButton": "Aankondiging verbergen", + "detailsDiscussLinks": "Meer details en discussie in Discord en Reddit 🚀", + "whatsNew": "Wat is er nieuw" + }, + "reasoning": { + "thinking": "Denkt na", + "seconds": "{{count}}s" + }, + "followUpSuggest": { + "copyToInput": "Kopiëren naar invoer (zelfde als shift + klik)" + }, + "browser": { + "rooWantsToUse": "Roo wil de browser gebruiken:", + "consoleLogs": "Console-logboeken", + "noNewLogs": "(Geen nieuwe logboeken)", + "screenshot": "Browserschermopname", + "cursor": "cursor", + "navigation": { + "step": "Stap {{current}} van {{total}}", + "previous": "Vorige", + "next": "Volgende" + }, + "sessionStarted": "Browsersessie gestart", + "actions": { + "title": "Browse-actie: ", + "launch": "Browser starten op {{url}}", + "click": "Klik ({{coordinate}})", + "type": "Typ \"{{text}}\"", + "scrollDown": "Scroll naar beneden", + "scrollUp": "Scroll naar boven", + "close": "Browser sluiten" + } + }, + "codeblock": { + "tooltips": { + "expand": "Codeblok uitvouwen", + "collapse": "Codeblok samenvouwen", + "enable_wrap": "Regelafbreking inschakelen", + "disable_wrap": "Regelafbreking uitschakelen", + "copy_code": "Code kopiëren" + } + }, + "systemPromptWarning": "WAARSCHUWING: Aangepaste systeemprompt actief. Dit kan de functionaliteit ernstig verstoren en onvoorspelbaar gedrag veroorzaken.", + "shellIntegration": { + "title": "Waarschuwing commando-uitvoering", + "description": "Je commando wordt uitgevoerd zonder VSCode-terminal shell-integratie. Om deze waarschuwing te onderdrukken kun je shell-integratie uitschakelen in het gedeelte Terminal van de Roo Code-instellingen of de VSCode-terminalintegratie oplossen via de onderstaande link.", + "troubleshooting": "Klik hier voor shell-integratie documentatie." + }, + "warning": { + "contextLimit": "Contextvenstergebruik is {{percent}}%. Overweeg een nieuwe taak te starten om limieten te voorkomen.", + "tokenLimit": "Tokengebruik heeft {{tokens}} tokens bereikt. Overweeg een nieuwe taak te starten om kosten te beheren.", + "costLimit": "Kosten hebben ${{cost}} bereikt. Overweeg een nieuwe taak te starten om uitgaven te beheren." + } } diff --git a/webview-ui/src/i18n/locales/nl/prompts.json b/webview-ui/src/i18n/locales/nl/prompts.json index b066eff5b1..07064e0e50 100644 --- a/webview-ui/src/i18n/locales/nl/prompts.json +++ b/webview-ui/src/i18n/locales/nl/prompts.json @@ -102,7 +102,11 @@ "NEW_TASK": { "label": "Nieuwe taak starten", "description": "Start een nieuwe taak met gebruikersinvoer. Beschikbaar via de Command Palette." - } + }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Samenvatten en Nieuwe Taak Starten", + "description": "Vat de huidige taak samen en start een nieuwe met de samenvatting als context. Dit helpt bij het beheren van complexe taken door ze op te splitsen in kleinere, gerichte subtaken." + } } }, "advancedSystemPrompt": { diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index e812d78f26..30a85d2fac 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -175,7 +175,16 @@ "medium": "Middel", "low": "Laag" }, - "setReasoningLevel": "Redeneervermogen inschakelen" + "setReasoningLevel": "Redeneervermogen inschakelen", + "warningThreshold": { + "label": "Waarschuwingsdrempels", + "context": "Waarschuwingsdrempel voor contextvenstergebruik", + "contextDescription": "Toon een waarschuwing wanneer het contextvenstergebruik dit percentage overschrijdt. Stel in op -1 om uit te schakelen.", + "tokens": "Waarschuwingsdrempel voor tokengebruik", + "tokensDescription": "Toon een waarschuwing wanneer het totale tokengebruik dit aantal overschrijdt. Stel in op -1 om uit te schakelen.", + "cost": "Waarschuwingsdrempel voor kosten", + "costDescription": "Toon een waarschuwing wanneer de totale kosten dit bedrag in USD overschrijden. Stel in op -1 om uit te schakelen." + } }, "header": { "title": "Instellingen", diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 6646b4e36f..11fffd0e3b 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -247,5 +247,10 @@ "title": "Ostrzeżenie wykonania polecenia", "description": "Twoje polecenie jest wykonywane bez integracji powłoki terminala VSCode. Aby ukryć to ostrzeżenie, możesz wyłączyć integrację powłoki w sekcji Terminal w ustawieniach Roo Code lub rozwiązać problemy z integracją terminala VSCode korzystając z poniższego linku.", "troubleshooting": "Kliknij tutaj, aby zobaczyć dokumentację integracji powłoki." + }, + "warning": { + "contextLimit": "Wykorzystanie okna kontekstu wynosi {{percent}}%. Rozważ rozpoczęcie nowego zadania, aby uniknąć przekroczenia limitów.", + "tokenLimit": "Wykorzystanie tokenów osiągnęło {{tokens}} tokenów. Rozważ rozpoczęcie nowego zadania, aby zarządzać kosztami.", + "costLimit": "Koszt osiągnął ${{cost}}. Rozważ rozpoczęcie nowego zadania, aby zarządzać wydatkami." } } diff --git a/webview-ui/src/i18n/locales/pl/prompts.json b/webview-ui/src/i18n/locales/pl/prompts.json index b64a8bd0d0..7f10fff189 100644 --- a/webview-ui/src/i18n/locales/pl/prompts.json +++ b/webview-ui/src/i18n/locales/pl/prompts.json @@ -99,6 +99,10 @@ "label": "Wyjaśnij polecenie terminala", "description": "Uzyskaj szczegółowe wyjaśnienia poleceń terminala i ich wyników. Dostępne w menu kontekstowym terminala (prawy przycisk myszy na wybranej zawartości terminala)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Podsumuj i rozpocznij nowe zadanie", + "description": "Podsumowuje bieżące zadanie i rozpoczyna nowe, używając podsumowania jako kontekstu. Pomaga to zarządzać złożonymi zadaniami, dzieląc je na mniejsze, ukierunkowane podzadania." + }, "NEW_TASK": { "label": "Rozpocznij nowe zadanie", "description": "Rozpocznij nowe zadanie z wprowadzonymi danymi. Dostępne w palecie poleceń." diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 343ce01397..96142f2012 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -248,7 +248,16 @@ "medium": "Średni", "low": "Niski" }, - "setReasoningLevel": "Włącz wysiłek rozumowania" + "setReasoningLevel": "Włącz wysiłek rozumowania", + "warningThreshold": { + "label": "Progi ostrzeżeń", + "context": "Próg ostrzeżenia o wykorzystaniu okna kontekstu", + "contextDescription": "Pokaż ostrzeżenie, gdy wykorzystanie okna kontekstu przekroczy ten procent. Ustaw na -1, aby wyłączyć.", + "tokens": "Próg ostrzeżenia o wykorzystaniu tokenów", + "tokensDescription": "Pokaż ostrzeżenie, gdy całkowite wykorzystanie tokenów przekroczy tę wartość. Ustaw na -1, aby wyłączyć.", + "cost": "Próg ostrzeżenia o koszcie", + "costDescription": "Pokaż ostrzeżenie, gdy całkowity koszt przekroczy tę kwotę w USD. Ustaw na -1, aby wyłączyć." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 911464d434..49f88ae6c5 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -247,5 +247,10 @@ "title": "Aviso de execução de comando", "description": "Seu comando está sendo executado sem a integração de shell do terminal VSCode. Para suprimir este aviso, você pode desativar a integração de shell na seção Terminal das configurações do Roo Code ou solucionar problemas de integração do terminal VSCode usando o link abaixo.", "troubleshooting": "Clique aqui para a documentação de integração de shell." + }, + "warning": { + "contextLimit": "O uso da janela de contexto está em {{percent}}%. Considere iniciar uma nova tarefa para evitar atingir os limites.", + "tokenLimit": "O uso de tokens atingiu {{tokens}} tokens. Considere iniciar uma nova tarefa para gerenciar custos.", + "costLimit": "O custo atingiu ${{cost}}. Considere iniciar uma nova tarefa para gerenciar despesas." } } diff --git a/webview-ui/src/i18n/locales/pt-BR/prompts.json b/webview-ui/src/i18n/locales/pt-BR/prompts.json index cafbc47b23..980d786180 100644 --- a/webview-ui/src/i18n/locales/pt-BR/prompts.json +++ b/webview-ui/src/i18n/locales/pt-BR/prompts.json @@ -99,6 +99,10 @@ "label": "Explicar Comando do Terminal", "description": "Obtenha explicações detalhadas de comandos de terminal e suas saídas. Disponível no menu de contexto do terminal (clique direito no conteúdo selecionado do terminal)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Resumir e iniciar nova tarefa", + "description": "Resume a tarefa atual e inicia uma nova usando o resumo como contexto. Isso ajuda a gerenciar tarefas complexas dividindo-as em subtarefas menores e focadas." + }, "NEW_TASK": { "label": "Iniciar Nova Tarefa", "description": "Inicie uma nova tarefa com a entrada fornecida. Disponível na paleta de comandos." diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 0c66a21847..18fe75c759 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -248,7 +248,16 @@ "medium": "Médio", "low": "Baixo" }, - "setReasoningLevel": "Habilitar esforço de raciocínio" + "setReasoningLevel": "Habilitar esforço de raciocínio", + "warningThreshold": { + "label": "Limites de aviso", + "context": "Limite de aviso de uso da janela de contexto", + "contextDescription": "Mostrar um aviso quando o uso da janela de contexto exceder esta porcentagem. Defina como -1 para desativar.", + "tokens": "Limite de aviso de uso de tokens", + "tokensDescription": "Mostrar um aviso quando o uso total de tokens exceder esta quantidade. Defina como -1 para desativar.", + "cost": "Limite de aviso de custo", + "costDescription": "Mostrar um aviso quando o custo total exceder este valor em USD. Defina como -1 para desativar." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index a56f9afb37..7d3713be9a 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -247,5 +247,10 @@ "title": "Предупреждение о выполнении команды", "description": "Ваша команда выполняется без интеграции оболочки терминала VSCode. Чтобы скрыть это предупреждение, вы можете отключить интеграцию оболочки в разделе Terminal в настройках Roo Code или устранить проблемы с интеграцией терминала VSCode, используя ссылку ниже.", "troubleshooting": "Нажмите здесь для просмотра документации по интеграции оболочки." + }, + "warning": { + "contextLimit": "Использование окна контекста достигло {{percent}}%. Рекомендуется начать новую задачу, чтобы избежать превышения лимитов.", + "tokenLimit": "Использование токенов достигло {{tokens}} токенов. Рекомендуется начать новую задачу для управления расходами.", + "costLimit": "Стоимость достигла ${{cost}}. Рекомендуется начать новую задачу для управления затратами." } } diff --git a/webview-ui/src/i18n/locales/ru/prompts.json b/webview-ui/src/i18n/locales/ru/prompts.json index 60cf84d3ee..0c80c34508 100644 --- a/webview-ui/src/i18n/locales/ru/prompts.json +++ b/webview-ui/src/i18n/locales/ru/prompts.json @@ -99,6 +99,10 @@ "label": "Объяснить команду терминала", "description": "Получите подробные объяснения команд терминала и их вывода. Доступно в контекстном меню терминала (ПКМ по выделенному содержимому терминала)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Подвести итоги и начать новую задачу", + "description": "Подводит итоги текущей задачи и начинает новую, используя итоги в качестве контекста. Это помогает управлять сложными задачами, разбивая их на более мелкие, целенаправленные подзадачи." + }, "NEW_TASK": { "label": "Начать новую задачу", "description": "Начать новую задачу с пользовательским вводом. Доступно в палитре команд." diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 376763a7d8..edeee93f70 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -248,7 +248,16 @@ "medium": "Средние", "low": "Низкие" }, - "setReasoningLevel": "Включить усилие рассуждения" + "setReasoningLevel": "Включить усилие рассуждения", + "warningThreshold": { + "label": "Пороги предупреждений", + "context": "Порог предупреждения об использовании окна контекста", + "contextDescription": "Показывать предупреждение, когда использование окна контекста превышает этот процент. Установите -1 для отключения.", + "tokens": "Порог предупреждения об использовании токенов", + "tokensDescription": "Показывать предупреждение, когда общее использование токенов превышает это значение. Установите -1 для отключения.", + "cost": "Порог предупреждения о стоимости", + "costDescription": "Показывать предупреждение, когда общая стоимость превышает это значение в USD. Установите -1 для отключения." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 448602b9d5..11681e70f5 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -247,5 +247,10 @@ "title": "Komut Çalıştırma Uyarısı", "description": "Komutunuz VSCode terminal kabuk entegrasyonu olmadan çalıştırılıyor. Bu uyarıyı gizlemek için Roo Code ayarları'nın Terminal bölümünden kabuk entegrasyonunu devre dışı bırakabilir veya aşağıdaki bağlantıyı kullanarak VSCode terminal entegrasyonu sorunlarını giderebilirsiniz.", "troubleshooting": "Kabuk entegrasyonu belgelerini görmek için buraya tıklayın." + }, + "warning": { + "contextLimit": "Bağlam penceresi kullanımı %{{percent}} seviyesinde. Limitlere ulaşmamak için yeni bir görev başlatmayı düşünün.", + "tokenLimit": "Token kullanımı {{tokens}} tokena ulaştı. Maliyetleri yönetmek için yeni bir görev başlatmayı düşünün.", + "costLimit": "Maliyet ${{cost}} seviyesine ulaştı. Harcamaları yönetmek için yeni bir görev başlatmayı düşünün." } } diff --git a/webview-ui/src/i18n/locales/tr/prompts.json b/webview-ui/src/i18n/locales/tr/prompts.json index eb73038846..f497447286 100644 --- a/webview-ui/src/i18n/locales/tr/prompts.json +++ b/webview-ui/src/i18n/locales/tr/prompts.json @@ -99,6 +99,10 @@ "label": "Terminal Komutunu Açıkla", "description": "Terminal komutları ve çıktıları hakkında ayrıntılı açıklamalar alın. Terminal bağlam menüsünde (seçili terminal içeriğine sağ tıklayın) kullanılabilir." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Özetle ve yeni görev başlat", + "description": "Mevcut görevi özetler ve özeti bağlam olarak kullanarak yeni bir görev başlatır. Bu, karmaşık görevleri daha küçük, odaklanmış alt görevlere bölerek yönetmeye yardımcı olur." + }, "NEW_TASK": { "label": "Yeni Görev Başlat", "description": "Girdiyle yeni bir görev başlat. Komut paletinde kullanılabilir." diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 1d23b7e04e..77a9061029 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -248,7 +248,16 @@ "medium": "Orta", "low": "Düşük" }, - "setReasoningLevel": "Akıl Yürütme Çabasını Etkinleştir" + "setReasoningLevel": "Akıl Yürütme Çabasını Etkinleştir", + "warningThreshold": { + "label": "Uyarı Eşikleri", + "context": "Bağlam penceresi kullanım uyarı eşiği", + "contextDescription": "Bağlam penceresi kullanımı bu yüzdeyi aştığında uyarı göster. Devre dışı bırakmak için -1 olarak ayarlayın.", + "tokens": "Token kullanım uyarı eşiği", + "tokensDescription": "Toplam token kullanımı bu miktarı aştığında uyarı göster. Devre dışı bırakmak için -1 olarak ayarlayın.", + "cost": "Maliyet uyarı eşiği", + "costDescription": "Toplam maliyet bu USD miktarını aştığında uyarı göster. Devre dışı bırakmak için -1 olarak ayarlayın." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 697286ace3..352b7ba429 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -247,5 +247,10 @@ "title": "Cảnh báo thực thi lệnh", "description": "Lệnh của bạn đang được thực thi mà không có tích hợp shell terminal VSCode. Để ẩn cảnh báo này, bạn có thể vô hiệu hóa tích hợp shell trong phần Terminal của cài đặt Roo Code hoặc khắc phục sự cố tích hợp terminal VSCode bằng liên kết bên dưới.", "troubleshooting": "Nhấp vào đây để xem tài liệu tích hợp shell." + }, + "warning": { + "contextLimit": "Việc sử dụng cửa sổ ngữ cảnh đã đạt {{percent}}%. Hãy cân nhắc bắt đầu một nhiệm vụ mới để tránh chạm giới hạn.", + "tokenLimit": "Việc sử dụng token đã đạt {{tokens}} tokens. Hãy cân nhắc bắt đầu một nhiệm vụ mới để quản lý chi phí.", + "costLimit": "Chi phí đã đạt ${{cost}}. Hãy cân nhắc bắt đầu một nhiệm vụ mới để quản lý chi phí." } } diff --git a/webview-ui/src/i18n/locales/vi/prompts.json b/webview-ui/src/i18n/locales/vi/prompts.json index 76dc509b88..53fb5498bc 100644 --- a/webview-ui/src/i18n/locales/vi/prompts.json +++ b/webview-ui/src/i18n/locales/vi/prompts.json @@ -99,6 +99,10 @@ "label": "Giải thích lệnh terminal", "description": "Nhận giải thích chi tiết về lệnh terminal và đầu ra của chúng. Có sẵn trong menu ngữ cảnh terminal (nhấp chuột phải vào nội dung terminal đã chọn)." }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "Tóm tắt và bắt đầu nhiệm vụ mới", + "description": "Tóm tắt nhiệm vụ hiện tại và bắt đầu một nhiệm vụ mới với bản tóm tắt làm ngữ cảnh. Điều này giúp quản lý các nhiệm vụ phức tạp bằng cách chia chúng thành các nhiệm vụ con nhỏ hơn, tập trung hơn." + }, "NEW_TASK": { "label": "Bắt đầu tác vụ mới", "description": "Bắt đầu tác vụ mới với nội dung đã nhập. Có sẵn trong bảng lệnh." diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index f964bf4b7a..fe5458e128 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -248,7 +248,16 @@ "medium": "Trung bình", "low": "Thấp" }, - "setReasoningLevel": "Kích hoạt nỗ lực suy luận" + "setReasoningLevel": "Kích hoạt nỗ lực suy luận", + "warningThreshold": { + "label": "Ngưỡng cảnh báo", + "context": "Ngưỡng cảnh báo sử dụng cửa sổ ngữ cảnh", + "contextDescription": "Hiển thị cảnh báo khi việc sử dụng cửa sổ ngữ cảnh vượt quá phần trăm này. Đặt thành -1 để tắt.", + "tokens": "Ngưỡng cảnh báo sử dụng token", + "tokensDescription": "Hiển thị cảnh báo khi tổng số token sử dụng vượt quá số lượng này. Đặt thành -1 để tắt.", + "cost": "Ngưỡng cảnh báo chi phí", + "costDescription": "Hiển thị cảnh báo khi tổng chi phí vượt quá số tiền này tính bằng USD. Đặt thành -1 để tắt." + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 3f6bf8548e..0c240b9110 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -247,5 +247,10 @@ "title": "命令执行警告", "description": "您的命令正在没有 VSCode 终端 shell 集成的情况下执行。要隐藏此警告,您可以在 Roo Code 设置Terminal 部分禁用 shell 集成,或使用下方链接排查 VSCode 终端集成问题。", "troubleshooting": "点击此处查看 shell 集成文档。" + }, + "warning": { + "contextLimit": "上下文窗口使用率已达到 {{percent}}%。建议开始新任务以避免达到限制。", + "tokenLimit": "Token 使用量已达到 {{tokens}} 个。建议开始新任务以控制成本。", + "costLimit": "费用已达到 ${{cost}}。建议开始新任务以控制开支。" } } diff --git a/webview-ui/src/i18n/locales/zh-CN/prompts.json b/webview-ui/src/i18n/locales/zh-CN/prompts.json index b139e93e25..2f121266a8 100644 --- a/webview-ui/src/i18n/locales/zh-CN/prompts.json +++ b/webview-ui/src/i18n/locales/zh-CN/prompts.json @@ -99,6 +99,10 @@ "label": "解释终端命令", "description": "获取对终端命令及其输出的详细解释。可在终端右键菜单(右键点击选中的终端内容)中使用。" }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "总结并开始新任务", + "description": "总结当前任务并以此总结为上下文开始新任务。这有助于通过将复杂任务分解为更小、更集中的子任务来管理它们。" + }, "NEW_TASK": { "label": "新任务", "description": "控制开始新任务时的用户提示词。可在首页对话框中使用。" diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index ba14e48762..0ededa24b2 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -248,7 +248,16 @@ "medium": "中", "low": "低" }, - "setReasoningLevel": "启用推理工作量" + "setReasoningLevel": "启用推理工作量", + "warningThreshold": { + "label": "警告阈值", + "context": "上下文窗口使用警告阈值", + "contextDescription": "当上下文窗口使用超过此百分比时显示警告。设置为 -1 可禁用此警告。", + "tokens": "Token使用警告阈值", + "tokensDescription": "当总Token使用量超过此数值时显示警告。设置为 -1 可禁用此警告。", + "cost": "费用警告阈值", + "costDescription": "当总费用超过此美元金额时显示警告。设置为 -1 可禁用此警告。" + } }, "browser": { "enable": { diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index b16231eea0..9b1908e6b1 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -247,5 +247,10 @@ "title": "命令執行警告", "description": "您的命令正在沒有 VSCode 終端機 shell 整合的情況下執行。要隱藏此警告,您可以在 Roo Code 設定Terminal 部分停用 shell 整合,或使用下方連結排查 VSCode 終端機整合問題。", "troubleshooting": "點擊此處查看 shell 整合文件。" + }, + "warning": { + "contextLimit": "上下文視窗使用率已達到 {{percent}}%。建議開始新工作以避免達到限制。", + "tokenLimit": "Token 使用量已達到 {{tokens}} 個。建議開始新工作以控制成本。", + "costLimit": "費用已達到 ${{cost}}。建議開始新工作以控制支出。" } } diff --git a/webview-ui/src/i18n/locales/zh-TW/prompts.json b/webview-ui/src/i18n/locales/zh-TW/prompts.json index d6c3fa5c5c..d9ad9d9370 100644 --- a/webview-ui/src/i18n/locales/zh-TW/prompts.json +++ b/webview-ui/src/i18n/locales/zh-TW/prompts.json @@ -99,6 +99,10 @@ "label": "說明終端機命令", "description": "取得終端機命令及其輸出的詳細說明。可在終端機內容選單(選取終端機內容後按右鍵)使用。" }, + "SUMMARY_AND_START_NEW_TASK": { + "label": "總結並開始新任務", + "description": "總結當前任務並以此總結為上下文開始新任務。這有助於透過將複雜任務分解為更小、更集中的子任務來管理它們。" + }, "NEW_TASK": { "label": "開始新工作", "description": "開始一個新的工作。可在命令選擇區使用。" diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 78c994457e..6a07de80ff 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -248,7 +248,16 @@ "medium": "中", "low": "低" }, - "setReasoningLevel": "啟用推理工作量" + "setReasoningLevel": "啟用推理工作量", + "warningThreshold": { + "label": "警告閾值", + "context": "上下文視窗使用警告閾值", + "contextDescription": "當上下文視窗使用超過此百分比時顯示警告", + "tokens": "Token 使用警告閾值", + "tokensDescription": "當總 Token 使用量超過此數值時顯示警告", + "cost": "費用警告閾值", + "costDescription": "當總費用超過此美元金額時顯示警告" + } }, "browser": { "enable": {