feat(settings): Add allowedMaxRequests feature inspired by Cline (#3631)

* feat(settings): Introduce the "auto-approve request count" feature from Cline

This is the first minor UI feature I've added, so please let me know if I'm missing anything! (translations, organization, etc!)

Please see commits for details

introduce allowedMaxRequests to globalSettingsSchema
update ExtensionState and its context with allowedMaxRequests
implement UI for setting max requests in AutoApproveMenu component
prompt user when auto-approval limit is reached with i18n support
increment consecutiveAutoApprovedRequestsCount and reset upon user approval
add translations for auto-approved request limit reached prompt in multiple languages
add new UI for "auto_approval_max_req_reached" in ChatRowContent
display prompt with title, description, and button for user action

🔧 chore(gitignore): add .idea to .gitignore to exclude IDE-specific files
- remove .idea/workspace.xml to clean up repository

* 🔧 chore(gitignore): add IDE configuration files to ignore list

- add .idea directory to ignore JetBrains IDE configurations

* 🌐 i18n(chat): add translation keys for api request limit

- introduce translation keys for "title" and "unlimited" in multiple languages
- update description for api request limit in various languages

* 🌐 i18n(chat): migrate auto-approved request limit translations

- move translations from common.json to chat.json across locales
- update component to use Trans for dynamic text rendering

* Update the UI for setting max requests

* Hide the auto-approve limit warning once clicked

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
This commit is contained in:
Chris Hasson 2025-05-20 08:30:27 -07:00 committed by hannesrudolph
parent 34c8b09b04
commit 76cd5f1aec
50 changed files with 357 additions and 2 deletions

View file

@ -0,0 +1,5 @@
---
"roo-cline": minor
---
Added an auto-approve API request limit setting similar to Cline

3
.gitignore vendored
View file

@ -8,6 +8,9 @@ mock/
.DS_Store
# IDEs
.idea
# Builds
bin/
roo-cline-*.vsix

View file

@ -961,6 +961,7 @@ export const clineAsks = [
"resume_task",
"resume_completed_task",
"mistake_limit_reached",
"auto_approval_max_req_reached",
"browser_action_launch",
"use_mcp_server",
] as const

View file

@ -134,6 +134,7 @@ export class Task extends EventEmitter<ClineEvents> {
readonly apiConfiguration: ProviderSettings
api: ApiHandler
private lastApiRequestTime?: number
private consecutiveAutoApprovedRequestsCount: number = 0
toolRepetitionDetector: ToolRepetitionDetector
rooIgnoreController?: RooIgnoreController
@ -1505,6 +1506,21 @@ export class Task extends EventEmitter<ClineEvents> {
({ role, content }) => ({ role, content }),
)
// Check if we've reached the maximum number of auto-approved requests
const { allowedMaxRequests } = (await this.providerRef.deref()?.getState()) ?? {}
const maxRequests = allowedMaxRequests || Infinity
// Increment the counter for each new API request
this.consecutiveAutoApprovedRequestsCount++
if (this.consecutiveAutoApprovedRequestsCount > maxRequests) {
const { response } = await this.ask("auto_approval_max_req_reached", JSON.stringify({ count: maxRequests }))
// If we get past the promise, it means the user approved and did not start a new task
if (response === "yesButtonClicked") {
this.consecutiveAutoApprovedRequestsCount = 0
}
}
const stream = this.api.createMessage(systemPrompt, cleanConversationHistory)
const iterator = stream[Symbol.asyncIterator]()

View file

@ -1193,6 +1193,7 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
alwaysAllowMcp,
alwaysAllowModeSwitch,
alwaysAllowSubtasks,
allowedMaxRequests,
soundEnabled,
ttsEnabled,
ttsSpeed,
@ -1263,6 +1264,7 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
alwaysAllowMcp: alwaysAllowMcp ?? false,
alwaysAllowModeSwitch: alwaysAllowModeSwitch ?? false,
alwaysAllowSubtasks: alwaysAllowSubtasks ?? false,
allowedMaxRequests: allowedMaxRequests ?? Infinity,
uriScheme: vscode.env.uriScheme,
currentTaskItem: this.getCurrentCline()?.taskId
? (taskHistory || []).find((item: HistoryItem) => item.id === this.getCurrentCline()?.taskId)
@ -1337,7 +1339,6 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
async getState() {
const stateValues = this.contextProxy.getValues()
const customModes = await this.customModesManager.getCustomModes()
// Determine apiProvider with the same logic as before.
@ -1366,6 +1367,7 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
alwaysAllowMcp: stateValues.alwaysAllowMcp ?? false,
alwaysAllowModeSwitch: stateValues.alwaysAllowModeSwitch ?? false,
alwaysAllowSubtasks: stateValues.alwaysAllowSubtasks ?? false,
allowedMaxRequests: stateValues.allowedMaxRequests ?? Infinity,
taskHistory: stateValues.taskHistory,
allowedCommands: stateValues.allowedCommands,
soundEnabled: stateValues.soundEnabled ?? false,

View file

@ -159,6 +159,10 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We
await updateGlobalState("alwaysAllowModeSwitch", message.bool)
await provider.postStateToWebview()
break
case "allowedMaxRequests":
await updateGlobalState("allowedMaxRequests", message.value)
await provider.postStateToWebview()
break
case "alwaysAllowSubtasks":
await updateGlobalState("alwaysAllowSubtasks", message.bool)
await provider.postStateToWebview()

View file

@ -70,6 +70,7 @@ type GlobalSettings = {
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -380,6 +381,7 @@ type ClineMessage = {
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -464,6 +466,7 @@ type RooCodeEvents = {
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -801,6 +804,7 @@ type IpcMessage =
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -942,6 +946,7 @@ type IpcMessage =
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -1273,6 +1278,7 @@ type TaskCommand =
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -1410,6 +1416,7 @@ type TaskEvent =
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:

View file

@ -70,6 +70,7 @@ type GlobalSettings = {
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -388,6 +389,7 @@ type ClineMessage = {
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -476,6 +478,7 @@ type RooCodeEvents = {
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -815,6 +818,7 @@ type IpcMessage =
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -956,6 +960,7 @@ type IpcMessage =
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:
@ -1289,6 +1294,7 @@ type TaskCommand =
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
allowedMaxRequests?: number | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
@ -1428,6 +1434,7 @@ type TaskEvent =
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
| "auto_approval_max_req_reached"
)
| undefined
say?:

View file

@ -677,6 +677,7 @@ export const globalSettingsSchema = z.object({
alwaysAllowSubtasks: z.boolean().optional(),
alwaysAllowExecute: z.boolean().optional(),
allowedCommands: z.array(z.string()).optional(),
allowedMaxRequests: z.number().optional(),
browserToolEnabled: z.boolean().optional(),
browserViewportSize: z.string().optional(),
@ -756,6 +757,7 @@ const globalSettingsRecord: GlobalSettingsRecord = {
alwaysAllowSubtasks: undefined,
alwaysAllowExecute: undefined,
allowedCommands: undefined,
allowedMaxRequests: undefined,
browserToolEnabled: undefined,
browserViewportSize: undefined,
@ -899,6 +901,7 @@ export const clineAsks = [
"mistake_limit_reached",
"browser_action_launch",
"use_mcp_server",
"auto_approval_max_req_reached",
] as const
export const clineAskSchema = z.enum(clineAsks)

View file

@ -131,6 +131,7 @@ export type ExtensionState = Pick<
| "alwaysAllowSubtasks"
| "alwaysAllowExecute"
| "allowedCommands"
| "allowedMaxRequests"
| "browserToolEnabled"
| "browserViewportSize"
| "screenshotQuality"

View file

@ -57,6 +57,7 @@ export interface WebviewMessage {
| "alwaysAllowBrowser"
| "alwaysAllowMcp"
| "alwaysAllowModeSwitch"
| "allowedMaxRequests"
| "alwaysAllowSubtasks"
| "playSound"
| "playTts"

View file

@ -1,6 +1,6 @@
import { useCallback, useMemo, useState } from "react"
import { Trans } from "react-i18next"
import { VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { VSCodeCheckbox, VSCodeLink, VSCodeTextField } from "@vscode/webview-ui-toolkit/react"
import { vscode } from "@src/utils/vscode"
import { useExtensionState } from "@src/context/ExtensionStateContext"
@ -25,6 +25,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
alwaysAllowModeSwitch,
alwaysAllowSubtasks,
alwaysApproveResubmit,
allowedMaxRequests,
setAlwaysAllowReadOnly,
setAlwaysAllowWrite,
setAlwaysAllowExecute,
@ -33,6 +34,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
setAlwaysAllowModeSwitch,
setAlwaysAllowSubtasks,
setAlwaysApproveResubmit,
setAllowedMaxRequests,
} = useExtensionState()
const { t } = useAppTranslation()
@ -196,7 +198,45 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
}}
/>
</div>
<AutoApproveToggle {...toggles} onToggle={onAutoApproveToggle} />
{/* Auto-approve API request count limit input row inspired by Cline */}
<div
style={{
display: "flex",
alignItems: "center",
gap: "8px",
marginTop: "10px",
marginBottom: "8px",
color: "var(--vscode-descriptionForeground)",
}}>
<span style={{ flexShrink: 1, minWidth: 0 }}>
<Trans i18nKey="settings:autoApprove.apiRequestLimit.title" />:
</span>
<VSCodeTextField
placeholder={t("settings:autoApprove.apiRequestLimit.unlimited")}
value={(allowedMaxRequests ?? Infinity) === Infinity ? "" : allowedMaxRequests?.toString()}
onInput={(e) => {
const input = e.target as HTMLInputElement
// Remove any non-numeric characters
input.value = input.value.replace(/[^0-9]/g, "")
const value = parseInt(input.value)
const parsedValue = !isNaN(value) && value > 0 ? value : undefined
setAllowedMaxRequests(parsedValue)
vscode.postMessage({ type: "allowedMaxRequests", value: parsedValue })
}}
style={{ flex: 1 }}
/>
</div>
<div
style={{
color: "var(--vscode-descriptionForeground)",
fontSize: "12px",
marginBottom: "10px",
}}>
<Trans i18nKey="settings:autoApprove.apiRequestLimit.description" />
</div>
</div>
)}
</div>

View file

@ -0,0 +1,52 @@
import React, { memo, useState } from "react"
import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"
import { ClineMessage } from "@roo/shared/ExtensionMessage"
import { vscode } from "@src/utils/vscode"
import { Trans } from "react-i18next"
type AutoApprovedRequestLimitWarningProps = {
message: ClineMessage
}
export const AutoApprovedRequestLimitWarning = memo(({ message }: AutoApprovedRequestLimitWarningProps) => {
const [buttonClicked, setButtonClicked] = useState(false)
const { count } = JSON.parse(message.text ?? "{}")
if (buttonClicked) {
return null
}
return (
<>
<div style={{ display: "flex", alignItems: "center", gap: "8px", color: "var(--vscode-foreground)" }}>
<span className="codicon codicon-warning" />
<span style={{ fontWeight: "bold" }}>
<Trans i18nKey="ask.autoApprovedRequestLimitReached.title" ns="chat" />
</span>
</div>
<div
className="bg-vscode-panel-border flex flex-col gap-3"
style={{
borderRadius: "4px",
display: "flex",
marginTop: "15px",
padding: "14px 16px 22px",
justifyContent: "center",
}}>
<div className="flex justify-between items-center">
<Trans i18nKey="ask.autoApprovedRequestLimitReached.description" ns="chat" values={{ count }} />
</div>
<VSCodeButton
style={{ width: "100%", padding: "6px", borderRadius: "4px" }}
onClick={(e) => {
e.preventDefault()
setButtonClicked(true)
vscode.postMessage({ type: "askResponse", askResponse: "yesButtonClicked" })
}}>
<Trans i18nKey="ask.autoApprovedRequestLimitReached.button" ns="chat" />
</VSCodeButton>
</div>
</>
)
})

View file

@ -31,6 +31,7 @@ import { ProgressIndicator } from "./ProgressIndicator"
import { Markdown } from "./Markdown"
import { CommandExecution } from "./CommandExecution"
import { CommandExecutionError } from "./CommandExecutionError"
import { AutoApprovedRequestLimitWarning } from "./AutoApprovedRequestLimitWarning"
import { ContextCondenseRow } from "./ContextCondenseRow"
interface ChatRowProps {
@ -1086,6 +1087,9 @@ export const ChatRowContent = ({
/>
</>
)
case "auto_approval_max_req_reached": {
return <AutoApprovedRequestLimitWarning message={message} />
}
default:
return null
}

View file

@ -119,6 +119,7 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
alwaysAllowReadOnly,
alwaysAllowReadOnlyOutsideWorkspace,
allowedCommands,
allowedMaxRequests,
language,
alwaysAllowBrowser,
alwaysAllowExecute,
@ -246,6 +247,7 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
vscode.postMessage({ type: "alwaysAllowBrowser", bool: alwaysAllowBrowser })
vscode.postMessage({ type: "alwaysAllowMcp", bool: alwaysAllowMcp })
vscode.postMessage({ type: "allowedCommands", commands: allowedCommands ?? [] })
vscode.postMessage({ type: "allowedMaxRequests", value: allowedMaxRequests })
vscode.postMessage({ type: "browserToolEnabled", bool: browserToolEnabled })
vscode.postMessage({ type: "soundEnabled", bool: soundEnabled })
vscode.postMessage({ type: "ttsEnabled", bool: ttsEnabled })

View file

@ -39,6 +39,7 @@ export interface ExtensionStateContextType extends ExtensionState {
setShowRooIgnoredFiles: (value: boolean) => void
setShowAnnouncement: (value: boolean) => void
setAllowedCommands: (value: string[]) => void
setAllowedMaxRequests: (value: number | undefined) => void
setSoundEnabled: (value: boolean) => void
setSoundVolume: (value: number) => void
terminalShellIntegrationTimeout?: number
@ -133,6 +134,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
taskHistory: [],
shouldShowAnnouncement: false,
allowedCommands: [],
allowedMaxRequests: Infinity,
soundEnabled: false,
soundVolume: 0.5,
ttsEnabled: false,
@ -288,6 +290,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
setAlwaysAllowSubtasks: (value) => setState((prevState) => ({ ...prevState, alwaysAllowSubtasks: value })),
setShowAnnouncement: (value) => setState((prevState) => ({ ...prevState, shouldShowAnnouncement: value })),
setAllowedCommands: (value) => setState((prevState) => ({ ...prevState, allowedCommands: value })),
setAllowedMaxRequests: (value) => setState((prevState) => ({ ...prevState, allowedMaxRequests: value })),
setSoundEnabled: (value) => setState((prevState) => ({ ...prevState, soundEnabled: value })),
setSoundVolume: (value) => setState((prevState) => ({ ...prevState, soundVolume: value })),
setTtsEnabled: (value) => setState((prevState) => ({ ...prevState, ttsEnabled: value })),

View file

@ -252,5 +252,12 @@
"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ó <strong>Terminal</strong> de la <settingsLink>configuració de Roo Code</settingsLink> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "S'ha arribat al límit de sol·licituds aprovades automàticament",
"description": "Roo ha arribat al límit aprovat automàticament de {{count}} sol·licitud(s) d'API. Vols reiniciar el comptador i continuar amb la tasca?",
"button": "Reiniciar i continuar"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Prefixos de comandes que poden ser executats automàticament quan \"Aprovar sempre operacions d'execució\" està habilitat. Afegeix * per permetre totes les comandes (usar amb precaució).",
"commandPlaceholder": "Introduïu prefix de comanda (ex. 'git ')",
"addButton": "Afegir"
},
"apiRequestLimit": {
"title": "Màximes Sol·licituds",
"description": "Fes aquesta quantitat de sol·licituds API automàticament abans de demanar aprovació per continuar amb la tasca.",
"unlimited": "Il·limitat"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> der <settingsLink>Roo Code Einstellungen</settingsLink> deaktivieren oder die VSCode Terminal-Integration mit dem Link unten beheben.",
"troubleshooting": "Klicke hier für die Shell-Integrationsdokumentation."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Limit für automatisch genehmigte Anfragen erreicht",
"description": "Roo hat das automatisch genehmigte Limit von {{count}} API-Anfrage(n) erreicht. Möchtest du den Zähler zurücksetzen und mit der Aufgabe fortfahren?",
"button": "Zurücksetzen und fortfahren"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Befehlspräfixe, die automatisch ausgeführt werden können, wenn 'Ausführungsoperationen immer genehmigen' aktiviert ist. Fügen Sie * hinzu, um alle Befehle zu erlauben (mit Vorsicht verwenden).",
"commandPlaceholder": "Befehlspräfix eingeben (z.B. 'git ')",
"addButton": "Hinzufügen"
},
"apiRequestLimit": {
"title": "Maximale Anfragen",
"description": "Automatisch so viele API-Anfragen stellen, bevor du um die Erlaubnis gebeten wirst, mit der Aufgabe fortzufahren.",
"unlimited": "Unbegrenzt"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> section of the <settingsLink>Roo Code settings</settingsLink> or troubleshoot VSCode terminal integration using the link below.",
"troubleshooting": "Click here for shell integration documentation."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Auto-Approved Request Limit Reached",
"description": "Roo has reached the auto-approved limit of {{count}} API request(s). Would you like to reset the count and proceed with the task?",
"button": "Reset and Continue"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Command prefixes that can be auto-executed when \"Always approve execute operations\" is enabled. Add * to allow all commands (use with caution).",
"commandPlaceholder": "Enter command prefix (e.g., 'git ')",
"addButton": "Add"
},
"apiRequestLimit": {
"title": "Max Requests",
"description": "Automatically make this many API requests before asking for approval to continue with the task.",
"unlimited": "Unlimited"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> de la <settingsLink>configuración de Roo Code</settingsLink> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Límite de Solicitudes Auto-aprobadas Alcanzado",
"description": "Roo ha alcanzado el límite auto-aprobado de {{count}} solicitud(es) API. ¿Deseas reiniciar el contador y continuar con la tarea?",
"button": "Reiniciar y Continuar"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Prefijos de comandos que pueden ser ejecutados automáticamente cuando \"Aprobar siempre operaciones de ejecución\" está habilitado. Añade * para permitir todos los comandos (usar con precaución).",
"commandPlaceholder": "Ingrese prefijo de comando (ej. 'git ')",
"addButton": "Añadir"
},
"apiRequestLimit": {
"title": "Solicitudes máximas",
"description": "Realizar automáticamente esta cantidad de solicitudes a la API antes de pedir aprobación para continuar con la tarea.",
"unlimited": "Ilimitado"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> des <settingsLink>paramètres de Roo Code</settingsLink> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Limite de requêtes auto-approuvées atteinte",
"description": "Roo a atteint la limite auto-approuvée de {{count}} requête(s) API. Souhaitez-vous réinitialiser le compteur et poursuivre la tâche ?",
"button": "Réinitialiser et continuer"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Préfixes de commandes qui peuvent être auto-exécutés lorsque \"Toujours approuver les opérations d'exécution\" est activé. Ajoutez * pour autoriser toutes les commandes (à utiliser avec précaution).",
"commandPlaceholder": "Entrez le préfixe de commande (ex. 'git ')",
"addButton": "Ajouter"
},
"apiRequestLimit": {
"title": "Requêtes maximales",
"description": "Effectuer automatiquement ce nombre de requêtes API avant de demander l'approbation pour continuer la tâche.",
"unlimited": "Illimité"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "कमांड निष्पादन चेतावनी",
"description": "आपका कमांड VSCode टर्मिनल शेल इंटीग्रेशन के बिना निष्पादित हो रहा है। इस चेतावनी को दबाने के लिए आप <settingsLink>Roo Code सेटिंग्स</settingsLink> के <strong>Terminal</strong> अनुभाग में शेल इंटीग्रेशन को अक्षम कर सकते हैं या नीचे दिए गए लिंक का उपयोग करके VSCode टर्मिनल इंटीग्रेशन की समस्या का समाधान कर सकते हैं।",
"troubleshooting": "शेल इंटीग्रेशन दस्तावेज़ के लिए यहां क्लिक करें।"
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "स्वत:-स्वीकृत अनुरोध सीमा पहुंची",
"description": "Roo {{count}} API अनुरोध(धों) की स्वत:-स्वीकृत सीमा तक पहुंच गया है। क्या आप गणना को रीसेट करके कार्य जारी रखना चाहते हैं?",
"button": "रीसेट करें और जारी रखें"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "कमांड प्रीफिक्स जो स्वचालित रूप से निष्पादित किए जा सकते हैं जब \"निष्पादन ऑपरेशन हमेशा अनुमोदित करें\" सक्षम है। सभी कमांड की अनुमति देने के लिए * जोड़ें (सावधानी से उपयोग करें)।",
"commandPlaceholder": "कमांड प्रीफिक्स दर्ज करें (उदा. 'git ')",
"addButton": "जोड़ें"
},
"apiRequestLimit": {
"title": "अधिकतम अनुरोध",
"description": "कार्य जारी रखने के लिए अनुमति मांगने से पहले स्वचालित रूप से इतने API अनुरोध करें।",
"unlimited": "असीमित"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> delle <settingsLink>impostazioni di Roo Code</settingsLink> o risolvere i problemi di integrazione del terminale VSCode utilizzando il link qui sotto.",
"troubleshooting": "Clicca qui per la documentazione sull'integrazione shell."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Limite di Richieste Auto-approvate Raggiunto",
"description": "Roo ha raggiunto il limite auto-approvato di {{count}} richiesta/e API. Vuoi reimpostare il contatore e procedere con l'attività?",
"button": "Reimposta e Continua"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Prefissi di comando che possono essere auto-eseguiti quando \"Approva sempre operazioni di esecuzione\" è abilitato. Aggiungi * per consentire tutti i comandi (usare con cautela).",
"commandPlaceholder": "Inserisci prefisso comando (es. 'git ')",
"addButton": "Aggiungi"
},
"apiRequestLimit": {
"title": "Richieste massime",
"description": "Esegui automaticamente questo numero di richieste API prima di chiedere l'approvazione per continuare con l'attività.",
"unlimited": "Illimitato"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "コマンド実行警告",
"description": "コマンドはVSCodeターミナルシェル統合なしで実行されています。この警告を非表示にするには、<settingsLink>Roo Code設定</settingsLink>の<strong>Terminal</strong>セクションでシェル統合を無効にするか、以下のリンクを使用してVSCodeターミナル統合のトラブルシューティングを行ってください。",
"troubleshooting": "シェル統合のドキュメントはこちらをクリック"
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "自動承認リクエスト制限に達しました",
"description": "Rooは{{count}}件のAPI自動承認リクエスト制限に達しました。カウントをリセットしてタスクを続行しますか",
"button": "リセットして続行"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "「実行操作を常に承認」が有効な場合に自動実行できるコマンドプレフィックス。すべてのコマンドを許可するには * を追加します(注意して使用してください)。",
"commandPlaceholder": "コマンドプレフィックスを入力(例:'git '",
"addButton": "追加"
},
"apiRequestLimit": {
"title": "最大リクエスト数",
"description": "タスクを続行するための承認を求める前に、自動的にこの数のAPIリクエストを行います。",
"unlimited": "無制限"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "명령 실행 경고",
"description": "명령이 VSCode 터미널 쉘 통합 없이 실행되고 있습니다. 이 경고를 숨기려면 <settingsLink>Roo Code 설정</settingsLink>의 <strong>Terminal</strong> 섹션에서 쉘 통합을 비활성화하거나 아래 링크를 사용하여 VSCode 터미널 통합 문제를 해결하세요.",
"troubleshooting": "쉘 통합 문서를 보려면 여기를 클릭하세요."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "자동 승인 요청 한도 도달",
"description": "Roo가 {{count}}개의 API 요청(들)에 대한 자동 승인 한도에 도달했습니다. 카운트를 재설정하고 작업을 계속하시겠습니까?",
"button": "재설정 후 계속"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "\"실행 작업 항상 승인\"이 활성화되었을 때 자동 실행될 수 있는 명령 접두사. 모든 명령을 허용하려면 * 추가(주의해서 사용)",
"commandPlaceholder": "명령 접두사 입력(예: 'git ')",
"addButton": "추가"
},
"apiRequestLimit": {
"title": "최대 요청 수",
"description": "작업을 계속하기 위한 승인을 요청하기 전에 자동으로 이 수의 API 요청을 수행합니다.",
"unlimited": "무제한"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> van de <settingsLink>Roo Code-instellingen</settingsLink> of de VSCode-terminalintegratie oplossen via de onderstaande link.",
"troubleshooting": "Klik hier voor shell-integratie documentatie."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Limiet voor automatisch goedgekeurde verzoeken bereikt",
"description": "Roo heeft de automatisch goedgekeurde limiet van {{count}} API-verzoek(en) bereikt. Wil je de teller resetten en doorgaan met de taak?",
"button": "Resetten en doorgaan"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Commando-prefixen die automatisch kunnen worden uitgevoerd als 'Altijd goedkeuren voor uitvoeren' is ingeschakeld. Voeg * toe om alle commando's toe te staan (gebruik met voorzichtigheid).",
"commandPlaceholder": "Voer commando-prefix in (bijv. 'git ')",
"addButton": "Toevoegen"
},
"apiRequestLimit": {
"title": "Maximale verzoeken",
"description": "Voer automatisch dit aantal API-verzoeken uit voordat om goedkeuring wordt gevraagd om door te gaan met de taak.",
"unlimited": "Onbeperkt"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> w <settingsLink>ustawieniach Roo Code</settingsLink> lub rozwiązać problemy z integracją terminala VSCode korzystając z poniższego linku.",
"troubleshooting": "Kliknij tutaj, aby zobaczyć dokumentację integracji powłoki."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Osiągnięto limit automatycznie zatwierdzonych żądań",
"description": "Roo osiągnął automatycznie zatwierdzony limit {{count}} żądania/żądań API. Czy chcesz zresetować licznik i kontynuować zadanie?",
"button": "Zresetuj i kontynuuj"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Prefiksy poleceń, które mogą być automatycznie wykonywane, gdy \"Zawsze zatwierdzaj operacje wykonania\" jest włączone. Dodaj * aby zezwolić na wszystkie polecenia (używaj z ostrożnością).",
"commandPlaceholder": "Wprowadź prefiks polecenia (np. 'git ')",
"addButton": "Dodaj"
},
"apiRequestLimit": {
"title": "Maksymalna liczba żądań",
"description": "Automatycznie wykonaj tyle żądań API przed poproszeniem o zgodę na kontynuowanie zadania.",
"unlimited": "Bez limitu"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> das <settingsLink>configurações do Roo Code</settingsLink> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Limite de Solicitações Auto-aprovadas Atingido",
"description": "Roo atingiu o limite auto-aprovado de {{count}} solicitação(ões) de API. Deseja redefinir a contagem e prosseguir com a tarefa?",
"button": "Redefinir e Continuar"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Prefixos de comando que podem ser auto-executados quando \"Aprovar sempre operações de execução\" está ativado. Adicione * para permitir todos os comandos (use com cautela).",
"commandPlaceholder": "Digite o prefixo do comando (ex. 'git ')",
"addButton": "Adicionar"
},
"apiRequestLimit": {
"title": "Máximo de Solicitações",
"description": "Fazer automaticamente este número de requisições à API antes de pedir aprovação para continuar com a tarefa.",
"unlimited": "Ilimitado"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "Предупреждение о выполнении команды",
"description": "Ваша команда выполняется без интеграции оболочки терминала VSCode. Чтобы скрыть это предупреждение, вы можете отключить интеграцию оболочки в разделе <strong>Terminal</strong> в <settingsLink>настройках Roo Code</settingsLink> или устранить проблемы с интеграцией терминала VSCode, используя ссылку ниже.",
"troubleshooting": "Нажмите здесь для просмотра документации по интеграции оболочки."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Достигнут лимит автоматически одобренных запросов",
"description": "Roo достиг автоматически одобренного лимита в {{count}} API-запрос(ов). Хотите сбросить счетчик и продолжить задачу?",
"button": "Сбросить и продолжить"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Префиксы команд, которые могут быть автоматически выполнены при включённом параметре \"Всегда одобрять выполнение операций\". Добавьте * для разрешения всех команд (используйте с осторожностью).",
"commandPlaceholder": "Введите префикс команды (например, 'git ')",
"addButton": "Добавить"
},
"apiRequestLimit": {
"title": "Максимум запросов",
"description": "Автоматически выполнять это количество API-запросов перед запросом разрешения на продолжение задачи.",
"unlimited": "Без ограничений"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <settingsLink>Roo Code ayarları</settingsLink>'nın <strong>Terminal</strong> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Otomatik Onaylanan İstek Limiti Aşıldı",
"description": "Roo, {{count}} API isteği/istekleri için otomatik onaylanan limite ulaştı. Sayacı sıfırlamak ve göreve devam etmek istiyor musunuz?",
"button": "Sıfırla ve Devam Et"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "\"Yürütme işlemlerini her zaman onayla\" etkinleştirildiğinde otomatik olarak yürütülebilen komut önekleri. Tüm komutlara izin vermek için * ekleyin (dikkatli kullanın).",
"commandPlaceholder": "Komut öneki girin (örn. 'git ')",
"addButton": "Ekle"
},
"apiRequestLimit": {
"title": "Maksimum İstek",
"description": "Göreve devam etmek için onay istemeden önce bu sayıda API isteği otomatik olarak yap.",
"unlimited": "Sınırsız"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"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 <strong>Terminal</strong> của <settingsLink>cài đặt Roo Code</settingsLink> 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."
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "Đã Đạt Giới Hạn Yêu Cầu Tự Động Phê Duyệt",
"description": "Roo đã đạt đến giới hạn tự động phê duyệt là {{count}} yêu cầu API. Bạn có muốn đặt lại bộ đếm và tiếp tục nhiệm vụ không?",
"button": "Đặt lại và Tiếp tục"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "Tiền tố lệnh có thể được tự động thực thi khi \"Luôn phê duyệt các hoạt động thực thi\" được bật. Thêm * để cho phép tất cả các lệnh (sử dụng cẩn thận).",
"commandPlaceholder": "Nhập tiền tố lệnh (ví dụ: 'git ')",
"addButton": "Thêm"
},
"apiRequestLimit": {
"title": "Số lượng yêu cầu tối đa",
"description": "Tự động thực hiện số lượng API request này trước khi yêu cầu phê duyệt để tiếp tục với nhiệm vụ.",
"unlimited": "Không giới hạn"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "命令执行警告",
"description": "您的命令正在没有 VSCode 终端 shell 集成的情况下执行。要隐藏此警告,您可以在 <settingsLink>Roo Code 设置</settingsLink>的 <strong>Terminal</strong> 部分禁用 shell 集成,或使用下方链接排查 VSCode 终端集成问题。",
"troubleshooting": "点击此处查看 shell 集成文档。"
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "已达自动批准请求限制",
"description": "Roo 已达到 {{count}} 次 API 请求的自动批准限制。您想重置计数并继续任务吗?",
"button": "重置并继续"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "当\"自动批准命令行操作\"启用时可以自动执行的命令前缀。添加 * 以允许所有命令(谨慎使用)。",
"commandPlaceholder": "输入命令前缀(例如 'git '",
"addButton": "添加"
},
"apiRequestLimit": {
"title": "最大请求数",
"description": "在请求批准以继续执行任务之前,自动发出此数量的 API 请求。",
"unlimited": "无限制"
}
},
"providers": {

View file

@ -252,5 +252,12 @@
"title": "命令執行警告",
"description": "您的命令正在沒有 VSCode 終端機 shell 整合的情況下執行。要隱藏此警告,您可以在 <settingsLink>Roo Code 設定</settingsLink>的 <strong>Terminal</strong> 部分停用 shell 整合,或使用下方連結排查 VSCode 終端機整合問題。",
"troubleshooting": "點擊此處查看 shell 整合文件。"
},
"ask": {
"autoApprovedRequestLimitReached": {
"title": "已達自動核准請求限制",
"description": "Roo 已達到 {{count}} 次 API 請求的自動核准限制。您想要重設計數並繼續工作嗎?",
"button": "重設並繼續"
}
}
}

View file

@ -79,6 +79,11 @@
"allowedCommandsDescription": "當「始終核准執行操作」啟用時可以自動執行的命令前綴。新增 * 以允許所有命令(請謹慎使用)。",
"commandPlaceholder": "輸入命令前綴(例如 'git '",
"addButton": "新增"
},
"apiRequestLimit": {
"title": "最大請求數",
"description": "在請求批准以繼續執行工作之前,自動發出此數量的 API 請求。",
"unlimited": "無限制"
}
},
"providers": {